Getting Started with TDD using MbUnit and C# and VB.NET

There is a lot being written about Test Driven Development in the .NET world.  So much so that it can seem overwhelming to absorb, and you always feel like you're entering in the middle of the conversation.  Yep, me too, even four years ago when I first dipped my toe into the TDD pool.

After a couple years in SSRS/BI-land, it's back to regular development, and back into the TDD pool.  The pool has matured--there are new tools, stronger opinions, and much more conversation.  Essentially, I'm starting over, but with a little experience.  In this post, I'll show you what I'm setting up, and how to get started with a simple project.

What to use?

There are a number of applications available, each with its own adherents and detractors.  Some are free, some you buy.  If you have Visual Studio 2008 Professional or better, you have a testing tool built in.

I tried a couple tools getting started, including NUnit and MbUnit.  I preferred MbUnit, so I downloaded the latest version, part of the Gallio Automation platform.  Gallio/MbUnit is one of the more popular TDD applications.  It's well supported and well documented, which helps greatly.

So what is Gallio and MbUnit?  Simply understated, MbUnit v3 is a set of classes for unit testing, and Gallio is what actually runs the tests and displays the results.  Gallio can run more tests than just MbUnit, and integrates with build tools.

Installation was a snap--I downloaded the installer and let it run.  Gallio integrated with VS 2005 and VS 2008 automatically, but had an issue loading a language pack when I started VS 2008.

Planning what you're coding

Before you start hacking away on the keyboard, you need to figure out what you're writing.  You can use whatever project management methodology you want.  Here's a user story for something I encountered recently:

For our space utilization analysis, I need to be able to easily take an order date, and figure out the date the week ends on, so I can accumulate inventory changes to the same base date.  I need to be able to specify the end date, since calendar and fiscal weeks may have different end days.  Dates should be calculated back from the given date.  If the the weekday of the given date, and the week end day are the same, then the given date should be used.

Test first!

One of the tenants of TDD is writing your tests first, called the "red, green, refactor" cycle of development.  Red refers to a test which fails, green refers to a test which passes, and refactor refers to reworking the code you wrote to make the test pass to make it leaner.  This takes some realignment of your thought process, but gets easier as you do it.

Open Visual Studio, and create a new project.  I'm calling mine DateLibrary, since I'm actually creating a library of date functions useful to me.  Delete the automatically created Class1.

We need to separate the tests from the code we'll use in our applications, so our tests don't end up as part of the application.  Add a second class to the solution, called DateLibraryTests to contain the tests.  Again, delete Class1, and add one named WeekEndTest.  Add references to your class library project, Gallio and MbUnit, and then add using statements, as shown:

C#:

   1:  using System;
   2:  using DateLibrary;
   3:  using MbUnit.Framework;

VB.NET:

   1:  Imports System
   2:  Imports DateLibrary
   3:  Imports MbUnit.Framework

Now, let's write our first test.  To reiterate, one of the tenants of TDD is writing your tests first.  Realistically, you might need to write a little application code first.  I prefer to have a little Intellisense guide my test writing, so I just stub out a class and methods, just enough so my app will compile, but no actual code.  In our example, we need to return something, so we just return a blank date and time.  Here's the code stub:

C#:

   1:  using System;
   2:   
   3:  namespace DateLibrary
   4:  {
   5:      public class WeekEnd
   6:      {
   7:          public static DateTime BackDate(DayOfWeek EndDay, DateTime FromDate)
   8:          {
   9:              DateTime _backdate = new DateTime();
  10:   
  11:              return _backdate;
  12:          }
  13:      }
  14:  }

VB.NET:

   1:  Imports System
   2:   
   3:  Public Class DateLibrary
   4:   
   5:      Public Function BackDate(ByVal EndDay As DayOfWeek, ByVal FromDate As Date) As Date
   6:          Dim _backdate As New Date
   7:   
   8:          Return _backdate
   9:      End Function
  10:   
  11:  End Class

