Thursday, December 20, 2007

Dude, where's my job?



# 

I found out recently that I will be available for exciting, new job opportunities at the start of next month. It's not my fault, honestly. These things happen. In this case, things happen to me and 22 of my co-workers.

Company President and CEO Brian Jones said Wednesday that the layoffs would be necessary if the Defense Information Systems Agency follows through with a plan to reduce the amount of a software development contract with the Oak Ridge National Laboratory.

...

ORNL spokesman Billy Stair said the contract's annual appropriation has varied. The agency is considering reducing the amount from about $12 million to about $7 million, he said.

There you have it kids.  That's seven meeellion dollars that used to pay my bills, and it's going bye bye.  Such is life.

I've had a good run with DPRA.  If you recall, I was very happy to come on board, and I have no regrets. I am, however, ready to start my next geeky adventure.

If you, or someone you know, is looking for a first class geek for hire, I may be your man.  Have a look at my resume. Download copies and share them with friends. :-)

Cheers,

++Alan

 Monday, December 10, 2007

Bringing Cheer to West Nokomis Circle



# 

I stood on a ladder and cursed for a couple of hours yesterday.   Oh, and some lights got hung somewhere between the expletives. :-)

Feliz Navidad,

++Alan

 Thursday, December 06, 2007

Getting Started With TDD in Visual Studio



# 

I've given talks on doing test-driven development (TDD), and I've had lots of conversations with other developers interested in giving it a try.  What I've found is that the simple setup and configuration hurdle is intimidating to most people at the start.  In this entry, I intend to remove that initial hurdle (and excuse).

The professional version of Visual Studio 2008 now includes MSTest unit testing framework.  I've been working with MSTest since the release of Visual Studio 2005 Team Developer Edition.  If you want to get started doing TDD in Visual Studio, I recommend you get the Professional version of VS2008 and learn MSTest.  I'm not recommending MSTest over any other unit testing framework.  I am asserting that the easiest way to get started is to use an integrated tool.

Unfortunately, purchasing the latest and greatest from Microsoft is too large a commitment for many people coming to TDD or Visual Studio for the first time.  I believe that TDD is essential, and I want to remove as many barriers as I can for people interested in implementing TDD in their development practice.  To that end, I have created project and item templates which enable a simple TDD workflow using the FREE NUnit testing framework and the FREE Visual Studio 2008 Express editions.

It should be noted at the start that I could use some VSX-fu to enable even more automation in the standard edition of VS2008, but the license expressly forbids the use of VSX APIs in the express editions of Visual Studio.  If you already have the standard edition of VS2008, or the standard or professional editions of VS2005, check out testdriven.net for seamless integration of NUnit, and several other unit testing frameworks, with Visual Studio.  For this discussion, however, we will stick with templates to avoid angering the "powers that be" in Redmond.  That being said, the templates and instructions for their use should work as advertised in any version of Visual Studio 2005 or 2008.

You will need to download and install the express edition of Visual C# (or Visual Basic) from here.  Next download this version of the NUnit framework and install it into the default location.  The references and paths in the project and item templates are specific to the 2.4.3 version of NUnit.  Finally, you will need to grab my templates and extract them.

There are four templates which are zip files, so don't extract them individually.  There is a project template and a new item template each for C# and Visual Basic.  I will be using the C# templates for this walkthrough, but everything here applies equally to VB.

You will need to manually copy the templates to the appropriate folders.  Typically user templates reside somewhere under Documents/My Documents.  You can verify the location by opening Visual C# Express Edition, selecting the tools menu, then the options pad.  In the resulting dialog, check show all settings in the bottom left corner.  You should now be able to select the Projects and Solutions node in the treeview.  This will display the current locations for item templates and project templates.

Once you know the proper template locations, copy NUnit Test Project - CS.zip to the project template location and NUnit Test Fixture - CS.zip to the item template location.  If you have touched all the bases to this point, you should see the new project template option when you select the file menu and click the New Project pad.

Select the NUnit Tests template under My Templates, give the project a name and click OK.  After the generation process is complete, press F5.  After a brief pause for compilation, the NUnit form should display and run the tests.  You can then enjoy watching the default tests happily fail.  Close the NUnit form to return to the IDE.

