Tuesday, March 13, 2007

VTdotNET had our Vista launch event at last night's meeting and we had a blast. There were about 35 people there (which is a crowd for us!). TEKSystems brought us piles and piles of fabulous pizza and two VTdotNET members, Mike Soulia and Rob Rohr gave great presentation.

Mike, who owns two of our favorite local stores in Burlington (Kiss the Cook and Apple Mountain where he has built their POS system) covered WorkFlow, WCF and WPF. Mike teaches software classes at Vermont Tech as well. WF is a hard thing for many developers to grasp at first, especially when it isn't solving a big problem that they have been struggling with. There are many who see it and say "oh, what I've always needed!" and others who just don't get it. I was in the latter camp at first and could tell there were plenty feeling that way last night. One thing I like to share with folks like me is that the fact that people who I have a lot of respect for, such as Kathleen Dollard, are VERY VERY excited about WF. She is doing a full day session on it at DevConnections. I figure if Kathleen things it's huge, then it's huge and that I need to pay attention to it.

Mike built a basic hello world server and a client  to call it with WCF so people could just see the working parts, get the most basic concepts and see that it works. After this he demo's Expression Web and showed an awesome iPod-like interface that when he hovered the mouse over the center circle (moving it around the circle), the volume went up and down, just like on an iPod. Very cool stuff.

Next up was Rob, who makes the University of Vermont School of Business Administration tick. Before he got started, I made him show Flip3D on his computer. There are plenty that hadn't seen it yet, so there was a fun reaction! Rob covered Vista security and then gave us a great presentation on CardSpaces, which I think nobody in the group has seen before. There's an article on CardSpaces in MSDN Magazine this month (April and it's not online yet, but I have it in my hands!) by Michele Leroux Bustamante.

After the meeting, we raffled off the swag that Microsoft sent as part of this launch event. The highlight was five Vista Business licenses,then there were things like pens, zipper pulls and mouse pads - silly stuff. I was really pleased that a woman who lives in Souther Vermont (over 2 1/2 hours away) and has never been to a meeting before was one of the Vista winners.

Thanks to Mike and Rob for all of the work they did preparing these sessions. And thanks to Elizabeth Rudolph at TEKSystems for not only sponsoring the pizza & soda, but picking it up, bringing it to the meeting and setting it all up.

Tuesday, March 13, 2007 7:38:11 AM (Eastern Standard Time, UTC-05:00)  #     |  Comments [0]  | 
 Monday, March 12, 2007

It wasn't obvious to me how to do this (hey, I've admitted worse embarrassments on this blog before...) so here's the scoop...

A DevLife post

Monday, March 12, 2007 12:41:26 PM (Eastern Standard Time, UTC-05:00)  #     |  Comments [0]  | 

My main machine has so many old apps on it that I don't want to install .net 3.0 there. Now that I have my other dev box set up on Vista, I can easily check out all of Charles Petzolds cool WPF demos that he posts on his blog! (Such as today's 3D shadow test.)

Monday, March 12, 2007 10:42:57 AM (Eastern Standard Time, UTC-05:00)  #     |  Comments [2]  | 
 Sunday, March 11, 2007

If you are not on the email list to receive the monthly newsletter for INETA NORAM  you can always find them at www.ineta.org/newsletters.