The first parameter of our method is the day to figure back to, and the second is the date to figure from.  We use a DayOfWeek for the first parameter to limit input values.

One of the criticisms of TDD is that everything you want to test must be public, since tests are placed in a separate class.  So if you plan on having private methods and classes, you're either out of luck, or you can change the modifier after your tests are run, have public accessors to your private methods, or include test code in your application.  What you do is up to you, based on the local coding standards and application design.  For this sample, public methods are just fine.

Now we write our test.  In TDD, Assert basically means "I am expecting these values…".  So, our test case could be thought of as "I am expecting these values are equal".  The values to be compared are the one we'll calculate from our code above, using inputs which we already know the answer to, and the answer we already know.  Our test looks like this:

C#:

   1:  using System;
   2:  using DateLibrary;
   3:  using MbUnit.Framework;
   4:   
   5:  namespace DateLibrary
   6:  {
   7:      public class WeekEndTest
   8:      {
   9:          [Test]
  10:          public void WeekEndsSunday()
  11:          {
  12:              Assert.AreEqual(new DateTime(2009, 06, 21), WeekEnd.BackDate(DayOfWeek.Sunday, new DateTime(2009, 06, 25)));
  13:          }
  14:      }
  15:  }

VB.NET:

   1:  Imports System
   2:  Imports DateLibrary
   3:  Imports MbUnit.Framework
   4:   
   5:  Public Class WeekEndTest
   6:   
   7:      <Test()> _
   8:      Public Sub WeekEndsSunday()
   9:          Assert.AreEqual(CType("6/21/2009", Date), WeekEnd.BackDate(DayOfWeek.Sunday, "6/25/2009"))
  10:      End Sub
  11:   
  12:  End Class

The [Test] attribute is used by the test runner to find the tests from the regular methods.

Make sure the solution compiles without errors.  If it does, it's time to run our tests.  Gallio/MbUnit includes the Icarus test runner, which provides easy to read graphical feedback.  To start Icarus, navigate Start >> All Programs >> Gallio >> Icarus GUI Test Runner.  Once Icarus has started, we need to load in our tests.  Go to Project >> Add Assemblies, navigate to the bin folder of your test project, select the test DLL and click Open.

 SS-2009.06.27-15.15.12

The tests will be parsed, and listed in a treeview.  You can add as many test DLLs as you need, we just have the one for this example.

SS-2009.06.25-22.30.57

Click the Start button, and our tests will be run.  The Execution Log shows the results, in this case, red, just like we expected.

SS-2009.06.25-22.34.37

Further down, you can see the expected and returned values.  Our test failed (as expected) because a blank date was returned, and did not match the expected value.

SS-2009.06.26-20.26.48

Great.  Like we said above, "red, green, refactor".  We now have red taken care of.  Before we do anything else, let's do a quick sanity check to make sure all systems are correct.  In our test, we're expecting the returned value to be 6/21/2009.  As a test of our tests, let's change our procedure slightly to make sure it returns the expected date, and run our test again.  The results should be green.

C#:

   1:  using System;
   2:   
   3:  namespace DateLibrary
   4:  {
   5:      public class WeekEnd
   6:      {
   7:          public static DateTime BackDate(DayOfWeek EndDay, DateTime FromDate)
   8:          {
   9:              DateTime _backdate = new DateTime(2009, 06, 21);
  10:   
  11:              return _backdate;
  12:          }
  13:      }
  14:  }

VB.NET:

   1:  Imports System
   2:   
   3:  Public Class WeekEnd
   4:   
   5:      Public Shared Function BackDate(ByVal EndDay As DayOfWeek, ByVal FromDate As Date) As Date
   6:          Dim _backdate As New Date
   7:   
   8:          _backdate = "6/21/2009"
   9:   
  10:          Return _backdate
  11:      End Function
  12:   
  13:  End Class

