Rants, rambles, news and notes from another geek

PDC - NUnitAddin

I was in an Avalon session when Jamie Cansdale IMed me asking if I’d like to get together to play with NUnitAddin. We’d talked about doing that a few days ago and I wasn’t going to miss this opportunity so I bailed out and we went to find a table.

The other night Jamie had shown me his new version (not release yet) and also shown me a bunch of things that I hadn’t seen before. Let me be honest, I hate the NUnitGui that ships with NUnit. The new version (2.1) is slower. And I hate having to jump out of the IDE to run my tests.

So we started out by running a simple set of NUnit tests. Cool. Then Jamie showed me how to debug them. Better. Then he showed me how to launch ANY method in ANY class (as long as it has a default constructor). Very cool.

Then he showed me “The Goods.” We has added handlers that pickup special values that you can pass to the second parameter of Debug.WriteLine. There are a number of them and they do things like:

  • Dump an object as XML using XmlSerializer
  • Dump an object as XML using SoapFormatter
  • Dump the IDL for the call stack of an exception
  • Dump all the properties of an object graph
  • More…

To find these, call Debug.WriteLine( “”, “_help” ) and you will get help.

Here’s the best part… this all works with the current shipping version of NUnitAddin. The next version adds things like configuration sections to completely control the integration with the IDE, a tool panel that shows a tree of your NUnit tests, IDL dump in the editor window, and more.

Jamie is doing some absolutely amazing stuff here and he and I are going to write an article about all soon.

So we were doing all this and suddenly Scott Wiltamuth (Product Unit Manager for Visual C#) and Anders Hejlsberg (inventor of C#) show up and ask to see what we are so excited about. So I gave them a demo of all the stuff Jamie had just shown me (I probably should have let Jamie give the demo, but I made it VERY clear that I had nothing to do with this code, I just wanted to write about it).

Scott sat quietly through it all and seemed impressed. He asked some excellent questions at the end and then talked to Jamie more away from me (job? new product feature?).

Anyway, I knew NUnitAddin was cool, but I didn’t realize how cool it was. Many thanks to Jamie for taking the time to show me all of it… oh and for giving me a copy of the next version… :)

PDC - Indigo: Connected Application Technology Roadmap

Joe Long, PUM for all the Indigo, COM+, MSMQ, and other connected technologies gave this talk I’m in a rush to get to my only Avalon session, so I’ll be quick:

Here are the imporant parts that I got as for planning the next couple of years:

  • “Porting from one version of WSE to another or to Indigo will be a non-trivial exercise.”
  • Build services using ASMX
  • Enhance your ASMX service with WSE if you need the WSE feature set and you can accept the support poilicy
  • Use object technology in a service’s implementation
  • Use ES if you need ES rich feature set
  • You are communicating between components off the local machine and have you have perf issues
  • Use .NET Remoting if├é you need to integrate with an existing proprietary protocol
  • You are communicating with… (sorry the slide went away… I’ll update this post when I can get the slide deck)
  • Use System.Messaging (MSMQ) only if you really need what it offers. It will NOT be migrated to Indigo. It will continue to be supported, but it WILL NOT BE INDIGO.

PDC - Microsoft Research Keynote

I saw stuff during this keynote that was cooler than anything I’ve seen in a long time. Straight up, pure, sexy, cool code.

Dr. Rick Rashid, Senior VP of Microsoft Research opened with a review of the recent activites of MSR. He talked about their commitment to research and their close relationships with the academic community.

The first demo was from the database guys at MSR. We all know about TerraServer, which was a massive database of satellite images of the surface of the earth. Searchable, web services, etc. All cool. Now they’re looking the other way. Into space. Astronomy. Same idea. WOW! The demo was little bit less peformant than the demoer wanted, but it was still very impressive.

Next demo was about community software. As a blogger, this demo got my mind spinning. She showed a dockpanel in Longhorn that was keeping track of all her personal stuff… pretty typical WinFS at this point. But then she fired up something that was maybe a feed aggregator… maybe a community graphing tool, I’m not sure. She was browsing feeds, navigating links, opening items. All from an amazing looking graphical interface. Sweet stuff.