Scott Spradlin does a great job putting this together as editor. I do the speaker interviews each month, something I started when I was the editor. This month I got the dirt (that's dirt bike dirt) on Chris Kinsman. Check it out.

Sunday, March 11, 2007 6:11:39 PM (Eastern Standard Time, UTC-05:00)  #     |  Comments [0]  | 

I know that this cartoon in the New Yorker this week sadly comes close to home to many people that I know.

 

Sunday, March 11, 2007 9:02:09 AM (Eastern Standard Time, UTC-05:00)  #     |  Comments [0]  | 

Tomorrow night Patti Smith is being inducted into the Rock n Roll Hall of Fame. Rock on.

Sunday, March 11, 2007 8:59:31 AM (Eastern Standard Time, UTC-05:00)  #     |  Comments [0]  | 
 Saturday, March 10, 2007

The first three days of the week are busy ones!

On Monday, Vermont.NET is having it's Vista/.NET 3.0 Launch meeting. Local brainiacs Mike Soulia and Rob Rohr will be presenting (after months of working with the Vista Launch team as part of the big user group roll out) and we'll have 5 Windows Vista licenses to give away (plus free pizza & soda thanks to TEKSystems, who recently opened up an office in Burlington).

Tuesday is the TEchNet/MSDN Event in Burlington. It's a day of training on Vista and Office 2007 products, with the morning focused on IT Pros and the afternoon for developers. Susan emailed me yesterday to say that they will be giving away Office 2007 licenses at the MSDN event!!!

I'll be missing that though because I'll be driving down to Albany to give a presentation to the Tech Valley .NET User Group about ADO.NET Orcas. Thanks to INETA for sponsoring this trip.

Then I drive back on Wednesday do to a GeekSpeak show with Susan Wisowaty (who is doing the MSDN event on Tuesday) and Glen Gordon. They were kind enough to move the time to later in the afternoon so that I'd be back from Albany on time and ready for action.

 

Saturday, March 10, 2007 1:56:06 PM (Eastern Standard Time, UTC-05:00)  #     |  Comments [0]  | 

GeekSpeak is a lot more free-form than a typical webcast and I'm not sure what to expect. I'll have the new CTP of ORCAS open and I guess we'll poke around Entity Framework and the three LINQ to ADO.NET techs (LINQ to SQL, LINQ to Entities nad LINQ to DataSet). And the most fun part is that I'll be doing this with hosts Glen Gordon (who I did a webcast with on ADO.NET 2.0 topic a few years ago) and Susan Wisowaty (who lives right here in Burlington!), from the MSDN Events team.

More info and registration here

Saturday, March 10, 2007 1:44:24 PM (Eastern Standard Time, UTC-05:00)  #     |  Comments [0]  | 

I'm building out two Vista boxes today. One is a new tablet and the other is my Dell XS280 with a brand new hard drive. Read more...

A DevLife post

Saturday, March 10, 2007 1:15:26 PM (Eastern Standard Time, UTC-05:00)  #     |  Comments [0]  | 
 Thursday, March 08, 2007

Erick Thompson from Microsoft followed up on a thread about where ToDataTable went in the march CTP. http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1300671&SiteID=1

Thursday, March 08, 2007 11:16:50 AM (Eastern Standard Time, UTC-05:00)  #     |  Comments [2]  | 

Police said witnesses reported seeing two males walking on **** at about noon. One of the men was carrying flat screen television; the other was carrying a large duffel bag.

Officers arrived within minutes and found the duffel bag and television behind another house on *****. They followed a set of tracks in the snow and within minutes, officers found *** and ***, who has been under the supervision of the state Department of Corrections.

Thursday, March 08, 2007 10:13:00 AM (Eastern Standard Time, UTC-05:00)  #     |  Comments [2]  | 
 Wednesday, March 07, 2007

Press Release

March 7th, 2007

 

Vermont Software Developers' Alliance

http://www.vtsda.org

 

*** Governor James Douglas will be making a presentation at a Vermont Software Developers' Alliance event on March 21. ***

 

Governor James Douglas will be making remarks about the Vermont Software Development sector and its role in Vermont's economic future.  We've also been informed that he has plans to make a very special announcement regarding the vtSDA.

 

This event will be held on Wednesday, March 21st 2007 from 11:30am to 1:30pm at the Sheraton Burlington Hotel and Conference Center.  The governor is scheduled to speak at 12:00pm sharp, for about 20 minutes. 

 

Mike Quinn, Commissioner of Economic Development and Pat Moulton, Commissioner of Labor, will follow the Governor's remarks with a presentation and Q&A period about the Vermont business environment, specifically relating to the software industry.

 

Please, accept our invitation to attend this very exciting event for the vtSDA and the future of software development in the state of Vermont. We anticipate having 30-40 owners and executives of local software development firms in attendance, as well as a number of government and media representatives.

 

The details of the event are still being finalized. Once we have gathered all the appropriate information we will issue a follow-up announcement.

 

 

Questions? Please email us at marketing@vtsda.org

Wednesday, March 07, 2007 6:12:03 PM (Eastern Standard Time, UTC-05:00)  #     |  Comments [0]  | 

It was -14.7 F at 7am this morning. It has warmed up to -7 right now (8:30am). The thermometer said it got as cold as -15.2 last night. BRRRRRRRRR.

Wednesday, March 07, 2007 8:27:01 AM (Eastern Standard Time, UTC-05:00)  #     |  Comments [0]  | 
 Tuesday, March 06, 2007

I've noticed that the posts on the ADO.NET and LINQ forums for Orcas have completely subsided after a flurry over the weekend. I guess everyone had to get back to work!

Tuesday, March 06, 2007 7:45:00 PM (Eastern Standard Time, UTC-05:00)  #     |  Comments [0]  | 

I just took a peek at the list of abstracts on the Code Camp 7 site, with a thought to decreasing mine from three to two. However, there aren't tons in there yet. There could SO easily be more. Do a chalk talk. Come show off someting you've been working on or something you think is really cool. There is no need for a TechEd type of presentation. If you've got a story to tell, surely there are plenty of geeks who will be interested in hearing about it!

http://thedevcommunity.org/

Tuesday, March 06, 2007 2:01:28 PM (Eastern Standard Time, UTC-05:00)  #     |  Comments [0]  | 

There are SO many ways to "skin the data access cat" in Orcas that I'm getting a little cross-eyed. (Though this could be from looking at all of the XML in the Entity Data Models.)

I thought I would try to sort it out a little here since I have done this for some of the presentations I am putting together.

ADO.NET in Visual Studio Orcas

The "new" ADO.NET is not new, but added to. Evolution and backwards compatibility are key to the ADO.NET team. So in Orcas you will have what you know as ADO.NET 2.0 basically in tact. Then added onto that are two things: Entity Framework and integration with LINQ.

LINQ Integration in ADO.NET (in VS Orcas).

Painting a broad brush stroke to define LINQ is that it gives you the ability to query in-memory objects (that are iEnumerable).

 While there is the basic LINQ to Objects syntax, there are four derivatives of this.

LINQ to XML allows you to use LINQ to query XML.

There are three others that all fall under the umbrella of LINQ to ADO.NET.

The first of these is LINQ to DataSet. DataSets are in-memory objects, right? So we can query them, too. What we are really querying is an Enumerable collection of DataRows. Because of the special nature of DataSets, this "flavor" of LINQ needs to be specialized.

Next is LINQ to SQL. Of course, this taints my brushstroke because SQL is not an in-memory object. :-) However, as long as we have this fabulous new language enhancement, and we are all over querying databases, this version of LINQ was created to work directly with SQL, not only to query, but to update the data as well.