Sure enough, our results are green.  This does not satisfy the green portion of "red, green, refactor", this is merely to confirm our systems are working correctly.

SS-2009.06.26-20.34.03

Now it's time to write some actual application code, and have our test be green for real.  From the user story above, we arrive at the following code:

C#:

   1:  using System;
   2:   
   3:  namespace DateLibrary
   4:  {
   5:      public class WeekEnd
   6:      {
   7:          public static DateTime BackDate(DayOfWeek EndDay, DateTime FromDate)
   8:          {
   9:              DateTime _backdate = new DateTime();
  10:              int _dayOfWeek = new int();
  11:   
  12:              _dayOfWeek = (int)EndDay;
  13:   
  14:              if (FromDate.DayOfWeek == EndDay)
  15:              {
  16:                  _backdate = FromDate;
  17:              }
  18:              else if ((int)FromDate.DayOfWeek > (int)EndDay)
  19:              {
  20:                  _backdate = FromDate.AddDays(-(int)FromDate.DayOfWeek - (int)EndDay);
  21:              }
  22:              else
  23:              {
  24:                  _backdate = FromDate.AddDays(-(int)EndDay - (int)FromDate.DayOfWeek);
  25:              }
  26:   
  27:              return _backdate;
  28:          }
  29:      }
  30:  }

VB.NET:

   1:  Imports System
   2:   
   3:  Public Class WeekEnd
   4:   
   5:      Public Shared Function BackDate(ByVal EndDay As DayOfWeek, ByVal FromDate As Date) As Date
   6:   
   7:          Dim _backdate As New Date()
   8:          Dim _dayOfWeek As New Integer()
   9:   
  10:          _dayOfWeek = CInt(EndDay)
  11:   
  12:          If FromDate.DayOfWeek = EndDay Then
  13:              _backdate = FromDate
  14:          ElseIf CInt(FromDate.DayOfWeek) > CInt(EndDay) Then
  15:              _backdate = FromDate.AddDays(-CInt(FromDate.DayOfWeek) - CInt(EndDay))
  16:          Else
  17:              _backdate = FromDate.AddDays(-CInt(EndDay) - CInt(FromDate.DayOfWeek))
  18:          End If
  19:   
  20:          Return _backdate
  21:      End Function
  22:   
  23:  End Class

Now, we run our test again, to make sure our code does what we think it will do:

SS-2009.06.27-15.21.09

Success!  This time, we're green for real.  The final part of the TDD is to refactor.  Refactoring is a process of editing your code to make it more concise, more maintainable, and more reusable.  It's not an entirely simple process, requiring a good deal of thought.  The best part about TDD is that as you refactor, you can easily tell if you've broken your code by running your tests again.  It's a process we won't cover here.

For more information

To learn about and download MbUnit and Gallio, go to http://www.gallio.org/.

For a deeper look into TDD, the book recognized as starting it all is Test Driven Development By Example, by Kent Beck.  The examples are in Java and JUnit, but this is the book recognized as the authoritative work on TDD.

If you'd prefer to have examples in .NET, you might like Test Driven Development in Microsoft .NET.  James Newkirk is a leader in Agile development, and is one of the founders of NUnit and xUnit.

DotNetKicks Image

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

June 15, 2009 - MSDN Freedom Roadshow in Pittsburgh

Session 1: Developing on Microsoft Windows 7

Building applications that are easy to use, visually appealing, and offer high performance is a challenge that developers face every day. Innovative applications can greatly improve the user experience, empowering companies to differentiate their services and solutions. However, developers are increasingly asked to do more in less time, while also optimizing the power and performance requirements of their applications. 

The Windows 7 platform makes it easy for developers to create engaging, user-friendly applications by providing familiar tools and rich development features that allow them to take advantage of the latest PC capabilities.  In this session we will explore the new Taskbar and Jump Lists, the Scenic Ribbon, file management with Libraries, and Windows Web Services among many other enhancements to the new operating system.


