Monday, November 22, 2004
JUST KIDDING!

Posted from BLInk!
Monday, November 22, 2004 5:05:49 PM (Eastern Standard Time, UTC-05:00)  #     |  Comments [0]  | 

this is the BEST ! Hooray!! Great great idea folks!!!

http://armyadvice.org/armysteve/archive/2004/11/22/932.aspx

I know people have sent Steve movies (Russ!) , candy and stuff to give out to kids (Rob!).



Posted from BLInk!
Monday, November 22, 2004 3:07:47 PM (Eastern Standard Time, UTC-05:00)  #     |  Comments [0]  | 

Well, it's really hard to follow recent deeply technical shows with the likes of Juval Lowy, Jay Roxe, Kate Gregory, and a show with Mark Pollack, Ted Neward and Don Box, but heck "I yam who I yam" and hopefully it'll be a fun show to listen to and you'll even learn something new that's actually technical.

As we are supposedly our own worst critics....I hope that's truly the case here. :-)

Thanks Carl for inviting me on.

okay okay here's the link



Posted from BLInk!
Monday, November 22, 2004 9:25:42 AM (Eastern Standard Time, UTC-05:00)  #     |  Comments [0]  | 
As "rizzo" points out, my astonishment re: wrapping a SQL excution inside the new System.Transactions.TransactionScope in .NET 2.0 isn't 100% a new concept. If you used Enterprise Services (which I never ever had need to so I don't know jack about them) which is in the namespace SystemEnterpriseServices, you know that some of this ability existed in .NET 1.1 for anyone doing distributed transactions. The new stuff is improved greatly over the old which I can tell from reading the documentation but I can tell even more from reading the excitement of developers like Bill Ryan  and Sahil Malik who did use the transactions in Enterprise Services.

Posted from BLInk!
Monday, November 22, 2004 9:06:08 AM (Eastern Standard Time, UTC-05:00)  #     |  Comments [0]  | 
 Sunday, November 21, 2004
My eyes are getting bigger and bigger as I'm digging into transactions in ADO.NET 2.0, or I should really just say in .NET 2.0.

First, I like that it solves a problem I currently have with a .NET 1.1 application.

I have to insert data into two tables. The first gets one new record, the second gets many that are related to the first.. If the first insert works, I go the second. If one of the updates to the 2nd table update fails, I have to roll back all that were done before it and then I have to delete the new record out of the first table. There may be a better way in 1.x, but that's the best I could figure out.

Now with MARS, I can use one connection and therefore one transaction on all of these executions. A failure in the 2nd set will also rollback the first. That is super sweet.

In fact, Angel Saenz-Badillos recommends this as one of the two reasons *he* would use MARS.

Now I find this great 15 seconds article by Bill Ryan who has also found a wonderful muse in the aptly named Angel . Though I was experimenting with transactions using the same old way (using the SqlTransaction class), Bill shows a much simpler implementation using the new System.Transactions.TransactionScope class. (The namespace is new and I cannot believe I don't have this (yet) in my Whidbey BCL presentation!!!) Oh boy! First of all, if you can remember the first time you tried to implement a transaction in ADO.NET, it was really confusing (and remains so). This implementation, wrapping the whole thing inside of a transaction (very new stuff for me) is really simple!

Think about what's happening here, I'm using System.Transactions.TransactionScope - nothing to do with SQL, but it's rolling back or committing my SQL transactions!  I have coded this up with two commands on one connections. Here's some VB:

    Public Sub MARSUpdateTestTrans()
        Dim sqlbuilder As New SqlConnectionStringBuilder
        With sqlbuilder
            .ConnectionString = GetSqlString()
            .MultipleActiveResultSets = True
        End With
        Using ts As New System.Transactions.TransactionScope
            Dim IsConsistent As Boolean = False
            Dim conn As New SqlConnection(sqlbuilder.ToString)
            Dim cmd1 As New SqlCommand("update employee set fname='Julie' where emp_id='KJJ92907F'", conn)
            Dim cmd2 As New SqlCommand("update employee set fname='Annabelle' where emp_id='AMD15433F'", conn)
            conn.Open()
            Try
                cmd1.ExecuteReaderExecuteNonQuery 'oops this had started out as a query...forgot to change the method
                cmd2.ExecuteNonQuery
                Throw New Exception
                IsConsistent = True
            Catch ex As Exception
                 'whatever else you want to do
            Finally
                ts.Consistent = IsConsistent
                conn.Close()
            End Try
        End Using
    End Sub

If that's not enough, Bill explains that you can wrap calls to totally different  databases inside of this one transaction and it handles all of the goo for you.

As if that isn't enough, Bill goes on (with some encouragement from Angel) to explain something that is beyond the scope of work I have done, but this is what thrills him even more. Not only can the transactionscope handle the different databases, but it also knows how to deal with local and distributed, SQL Server, Oracle, MSMQ.

Do not ignore this class. No, it won't solve world hunger. But maybe you can go do some community service work with all of your free time it just gave you!

So remember, the SqlTransaction class is still there and there may be lots of cases where it's better to use (one case is for more control about how the commits and rollbacks work). There is still more to explore!



Posted from BLInk!
Sunday, November 21, 2004 9:29:07 PM (Eastern Standard Time, UTC-05:00)  #     |  Comments [0]  | 

Sahil (who is the author of this book on ADO.NET) and I chatted about transactions in MARS after my DotNetRocks show on Friday. I think his curiousity lay in the potential of multiple transactions within one connection in MARS. Rather than theorize, I thought I would just try it in code and my answer is "can't be done". You will get a System.InvalidOperation Exception that says "SqlConnection does not support parallel transactions."

In theory this makes sense. In his MARS FAQ post, Angel (a tester on the ADO.NET team) explains when he likes to leverage MARS:

Q: So if MARS is not for performance what is it good for?

A: I like to use MARS in two core scenarios, 1) When using MARS results in cleaner looking code and 2) when I am using Transactions and need to execute in the same isolation level scope.

Q: When does using MARS result in cleaner looking code?

A: The quintessential MARS example involves getting a datareader from the server and issuing insert/delete/update statements to the database as you process the reader.

 Also, it's good to note that MARS just is, it's just there. You don't really turn it on or off (though you can change the SQLConnection setting - but definitely read the FAQ on that point). It just kicks in when needed. It lets us code in a way that is logical. MARS was one of the most requested features for ADO.NET 2.0. It was really hard to get in there, but people were tired of getting an error message when they did what came naturally, try to use one connection for multiple commands.

But MARS won't prevent you from writing code that will reduce your performance. In many cases, you will actually have much better performance leveraging connection pooling over forcing multiple queries (or executes) on one connection. So you should definitely consider how you take advantage of this feature.



Posted from BLInk!
Sunday, November 21, 2004 9:17:22 PM (Eastern Standard Time, UTC-05:00)  #     |  Comments [0]  | 

You've got to love this level of detail! Here is an exception raised from SQL Server 2005 into VS2005 (latest CTP) when I was doing some testing to play with transactions in MARS and passing in some tsql to do a table update.



Posted from BLInk!
Sunday, November 21, 2004 4:54:52 PM (Eastern Standard Time, UTC-05:00)  #     |  Comments [0]  | 
This is *horrible* news! I can no longer use the excuse that I do not have a box for Longhorn. But I'm busy with (oh, the how I want to say "busy with wse" but it's ADO.NET 2.0)  right now and need to stay focused. You people are just cruel with your temptations.

Posted from BLInk!
Sunday, November 21, 2004 4:32:18 PM (Eastern Standard Time, UTC-05:00)  #     |  Comments [0]  | 
I just can't. It's a little lonely working here on on a gray Sunday afternoon, so I popped in a CD that I bought in Santa Fe, NM a few years ago: Gypsy Passion: New Flamenco. This doesn't help me work. I can't sit still now. I just want to get up and dance around the room!

Posted from BLInk!
Sunday, November 21, 2004 3:25:44 PM (Eastern Standard Time, UTC-05:00)  #     |  Comments [0]  | 

Recently published to the SQL Developer Center on MSDN

Using CLR Integration in SQL Server 2005



Posted from BLInk!
Sunday, November 21, 2004 2:23:51 PM (Eastern Standard Time, UTC-05:00)  #     |  Comments [0]  | 

Last night I dreamt that I was giving a presentation to people involved in the medical field for something in Visual Studio. Somehow, 45 minutes into the presentation, I still hadn't gotten started yet. I had forgotten my remote clicker, there were all kinds of technical problems. I walked out of the room and out of the building. but then turned around and came back. Finally, I really started doing my presenation and then my "ghost" program showed up as I had inadvertantly clicked on the icon to start the application. But it wasn't really like Symantec Ghost. It was a program that displayed transparent images over the desktop that looked like ghosts. I couldn't figure out how to turn it off, but the attendees wanted me to which took more time. After that, I started up again, but then my computer rebooted itself and there was a message written in ink on the screen that was some kind of "ha ha I just reformatted your drive and installed WindowsXP but nothing else". So my presentation was gone. Powerpoint was gone. Visual Studio was gone. I didn't' have my thumbdrive with my samples on it. I didn't have a spare hard drive with all of my applications on it. Plus I had two more presenations to do after this one and only like 5 minute breaks in between. So, not only was this presentation a wash, there was no way I would be able to do the others.

Somehow I was back home and whatever virus had created that problem was also on my main development machine and when I restarted the computer, it triggered the same event, wiping out my hard drive. And of course I hadn't backed up in a week or so.

My husband has nightmares about zombies and things like that. This is my version of a nightmare.

Maybe I should look at this dream and say "well, at least things didn't go that badly at ASPConnections!" Or maybe I should go take the shrink wrap off of the Ghost application I bought last week and set it up to control my backups on to my external 200GB drive. Maybe I should even get another drive. Maybe I should just pack it in and go pursue an alternate career.



Posted from BLInk!
Sunday, November 21, 2004 11:38:34 AM (Eastern Standard Time, UTC-05:00)  #     |  Comments [0]  | 
 Saturday, November 20, 2004

from Clemens Vasters' blog

I am presently doing some intense research on services, service patterns, message exchange patterns and many other issues related to services (No surprise there). However, I can't do that without external help and since many people are reading my blog, I can just as well start asking around right here:

I would like to get in touch with companies (preferrably insurances and banks) who afford a corporate history department. The ambitious goal I have is to reconstruct a few banking or insurance or purchasing business processes of ca. 1955-1965.

more on his blog...



Posted from BLInk!
Saturday, November 20, 2004 2:16:40 PM (Eastern Standard Time, UTC-05:00)  #     |  Comments [0]  | 

TabletPC Stuff
Doodle Application: www.thedatafarm.com/doodle.aspx
TabletPC Developer Center http://msdn.microsoft.com/tabletpc
Lora Heiny's sites (the tablet pc "guru" that Brian Noyes talked about in the chat room)
www.whatisnew.com and www.tabletpcpost.com

ADO.NET 2.0
Angel Saenz-Badillos weblog (ADO.NET Team Member) http://weblogs.asp.net/angelsb/
Watch for article by me in MSDN Mag sometime in the spring.

Web Services Enhancements 2.0
Dev Center, including articles and Hands on Labs http://msdn.microsoft.com/webservices/building/wse/
www.wsefaq.com
www.dasblonde.net
www.benjaminm.net
www.softwaremaker.net/blog
Watch for article by me on the DevCenter sometime soon

INETA and .NET User Groups
www.ineta.org
(my user group... www.vtdotnet.org)

IMAGINE CUP
www.imaginecup.com

Base Class Libraries in Whidbey
Dev Center: http://msdn.microsoft.com/netframework/programming/bcl/
BCLTeam Blog: http://weblogs.asp.net/bclteam
Watch this page as I will upload the latest version of my BCL Whidbey deck: http://www.thedatafarm.com/talks.aspx
Watch for article in Code Magazine by me on DebuggerVisualizers!

Upcoming conferences I'll be speaking at are listed at www.thedatafarm.com/blog (requires actually browsing to my blog)

Thanks Carl & Rory & Geoff. It was a blast!


Posted from BLInk!
Saturday, November 20, 2004 1:00:34 PM (Eastern Standard Time, UTC-05:00)  #     |  Comments [0]  | 

Since Microsoft says WindowsForms controls only work in IE, I have never tried anything else. I don't have FireFox on my computer. I did not reply to the recent request from Netscape to beta test their new browser and don't want an AOL screenname just to do so. Has anyone even tried it? I'd be curious if someone with a tablet and the latest O/S browses to www.thedatafarm.com/doodle.aspx with Firefox or the new beta. Let me know.



Posted from BLInk!
Saturday, November 20, 2004 12:20:19 PM (Eastern Standard Time, UTC-05:00)  #     |  Comments [0]  | 
Rob Windsor sent me the transcript from the chat room during the DotNetRocks show last night. I had a great laugh at the reaction from these guys when I started talking about the fact that I worked at Penthouse (hey, and OMNI, okay?) Magazine during the mid-80's and then Playboy a few years later. Not like working with models or anything. Just doing computer stuff of course. But I did get to travel all around the country because of a little program I wrote for Playboy's advertisers to do some whiz bang analysis. One of those trips out to L.A.(where I got to go the VERY cool Chiat/Day in Venice, CA who was really breaking the mold with their Mac ads) coincided with a Playmate of the Year party. So I actually got to go to Hef's mansion for the party. And of course I worked in an office environment where it was totally acceptable for the guys to have posters and calendars of naked girls in their offices and cubicles. I somehow managed to justify it all. I had a great job, got to travel a lot and was getting paid pretty well at about 27 or 28 and lived what seemed like the high life. It was the 80's in NYC. Right after Warhol had died so things had started changing, the club scene was evolving, Reagan was president. We transitioned from the larger than life Ed Koch who seemed to represent what NY was all about to David Dinkins. Ahhh I begin to wax poetic. Back to work.

Posted from BLInk!
Saturday, November 20, 2004 11:21:29 AM (Eastern Standard Time, UTC-05:00)  #     |  Comments [0]  | 

Last night on DotNetRocks we were all over the map and when we were talking about the tablet, I wanted to mention how he XThink Calculator had really helped me think out of the box for tablet applications. But my mind just couldn't find that name, which was buried deeply under all the other muck in there. So I described the application and I also learned that someone in the chat room kept typing 'it's XTHINK!', but I wasn't watching the chat room.

I've written about othe program before. (almost exactly one year ago!) It's really cool.



Posted from BLInk!
Saturday, November 20, 2004 10:45:02 AM (Eastern Standard Time, UTC-05:00)  #     |  Comments [0]  | 
 Friday, November 19, 2004

I've read about MARS, thought about MARS and written a little about it what I learned. Now I'm going to divert my attention from WSE for a while and start playing again wtih ADO.NET 2.0. The first thing I'm going to do is take Angel's MARS FAQ blog post (he's on the ADO.NET team) and try out some of this stuff with the new bits, especially with transactions. Someone asked me about them, but I hadn't played with them yet so I didn't have much to say. :-( 

He also references an article on TechNet about MARS and transactions.

So check out Angel's post. I know I have to experiment before I can truly understand what's going on, so I will play with MARS a little more and figure out what you can and can't do and report back!



Posted from BLInk!
Friday, November 19, 2004 10:30:32 PM (Eastern Standard Time, UTC-05:00)  #     |  Comments [0]  | 
Friday, November 19, 2004 5:46:38 PM (Eastern Standard Time, UTC-05:00)  #     |  Comments [0]  | 

Anyone want to place bets? He's not a geek by the way. In fact, he has a poster from Milwaukee Tools that says "nobody ever got a splinter building a website" and another one that says "people that don't sit at a desk all day live longer." You know what they say, opposites attract! :-)

7:30 pm est (even though the website says 9-11) http://www.franklins.net/calldotnetrocks/



Posted from BLInk!
Friday, November 19, 2004 4:10:01 PM (Eastern Standard Time, UTC-05:00)  #     |  Comments [0]  | 

Yippee!! I'm hoping to hear about one more that would be part of VSConnections, not ASPConnections.

The best part is I will get three hours to do my WSE talk which is a combination of a thorough explanation of the security tools (signing, encryption, etc) which are what WS-Security depends on completely and then a look at the API (the security part), how to code up the basics (real life stuff including a authorizing against a sql database), what policies are and what they look like and how to get at some of them via the Settings Tool. I love love love this talk and getting people off the ground with WSE.

The ADO.NET 2.0 talk is going to be fun for me since I have an article on this topic coming out in MSDN Magazine sometime soon and I had a blast digging through this stuff because I am a database developer first and foremost. Pablo Castro was an amazing resource for me.

The BCL talk is going to keep evolving as new bits come out and it's fun to do and to make sure people see some of the really useful stuff in the framework that aren't really getting a lot of heralding.

Congratulations. You've been accepted to speak at the Spring 2005 Microsoft ASP.NET Connections in Orlando, March 20-23.

ADX252: What's New in ADO.NET 2.0
ADO is here to stay and Microsoft just keeps making it better. ADO.NET has been fine tuned to increase ease of coding, flexibility and performance as well as adding better integration with SQL Server. From the provider independent data access to asynchronous SQL Commands to batch processing to the beauty of the DataTable class now implementing iXMLSerializable, this session will run through the many wonderful enhancements that make ADO.NET 2.0 Evolutionary not Revolutionary.


AGN252: ASP.NET Beyond the System.Web Namespace
A lot of emphasis has been placed on the IDE features of ASP.NET 2.0. This session will take you deeper into the many new things available in the fundamental class libraries that you can use in Whidbey to write more powerful Web applications with ease.


APR301: Web Services Security for Dummies with WSE2 (Half-Day Precon)
If you believe that you shouldn’t have to read a 20-page white paper four times in order to secure your Web services, then the new version of Web Service Enhancements has been designed with you in mind. Although WSE2 has a lot of new tools for plumbers, it is possible to do a lot of very cool and necessary stuff without having to comprehend and code all of the nasty details. This session is designed to explain the key parts of WSE that can and should be part of the basic functionality of any Web service dependent application that you are writing in your corporate environment. The talk will focus on the basics rather than fly through them.



Posted from BLInk!
Friday, November 19, 2004 12:26:22 PM (Eastern Standard Time, UTC-05:00)  #     |  Comments [0]  |