The final demo was absolutely spectacular. This was about using the Tablet PC and ink technologies in an education environment. Effectively using an Ink app as a “smart client” (sorry, couldn’t help myself–see last post) on top of a powerful utility library like MatLab or a newtonian physics library.

For the MatLab demo, imagine this: write a couple of simple equations. Circle them. Squiggle a special gesture and up pops a chart of those equations. Change the equation… squiggle… updated chart. Write a new question… swuiggle… new series on the chart. Very cool stuff.├é Then it starts to get crazy…

He wrote out a series of equations describing the movement of a pendulum. Selected them as a group. Drew a line with a pendulum hanging from it. Used a gesture to set the fulcrum, and POW the pendulum starts swinging. Wow.

Then he made it crazier. He brought in a set of equations that described ballistic path… a baseball being hit by a bat. Draw character… Draw ball… Select equations… select ball… click animate…

And the ball flies over the outfield fence!

This was an amazing demo. I’ve always been skiptical of the whole Ink thing, but I am now converted. I’m giggling to myself just remembering it. :)

PDC - Starting to Crash

I am really starting to crash. 16 hours a day at the convention center is starting to fry my brain. Carrying 10-15lbs in my laptop bag is giving me scoliosis. I’ve had the flu since I got here and can’t crack it with all the smoke in the air. My voice is gone this morning… I tried to give a “woo hoo” during the MS Research Keynote this morning and it just came out as a whisper. Ugh…

OK, I’ve been trying to do one good post per session but that just isn’t going to happen. Yesterday I had powere problems all day because I started out empty and never got caught up. Last night I remembered to power up so I should be better today.

So! Here’s what happened yesterday…

Keynotes: Eric Rudder and Gordon Mangione

OK, I suck. I don’t even remember these. I know I bailed out during Gordon’s talk about Yukon because I had to deal with some work issues, but you would think I could remember Eric’s talk. That is why I blog. I can’t remember stuff like that more than an hour or two later.

Indigo: Building Services (Part 1): The Fundamentals

This was another Don Box Indigo session which means two things this week: excellent presentation and standing room only sessions. This one was PACKED. People were on the floor, standing in the back, every seat full. There were another hundred or so in the hallway watching it on a monitor. Jesus!

The talk itself was excellent because Don gave us the foundation of what Indigo is. Let my just say that his cryptic remarks from the last month or so (e.g. “Indigo is a state of mind”) actually make sense now. Here’s the gist: Indigo is an implementation of web services that started with good service-oriented models and derived a natural interface for programming against it. The ASMX system that we have now is good… in fact it is probably the best thing around _right now _but it isn’t as good as Indigo. That is the high level point as I got it–hopefull Don won’t call me a moron if he reads this. :)

Indigo: Building Services (Part 2): Secure, Reliable, Transacted Services

This session came right after the packed Part 1 session, but in their infinite wisdom, the event planners put it in a different room. So the overflowing crowd from part 1 fought and pushed their way to Part 2 and again, half had to sit on the floor or outside in the hallway. Don was late getting here because he got stuck in a traffic jam caused by all the people! Insane.

Once he got setup, he continued telling us about Indigo, specifically he talked a lot about transactions. After giving us a detailed review of why transactions are hard in a distributed, message based world, he told us what we would and wouldn’t get in Indigo for this. I could spend days reviewing this material so I won’t do it now. Instead I will suggest that anyone interested in this stuff look for the many whitepapers that will be coming out of the Indigo team in the coming months.

With 30 minutes to spare my work called and I had to bail out right as Don started talking about security. Damn!

Visual C# Whidbey: Language Enhancements

Anders Hejlsberg apparently hosted this session, but since I spent the entire time on the phone with my home office, I can only pray that they offer it up as a repeat tomorrow. We’ll see. Everyone I talked to said it was great.

Dinner w/ Addison Wesley Professional