The last of the LINQs is LINQ to Entities. This lets us use LINQ to query the objects that are created by the Entity Framework. So let me jump to that and then come back to this one.

Entity Framework

Entity Framework is a whole new set of APIs added into the System.Data namespace.

The key to the framework is a set of three schema files.

The first file describes the conceptual layer of your business entities using a schema file. This is not replacing your objects. All we are describing is structure and basic metadata. Two of the (many) big advantages of this are that 1) in the end, we can write our data access code against this schema (which creates classes for us) rather than having to code up connections to the db, create complex joins to pull together info from various related tables and write lots of update logic and 2) we can describe these conceptual entities based on what we want them to look like, rather than how they are best organized in a database.

The second files describes the schema of the database, including pk/fk relationships.

The third file is a map between the first two. So that when you code against the entities, the framework can translate your requests (or updates) into what the database is expecting.

So those are just three files (which can be created directly from your db using a wizard or a command line tool and then edited manually).

Interacting with the schema files

There are two APIs that know how to make these schemas do their magic, Object Services and Entity Client.

Object Services

Object Services know how to work with the entities as objects. You can query against the entities and get objects as your results. These objects are managed in memory by Object Services and you can update the database easily with changes made to the objects. So I said the magic word, query.

There are two ways to query with the object services. 1) Directly using (yet ANOTHER query syntax...) Entity SQL, which is similar to using SQL and is built using strings. Here you would use the ObjectServices API to create a query object and then pass in the Entity SQL string 2) Indirectly using LINQ to Entities. If you use LINQ to Entities to query the entity classes, in the background LINQ to Entities will use Object Services to interact with the objects. Either way, ObjectServices will maintain in-memory knowledge of the objects for updates.

There are  providers being built to interact with other databases. Regardless of the database, once the schemas and mapping are built, everytihng you do on the client side will be the same.