If you open the <projectname>.cs file, you will see a test fixture (class) with three default test methods included.  You can add as many tests as you want to this class, but you will probably want to group your tests into separate classes.  When you want to add another test fixture, simply right-click on the project and select add -> new item.  You will most likely have to scroll to the bottom of the item templates list to find the NUnit Test Fixture listed under my templates.

I like having my tests run on every compile, but you may want more options.  If you add a new NUnit test project to an existing solution, you will need to configure the solution for it to launch the NUnit GUI as the default start action.  Alternately, you can configure the solution to launch the currently selected project.  Right-click the solution in Solution Explorer and choose properties.  There you can select the Unit Test project if you want a single startup project.  You can choose the Current selection to have more control, or you can choose the multiple startup projects option, if you are feeling especially frisky.

If you have made it this far, then you have everything you need to practice TDD in Visual Studio.  From here, I recommend you get familiar with NUnit by reading their documentation.  Next, you should learn more about TDD and how to be effective with it.  I have compiled some extensive bookmarks for your convenience.

I hope this tutorial has helped eliminate your concerns and alibis over taking the TDD plunge.  I want to make it as simple as I can for interested developers to get started.  If you have any feedback or suggestions for this entry, please post it in the comments so that I can make this a "go to" reference for aspiring TDDers.

Cheers,

++Alan

TDD | Tools    Comments [1]

VSX on Code To Live



# 

Code To Live I recently did an interview and quick demo with Josh Holmes from the Code To Live podcast.  The topic was Visual Studio Extensibility. 

I liked having the opportunity to show some code as well as talk about the technology.  The demo was recorded in the speakers' lounge at the Memphis Day of .NET.

If I seem overly mellow in the interview, it is due to exhaustion.  It was recorded at the end of the first day of DevLink, after I had given two talks.  After I finished the interview (and my cigar) I headed back to the hotel to crash.


Code To Live: Alan Stevens talks on Visual Studio Extensibility

Enjoy,

++Alan

Entity Framework on the ASP.NET Podcast



# 

I did an interview with Wally McClure recently about the Entity  Framework for his podcast.  It is now available for your listening pleasure.  I had some bandwidth issues that caused Skype to choke a few times, but it sounds like Wally did some crafty editing on those parts.

Our discussion was fairly general and introductory, so if you aren't already aware of the Entity Framework, this should be a decent introduction.

ASP.NET Podcast Show #105 - Alan Stevens and Entity Framework

Cheers,

++Alan

 Tuesday, November 06, 2007

Tech Ed U.S. 2008 Split



# 

This is fantastic news.  This will improve the signal to noise ratio for both developers and system engineers.  Thanks to Jason for the heads up.

++Alan

 Saturday, November 03, 2007

Visual Studio as an Application Platform



# 

Josh Holmes blogged about Microsoft as a platform company rather than an application company.  He referred to VSTO as making Office a platform for other companies to develop applications.  He further mentioned Facebook's recent success as a platform for others to extend.

I heartily agree with everything that Josh is saying.  I think I heard the same argument a few years back.  Jerry Pournelle has said for years that while OS/2 was the better OS technically, IBM wanted to sell the SDK, while Microsoft was slipping Windows SDK CDs in every Comdex attendee's bag.

I especially endorse Josh's argument that Firefox is a better platform than Internet Explorer.  It doesn't have to be that way, but it is, for now.  Firefox has some flaws in its add-in model.  I keep expecting Microsoft to release a managed API like VSTO or the MPF for IE.

Software development is constantly in flux.  Should we build web apps, Windows Forms apps, Click Once smart clients, WPF or Silverlight apps?  For my eight years as a software developer, I have built applications that leverage the power of the desktop computer.  I like desktop apps.  I use web apps, like gmail, del.icio.us and Google Reader, but I prefer a rich desktop application UX.

Perhaps I'm becoming a curmudgeon, but AJAX doesn't excite me.  It's still just JavaScript, and it's still slow.  I'm not foolish, I realize that the trend will continue to be leveraging the web as a platform, as more previously desktop only applications move into the browser, and I don't think this is a bad thing.

What I know is that no web app can completely duplicate the rich UX of a desktop application, no matter how many smart people argue otherwise.  I use OWA frequently, but it is not a replacement for Outlook.  In fact, I think Outlook is the best example of leveraging Office as an application platform.  The most recent release of VSTO made creating Outlook plugins significantly easier.