I haven’t talked about it on my blog, but I’m working on a book idea with someone from AWP. I’ve always respected AWP as one of the best publishers in the business so I was really excites when they contacted me about writing a book. I’ll post more about this once it actually becomes something other that speculation.

BOF: Smart Clients

Tim Huckaby hosted this BOF and he presented a fine agenda for us to follow and then we all ignored him and argued about what a smart client is for the whole hour. There were a number of elements that I think were common to everyone’s definition (ok maybe not everyone, but everyone who made sense). They were:

  • An app that works disconnected from, but works better connected to, the Internet (or any network I suppose)
  • An app that takes advantage of local processing power

Other than that, no one could agree. Some people tried to argue that ASP.NET apps count as smart clients. Tim asked us if we thought the new OWA (without a doubt the richest web app ever created) was a smart client. Everyone agreed that the new Outlook may be the best smart client currently deployed.

Basically it was a big argument over semantics, but I think it was important because we don’t have a good definition to use when selling these things to clients. Many people wanted to include easy deployment in that list. Outlook certainly isn’t zero, or one-click deployment. But it is a smart client.

This went back and forth, and back and forth. Once or twice Tim would try to get us back into the agenda and the next person on the mic would go right back to the semantic argument.

Eventually we had to leave the room ‘cause the next BOF was going to start. So we all went to the Westin bar and kept arguing (on many more topics) until the night was over. At the Westin, I met a number of people for the first time. I bought Clemens Vasters a beer in thanks for dasBlog. I met a number of fellow bloggers. I had a fun chat with Jeff Key (author of Snippet Compiler among other things). That was fun.

Finally got back to my hotel at about 12:45. In bed by 1:15. Up at 6:45 and back here by 7:30. This is fucking hard. I love it, but it is HARD.

More later… the MS R&D; Keynote this morning was AMAZING!

PDC - Weblogging the Future of Conversational Software

At 10pm, Jamie, Paolo and I headed to the Weblogging BOF being hosted by Robert McLaws. This was without a doubt the most lively BOF I’ve been in yet. I shouldn’t have been surprised… the room was full of extroverted tech bloggers!

On stage were Robert, Clemens Vasters (dasBlog), and Scott Watermasysk (.TEXT), and occasionally Robert Scoble. Sitting around me were Chris Hollander, Harry Pierson (aka DevHawk), and many other bloggers whose names I should remember this morning, but I can’t (sorry).

This discussion covered a number of topics during its official hour. There was a significant discussion about ATOM vs RSS. The general consensus was that the committe based design that is going on now needs to stop and someone needs to commit. In that regard, I said to the floor, “I move that Clemens and Scott implement it as written and let’s move on.” The motion was moved and seconded, and passed anonymously.

Yeah, right. :)

There was also a heated discussion about how to best categorize content. Mark Canter (the father of Macromedia Director) was loud and opinionated about how he felt that central servers will solve all the problems. Most of the rest of us rejected this idea. One of the things that I (and many others) like about blogging is that I have control over my content.

Clemens threw out the idea that cross-posting (a new feature in dasBlog that lets you post the same entry to multiple blog servers) would solve this problem. I think Clemens was saying that we would have servers for specific topical areas (e.g. Longhorn Blogs). Then if you post to that server, you are effectively categorizing your content.

Again, I’m not a big fan of this. After the meeting ended, a number of us stayed for another hour talking through the issues. Harry, Chris and I spent a lot of time thinking about how the Feed Aggregator could categorize for you. My idea is to use Bayesian filters as the engine behind what amounts to Search Folders (ala Outlook 2K3).

Say you subscribe to 2000 feeds (or if you’re Scoble… 6000). You should be able to create a new filter folder called “Longhorn”. Then you start dragging blog entries into it. Everytime you drag a message into the folder, the bayesian filter adds that to the good list for that folder. Conversely, if you drag a message out of a filter folder, it adds that message to the bad list. Simple to work with, easy to train and it should let you have a nice user-controlled way of organizing content. Filter folders are basically virtual views onto the actual feeds themselves, so these drag and drop operations don’t cause things to move physically. They just cause the rules to update.

