Monthly Archives: September 2005

Code Camp IV: The Madness (Boston area)

Well, as expected the 4th Code Camp pulled together by our most awesome D.E., Thom Robbins, was fabulous. I had to basically breeze in and out as I fine tuned my talks until noon on Saturday, drove the 4 hours to Waltham and gave 2 talks. Then gave 2 more talks the next morning, hung around for a bit and headed back to Vermont. With my focus on 4 topics it was hard to absorb content from other people’s sessions which was a big disappointment. There were so many great people talking about very interesting and valuable things. I still haven’t figured out how Sam Gentile pulled off doing 3 talks in one day! I think a few other people did this too. Amazing. I was most disappointed thought to miss Dave Burke’s session on Building Smart Client Apps in .NET 2.0. He is reluctant to present at his very own user group but I will keep pressuring him (mwuahaha) to get him to do this talk for Vermont.NET sometime in 2006.

There was a crew from Vermont – over 10 people from Vermont.NET, which is the most who have made the trip of all four Code Camps.

I really enjoyed not only seeing old friends, but meeting in person for the first time some folks who I have communicated a lot with on email. In particular, Phil Denoncourt, who runs the New England C# group and Andy Beaulieu who started CNY Developers in Syracuse New York (my home town) where I am going to speak next week.

I loved doing my sessions. One on Virtual Earth where I made sure everyone was familiar with the awesome resources on ViaVirtualEarth and showed them some of the tricky things I have had to figure out in my Virtual Earth does Ink app. I think what made the deepest impresssion on those in the session was seeing some of the various imaginative and useful web applications people have done using Virtual Earth. It really helps get the ideas rolling. I will write another post with specific links for this talk.

 I also did two “standards” which I am very passionate about – new goo in ADO.NET 2.0 which was followed by an impromptu lunch time session digging further into Query Notification and the other is my attempt to teach the world about some of the crypto tools that are key for doing Web Service security.

The fourth talk is a new one for me: What’s new in WSE 3.0. I really love what the team has done with this new version of the WSE API and love being able to share this information.

Again, I will write a separate post with links to resources, decks and demos for these talks.

But what is most important about Code Camp is to thank Thom Robbins. He pulls off a 2 day “conference” with 80 sessions and over 500 attendees as though it was absolutely no effort at all. Get the speakers to commit to sessions, create a schedule, order some pizza and sandwiches and the rest just seems to happen all by itself. Or so he likes us to think. ๐Ÿ™‚ Thanks Thom, once again.

Don’t Forget: www.acehaid.org

Vermont Tourist ideas for the fall

I shared this list of personal favorite things to do in Vermont for someone who is coming here next weekend and thought I would share. This is all focused mostly in Northern Vermont.

Some super special things I would recommend are
www.shelburnemuseum.org
 
For a GREAT drive:
 
From Burlington, drive South on 89 to Exit 10 (stowe/waterbury)
Stop at Ben & Jerry’s for a factory tour
Continue up Route 100 to Stowe. Check out Stowe, for sure.
Then drive up 108 to the top of Smuggler’s Notch and go hike around for a while.
 
 
Definitely go to downtown Burlington. Maybe do a ride on the Ethan Allen Cruises on the lake. Check out the pier. If you have kids, the ECHO Center right there is really cool. Also while downtown, take a walk on Church Street. That’s an “open mall”  – lots of great local stores with the usual Old Navy cr*p mixed in. Some fave local stores on Church Street are Frog Hollow Gallery (all excellent vermont crafts people and artists) and Apple Mountain – really nice and not cheesy (well, except for the cheese) Vermont gifts.
 
Also, near us, Mad River Glen (and I’m sure other ski areas too) are doing fall foliage rides on their ski lifts. http://www.madriverglen.com/?Page=fall02.html
 
Those are just some ideas of personal favorites.
 
Oh and most importantly, you should go to the Lake Champlain Chocolates (note the aspx page ๐Ÿ™‚ !) factory near downtown and stock up on seconds.
 
Also www.Vermont.org is a great resource for year-round things as well as an event calendar.
 
This sounds like so much fun, I want to come here on vacation now!
 


Don’t Forget: www.acehaid.org

Creating a DataReader from a DataTable’s original values with two new ADO.NET 2 features