If I were still creating line of business applications as a consultant, I would be adding an Outlook dashboard to every client's system.  Check out TeamLook for an example of what I'm describing.  I keep expecting Microsoft to purchase Personify Design and make Juan independently wealthy.

As I examine my own computer usage I have identified one other desktop application that I believe will not be moved entirely to the web.  That application is Visual Studio.  I use it daily, and I cannot imagine an equivalent experience in a browser.  That is why I have been so stoked about VSX since I first heard about it.

I'm not sure the message has traveled throughout the developer community, but the new Visual Studio 2008 Shell turns Visual Studio into a platform for new application development.  It takes some explaining, but think of Visual Studio as a framework for building an application.  VS handles the main screen, and most of the plumbing, and you as the application developer focus on adding business value.

I'm not saying that the Visual Studio Isolated Shell is the right solution for every smart client application, but if the problem domain fits the Visual Studio tool and command metaphor, then it is worth your time to investigate.  I'll be speaking about exactly this topic on November 10 at the Memphis Day of .NET.  I'll also be blogging on Cave Markings about the progress I have made in exploiting the VSX tools for application development.  Stay tuned, the future is bright!

++Alan

What's Up at Windows Live?



# 

I don't write blog posts from my desktop PC (or anywhere else, honestly) very often.  I wanted to make a post about some progress I made with the VSX, but I noticed I had an old beta of Windows Live Writer installed on this box.

I downloaded what appeared to be the installer for Live Writer here.  Upon download completion, I began the install only to be prompted to set my default home page and my default search provider to MSN and Live search respectively.  While I don't like an installation routine trying to change unrelated settings, I will credit the Live team for at least prompting me.  I won't install anything from Yahoo after they changed my home page and search provider without asking.

Moving on, I encountered a screen asking if I wanted to install additional software with all the boxes checked, of course.  I unselected the additional packages, and looked for a "next" button without success.  I tried cancel, but that wanted to exit the whole install.

I stared at the same dialog while it apparently checked to see if I had Messenger, Writer and Sign-in Assistant already installed.  I don't why it took so long to check, it obviously new they were installed because they weren't listed in the additional products section. 

This "Checking for installed products" went on for far too long.  Eventually the installation began, with an update to Messenger that I did not ask for, nor particularly want.  Why does Microsoft continue to insist that they have the right to install un-requested updates on my machine.  At least with the Microsoft Update site I can decline updates.

In the end I have the new version of Windows Live Writer that I wanted.  It "only" took 41 minutes to install!  What is up with that?  Who thought this would provide a good UX (user experience)?  WTF?!?!?

Grrrrr,

++Alan

[Update] It appears that I took issue with the install experience the last time I updated my Live Writer install.

 Thursday, November 01, 2007

Charles Petzold to Deliver the Keynote at Memphis Day of .NET!



# 

In case you are unaware, Mr. Petzold is the Grand Jedi Master of Windows programming.  He wrote THE BOOK on the subject back in "the day." 

Now, he is the ultimate authority on the workings of Windows Presentation Foundation with two tomes out on the subject.  If you can make it to Memphis next weekend, then head over to the site, and sign up!

See ya' there,

++Alan

    Comments [0]
 Wednesday, October 31, 2007

Speaking at Memphis Day of .Net 2007



# 

I'm excited to be speaking at Memphis Day of .Net 2007 next weekend.  I'm a former student at Memphis State... er, I mean University of Memphis, where the event is taking place.  This will be a bit of a homecoming.

I'll be talking about VSX, and getting into more detail than I have previously.  I've been digging deep into the Visual Studio 2008 SDK as work ramps up on VFP Studio.  Now that I have a better understanding, I'll be able to show how to create and access services in the shell.  Here's the session description:

VSX: Xtreme Xtensibility with the Visual Studio 2008 Shell and the Managed Package Framework

During this session we will look at ways to extend Visual Studio 2008 using the VS 2008 SDK. We will build extensions using the Managed Package Framework that access the same APIs that the Visual Studio team uses. We will explore the opportunities for distributing tools as packages to users without Visual Studio installed. Finally, we will examine the new possibilities for developing commercial software on top of the Visual Studio platform leveraging the Visual Studio 2008 Shell Isolated Mode.

Check out the rest of the sessions here.  It looks like a great lineup.  I hope to see you there!

++Alan

My Life | VSX    Comments [0]