I think Chris and Harry liked my idea, but Chris had an even crazier idea. Can we use the links in a post to categorize it. In other words, the fact that this post links to Scoble could make your feed aggregator show you this post. You may not even subscribe to my feed. This really becomes a way of analyzing the edges of the graph instead of the nodes. My graph theory is a bit rusty, so I’ll leave it to someone else to figure this out.

I’m going to play around with the Bayesian search filters. Since SharpReader isn’t open source, I guess I’ll have to start from scratch (although I may try to do it with RSS Bandit). We’ll see.

I ran out of there at 12:05am and just made the last bus at 12:15am. Fell into bed and just barely remembered to set my alarm for 6:30.

Whew. This is tiring.

PDC - Expo Hall Reception + Fun With NUnitAddIn

After Don’s talk I followed the masses into the Exposition Hall for beer, food, chats and of course, free stuff!

Bumped into a bunch of people I hadn’t met before… had a good discussion with one of the WinFS guys.. and drank too many free beers. :)

At 9:00, the conference staff started working us to the door and I needed to head off to my first BOF of the day. But I didn’t get there.

As I was heading to “Open Source Portals: IBS/DotNetNuke/Rainbow” when I bumped into Paolo Marcucci and Jamie Cansdale. Paolo and I first met on Sunday and we were hanging out chatting and watching his Longhorn install creep along. Jamie, of course is the author of NUnitAddin.

As Paolo and I were standing there talking about who knows what, Jamie was playing around in VS.NET. “Look at this,” he quietly interjected.

Paolo and I leaned in to see what he was doing. If you haven’t seen or used NUnitAddin, then you are missing out. Even if you don’t use NUnit, you can take advantage of this tool.

What Jamie was showing us, however, is new code that he hasn’t released yet. He has added some amazing new features, most notably the following (and I only saw it over his shoulder for 2 minutes):

  • A tree view of the tests in the current class
  • The ability to step into code for which you have no source. It shows the IL right in the editor window.

WOW! That is cool. I asked Jamie to give me an hour demo today of how to really use NUnitAddIn because I don’t think I really get it. I mean, I use it, but in those two minutes I realized that I don’t really know what I’m doing. I’ll try to get that to happen today and maybe later I’ll write an article about it.

PDC - Indigo: Services and the Future of Distributed Applications

This was yesterday afternoon’s “intro to Indigo” session, hosted by the always excellent Don Box. This was a very atypical Box demo, because during the hour and a half, we only saw code for about 15 minutes. The rest of the time Don was preaching from his slides. I say preaching, because I remember feeling at the time that it felt like what a southern baptist revival looks like. I kept thinking that someone, maybe even myself, was going to stand up, throw their hands into the sky and yell “Hallelujah!”

I think I now understand what Don has been saying when he spouted things like “Indigo is a state of mind.” It is a state of mind. It is also a bunch of really cool framework extensions that we don’t have yet… :)

Some technical notes:

  • Indigo does not require Longhorn
  • Indigo will run on WinXP, 2K3 and later OSes (e.g. Longhorn)
  • Indigo corrects the mistakes made in ASMX

That’s all for now… there is so much going on here that I’m having a hard time keeping up. Back soon.

PS. I almost fell on the floor laughing when Don said, “COM and CORBA are like this. You create an orifice into a running program and inject a new piece of code into it and say, ‘Run this.’”

That totally isn’t funny to read written down, but when he said it with the accompanying hand gestures I almost fell out of my chair.

PDC - Busy Day

Whew, it has been a very busy day. After the keynote this morning, I ran into Chris Hollander. We grabbed lunch and then took a brief lap through the exhibit hall. I wanted to take a spin on the Segway, but the line was a little longer than I wanted.

After that I swung into “Building InfoPath Solution Using Managed Code: Drill Down” to see how I could use VS.NET with InfoPath. Until now you had to do event handlers using JScript instead of managed .NET code. They demoed the new InfoPath Toolkit for Visual Studio. Very nice.