One of the fun brain teasers that was asked in my What’s new in ADO.Net 2.0 talk today at Code Camp 4 in Boston was if it was possible to create a DataReader from the original values of a DataTable using the new CreateDataReader method.

Although there isn’t a direct way to do it, I came up with a simple way to achieve this.

Basically you get a dataview of the table. Set the RowsStateFilter to OriginalRows. (That’s available in 1.x also). Then use the new DataView.ToTable method to create a new table. Lastly, use the Table.CreateDataReader to create a DataTableReader.

dim dv as DataView=myTable.DefaultView
dv.RowStateFilter = DataViewRowState.OriginalRows 
dim dtNew as DataTable=dv.ToTable()
dim dtr as DataTableReader=dtNew.CreateDataReader

Don’t Forget: www.acehaid.org

Re-watching Mark Fussell on WSE 3.0

Although I missed Mark’s talk at PDC last Friday, I was still highly entertained by watching (again) his WSE 3 Overview talk from the WSE 3 SDRs. Mark has a lot of fun acting out many messaging scenarios such as timing out a telephone conversation with his mother to demonstrate a new feature for SecureConversation. It may seem silly, but he has great methods of taking concepts that may be confusing and putting them into a context that many people can understand. You can watch this video yourself. There are a bunch of them on the home page of the Web Services Developer Center.

I am giving a similar talk Sunday at Code Camp and then at TechEd South Africa and once more at DevConnections. Mark is a tough act to follow. Being the pm on the WSE team and having a serious background in XML, he knows this stuff inside and out.



Don’t Forget: www.acehaid.org

PDC Day Four

Often, the last day of a conference is a real downer – the expo hall is gone, people have already started leaving. But for me and many, the conference was still in full swing. I had two must-see sessions to attend in the morning. The first was by WSE P.M. Mark Fussell on interoping Indigo and WSE 3.0 messages. The second was a 400 level session by ADO.NET P.M. Pablo Castro on Advanced Data Access Patterns in ADO.NET 2.0.

As the previous day’s first session was 10am I had it in my head that the Mark’s talk was at 10am, so I was really frustrated at 9:30am when I was still packing up my things in the hotel room to realize that his talk started at 8:30. Uggh. Luckily I was able to catch up with Mark later who [read more…]

[A DevLife post]

Don’t Forget: www.acehaid.org

Trying out some Hands on Labs from PDC

One thing I love to do at conferences is the Hands on Labs. There is no email or i.m. or phone to interrupt you while you are working. Unfortunately, I didn’t get a chance to do them this time around while at PDC, but I did do some of them when I got home, in preparation for a talk titled โ€œWhat I saw at PDCโ€ that I gave at my user group (Vermont.NET) on Monday night. The two sets of labs that I did were for LINQ and for Atlas – two technologies that I am *really* excited about. [read more …]

[A DevLife post]

Don’t Forget: www.acehaid.org

Okay, so now am I cool?

The guy in the store who had to explain to me how downloading music works didn’t think I was very cool. But I have a 4GB Nano now. Now all I need is a nice soft little “wallet” for it. The nice thing is that there is a very cool Apple shop near where I live – over the mountain in Waitsfield, named Small Dog Electronics. They have also become a big online store, but their retail store is. I felt a bit like an alien in there, not only because I’m a bit of a microsoft geek, but I have BIG dogs.

Don’t Forget: www.acehaid.org

WSE3 Tracing Info

I have been meaning to mention how cool and informative the info is in the WSE3 trace files. Not only does it show you the soap, but leaves a step by step trail of processing. Here is a sample file from a simple HelloWorld request being made from a client using a UsernameoverX09 policy asserstion.