Session 2: What’s New in Internet Explorer 8 for Developers

With any new browser release, there are two questions of interest to most web developers –
     1.Will this release break my site, and if so, how do I fix it?
     2. What shiny new features does it offer to add value for my visitors?

In this session, we’ll address both of these questions, first showing how developers and users both benefit from improved standards-based rendering in Internet Explorer 8, and how developers can ensure that their sites will render properly for users using IE8. Additionally, we’ll take a look at some of the new features of Internet Explorer 8 that open up new possibilities for web developers, including Accelerators, Web Slices, and Search Providers, as well as AJAX and DOM improvements. Accelerators are helpers added to the browser that allow users to access your web-based services from anywhere, via a simple right-click on any page. Web Slices allow you to designate parts of your application for the user to consume and keep up-to-date in the browser without having to visit the full site. You can leverage these features to add value to your site and make it easier than ever for users to take advantage of the services and content you have to offer. 
 
We'll also look at the new Internet Explorer 8 Developer Tools, which provides you with killer tools for examining and debugging your HTML, CSS, and JavaScript, all without ever leaving the page, plus profiling for finding and fixing the performance bottlenecks in your client-side code. The IE 8 Developer Tools also aid in compatibility testing, by allowing you to change the layout and compatibility modes on the fly. Lastly we’ll look at some best practices.

Session 3: Making JavaScript Fun Again

Let’s face it; most web developers avoid JavaScript at all cost. We do everything we can do avoid it and if we can’t, we typically try to keep things as simple as possible just to write the least amount of JavaScript code possible. This hinders us from creating the best user experience possible which translates to unhappy/unsatisfied users.

Well, you don’t have to avoid it any more. Thanks to jQuery, writing JavaScript code is fun again. In the session we are going to go over the basics of jQuery. I will show you how easy it is to traverse the document object model (DOM), add animation to your UI, handle events and add AJAX functionality to your web applications. Finally, we will discuss the support Visual Studio provides for working with jQuery as well as its integration with ASP.Net

Full info at http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032415478&Culture=en-US

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

Pgh.NET: Programming Silverlight in the Cloud

Join the Pgh.NET User Group on June 9 as Vijay Koneru gives an overview of programming Silverlight applications using the Azure Cloud Services API. Also, Craig Oaks will provide an introduction to using Silverlight with ArcGIS.

Date:     Tuesday, June 9
Time:     5:30 - 8 p.m.    
Venue:    Microsoft Offices, 30 Isabella Street, 15212

Register: http://webportal.pghtech.org/Events/CalendarEventsListView.aspx

DotNetKicks Image

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

Using Mocks and Stubs and Free TypeMock Licenses

Blogs are a fabulous way to share knowledge, and for incremental learning, but they're a tough way to grok an entire underlying concept.  Something I've never quite grokked are mocks and stubs, until last week.  My favorite development mag's latest issue is dedicated to open source tools in .NET development.  One article focuses completely on mocks and stubs, Isolating Dependencies in Tests Using Mocks and Stubs.  After reading this, I thought "wow, I need to get me a mocking framework".  One of the popular mock frameworks mentioned was TypeMock.

Enter TypeMock today.  A short time ago, I get this in my FeedDemon:

Unit Testing ASP.NET? ASP.NET unit testing has never been this easy.
Typemock is launching a new product for ASP.NET developers – the ASP.NET Bundle - and for the launch will be giving out FREE licenses to bloggers and their readers.

The ASP.NET Bundle is the ultimate ASP.NET unit testing solution, and offers both Typemock Isolator, a unit test tool and Ivonna, the Isolator add-on for ASP.NET unit testing, for a bargain price.