It is similar to the Office Toolkit for Visual Studio in that it provides new project templates for InfoPath projects. When you fire one of these projects up, it adds a new InfoPath file and a class library project and hooks it all up. When you double click on the InfoPath file it opens the InfoPath designer.

But here’s the cool part… when you add an event handler in the InfoPath designer, it pops back to VS.NET├é and adds a method to your class. Compile and run and the form opens up and the event handler is all hooked up! This is what I was expecting when I first saw InfoPath. Now, many months later I get it.

Or, at least I think I get it. I haven’t checked the CDs yet. :)

I bailed on that session a little early because in my stupidity I left my “Get Your Free Bits” coupon at the hotel. And because I am at the hotel farthest from the LA Convention Center it took me an hour and a half to get there and back. Bummer. But now I have the bits! Woohoo!

When I got back I slipped into “Avalon: Building Applications with Controls and Dialogs”. This was all about XAML and how to make neat UIs in Longhorn. That is very exciting stuff and I can’t wait to start playing with it when I get home, but I certainly won’t be using it for real code for at least a few yeas.

I then slipped over to “ASP.NET: Overview of ASP.NET Whidbey”. This was a very cool talk and I should have come here as soon as I got back from the hotel. ASP.NET 2.0 has tons of excellent stuff like Master Pages, new Project styles, web parts and more. I’m going to try to hit this one when it replays later in the week… we’ll see.

I’m now sitting in Don Box’s “Indigo: Services and the Future of Distributed Applications”. This one will be good. More later.

PDC - Monday Keynote

Just snuck out of the keynote while Adobe was presenting… let me rehash what I saw for my five readers.

It all started with the Red vs. Blue PDC video that was released a few weeks ago. Always good for a laugh.

The BillG came out and ran through his speech. As expected, high level stuff.. good vision and all that. Bill then introduced Hillel Cooperman, PUM for the Windows User Experience team who asked, “Do you want to see Longhorn?” Of course the audience responded with a hearty yes.

Very very impressive. WinFS is very cool. The UI is beautiful (as expected). VisiCalc still works. Amazing animations and transitions.

The coolest stuff from this demo was the WinFS demos. Open My Documents (or whatever it was called) and you see all of the documents on the system… regardless of their physical location. Start typing in the search box and the list filters as you type! He filtered it down from 1100 items to 30 as he typed “Longhorn”. No waiting. Very nice. They ran a bunch of other “isn’t this cool” demos, but I’m sure this info will be covered elsewhere so I’ll be brief.

Jim Allchin then came out and did his “lap around Longhorn”. Set up the three major components (Avalon, WinFS and Indigo) and then jumped in feet first.


ChrisAn and DonBox came out to do a demo after Jim described the subsystem. These two are an absolute riot. As they were setting up, they dropped a bunch of interesting non-avalon tidbits:

csc.exe ships on all builds
msbuild.exe ships on all builds
They started with Don (using emacs of course) creating a simple WinForms app exactly as we would right now. Empty window pops up and the world rejoices. Then they showed us XAML. XAML is like the ASPX file in a code-behind ASP.NET application. You describe the UI in the XAML file and the code goes in the CS file. Very nice. They added a quick XAML file to their app and started populating it with UI elements… buttons, text boxes, labels, a video background. They rotated it, scaled it, alpha faded it. All from the XAML file. Very cool.

Jim Allchin came back out and moved on to WinFS. After his intro, the boys came back out to do the code demos. In three lines of code they added a contact browsing common dialog to the app. The best part of all this was that Jim had to write the code. His editor of choice? gvim. :)

Before Jim could move on, Don asked his to say developer 37 times. Jim responded, “Developer thirty seven times,” before moving on to his introduction to Indigo. Then the code session…

Chris and Don fired up the same app and with 3 new text boxes, one new button and about 5 lines of code made this post to Don’s weblog using Indigo. Oh yeah, that’s what I’m here for! They then used Indigo for some IPC by creating a side panel addin and having the weblog app post there instead. The fact that we will use the same messaging model for IPC and for web services is kick ass.

I’ll post more later after I’ve had a chance to let this settle.