<?xml version=”1.0″ encoding=”utf-8″?>
<log>
  <outputMessage utc=”9/23/2005 7:04:53 PM”>
    <processingStep description=”Unprocessed message”>
      <soap:Envelope xmlns:soap=”http://schemas.xmlsoap.org/soap/envelope/” xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance” xmlns:xsd=”http://www.w3.org/2001/XMLSchema“>
        <soap:Body>
          <HelloWorld xmlns=”http://tempuri.org/” />
        </soap:Body>
      </soap:Envelope>
    </processingStep>
    <processingStep description=”Entering soap filter Microsoft.Web.Services3.Design.UsernameOverCertificateAssertion+ClientOutputFilter” />
    <processingStep description=”Exited soap filter Microsoft.Web.Services3.Design.UsernameOverCertificateAssertion+ClientOutputFilter” />
    <processingStep description=”Processed message”>
      <soap:Envelope xmlns:soap=”http://schemas.xmlsoap.org/soap/envelope/” xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance” xmlns:xsd=”http://www.w3.org/2001/XMLSchema” xmlns:wsa=”http://schemas.xmlsoap.org/ws/2004/08/addressing” xmlns:wsse=”http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd” xmlns:wsu=”http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd“>
        <soap:Header>
          <wsa:Action wsu:Id=”Id-3055d475-5038-45ae-9909-d7feb1241b7b”>http://tempuri.org/HelloWorld</wsa:Action>
          <wsa:MessageID wsu:Id=”Id-bc312d98-8815-4c65-a015-2cf87409140c”>uuid:80c57c6f-7226-49a6-95ba-51c160841d30</wsa:MessageID>
          <wsa:ReplyTo wsu:Id=”Id-d3c52946-1153-4ef6-85df-4e80506bb0a2″>
            <wsa:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:Address>
          </wsa:ReplyTo>
          <wsa:To wsu:Id=”Id-047058e6-d0e9-4592-8d10-2df4cd13d976″>http://localhost:1624/WSE3_Demo2_Service/Service.asmx</wsa:To>
          <wsse:Security soap:mustUnderstand=”1″>
            <wsu:Timestamp wsu:Id=”Timestamp-71acb0d5-9d5c-4d6d-beba-585045011528″>
              <wsu:Created>2005-09-23T19:04:53Z</wsu:Created>
              <wsu:Expires>2005-09-23T19:09:53Z</wsu:Expires>
            </wsu:Timestamp>
            <xenc:EncryptedKey Id=”SecurityToken-2eb49508-1d19-4dc8-ac98-df6037e4dce3″ xmlns:xenc=”http://www.w3.org/2001/04/xmlenc#”>
              <xenc:EncryptionMethod Algorithm=”http://www.w3.org/2001/04/xmlenc#rsa-1_5” />
              <KeyInfo xmlns=”http://www.w3.org/2000/09/xmldsig#”>
                <wsse:SecurityTokenReference>
                  <wsse:KeyIdentifier ValueType=”http://docs.oasis-open.org/wss/2004/xx/oasis-2004xx-wss-x509-token-profile-1.1#X509ThumbprintSHA1” EncodingType=”http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary”>h9ksyrcUww2w4LrmubC2W11t988=</wsse:KeyIdentifier>
                </wsse:SecurityTokenReference>
              </KeyInfo>
              <xenc:CipherData>
                <xenc:CipherValue>(this goes on for a while…) Udj=</xenc:CipherValue>
              </xenc:CipherData>
            </xenc:EncryptedKey>
            <wssc:DerivedKeyToken wsu:Id=”SecurityToken-a4ae21b8-bdab-4011-a7b2-c5e8f65bae44″ Algorithm=”http://schemas.xmlsoap.org/ws/2005/02/sc/dk/p_sha1” xmlns:wssc=”http://schemas.xmlsoap.org/ws/2005/02/sc“>
              <wsse:SecurityTokenReference>
                <wsse:Reference URI=”#SecurityToken-2eb49508-1d19-4dc8-ac98-df6037e4dce3″ ValueType=”http://docs.oasis-open.org/wss/2005/xx/oasis-2005xx-wss-soap-message-security-1.1#EncryptedKey” />
              </wsse:SecurityTokenReference>
              <wssc:Generation>0</wssc:Generation>
              <wssc:Length>16</wssc:Length>
              <wssc:Label>WS-SecureConversationWS-SecureConversation</wssc:Label>
              <wssc:Nonce>0waVpgMtJcwLe6nu2EJfWA==</wssc:Nonce>
            </wssc:DerivedKeyToken>
            <xenc:ReferenceList xmlns:xenc=”http://www.w3.org/2001/04/xmlenc#”>
              <xenc:DataReference URI=”#EncryptedData-95a05b43-87ff-4265-8220-0b0301998d5c” />
            </xenc:ReferenceList>
            <xenc:ReferenceList xmlns:xenc=”http://www.w3.org/2001/04/xmlenc#”>
              <xenc:DataReference URI=”#EncryptedData-474cdefc-1a57-4848-9d3b-195021ac5f88″ />
            </xenc:ReferenceList>
            <xenc:EncryptedData Id=”EncryptedData-474cdefc-1a57-4848-9d3b-195021ac5f88″ Type=”http://www.w3.org/2001/04/xmlenc#Element” xmlns:xenc=”http://www.w3.org/2001/04/xmlenc#”>
              <xenc:EncryptionMethod Algorithm=”http://www.w3.org/2001/04/xmlenc#aes128-cbc” />
              <KeyInfo xmlns=”http://www.w3.org/2000/09/xmldsig#”>
                <wsse:SecurityTokenReference>
                  <wsse:Reference URI=”#SecurityToken-a4ae21b8-bdab-4011-a7b2-c5e8f65bae44″ ValueType=”http://schemas.xmlsoap.org/ws/2005/02/sc/dk” />
                </wsse:SecurityTokenReference>
              </KeyInfo>
              <xenc:CipherData>
                <xenc:CipherValue> (this goes on for a while…) =</xenc:CipherValue>
              </xenc:CipherData>
            </xenc:EncryptedData>
            <wssc:DerivedKeyToken wsu:Id=”SecurityToken-ef9f2efd-b777-4288-9a93-f7b24b9eb083″ Algorithm=”http://schemas.xmlsoap.org/ws/2005/02/sc/dk/p_sha1” xmlns:wssc=”http://schemas.xmlsoap.org/ws/2005/02/sc“>
              <wsse:SecurityTokenReference>
                <wsse:Reference URI=”#SecurityToken-2eb49508-1d19-4dc8-ac98-df6037e4dce3″ ValueType=”http://docs.oasis-open.org/wss/2005/xx/oasis-2005xx-wss-soap-message-security-1.1#EncryptedKey” />
              </wsse:SecurityTokenReference>
              <wssc:Generation>0</wssc:Generation>
              <wssc:Length>16</wssc:Length>
              <wssc:Label>WS-SecureConversationWS-SecureConversation</wssc:Label>
              <wssc:Nonce>+G94xbAd/DYLEKwIvHIdTA==</wssc:Nonce>
            </wssc:DerivedKeyToken>
            <Signature xmlns=”http://www.w3.org/2000/09/xmldsig#”>
              <SignedInfo>
                <ds:CanonicalizationMethod Algorithm=”http://www.w3.org/2001/10/xml-exc-c14n#” xmlns:ds=”http://www.w3.org/2000/09/xmldsig#” />
                <SignatureMethod Algorithm=”http://www.w3.org/2000/09/xmldsig#hmac-sha1” />
                <Reference URI=”#SecurityToken-6d4fff15-de0b-449d-ab5e-47ac5f5b4592″>
                  <Transforms>
                    <Transform Algorithm=”http://www.w3.org/2001/10/xml-exc-c14n#” />
                  </Transforms>
                  <DigestMethod Algorithm=”http://www.w3.org/2000/09/xmldsig#sha1” />
                  <DigestValue>XOXZQd6B320w7VI/HbimntQgLI0=</DigestValue>
                </Reference>
                <Reference URI=”#Id-3055d475-5038-45ae-9909-d7feb1241b7b”>
                  <Transforms>
                    <Transform Algorithm=”http://www.w3.org/2001/10/xml-exc-c14n#” />
                  </Transforms>
                  <DigestMethod Algorithm=”http://www.w3.org/2000/09/xmldsig#sha1” />
                  <DigestValue>1kE5FH5eNF4vkBKNE9o0/vCJvks=</DigestValue>
                </Reference>
                <Reference URI=”#Id-bc312d98-8815-4c65-a015-2cf87409140c”>
                  <Transforms>
                    <Transform Algorithm=”http://www.w3.org/2001/10/xml-exc-c14n#” />
                  </Transforms>
                  <DigestMethod Algorithm=”http://www.w3.org/2000/09/xmldsig#sha1” />
                  <DigestValue>t/FJbUnIn0gLqoLt6eMRTFOTI/Q=</DigestValue>
                </Reference>
                <Reference URI=”#Id-d3c52946-1153-4ef6-85df-4e80506bb0a2″>
                  <Transforms>
                    <Transform Algorithm=”http://www.w3.org/2001/10/xml-exc-c14n#” />
                  </Transforms>
                  <DigestMethod Algorithm=”http://www.w3.org/2000/09/xmldsig#sha1” />
                  <DigestValue>9QxbDw3l7++M8PbJMur9JxcPf4c=</DigestValue>
                </Reference>
                <Reference URI=”#Id-047058e6-d0e9-4592-8d10-2df4cd13d976″>
                  <Transforms>
                    <Transform Algorithm=”http://www.w3.org/2001/10/xml-exc-c14n#” />
                  </Transforms>
                  <DigestMethod Algorithm=”http://www.w3.org/2000/09/xmldsig#sha1” />
                  <DigestValue>9l1Au73puBn71S7N/1XIBe2vRSY=</DigestValue>
                </Reference>
                <Reference URI=”#Timestamp-71acb0d5-9d5c-4d6d-beba-585045011528″>
                  <Transforms>
                    <Transform Algorithm=”http://www.w3.org/2001/10/xml-exc-c14n#” />
                  </Transforms>
                  <DigestMethod Algorithm=”http://www.w3.org/2000/09/xmldsig#sha1” />
                  <DigestValue>Ys2mZfoq7z+Ix/XyIYWTIDUvm28=</DigestValue>
                </Reference>
                <Reference URI=”#Id-8d5987f2-3dd0-41aa-8dc5-5551bc171011″>
                  <Transforms>
                    <Transform Algorithm=”http://www.w3.org/2001/10/xml-exc-c14n#” />
                  </Transforms>
                  <DigestMethod Algorithm=”http://www.w3.org/2000/09/xmldsig#sha1” />
                  <DigestValue>PkZhQS+mXa/s8BC0x09fp7BOeB8=</DigestValue>
                </Reference>
              </SignedInfo>
              <SignatureValue>tJZfFrgNccXPYc91i41uHxdrzXk=</SignatureValue>
              <KeyInfo>
                <wsse:SecurityTokenReference>
                  <wsse:Reference URI=”#SecurityToken-ef9f2efd-b777-4288-9a93-f7b24b9eb083″ ValueType=”http://schemas.xmlsoap.org/ws/2005/02/sc/dk” />
                </wsse:SecurityTokenReference>
              </KeyInfo>
            </Signature>
          </wsse:Security>
        </soap:Header>
        <soap:Body wsu:Id=”Id-8d5987f2-3dd0-41aa-8dc5-5551bc171011″>
          <xenc:EncryptedData Id=”EncryptedData-95a05b43-87ff-4265-8220-0b0301998d5c” Type=”http://www.w3.org/2001/04/xmlenc#Content” xmlns:xenc=”http://www.w3.org/2001/04/xmlenc#”>
            <xenc:EncryptionMethod Algorithm=”http://www.w3.org/2001/04/xmlenc#aes128-cbc” />
            <KeyInfo xmlns=”http://www.w3.org/2000/09/xmldsig#”>
              <wsse:SecurityTokenReference>
                <wsse:Reference URI=”#SecurityToken-a4ae21b8-bdab-4011-a7b2-c5e8f65bae44″ ValueType=”http://schemas.xmlsoap.org/ws/2005/02/sc/dk” />
              </wsse:SecurityTokenReference>
            </KeyInfo>
            <xenc:CipherData>
              <xenc:CipherValue>(this goes on for a while…) ==</xenc:CipherValue>
            </xenc:CipherData>
          </xenc:EncryptedData>
        </soap:Body>
      </soap:Envelope>
    </processingStep>
  </outputMessage>
</log>



Posted from BLInk!

My first INETA gigs are lining up

I’m so happy to already have two INETA gigs lined up.

I’ll be speaking at WeProgram.net in Virginia Beach on December 6th.

Next will be Tech Valley.NET, in Albany NY on January 25th. I’ll hope for now blizzards!

In addition to that, I will be speaking next month at the new group in Syracuse, NY  – CNY .NET Developer Group. Although they are now an INETA group, I am going there on my own because I grew up in the area and my parents still live about an hour away. I was really exicted when I heard that Andy was starting up this group so am very happy to be going there. So are my parents since I’ll get to go see them, too!

Don’t Forget: www.acehaid.org