Typemock Isolator is a leading .NET unit testing tool (C# and VB.NET) for many ‘hard to test’ technologies such as SharePoint, ASP.NET, MVC, WCF, WPF, Silverlight and more. Note that for unit testing Silverlight there is an open source Isolator add-on called SilverUnit.

The first 60 bloggers who will blog this text in their blog and tell us about it, will get a Free Isolator ASP.NET Bundle license (Typemock Isolator + Ivonna). If you post this in an ASP.NET dedicated blog, you'll get a license automatically (even if more than 60 submit) during the first week of this announcement.
Also 8 bloggers will get an additional 2 licenses (each) to give away to their readers / friends.

Go ahead, click the following link for more information on how to get your free license.

Serendipity, baby!  Hope I'm one of the first 60.

DotNetKicks Image

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

Pgh.NET: Silverlight 3 Double Dose

Join the Pittsburgh .NET User Group on May 19th for two presentations by INETA speaker Pete Brown on what to expect from Silverlight 3.

1. What's New In Silverlight 3
A tour of all of the new features in Silverlight 3. Topics covered include features geared towards RIA/Business Application development, Media, Graphics, etc.

2. Silverlight 3 Adores My Commodore 64
In this entertaining talk, Pete discusses building a Commodore 64 emulator and a software-based music synthesizer in Silverlight 3. This is more of a coding for fun session. Definitely a lot of fun!

Date: Tuesday, May 19

Time: 5:30 - 8 p.m.

Venue: Microsoft Offices, 30 Isabella Street, 15212

Cost: No Charge, please register

Register: Online

DotNetKicks Image

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

Simple Design and Testing Conference Coming to Pittsburgh

SDT Conf is focused on providing agile practitioners a platform to meet face-to-face and discuss/demonstrate simple design & testing principles/approaches. The conference will use Open Spaces to structure conversation, improve understanding, facilitate brainstorming and help innovate.

  • What: Open Space event to discuss different aspects of the Simple Design and Testing practices
  • Where: Pittsburgh Supercomputing Center, Pittsburgh, PA, USA
  • When: Oct 9 - 11, 2009
  • Who: Everyone interested in Simple Design and Testing practices
  • Cost: Free. Open to people from all aspects of software projects

SDT Conf Fall 2009 is our fourth annual conference. SDT Conf 2006, 2007 and 2008 were very successful conferences. More details on the Archive page.

Full story at http://sdtconf.com/

DotNetKicks Image

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

Getting Started with Azure

My biddy Shaun's latest ASP Alliance article has been published, and details some of our experiences of working with Azure.

Azure Basics - Say 'Hello' to the Cloud

Shaun shows how to start developing a Windows Azure-based website and shows the steps to deploy that website to the cloud. This is a pretty basic example to help get someone past the basic hurdles of developing for Azure.

DotNetKicks Image

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

A few photos from Pittsburgh Code Camp

A few behind-the-scenes photos from our Azure talk at Pittsburgh Code Camp:

SNC00051

Matt, Shaun and Nathan working like crazy in the speaker lounge.

SNC00052

Nate, putting the finishing touches on while Matt and Shaun are presenting just inside the door.

SNC00053

Shaun (facing) and Matt (back) presenting.

SNC00054

Nate presenting, Matt and Shaun in the wings.

DotNetKicks Image

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

Azure Services error--no log messages appear

Preparing for today's Pittsburgh Code Camp talk was challenge, since we were stringing together a lot of things that are half baked.  On of the issues we had was with log messages (RoleManager.WriteToLog) not appearing in the development fabric UI.  Lindsay had the same problem when she was demoing Azure Services for MSDN Across America a couple weeks ago.

I would see the log messages once, then no messages for subsequent runs.  I finally figured out that if you shut down and exit the Development Fabric UI, then let it restart with the next run, your messages will log.  Unfortunately, you'll need to do this each time you want to examine logged output.

DotNetKicks Image

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

Configuring Diarist2 for BlogEngine.Net

Kevin Daly's Diarist2 is a Smartphone/Pocket PC blogging client written in .NET.  I used it on my Treo 700w, and now use it on my Omnia.  This blog is based on BlogEngine.NET, which at this time can't be auto-configured with Diarist2.

1. Download and install Diarist2

2. Open Diarist2, and navigate Menu >> Weblog >> Add >> Generic MetaWeblog.

3.The API for BlogEngine.NET is located at http://yoursite.com/blog/metaweblog.axd.  Enter in the settings as seen below:

image

4. Click Confirm.  Your blog should be auto-configured with the blog title, and you'll be returned to the screen where you create a new blog post.

That's it!  If you're wondering how I made the screenshots, I used My MobileR.

DotNetKicks Image

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

Dynamsoft Releases the World's First Hosted SCM Solution!

I'm sure Rally Software or Axosoft might beg to differ about the "world's first" claim, but there's another contender in the SCM/Hosted SCM arena:

Today we are pleased to announce the release of Dynamsoft SCM Anywhere Hosted, the world's first hosted Software Configuration Management solution.

With integrated version control, issue tracking & build automation, SCM Anywhere Hosted is specifically designed for teams looking for an integrated Software as a Service (SaaS) solution to manage the entire software development life cycle.

With SCM Anywhere Hosted, development teams can achieve great benefit from the simplified IT infrastructure, the lowered cost of ownership, the high availability with anywhere/anytime access, the uncompromised security, and also the excellence of other features.

For more information about SCM Anywhere, please visit:
http://www.scmsoftwareconfigurationmanagement.com/
A 10-minute introduction video can be found at:
http://www.dynamsoft.com/Products/WebinarVideo/SCMHWebinar.aspx

Features of note are CruiseControl.NET and ANT integration (even in the hosted version), source control with SourceAnywhere, and three users free (hosted; installed=1 user).

I've used Dynamsoft SourceAnywhere for a while now, and it's really nice.  The Visual Studio integration is almost perfect, and the workflows are up to part with Subversion.  If the SCM compares to SA, expect good things.

DotNetKicks Image

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

SSIS Error: [DTS.Pipeline] Error: component "<taskname>" (1) failed the pre-execute phase and returned error code 0xC0010001.

I was working in an SSIS package recently, and kept getting the following error:

[DTS.Pipeline] Error: component "<taskname>" (1) failed the pre-execute phase and returned error code 0xC0010001.

Pretty non-descriptive.  This source is using a parameterized query in an OLE DB source.  The problem was I had forgotten to set the parameter's value to a package variable.  So if you're getting this error, check your query's variables.

Currently rated 1.0 by 1 people

  • Currently 1/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags: , ,

PHP and Yahoo Store

In my previous post regarding getting started with Yahoo store, I remarked that PHP seemed to be the direction Yahoo was moving its store.  If that's the case, they're pretty mum on the subject.  I asked YS support the following question:

I'm starting to set up my site, and I see so much documentation on generating HTML pages and inserting store tags, which pretty much means I need to create a page for each item in my catalog (unless I use RTML templates).  There is very little on PHP, but apparently I can't use PHP and Store Tags.  Is that a problem?  Is is possible to create a database driven cart using PHP and, rather than store tags, the HTML output of the store tags, changing the proper variables (such as the category or item)?  I'm an experienced web developer, so this is a pretty basic concept for me, but there just isn't a lot of information to go on.

This was their reply:

Thank you for contacting Yahoo! Small Business Support.  I understand you are having trouble with store tags and apologize for any inconvenience this may have caused you.  You can use php pages and use store tags on that.But there is a small problem.When you use store tag on php page you cant directly put store tag on to php page.Instead create an item page with an extention .html and use store tags on that.Use IFRAME tag to bring that item page to php page.If you put store tag directly to php code there will be rendering
issues.  I am putting a sample skeleton of the code below

<?php
<IFRAME src="itempage.html"></IFRAME>
?>

Please use the below help link for store tags http://help.yahoo.com/l/us/yahoo/smallbusiness/store/tags/.  You can use your custom php scripts to create custom shopping cart.  But if you do that , you cant take advantage of shipping,payment option etc that is been provided by Yahoo! Merchant Solution plan.You dont need to be in Yahoo! Merchant Solution if you want to use custom PHP scripts and
create custom shopping cart.You can downgrade your plan to Yahoo! Web Hosting if you want to create custom shopping cart using php scripts. If you want to utilize tools provided by Merchant Solution you will have to
use Yahoo!'s Check out.

So, long story short--there really isn't a way to develop a truly dynamic cart on a Yahoo! Store.  The best you can do is RTML templates, which do allow for a good deal of functionality.  But not a truly dynamic cart.

DotNetKicks Image

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

The Frustrating World of Dell Driver Downloads

I like Dell hardware.  Between home and business, we own 7.  My brother's laptop is here for some work, and Dell once again proved why its the company people hate to love.  Harware good, support not so much. It's been over an hour and I'm not sure if I have all the drivers I need, or even how to install them.

I don't know if they never had a drivers CD, or they forgot to send it, but it's not here.  This is an older laptop, and Inspiron 600m, and apparently not everything is plugh-and-play, or XP failed to recognize the hardware.  Whatever, I need to go find some drivers.  Should be easy--just go to Dell's site, download the divers I need, install, and good to go.

Simply finding the drivers proved to be the first challenge.  I can look them up by service tag, but that takes me to a page with drivers for every possible configuration, not the specific drivers.  If I log in to my account and look it up by service tag, I can see exactly what was installed.  I now have to cross reference one list to another.  A better idea is that I'd enter the service tag and be shown only the drivers I actually need.

Selecting the drivers was an even bigger challenge.  You can download them one at a time, or you can add them to a download list and download them all at once.  Good idea in theory, but the javascript was so poorly written that I somehow ended up with 4 partial lists.  Once yo've built your list (or partial list), you go to another page to confirm the downloads and uncheck any you don't need, then choose ZIP or TA, then download the file.  Not so bad, but why can't I have the checkboxes and format on the previous page?

Dell recommends installing in a particular order, and they have a handy page you can print.  Great, until you open the ZIP you just downloaded.  All the contained drivers have names like R113575.EXE and R56673.EXE.  OK, which one goes first?  This will be fun.

In an ideal world, this would have been about a 5 minute operation.  Log in, select system by service tag, then download all relevant drivers.  The filenames would clearly indicate what they are, or even the install order.  Here's hoping for some improvement on supporting the older machines. Experiencing this makes me wonder how support will be for our other PCs when they need it.

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags: , ,

Silverlight Firestarter in Pittsburgh

I wish I wasn't going to be out of town this weekend!  Ugh--looks awesome!

Full details and registration at http://msevents.microsoft.com/CUI/EventDetail.aspx?culture=en-US&EventID=1032402422

Saturday, February 28, 2009 8:00 AM - Saturday, February 28, 2009 5:00 PM Eastern Time (US & Canada)
Welcome Time: 8:00 AM

Pittsburgh MPR

MPR
30 Isabella Street
2nd Floor Pittsburgh Pennsylvania 15212
United States

 

Title

Description

Session 1

Keynote

Intro and overview of the Silverlight 2 platform.

Session 2

XAML Basics

What is this funny mark-up language?

Session 3

The Tools

Get the skinny on what you need to start your work.  A look at designer & developer tools that work together.  Coverage of Expression Blend 2.5 & Silverlight Tools for Visual Studio 2008

Session 4

Controls, Data Binding

Silverlight 1 was just a tease. Now see what you can do with real controls, styles, and rich data binding.

Session 5

Server Communication

Silverlight 2 is a rich Internet application platform. So how do you talk back to the cloud?  Coverage of all the communication options.  WCF/Astoria/REST/POX/AJAX/etc.

Session 6

Silverlight and SharePoint

 
DotNetKicks Image

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags: