Sometimes I remember that I have a blog for the purpose of sharing my thoughts and passions. I thought I'd sit down and write a nice long post about the things I've been thinking about and working on.
RSS goes Mainstream (we hope)
So, it looks like Microsoft finally took Scoble seriously and dug into RSS. I don't know if he was the cause of it all, but who cares. The end result is that RSS and Longhorn are being used in the same sentence. We had this discussion about using enclosures for any kind of binary a long time ago, and I'm REALLY glad that Microsoft gets it.
I can see some really complex systems being simplified, communication-wise: Sharepoint, Exchange, Outlook, CMS, and just about anything where you have to send binaries around the net and keep in sync. Bravo! Just don't forget about P2P, MS OK? RSS and Peer-To-Peer can work really well together. They can also ignore one another. Just ask Apple.
To Dave Winer: Don't ever go into sales.
So, a few weeks ago I got an email from someone who suggested we publish an RSS feed with all of our shows in it, so the teeming minions can easily download ALL the shows without too much effort. I remembered back to a conversation I had with Rory about RSS who told me you can only publish 15 items in a channel. So, I sent Dave Winer this email
> Dave,
>
> I am getting several requests from podcast consumers to provide an "all
> shows" feed that would break the rules and provide all items in the
> archives.
>
> Is OPML a better vehicle for that?
His reply was:
> You might try reading the spec.
Ouch! So I read the spec, and it says that version .091 of RSS had this limitiation, and that a Channel in 2.0 may contain any number of items. Cool!
Thanks, Dave. By the way, we'd love to have you on .NET Rocks! I'll have my people call your people.
Do we need an Assembly.Unload method?
I had lunch with Mark Miller the other day, and he was telling me how difficult it is to unload individual assemblies. He is a master of massively decoupled systems: component and plug-in based architecture. He was lamenting the fact that he can't just dynamically unload an assembly and reload it. There is no Unload method on the Assembly class. Apparently Jeff Richter told him that the answer was to put the assembly in an AppDomain and unload the AppDomain. That would be great, but when you have lots of assemblies and lots of appdomains trying to get serialization working across them all is impossible. He's hoping that the AppDomain is more serialization-friendly in .NET 2.0 but hasn't had a chance to look at it.
The reason MS gives for not having an Unload method is because of the intricate matrix of traced references that the Garbage Collector deals with. Unloading assmeblies would make a mess of that, apparently.
So, what do you think? Should MS try to do Assembly.Unload? Good idea? Bad?
Laptop Fund. Thank You!
To all the fans who have thus far donated to my laptop fund, thank you! My brother shook his head and laughed. He said people in his office were saying, "man.. I wish I could put up a button and get people to send ME money!" It truly is wonderful being in the service of such great fans, and I thank you wholeheartedly!
The Daily Commute. Great Idea. No Time.
Like most of my hairbrained ideas, they sound great but time and resources keeps me from bringing it to fruition. So is the case with The Daily Commute. I still believe in it, but a) it would take an enormous amount of logistical energy to manage people to read stories, and b) doing it myself would consume too much time. Maybe someday if I ever drop the training and find myself broadcasting 24/7 as a new career.
Speaking of Training - franklins.net is going strong.
I made the comment on my blog that I'd LIKE to get to the point where I'm doing some kind of broadcasting content as a career and let go of the training. Well, I saw comments in the blogsphere like "Carl is giving up training" No way. In fact, I'm adding three new classes to replace my existing 2 classes. I'm developing a VB 2005 for VB6 Developers class, which will be focused on those new to .NET, and a more advanced VB 2005 Master Class which will NOT include the basics, but will be a truly advanced class for .NET 1.1 develoeprs. I will also have an ASP.NET 2.0 class which will be for both new and experienced ASP.NET developers.
The .NET 2.0 Launch is all about VB!
Microsoft has to reach the VB6 crowd if they are truly going to win with .NET. It's ironic. They built such a powerful tool, and in order for it to be ultimately successful in the market place they have to hide the complexity and emphasize the RAD. I personally think it's a great time to move from VB6 to VB.NET, and I will do my part to educate the VB6 community in the best way possible.
Rocky does DataSets!
I had an IM conversation with Rocky Lhotka earlier this afternoon and I asked him what he thought of DataSets in 2.0. If you recall, he doesn't like the fact that you can't control access to data. You can make typed datasets and add your own logic, but if you have to re-generate the Dataset code your logic vaporizes.
With 2.0 the Typed Dataset is generated as a partial class. Partial classes are classes that are split up between two or more source files. So, you can create a logic part of the same typed dataset class for your validation and rules. The trouble he's having is that some of the events and overrides are not firing. One problem which we both independently discovered is that if you override a member in the generated class, for example OnRowChanged (which is overriden in the generated dataset code) then you can't override it again in the other part of the class.
I suggested that he grab a reference with events to the DataTable and handle the events that way. It works for me. He said he would try it, and more importantly, that if he can get around this issue then YES! Rocky will have a NEW OUTLOOK on datasets. He also thinks (as do I) that the majority of VB6 applications out there would be best suited for Datasets in 2.0 simply because many VB programmers have such a hard time grokking business objects, and the result is often poor design, which leads to poor results ultimately.
So as you can tell, I'm pretty bullish on Datasets in 2.0, much more than I was in 1.1. I mean, I always had a hard time recommending the business object route for many teams because I could tell that they'd never get it done right, or at all.
Partial Classes make Code Generation Usable
As an extrapolation of the above scenario, we can come to the conclusion that when you generate partial classes from your favorite code generation tool, you can keep your logic in class files that do not get generated. Therefore, if you need to re-gen, you can do so without whacking your precious logic code. This is good news for people like Kathleen Dollard, who is coming up on DNR next week, by the way. I plan on talking to her at length about this. I also know that Ted Neward is down on Object Relational Modeling. I wonder if he sees partial classes as a way to hedge against failure in an ORM project. I'll ask him next time I see him. What do you think?
More Shows! More Shows!
Richard and I have plans for more .NET Rocks! content. I can't tell you EVERYTHING we have planned, but you can count on a DNR Game Show called The 64-Bit Question. We're going to kick it off at the PDC, and from there we'll see what happens. We're pretty pumped about it, actually. The idea is to get people on the phone to compete in a quiz show using questions from .NET and general computing history.
We have some other things in store too. We eventually want to do DNR more frequently than once a week. His schedule doesn't currently permit it, but I may be able to do a mid-week show myself. Maybe a shorter show focused on the community. We'll see.
Road Trip!
I'm 90% sure we're going to do a road trip across the US in the weeks leading up to the launch. I don't have an absolute guarantee yet, but it's looking good. We'll be podcasting a new show every day, with blog entries and photos also being shared via RSS. We'll also be making the next DNR movie on the road. This should be fun. Details to follow soon, I promise.
New Toy: a Baritone Horn!
Yep, I picked up a bari horn at a local music store for a couple hundred bucks. I played in my high school marching band. Trumpet too. I liked Bari Horn better. Bwah! Bwah! Bwah!
Code Camp 4 in Boston!
Don't hold me to the date, but it looks like we'll be doing another Code Camp in Boston September 24th and 25th (Saturday and Sunday). These are free! Great content! Pizza! It doesn't get any better than that.
DevConnections Vegas November 7
DevConnections will be occuring during launch week in Las Vegas! This is now the biggest non-microsoft show attendee-wise. Come see what all the fuss is about.
My Toshiba M200 Screen Broke!
That's right. I wrapped it in towels and took it on a plane in my suitcase. Big mistake. Luckily, Arin Goldberg told me that I could order a new screen for about 130 bucks, and he was right! He even gave me the part number (apparently his suffered the same fate). I had a new top screen in 3 days, and with a screwdriver and about 10 minutes it was replaced! Thanks, Arin!
Well, that's enough for now. I really ought to blog more.