I’ve signed up to do a second session at the Silicon Valley Code Camp October 7th and 8th. In addition to my talk on Reflection, I’ll also be giving a talk on Microsoft Message Queueing and how it can be used to offload work on your application and do that work asynchronously. It’s a lot of work getting these talks together but I’m hoping this turns out to be fun!
Here’s a link to my sessions:
Talk to you later!
Spent this last Saturday at the SoCal Tech Summit ( http://www.socaltechsummit.com ) seeing some presentations and visiting with friends. It was time well spent as I saw two excellent presentations, one on the object modeling in Visual Studio 2005, and the other on the new Atlas features. The third presentation wasn’t nearly as interesting, and that had to do with the speaker. I have to tell you, folks, if you’re going to give a presentation on a technology, at least have the courtesy to act like you support it or like it. There’s nothing worse than sitting through a powerpoint listening to how stupid some company is, how dumb their developers are, and how idiotic what the presenter is about to show you is, and how unlikely it is that you would use it because of the risks involved. Why bother?
In any event, if you haven’t added a class diagram yet through Visual Studio 2005, go do it today! Just right click on your project and select “Add Class Diagram” to see what I mean. It appears to be every bit as powerful as the Rational stuff from way back, but completely integrated. It even updates itself as your code changes, and can track what objects are derived from what for faster and more thorough model review. I came away very impressed as an architect, in that you can sit there and model out the entire system’s roles and responsibilities, and when you are done, save it and hand it off to a development team with the code shell already in place and ready to go. And if you change your code, including methods or properties or inheritance, the diagrams update themselves, leaving you with a consistent model for your software. I was extremely excited about it, although I was not quite in tears, as the presenter suggested I should be.
The Atlas presentation was nearly as interesting, although not quite as exciting. Having built a full Ajax support system myself for past web sites, I understand the theory behind Atlas as well as anyone, so that part of it was a simple review. But the ease with which the presenter was able to implement and interact with Web Services was nice. Certainly usable in place of building your own Ajax application. I hope it ends up better in the end than the full-on WebForm callback system that is in place for a lot of current applications. Personally I hate the overhead of doing a full page refresh for what is really a partial callback. My intent is largely going to be calling web services directly with it and staying away from the partial page refresh as much as I can.
Talk to you soon,
Went down to the Santa Barbara .NET Users Group last night for pointers on how to get the SLO .NET User Group up and running and to introduce myself. Everyone down there was very nice and seemed definitely into the idea. Now hopefully I can start getting members here, I have some announcements going out in the local newsletters for the Chamber Of Commerce and the Society Of Technical Communications. We’ll see how it goes.
Saw a pretty intriguing presentation by Kim Greenlee ( http://krgreenlee.blogspot.com ) of Digipede ( http://www.digipede.net/ ). Digipede has built this pretty interesting Grid based computing system that essentially allows a system to offload its work to a large network of nodes that can even include the receptionist’s computer at the front desk. Processing “agents” are dropped onto each machine that you want to participate in your grid. Each machine also can participate in a “pool” of functionality so that it only asks for work that it can handle. In this way it’s slightly different than a cluster because the machines themselves are responsible for controlling how much and what type of work they take on during their down time, so you don’t have to know exactly how many or what types of machines you are distributing work to.
They’ve also come up with a fairly straightforward SDK that allows you to create “Grid Objects” in your code to hand your processes off, assembly and all, to the processing grid. Your code strategies will have to shift slightly to account for such things as configuration variables (you’ll have to set them as properties internally in your grid object because there is no guarantee the processing agent has access to the same config) and your assembly dependencies (if the grid object can’t figure out all the DLLs to send over, you have to tell it where to find them), but other than that it seems a pretty decent way to distribute work and the performance gains were most impressive. In some instances Kim was able to achieve a 90% reduction in processing time on a distribution network of 9 nodes.
I have only two real concerns about this approach which I did not have time to broach with Kim in detail; one is that the distribution of work is Web Services based which immediately removes the ability to have transaction control. One of the places this would come in handy would be on large scale database inserts or bulk imports of data but you would have to be careful not to step out of the transaction scope when assigning jobs and tasks to the distribution grid. The other is that it is possible for the grid to get bogged down on one large high priority task and leave the others waiting. This means that if you implement this in a Web Server environment, where web servers are waiting on your distribution network, you have to be really sure your web servers are getting the highest priority attention so that your users aren’t held waiting, or that you’ve set up a specific “pool” devoted to web server task processing. Otherwise, the possible logjam would defeat the purpose of offloading the work in the first place.
Kim is also presenting at Code Camp in October and I recommend checking out the presentation!