Wednesday, April 30, 2008

This week I had to make a very difficult decision. It will make you laugh, but really, it was hard.

I had to decide if my book will say "Julie Lerman" or "Julia Lerman".

After a LOT of deliberation, I decided to go with my grown up name: Julia Lerman. Which means that any searching on Amazon or whereever for "that book by Julie Lerman" won't find it.

Wednesday, April 30, 2008 8:36:36 PM (Eastern Standard Time, UTC-05:00)  #     |  Comments [6]  | 
 Monday, April 28, 2008

EntityStateObjects, to me, are one of the most important little pieces of the EF puzzle. IT is the EntityStateObject that maintains all of the critical info for change tracking. But it's hard to get the big picture of what's going on in there when debugging because all of the important stuff is delivered through methods, not properties.

I wanted so badly to write a debugger visualizer for them but they are not serializable (big pout) so instead, I wrote an extension method that uses a ConditionalAttribute to ensure it doesn't pop up during run time. It's for my book but I didn't want to hold onto it until October when the book should be published.

Since it's not a Debugger Visualiser, I refer to it as a DebugTime visualizer. :-)

Here's what my ObjectStateEntry Visualizer looks like in action:

All of the info is pulled from the ObjectStateEntry. At the top it tells the fully qualified name of the type of the object being inspected as well as the object's EntityState.

Then I use the various methods of the ObjectStateENtry to get the Original Values, the Current Values, the names of the fields and a list of the names of the modified fields.

All of this data I feed into the grid.

If the object is detached, then there is no ObjectStateEntry and the visualizer shows this message when you try to run it:

So enough with the screenshots. Here's the code. And here's a collection of important punctuations for you C# programmers who feel a need to translate

[ ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;  ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;  ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;  ; ; ; ; ; ; ; ; ; ; ; ; ; ;]

 

Imports System.Runtime.CompilerServices
Imports System.Data.Objects

'NOTE: The objects in use here are not serializable so they can't be used
'in debugger visualizers. Instead, you'll need to use them directly, but you can 
'give them a debug attribute so they are only available during debug mode.
<Extension()> _
Public Module Visualizers


  <ConditionalAttribute("DEBUG")> _
  <Extension()> _
  Public Sub VisualizeObjectStateEntry(ByVal eKey As EntityKey, ByVal context As ObjectContext)
    Dim ose As ObjectStateEntry = Nothing
    If Not context.ObjectStateManager.TryGetObjectStateEntry(eKey, ose) Then
      Windows.Forms.MessageBox.Show("Object is not currently being change tracked and no ObjectStateEntry exists.", _
"ObjectStateEntry Visualizer", Windows.Forms.MessageBoxButtons.OK, Windows.Forms.MessageBoxIcon.Warning) Else Dim currentValues = ose.CurrentValues Dim originalValues = ose.OriginalValues Dim valueArray As New ArrayList For i = 0 To currentValues.FieldCount - 1



'you can get from the ObjectStateEntry into the MetaData which actually comes from the EDM
Dim sName = currentValues.DataRecordInfo.FieldMetadata.Item(i).FieldType.Name Dim sCurrVal = currentValues.Item(i) Dim sOrigVal = originalValues.Item(i)
'nothing like a little LINQ query to find some info Dim changedProp = (From prop In ose.GetModifiedProperties Where prop = sName).FirstOrDefault Dim propModified As String propModified = If(changedProp = Nothing, "", "X")

'the funky property naming in this anonymous type is to get around a wierdness with
'LINQ databinding that only occurs in VB - it alphabetizes the fields
valueArray.Add(New With _
{._Index = i.ToString, ._Property = sName, .Current = sCurrVal, _
.Original = sOrigVal, .ValueModified = propModified}) Next Dim frm As New debuggerForm With frm.DataGridView1 .DataSource = valueArray End With frm.lblState.Text = ose.State.ToString frm.lblType.Text = ose.Entity.ToString frm.ShowDialog() End If End Sub End Module

The form has no code, just a few controls:

I created an assembly for my Entity Framework extension methods and just reference the assembly anywhere I want to use it.

Then when I want to use it, I call it against the EntityKey of an Entity Object:

  context = new AWModel.AWModel.AWEntities();
  cust = context.Customers.Where(c => c.CustomerID == 223).First();
  cust.CompanyName = "JULIE COMPANY";
  cust.EntityKey.VisualizeObjectStateEntry(context);

This has been an enormously useful tool for when I have been presenting as well as just working.

Enjoy!

Monday, April 28, 2008 8:07:48 PM (Eastern Standard Time, UTC-05:00)  #     |  Comments [0]  | 
 Sunday, April 27, 2008

Along with a few hundred other DevConnections attendees, I got a sneak peek of the EntityDatasSource control on Monday during Danny Simmons' Entity Framework Architecture session.

 

I think I paid more attention to the control than what Danny was saying because I was desperate to see how it was set up.

 