A caveat is that if you use Object Services plus Entity SQL to query and in your query you use projections (request specific columns/properties instead of entire objects) you will not get an updatable object. Instead you will get an IEnumerable collection of DbDataRecords. LINQ to Entities will return objects even with projections, because that's what LINQ knows how to do.

Entity Client

The last thing I wanted to talk about is Entity Client, the other way to access entities. EntityClient is a provider, similar to SQLClient and the others. It let's you build your data access code to query the entities in a familiar way, with connections (though the connection points to your entity objects) and commands. With EntityClient, you build queries using Entity SQL syntax. EntityClient queries return a dbDataReader. You cannot do updates directly through EntityClient. An interesting thing about this provider is that if you are building an app that leverages the Provider Independent API, you can have code that easily flips back and forth from access data in SQL Server, Oracle, Access, or other data engines. So (though I haven't tested this, I'm making an educated guess here) you can add EntityClient into this flexible model.

Summary

So now you can see why I'm a little cross-eyed. We are working with 6 new query languages (though they are all related),5 new ways of accessing data, trying to keep track of which syntax goes with which access method and which access method returns what type of data. And it is dizzying for sure. But after some investment in this, I have definitely gotten it sorted out. And you can too!

 

Tuesday, March 06, 2007 12:05:33 PM (Eastern Standard Time, UTC-05:00)  #     |  Comments [2]  | 
 Monday, March 05, 2007

I wrote up a list of some of the invaluable resources I have been relying on while diving deeply into the new March CTP of Orcas.

[A DevLife post]

Monday, March 05, 2007 9:08:56 PM (Eastern Standard Time, UTC-05:00)  #     |  Comments [0]  | 

In a previous interation, I managed to track down some sample code that built a LINQ call to a stored procedure, the class which it returns and executed it in LINQ to SQL.

The code has changed dramatically in the March CTP. Luckily, Mike Taulty beat me to it and I leveraged the C# code in his post to revise mine.

One of the things I was so silly to do in my previous test was to hand code the return class rather than just create it in the designer and return that.

But all of this is not totally necessary since you can now drag and drop stored procs onto the LINQ to SQL Visual Modeler and make calls to it. Interestingly the return type is just created on the fly at run time so it's not even an issue - yay to anonymous types.

However, it's still nice to know how to build this stuff becasue drag n drop doesn't solve every coding problem. So check Mike's post for the C# version.

Here is a working version in VB.

"CustOrderHist" is the name of the stored procedure in my database. 

What this is doing is

1) using the attribute to hook it up to the sproc
2) taking in a parameter of customerID and associating it with the parameter @CustomerID in the stored proceudre
3) Returning and IEnumerable of type CustOrderHistoryResult (the class I created in the designer that matches the structure of what the sproc returns).

On the client side, I can now take the result and do whatever I want with it, such as bind it to a gridview on a web page.

<StoredProcedure(Name:="CustOrderHist")> _
Public Function GetCustOrderHist(<Parameter(Name:="CustomerID")> ByVal customerID As String) As IEnumerable(Of CustOrderHistoryResult)

  Dim result As IQueryResults(Of CustOrderHistoryResult) = _
 
ExecuteMethodCall(Of CustOrderHistoryResult)(Me,
  MethodInfo.GetCurrentMethod, customerID)
    
  Return result

  End Function

Monday, March 05, 2007 4:52:17 PM (Eastern Standard Time, UTC-05:00)  #     |  Comments [0]  | 

Oh, and the cat, too.

I've been working from th ekitchen for about a week so I can hang out with the dogs. They don't do stairs anymore and we haven't cleared the path through the snow for them to get to my office from the outside.

So here they are hanging out withme. G.B. the cat has found his favorite warm spot in the house (with Tasha) and Daisy is on her cushy bed. What a mush.

Monday, March 05, 2007 2:41:08 PM (Eastern Standard Time, UTC-05:00)  #     |  Comments [1]  | 
 Sunday, March 04, 2007

Thanks again to Kate (she sure helps funnel good info for me), I see that Microsoft is sponsoring a contest to win a full paid trip to this [Microsoft sponsored?] summit.

You need to be a software developer chick (sorry guys), live in one of these 5 countries: Austria, Denmark, France, Germany or the UK, and not work for Microsoft.

The submission is an essay and due by April 2.

Check it out here.

Sunday, March 04, 2007 8:55:37 AM (Eastern Standard Time, UTC-05:00)  #     |  Comments [0]  |