Before digging in though, I also wanted to note that the UI of the EDM Designer looks really pretty. I noticed that the association lines/connectors looked different; the whole thing was cleaner looking (were the association names gone?) and the Entities have their own little representative icon now. I can't wait to see this in more detail.

 

The EntityDataSource wizard identifies EntityConnections in the config file and offers those to as choices for building the data source from. Once that is selected, the EntityContainer is also identified, offering the list of EntitySets from the container to use for the data source.

 

Like the LINQDatasource, you have the option of selecting all of the properties at once or selecting specific properties which will perform projection. Like the LINQDataSource, if you project properties, then you won't get a full type back and the data will not be updatable.

 

There was a drop down list below the one where you choose which EntitySet you want to work with but I don't recall what it's name was. Danny did not drop it down. All I can think of that might be there (hopeful) is derived types since they don't have their own EntitySet.

 

Although I don't remember seeing it during the session, Danny did say that you can choose to eager load related data in the same way that you can with the Include method. I don't know how this is done or if it will impact updating, but I don't know why it would.

 

Like the LinqDataSource,  the EntityDataSource performs server side paging, and it does client side caching - of current AND original data. The original data is not stored as complete objects, but the minimal data necessary to reconstruct state when it's time to update. Updates happen, like any other data source, one at a time. So you have to pick an item, edit it and update it.

 

 I've got some of my own examples of using series of entities in web apps which are very different from this. My solution, however, is aimed at a different scenario. Where the EntityDataSource is more scalable because of the server side paging and the fact that it is not caching full objects, my solution allows the user to do a bunch of edits then save them all at once. I keep the objects in the client side cache (I know - horrors! - but it's an option for a developer to choose) and a collection of original objects cached on the server, though it's an application cache, not a session cache.

 

Seeing the EntityDataSource has already given me some ideas of taking my solution and making it more scalable without losing the benefit of the bulk editing.

 

I can't wait to get my hands on the new bits!

Sunday, April 27, 2008 8:20:30 AM (Eastern Standard Time, UTC-05:00)  #     |  Comments [0]  | 
 Saturday, April 26, 2008

It's been in there from the start (well at least since VS2003), but I have only recently started taking advantage of the "Format Document" and "Format Selection" functions in Visual Studio to help with the readability of code or xml. Read more...

[A New DevLife Post]

Saturday, April 26, 2008 9:14:09 AM (Eastern Standard Time, UTC-05:00)  #     |  Comments [1]  | 
 Friday, April 25, 2008
I COPIED THIS ENTIRE BLOG POST DIRECTLY FROM GUY BARRETTE'S BLOG and made one little edit! So shoot me! :-)
 

If you're living in Toronto and don't attend DevTeach, [Guy Barrette says he's] gonna beat you up and force you to code in Clipper for the rest of your life.  Seriously, DevTeach has one of the greatest speakers lineup of all the .NET conferences.

Honestly, where can you hear, see, talk to, describe your problems (IT/Dev related or not) and have a beer with these guys/gals?

Scott Bellware Benjamin Day Oren Eini Cathi Gero Barry Gervin The one and only Kate Gregory YAG The Zen of Scott Hanselman Moi Beth[mond] Massi Kevin MacNeish Ted Neward Roy Osherove Rodman Partyboy Palermo Paul [Yes, it's true. I live on a boat] Sherriff Joel Semeniuk Richard Campbell Peter DeBetta Don Kiely of the Alaska Keilys Bill Vaughn Adam Machanic Carl Franklin Rob Windsor Jim Duffy

And that's only half of them!!!

Need more reasons?

Keynote by Scott Hanselman, Microsoft
Scott Hanselman is one of the most prolific, renowned and respected blogger (
http://www.hanselman.com) and podcaster (http://www.hanselminutes.com) about technologies. Scott is a hands-on thinker, a renowned speaker and writer. He has written a few books, most recently with Bill Evjen and Devin Rader on Professional ASP.NET. In July 2007, he joined Microsoft as a Senior Program Manager in the Developer Division. In his new role he'll continue to explore and explain a broad portfolio of technologies, both inside and outside Microsoft. He aims to spread the good word about developing software, most often on the Microsoft stack. Before this he was the Chief Architect at Corillian Corporation, now a part of Checkfree, for 6+ years and before that he was a Principal Consultant at STEP Technology for nearly 7 years.
http://www.devteach.com/keynote.aspx

Silverlight 2.0 workshop
For the first time an independent conference is having a workshop on Building Business Applications with Silverlight 2.0.  Join Rod Paddock and Jim Duffy as they give you a head start down the road to developing business-oriented Rich Internet Applications (RIA) with Microsoft Silverlight 2.0. In case you just crawled out from under a rock, Microsoft Silverlight 2.0 is a cross-browser, cross-platform, and cross-device plug-in positioned to revolutionize the way next generation Rich Internet Applications are developed. Microsoft’s commitment to providing an extensive platform for developers and designers to collaborate on creating the next generation of RIAs is very clear and its name is Silverlight 2.0. In this intensive, full-day workshop, Rod and Jim will share their insight and experience building business applications with Silverlight 2.0 including a review of some of the Internet’s more visible Silverlight web applications. This workshop is happening on Friday May 16 at the Hilton Toronto.
http://www.devteach.com/PostConference.aspx#PreSP

Bonus session: .NET Rock host a panel May 14th at 18:00
This year the bonus session (Wednesday May 14 at 18:00) will be a panel of speakers debating the Future of .NET. Where is .NET going? How will new development influence .NET and be influenced by .NET? Join Carl Franklin and Richard Campbell from .NET Rocks as they moderate a discussion on the future directions of .NET. The panellists include individuals who have strong visions of the future of software development and the role that .NET can play in that future. Attend this session and bring your questions to get some insight into the potential future of .NET! This bonus session is free for everyone. Panelists are: Ted Neward,Oren Eini ,Scott Bellware
http://www.devteach.com/BonusSession.aspx

Party with Palermo, DevTeach Toronto Edition
Jeffrey Palermo (MVP) is hosting Monday May 12th in Toronto is acclaimed "Party with Palermo". This is the official social event  kicking off DevTeach Toronto. The event is not just for the attendees of Toronto it’s  a free event for everyone. It’s a unique chance for the attendees, speakers and locals  to meet and talk with a free beer.   The event will be held at the Menage club  location and you need to RSVP to attend. Get all the details at this link:
http://www.partywithpalermo.com/

Make sure that DevTeach comes back to Toronto.  Register right now for this year's conference.

Friday, April 25, 2008 9:18:28 PM (Eastern Standard Time, UTC-05:00)  #     |  Comments [0]  | 
 Thursday, April 24, 2008

This bit me in the butt ... TWICE!

When using WebDataGen so that you can get a proxy class for an Astoria data service, if you are running under UAC, the output file will NOT get created, however the tool reports that the file was created successfully.

I spent a lot of time trying to find the file or figure out what I was doing wrong.

Then a week later, when it was late at night and I was sick so my brain was a little foggy, I had to create another proxy but totally forgot the pain I had gone through previously. It was an hour before I finally remembered that I had to run the command window as admin.

So word to the wise....and I should probably make a not of this in the forums.

Thursday, April 24, 2008 9:55:09 PM (Eastern Standard Time, UTC-05:00)  #     |  Comments [0]  | 

A local columnist went through some archives of the paper he writes for and collected a history of shocking gas prices as they were reported over the years by the paper. It's a fun read.

Just to be clear, I wasn't old enough to drive when gas was 49cents/gallon.

Thursday, April 24, 2008 12:31:36 PM (Eastern Standard Time, UTC-05:00)  #     |  Comments [2]  | 
 Wednesday, April 23, 2008

I left DevConnections for the Orlando airport and when I got there had another hour and a half before my flight, so headed to the Red Carpet Club. I walk in and as I go to sit down I see Dr. Neil. As I got closer to where he was sitting, there was Michele Leroux Bustamante and Mark Miller. A half hour later, in comes Tim Huckaby. So we're all here with our laptops open, chatting and dare I say - gossiping. If you call talking about how cute someone's baby is "gossip", then I guess that would be the case.

 

Wednesday, April 23, 2008 5:09:04 PM (Eastern Standard Time, UTC-05:00)  #     |  Comments [0]  | 
 Tuesday, April 22, 2008

I've been in Orlando at DevConnections for the past few days. I've been a little under the weather which has made it a little rough around the edges for me, but I'm surviving. While it was a bit of a challenge to present a full day workshop with a nasty chestcold, this was nothign compared to Kathleen Dollard who gave a Workflow workshop in the room next door with bronchitis. She knew she was sick but didn't know how sick until I dragged her to a clinic that night and discovered she had a high temperature and bronchitis. Poor thing. She's surviving and did talks today and has more tomorrow.

I met a young programmer named Scott Pio at the attendee party tonight who has been writing some great blog posts about being at DevConnections  on http://spoiledtechie.com/ -- the experience as well as the sessions he has attended. It's so fun to meet young developers who are just so ready to burst with their excitement about technology. It's his first conference and I think the first time he's been somewhere where the term "geek" is actually a complement! Definitely check out his blog and especially his posts about DevConnections!

Tuesday, April 22, 2008 8:16:09 PM (Eastern Standard Time, UTC-05:00)  #     |  Comments [0]  | 
 Saturday, April 19, 2008

Hip hip hooray.

My only trip so far in 2008 was on USAirways, so I hadn't realized this until just now as I'm stuck in Dulles for 3 hours because  - oh shock! - my flight from Burlington was delayed and I missed my connection by minutes. As we landed, I saw my plane to Orlando sitting at the gate. I hoofed it down the hallway with my backpack on and my carryon in tow (not great fun in Teva's), arrived breathless to learn that it had just left. Now why don't they get the fact that I'm on a connecting flight - one of their own - and just pulling into my gate and just wait another 2 minutes?

Anyway, at least I had the nice surprise of the free wireless to go along with teh carrott sticks and packaged bites of cheese they have for us here in the lounge. Oh, how it makes me miss the Lufthansa and Ai Canada lounges with their real food and (even though I don't take advantage) local beer on tap!

 

Saturday, April 19, 2008 4:49:48 PM (Eastern Standard Time, UTC-05:00)  #     |  Comments [0]  | 

While it's very hard to leave Vermont when we are having incredible weather (70 - 80 degree days with blue and sunny skies!) I am on my way to Orlando, FL for DevConnections.

Once again, there is a full track dedicated to Data Access. I'll kick it off with a full day of Entity Framework tomorrow. Monday is Microsoft day and I'm thrilled that there will be talks by Mike Flasko from the Astoria team and from Danny Simmons and Colin Meek of the Entity Frameowrk team.

On Tuesday and Wednesday we'll have two more full days with topics like from LINQ to SQL, Synch Services, ADO.NET Perfomance, Entity Framework, Data Sets and more. And top noch presenters like Dino Esposito, Don Keily, Kathleen Dollard, Cathi Gero and more!

Look for the Data Access track which is listed in both the Visual Studio and ASP Connections conferences.

I'll also be doing a session on Astoria Web Mashups in the ASP Connections conference. I was bummed that the current Astoria bits don't line up with Silverlight 2.0 so I can't do that demo any more, but instead I have put together a cool little demo combining Astoria with Popfly. As far as I know, it's the only implementation out there. The session is in one of the 60 minute slots so I'll just have to talk fast, par usual.

If you're at Connections, say hi!

Saturday, April 19, 2008 1:40:52 PM (Eastern Standard Time, UTC-05:00)  #     |  Comments [1]  | 
 Friday, April 18, 2008

I was experimenting with creating data services from IQueryables. Rather than use the canonical example of creating a set of 3 person objects on the fly and exposing them, I decided to create a service for my application log. (Not something I plan to expose to the web, just a learning tool ;-)).

I created a wrapper class for the System.Diagnostics.EventLogEntry class because I needed to have an ID field that could be read. Thanks to Jonathan Carter's blog post, I knew that there was no property of the real class that would work, so I needed to create my own class with a valid field for a discoverable identity property.

Having done this, I tested my service which worked just fine:

Since I knew there are  a LOT of entries in my application log file (I don't have a sysadmin to do that maintenance for me) I thought it would be smart to filter the entries by adding /LogEntries?$top=10 to the URI. I wasn't sure how Vista would handle that and wasn't shocked to see in the debugger that the filtering was going to be left up to the dataservice:

It's definitely a huge advantage to be able to expose (or interact with) any IQueryable through Astoria, but don't forget that it's the database that has the query processor. In this case, I was returning 23,000 items to my service to be processed.

If I do the same filter to a service that exposed a database via an Entity Data Model, for example Northwind

http://localhost:55176/DataServices/NWDataService.svc/Categories?$top=10

the query is processed by the Entity Frawework and the filter is part of query sent to the database:

SELECT TOP (10)
[Extent1].[CategoryID] AS [CategoryID],
[Extent1].[CategoryName] AS [CategoryName],
[Extent1].[Description] AS [Description],
[Extent1].[Picture] AS [Picture]
FROM [dbo].[Categories] AS [Extent1]
ORDER BY [Extent1].[CategoryID] ASC

Only 10 items are returned for the service to process.

LINQ to SQL will do the same ... i.e. create a filter query that gets sent to the database.

Yes exposing my entire un-maintained application event log is not a real-life scenario and in a real network, I might even use the nice filters that Vista provides for event logs.

But the point is just to pay attention to what you may be asking your service to do.

Friday, April 18, 2008 4:34:50 PM (Eastern Standard Time, UTC-05:00)  #     |  Comments [1]  | 

Adding to the extensive Training Kit ofr Visual Studio 2008, Microsoft has recently released a set of Hands on Labs that are part of a training kit for the .NET 3.5 Extensions that is still in production. Read more...

[A New DevLife Post]

Friday, April 18, 2008 2:45:47 PM (Eastern Standard Time, UTC-05:00)  #     |  Comments [0]  | 
 Thursday, April 17, 2008

Richard Stallman, president of the Free Software Foundation (FSF) and founder of the GNU Project (http://www.gnu.org/), will be speaking in the Burlington area on April 17 and 18.

 

  o  Thursday, April 17, 4:30 p.m., St. Michael's College; "Copyright versus Community in the Age of Computer Networks"

 

  o  Friday, April 18, 9:30 a.m., Champlain College; "The Free Software Movement and the GNU/Linux Operating System"

 

GNU is "free software" and a different concept from open source software. Per the GNU Web site...

 

=====

"Free software" is a matter of liberty, not price. To understand the concept, you should think of “free” as in “free speech”, not as in “free beer”.

 

Free software is a matter of the users' freedom to run, copy, distribute, study, change and improve the software. More precisely, it refers to four kinds of freedom, for the users of the software:

    * The freedom to run the program, for any purpose (freedom 0).

    * The freedom to study how the program works, and adapt it to your needs (freedom 1). Access to the source code is a precondition for this.

    * The freedom to redistribute copies so you can help your neighbor (freedom 2).

    * The freedom to improve the program, and release your improvements to the public, so that the whole community benefits (freedom 3). Access to the source code is a precondition for this.

=====

 

The GNU/Linux system, basically the GNU operating system with Linux added, is used on tens of millions of computers today.  Stallman has received the ACM Grace Hopper Award, a MacArthur Foundation fellowship, the Electronic Frontier Foundation's Pioneer award, and the Takeda Award for Social/Economic Betterment, as well as several honorary doctorates.

 

Thursday, April 17, 2008 3:59:33 PM (Eastern Standard Time, UTC-05:00)  #     |  Comments [0]  | 

After attending Mix n Mash 08 at Microsoft, I wrote an essay called "The Magic of Software" that is in the April 08 issue of MSDN Magazine. The issue (including the essay) is now online.

Thursday, April 17, 2008 12:12:52 PM (Eastern Standard Time, UTC-05:00)  #     |  Comments [0]  | 

FrontPorchForum, a local, very innovative community website that started here in the Burlington area, has made the cut from 5,000 community organizations to be on the shortlist of 20 to possibly win a $25,000 grant from the Case Foundation. Case Foundation will aware these grants to 5 organizations based on public voting.

So you can vote for 5 of the last 20 organizations on the list. I went to the site on behalf of FPF and was happy to see an organization from my home town (Syracuse, NY) on the list and was able to vote for them as well. Even if you don't find a local organization on the list of 20, there will surely be at least 5 that inspire you. So go help them out and vote!

Thursday, April 17, 2008 7:32:20 AM (Eastern Standard Time, UTC-05:00)  #     |  Comments [0]  | 

I'm used to seeing TechEd ads on many of the sites that I go to since they are developer sites. So it took a few minutes for it to register when I saw the ad on the website of our local newspaper, the Burlington Free Press.

I've been seeing them frequently for days now. This is a pretty small market and it's surprising to me that they would be advertising here, but perhaps it's part of a sweeping media buy and they didn't explicitly choose Burlington. If I didn't know better, I'd really wonder if they just weren't using spyware to detect that I have VIsual Studio on my computer and therefore serving up this perfectly targetted ad. There are also a few other Microsoft ads showing up there, for example, one for MS Online Services.

Thursday, April 17, 2008 7:23:57 AM (Eastern Standard Time, UTC-05:00)  #     |  Comments [1]  | 
 Wednesday, April 16, 2008

While this has been an unfolding process on Ruurd's blog and on the CodePlex/EFContrib site, today marks an impressive day in the evolution of the PostSharp4EF project that Ruurd Boeke has been working on.

He has used the available interfaces for IPOCO in Entity Framework to create a tool for using Entity Framework in a way that is more affable to Domain Driven developers.

His solution enables client side classes that are not dependant on Entity Framework APIs and supports a fully disconnected tiered application - the thing we have all been struggling to achieve.

Ruurd also solved the XML Serialization problem along the way, though in the meantime, changes to WCF actually solve the problem across the board for all WCF XML Serialization, including Entity Framework objects. So I'm sure that was frustrating for him to have this announced shortly after he completed that arduous step, but think of how much you learned, Ruurd and how much respect you have earned as well! :-)

Here is short description of the project. You can find much more on the PostSharp4EF project site under the CodePlex/EFContrib home as well as on Ruurd's blog.

PostSharp4EF: Automatically implement IPoco This project uses PostSharp to post-compile your assemblies. When it encounters a simple attribute, it will implement everything needed to use it in EF: Typelevel attributes, EDMscalar attributes, changetracking and default values. This means there are no runtime performance penalties. See Introducing EF Contrib post for more detailed information about this project. The following supporting projects are included as well and will enable the use of full disconnected n-tier usage of your domain objects:

  • Circular Serializer: enables the serialization of object graphs (including circular references) with knowledge of 'original values'.
  • Editable Business Objects: does changetracking and provides the serializer with the correct values
Wednesday, April 16, 2008 5:31:46 PM (Eastern Standard Time, UTC-05:00)  #     |  Comments [0]  | 

I've been fiddling some more with mashing up ADO.NET Data Services using popfly.

I started a few months ago then set it aside.

Today, I extended my mashup block which serves up data from Northwind using an ADO.NET Data Service, then hooked it up to a geocoder block to transform city/country to lat/long, then hooked that up to a virtual earth map.

Wednesday, April 16, 2008 2:01:33 PM (Eastern Standard Time, UTC-05:00)  #     |  Comments [1]  | 

This is a little test popfly mashup that I created from an Astoria data service. You can read the blog post about how I created the data source component here.

Wednesday, April 16, 2008 10:56:01 AM (Eastern Standard Time, UTC-05:00)  #     |  Comments [0]  | 

On Friday, I did a full day workshop on Entity Framework called Entity Framework 0-60. Well, I translated it into the local measurement and renamed it 0-100 (km).

One of the comments I got back from an attendee was:

"It was a great overview on a really interesting topic. It was a bit more complex than I expected so it was good to get the expert’s view"

"A bit more complex." This is definitely one of the things that makes EF so difficult to teach or to write about. Even in 6 hours there's so much that I have to glaze over. I tried not to linger in introductory information which they can get more easily elsewhere and spent more time teaching some of the things that are not so obvious and harder to grasp. The last 45 minutes was free form as I invited them to pick my brain and take advantage of all that I have learned so far. I plan to do that again in upcoming workshops.

I think one of the critical things I shared with them during the day was something that is also common to any LINQ queries, which is that you can very easily and unknowingly make trips to the database when you think you are just looking at only the cached objects. When I first mentioned this, the room went silent and their eyes got very big, so I realized that I better spend a little more time exploring this than I had planned.

I'm doing this workshop again this coming Sunday at DevConnections in Orlando (still seats available!) and I expect the day to transpire very differently than it did in Sweden this past Friday. I even completely reorganized the slides on my way home from Sweden because I learned a lot from the questions and reactions of Friday's attendees.

Yes, Entity Framework is complex. And, as the day progressed, I surprised myself with how much I have really learned about this technology. And I seem to have a Rolodex in my head with listings of forums threads and blog posts that I frequently referred to which was very handy.

Wednesday, April 16, 2008 9:01:10 AM (Eastern Standard Time, UTC-05:00)  #     |  Comments [0]  | 
 Tuesday, April 15, 2008

Jeremy Miller and David Laribee explain ALT.NET on DotNETRocks.

Tuesday, April 15, 2008 3:23:38 PM (Eastern Standard Time, UTC-05:00)  #     |  Comments [0]  | 

Today: Sunny, with a high near 56. West wind between 7 and 10 mph.

Wednesday: Sunny, with a high near 66. South wind between 5 and 15 mph.

Thursday: Sunny, with a high near 72. South wind between 5 and 13 mph.

Friday: Sunny, with a high near 70.

Saturday: Sunny, with a high near 69.

Tuesday, April 15, 2008 9:03:33 AM (Eastern Standard Time, UTC-05:00)  #     |  Comments [0]  | 

Director, IT Business Systems Team - Information Technology
Reports to:            Vice President for Information Technology
Location:               Brattleboro, VT 
 
 
General Description: 
The senior member of the IT Business Systems Team, the Director, IT Business
Systems Team is responsible for working with the CIO to set the vision for the
Application Development for the organizations Information Technology. This individual
has demonstrated the ability to analyze and implement business solution using various
application development technologies.
 
Primary Responsibilities:
•         Working with CIO and IT Senior Management team to lead short term and long
term planning for the IT organization
•         Interview, gather, analyze, and produce business requirements based upon
business need within the organization
•         Leads efforts with IT and Business Management to determine best solution
•         Leads IT team members to design, analyze, code, test, implement and
document solutions for business problems
•         Ability to transition IT organization to new application development technologies
•        Maintains and enhances IT solutions for business areas
•         Work with outside vendors to provide support for the organizations Application environment
•         Recruit, lead, coach, and mentor members of the Business System team
•         Perform Project Management functions for the Application Development projects
•         Stay current with major trends and information technology approaches and tools
•         Make recommendation to business area to improve business processes
 
Required Qualifications:
•         BA in related field or equivalent experience.
•         At least 8 – 9 years experience in a similar position.
•         Proven success designing and/or selecting, and implementing application
solutions in a global environment
•         Ability to collaborate with heads of program units to understand their challenges
and implement technology solutions 
•         Knowledge and experience with Microsoft SQL, Business Objects (Crystal
Reports), Coldfusion, and Microsoft  Access.
•         Microsoft .Net experience or demonstrated proficiency in object oriented
languages
•         Understanding and proficiency in building web based applications
•         Ability to demonstrate strong skills in information needs analysis, requirements
creation, development and testing in a Windows environment.
•         Experience working with central corporate MIS systems.
•         Strong organizational skills and excellent attention to detail.
•         Strong interpersonal skills with excellent patience, clarity of communications
and commitment to team approaches, strong leadership and negotiation skills.
 
Desired Qualifications:
•         Relevant experience working in a not-for-profit, educational or international
organization.
•         Knowledge and experience with Windows operating systems and Windows
based programming languages
•         Experience supporting Datatel.
 
Skills:
•         Demonstrated Leadership capability (ability to motivate others to achieve
organization’s goals)
•         Strong Organizational skills and strong goal orientation
•         Strong Analytical Thinking (ability to identify and respond to complex situations)
•         Good Oral Communication (ability to convey and absorb information through
spoken words)
•         Good Written Communication (ability to write clearly and to understand written communications)
•         Strong Teamwork capability (capability to work with others in order to achieve a
common goal)

Contact:
Benjamin J. Scribner
Executive Recruiter
Gallagher Flynn & Company, LLP
(802) 651-7278
bscribner@gfc.com

 

Tuesday, April 15, 2008 6:48:13 AM (Eastern Standard Time, UTC-05:00)  #     |  Comments [0]  | 
 Monday, April 14, 2008

In April 2008 issue of MSDN Magazine (April is not online yet, but in your mailbox), I wrote an {End Bracket} essay about Surface Computing, Microsoft's "Vision Quests" and CSI (yes, the T.V. show). A few weeks after the essay was finalized and headed to the printer, I turned on CSI and wouldncha know it, there was a Surface computer!

Update: Here's a link to the essay: The Magic of Software.

Monday, April 14, 2008 12:31:27 PM (Eastern Standard Time, UTC-05:00)  #     |  Comments [1]  | 
 Saturday, April 12, 2008

Between the many conversations I had with folks over the days about thinking, about Presentation Zen, about languages and about ALT.NET, I leave Sweden with my head filled with new ideas which I'm very excited about. Read more here...

[A DevLife Post]

Saturday, April 12, 2008 4:00:45 PM (Eastern Standard Time, UTC-05:00)  #     |  Comments [0]  | 
 Thursday, April 10, 2008

These things tend to happen when I'm travelling and don't check my feeds for an entire day. I can't say this is a huge surprise since it's very sensible. I'm happy to finally have some tangible news from the team. I'll be happy to share this news in my Entity Framework workshop tomorrow! During the conference I actually had someone suggest that they still didn't believe that EF wouldn't go the way of Object Spaces. Sheesh!

Entity Framework & ADO.NET Data Services to Ship with VS 2008 SP1 & .NET 3.5 SP1

Wednesday, April 09, 2008, 7:02:00 PM | dpblogsGo to full article

It's settled! The Entity Framework (and the Entity Designer) along with ADO.NET Data Services will RTM as part of the Visual Studio 2008 and .NET 3.5 SP1 releases!

Unfortunately, we don't have official release dates at this point, but stay tuned. You'll also want to keep an eye out for the upcoming SP1 Beta 1, which will be your next chance to check out updated bits for both of these products.

Elisa Flasko
Program Manager, Data Programmability

Thursday, April 10, 2008 6:15:00 PM (Eastern Standard Time, UTC-05:00)  #     |  Comments [2]  | 

Just had to share this funny comment that came through my other blog. Not as a comment on a post but from the contact form.

"hi dear kese hoooooo i learn C# but i can't understand what should i do please tell me "

Thursday, April 10, 2008 11:31:29 AM (Eastern Standard Time, UTC-05:00)  #     |  Comments [2]  | 

Doug Seven is one of the track chairs for the track that I'm speaking in at TechEd Developer. I was talking to him the other day about finding the line between the "Presentation Zen" type of presentation (where an extreme example would be a slide with nothing more than a smiley face on it) and a presentation that will be useful to attendees (or other downloaders) after the fact that has actual content on it as the presenter is no longer there to fill in the blanks.

He gave me a great suggestion - prepare two decks. take my typical "stand-alone" decks which is very dense, the make a copy of it and strip the copy down. Way down.

So many of the bullet points are things I'm talking about. Why should the attendees need to be destracted by so many details on the deck when I'm talking about them anyway?

But, and here's what's great about this idea - use the dense deck to share with attendees after the fact. All of the details that I talked about are now there right on the deck for their benefit.

I love this idea so much that I did it to my decks for the DevSummit. I have done one of my sessions already using the stripped down deck, then gave the stand-alone version of the deck to the track chair to put on the website.

I'm doing a silverlight talk this afternoon and cut the deck in half and on the remaining slides, removed a lot of content and replaced some of it with images instead. No smiley faces though.

I get to have my cake and eat it to and I think it's a win-win for the attendees during and after the live session.

Thursday, April 10, 2008 6:34:14 AM (Eastern Standard Time, UTC-05:00)  #     |  Comments [3]  | 
 Wednesday, April 09, 2008

I'm not a DBA. I've probably said that about 5000 times. So I am often pretty much out of the loop in the world of SQL Server. So, I really embarrassed myself today asking Niels Berglund if he was a SQL Server guy. I now realize that it would be like asking Kimberly Tripp if she was a SQL Server gal.

And because I am also on a mission to make sure that DBAs are at least aware that the EDM and Entity Framework supports stored procedures, I continued to dig my hole deeper by asking him if he knew that. Turns out he did a full day workshop on LINQ to SQL and Entity Framework at DevWeek in the U.K. I didn't know about this when I wrote a blog post about DevWeek.

So I will now be subscribing to Niels' blog along with Bob B's, since I'm always trying to better understand the DBA perspective on Entity Framework.

Wednesday, April 09, 2008 9:00:56 AM (Eastern Standard Time, UTC-05:00)  #     |  Comments [0]  | 

I attended Christian Weyer's Astoria sesson this morning at the DevSummit , one of the few not in Swedish that I could understand! In fact, I was surprised to walk into Tess Ferrandez's session and hear her speaking fluent Swedish. it turns out she lived in Sweden for a time.

Christian shared a brilliant quote in his session which was how to explain REST in one sentence. He got it from David Meggison's "REST - The Quick Pitch" blog post.

With REST, every piece of information has its own URL.

I have had to try to explain REST in my own Astoria talks and I am going to adopt this brilliant quote. Thank Christian!

We'll see if Christian survives his stay in Stockholm as he had quite a lot of fun (and it was hilarious I have to say) talking about the World Cup Soccer 2006. Hey, they only beat Sweden by 2 goals!  My only memory of the World Cup was all of the TechEd attendees swarmed swarmed around the many screens at the conference displaying the matches.

Wednesday, April 09, 2008 8:51:32 AM (Eastern Standard Time, UTC-05:00)  #     |  Comments [0]  | 

The snacks at the DevSummit in Stockhom speak loudly of the healthy living of the Swedes.

Here is fruit and some yummy mango banana smoothies!

I remember the year at TechEd just after Steve Ballmer slimmed down and got healthy. The afternoon snacsk of candy bars, chips and hostess cupcakes was replaced with healthier fare - baked potato chips, celery and carrot sticks, stuff like that. From one extreme to another.

The above is MUCH more my speed, though I was also quite happy to find bite sized toblerone bars at one of the vendor booths!

Wednesday, April 09, 2008 8:39:08 AM (Eastern Standard Time, UTC-05:00)  #     |  Comments [1]  | 
 Monday, April 07, 2008

Spring has arrived in Vermont, but I'm leaving.

This afternoon I start my overnight journey to Stockholm where I will be participating in the Developer Summit 08 and have been working with Patrik Lowendahl and Mats Rydin who are coordinating. Patrik's company, Cornerstone is instrumental in this conference and everyone there has been wonderful in helping get me prepared.

I'm really looking forward to it. Stockholm is an incredibily beautiful city with lots of history and I've never been there before. Plus there's a great line up of speakers some who are friends that I always look forward to hanging out with and others who I am looking forward to finally meeting! And David Chappell, who is coming by way of Eilat Israel (a 2 day trip) from TechEd, is giving the keynote!

When I have asked anyone if they want me to bring anything back for them, they all have said "oh, yes, a beautiful Swede!" Well at least my single friends have made that request.

Swedish is not among the languages I ahve ever studied so I was happy to find some really useful lessons on Survival Phrases.com. I downloaded a bunch to my iPod to listen to again if I need them. They don't just say how to say a phrase but when it's appropriate as well as providing other background.

I still needed to see what these words look like so a simple list like Basic Swedish Phrases provides good backup. This won't enable me to give my presentatino in Swedish, but at least I can be polite when I have to find the toaletten.

I'll be doing an Advanced EF Session, a talk on Silverlight Annotation and on Friday a full day workshop on Entity Framework including some Hands on Labs. It should be a blast.

And even with my dreadful lschedule right now, I'd be a fool not to at least poke around Stockholm so I am flying home on Sunday (6am flight -uggh) and will have Saturday off to be a tourist.

Monday, April 07, 2008 10:02:58 AM (Eastern Standard Time, UTC-05:00)  #     |  Comments [1]  | 
 Saturday, April 05, 2008

In my previous post, I managed to update a simple model from an existing database. But then I started trying to do things like build my project and ran into so many problem trying to get my simple model to interact with the AdventureWorks database that I finally gave up.

I actually wrote my thoughts on this in a question on the MSDN forum for Entity Framework, with the point of the question being "is there a real example of this? Or is it just a concept that looks good on paper?"

I care a lot about this becuase I have been sharing this concept (which does make sense to me) that the EDMs loose coupling to the database means that you could map the CSDL to different databases.

But the AdventureWorks database just had too many constraints - such as non-nullable fields that I didn't have in my model and I finally gave up because it was forcing me to modify the CSDL and I would also have to add in some business logic to deal with some of these non-nullable fields. And even if I did that, who knows what other problems would pop up?

Update after I gave myself a little time while eating lunch to think about this some more, I crossed out "finally gave up" becasue it's basically not in my nature. I decided to go about this in a different direction with just ONE entity and succeeded by removing the unused non-nullable fields from the SSDL and mapped the entity to Insert/Update/Delete sprocs. All I have to say to myself at this point is "well, duh!" The insert stored proc provides the missing non-nullable fields and the update stored proc updates the modifieddate for me. SO problem solved in a not very realistic example, but I plan to build it up thought not today - I've already invested too much time. There's a lot of flexilibity in the model, but we all still have a lot of learning to do for our various use cases.

You can read my more complete thoughts on this in the forum post and if you want to follow the conversation you can sign up to get alerts on this thread from the MSDN forums.

Oh, and if you've never signed up for alerts before, you might want to read this blog post I wrote last summer: A few MSDN Forums tips (which I learned the hard way - as usual).

Saturday, April 05, 2008 12:47:18 PM (Eastern Standard Time, UTC-05:00)  #     |  Comments [0]  | 

When you use the UpdateModel feature of the Entity Framework design tools, the process relies on matching up existing entity names to table names, more specifically name of objects in the CSDL with names of objects in the database.

IF you have selected objects to add and nothing with that name already exis