<?xml version="1.0" ?>
<rss version="0.91">
   <channel>
      <title>Marquee de Sells: Chris's insight outlet</title>
      <link>http://www.sellsbrothers.com/</link>
      <description>Thoughts that Chris Sells has about whatever interests him that day</description>
      <language>en-us</language>
      <copyright>Copyright &#169; 2002-2003, Chris Sells</copyright>
      <managingEditor>csells@sellsbrothers.com</managingEditor>
      <webMaster>csells@sellsbrothers.com</webMaster>

<item>
  <title>Data Binding, Currency and the WPF TreeView</title>
  <link>http://www.sellsbrothers.com/news/showTopic.aspx?ixTopic=2326</link>
  <description>&lt;IMG align=right src=&quot;http://sellsbrothers.com/tools/ode1.jpg&quot; width=328 height=219&gt; 
&lt;P&gt;I was building a little WPF app to explore a hierarchical space (&lt;A href=&quot;http://odata.org/&quot;&gt;OData&lt;/A&gt;, if you must know), so of course, I was using the TreeView. And since I'm a big fan of data binding, of course I've got a hierarchical data source (basically):&lt;/P&gt;&lt;PRE&gt;abstract class Node {&lt;BR&gt;  public abstract string Name { get; }&lt;BR&gt;&amp;nbsp; public abstract IEnumerable&amp;lt;Node&amp;gt; { get; }&lt;BR&gt;  public XDocument Document { get { ... } }&lt;BR&gt;  public Uri Uri { get { ... } }&lt;BR&gt;}&lt;/PRE&gt;
&lt;P&gt;I then bind to the data source (of course, you can do this in XAML, too):&lt;/P&gt;&lt;PRE&gt;// set the data context of the grid containing the treeview and text boxes&lt;BR&gt;grid.DataContext = new Node[] { Node.GetNode(new Uri(uri)) };&lt;/PRE&gt;&lt;PRE&gt;// bind the treeview to the entire collection of nodes&lt;BR&gt;leftTreeView.SetBinding(TreeView.ItemsSourceProperty, &quot;.&quot;);&lt;/PRE&gt;&lt;PRE&gt;// bind each text box to a property on the current node&lt;BR&gt;queryTextBox.SetBinding(TextBox.TextProperty,&lt;BR&gt;&amp;nbsp; new Binding(&quot;Uri&quot;) { Mode = BindingMode.OneWay });&lt;BR&gt;documentTextBox.SetBinding(TextBox.TextProperty,&lt;BR&gt;&amp;nbsp; new Binding(&quot;Document&quot;) { Mode = BindingMode.OneWay });&lt;/PRE&gt;
&lt;P&gt;What we're trying to do here is leverage the idea of &quot;currency&quot; in WPF where if you share the same data context, then item controls like textboxes will bind to the &quot;current&quot; item as it's changed by the list control. If this was a listview instead of a treeview, that would work great (so long as you set the IsSynchronizedWithCurrentItem property to true).&lt;/P&gt;
&lt;P&gt;The problem, as &lt;A href=&quot;http://sellsbrothers.com/writing/wpfbook/&quot;&gt;my co-author&lt;/A&gt; and the-keeper-of-all-WPF-knowledge &lt;A href=&quot;http://www.interact-sw.co.uk/iangblog/&quot;&gt;Ian Griffiths&lt;/A&gt; reminded me this morning,&amp;nbsp;is that currency is based on a single collection, whereas a TreeView control is based on multiple collections, i.e. the one at the root and each one at sub-node, etc. So, as I change the selection on the top node, the treeview has no single collection's current item to update (stored in an associated &quot;view&quot; of the data), so it doesn't update anything. As the user navigates from row to row, the &quot;current&quot; item never changes and our textboxes are not updated.&lt;/P&gt;
&lt;P&gt;So, Ian informed me of a common &quot;hack&quot; to solve this problem. The basic idea is to forget about the magic &quot;current node&quot; and&amp;nbsp;explicitly bind each control to the treeview's SelectedItem property. As it changes, regardless of which collection from whence the item came, each item control is updated, as data binding is supposed to work.&lt;/P&gt;
&lt;P&gt;First, instead of setting the grid's DataContext to the actual data, shared with the treeview and the textboxes, we bind it to the currently selected treeview item:&lt;/P&gt;&lt;PRE&gt;// bind the grid containing the treeview and text boxes&lt;BR&gt;// to point at the treeview's currently selected item&lt;BR&gt;grid.DataContext = new Binding(&quot;SelectedItem&quot;) { ElementName = &quot;leftTreeView&quot; };&lt;/PRE&gt;
&lt;P&gt;Now, because we want the treeview to in fact show our hierarchical collection of nodes, we set it's DataContext explicitly:&lt;/P&gt;&lt;PRE&gt;// set the treeview's DataContext to be the data we want it to show&lt;BR&gt;leftTreeView.DataContext = new Node[] { Node.GetNode(new Uri(uri)) };&lt;/PRE&gt;
&lt;P&gt;Now, the treeview will show the data we wanted it to show, as before, but as the user changes the selection, the treeview's SelectedItem property changes, which updates the grid's DataContext, which signals the textboxes, bound to properties on grid's DataContext (because the DataContext property is inherited and we haven't overridden it on the textboxes), and the textboxes are updated.&lt;/P&gt;
&lt;P&gt;Or, in other words, the textboxes effectively have a new idea of the &quot;current&quot; item that meshes with how the treeview works. Thanks, Ian!&lt;/P&gt;</description>
</item>

<item>
  <title>Telerik LINQ to M Refresh for Nov09 Modeling CTP</title>
  <link>http://www.sellsbrothers.com/news/showTopic.aspx?ixTopic=2325</link>
  <description>The &lt;A href=&quot;http://www.stephenforte.net/PermaLink,guid,006f320c-bb7b-4433-90cd-e7a98e5ba847.aspx&quot;&gt;Telerik LINQ to &quot;M&quot;&lt;/A&gt; implementation allows developers to use LINQ statements with blocks of &quot;M&quot; values, pure text or the results of a transformed DSL. With the new SQL Server Modeling November 2009 CTP there are some changes to the &quot;M&quot; specification, so Telerik has updated their core DLLs to accommodate these changes. Enjoy!</description>
</item>

<item>
  <title>Deep Fried Bytes: Doug Purdy on OData and Modeling</title>
  <link>http://www.sellsbrothers.com/news/showTopic.aspx?ixTopic=2324</link>
  <description>&quot;In &lt;A href=&quot;http://deepfriedbytes.com/podcast/episode-43-talking-odata-and-sql-modeling-services-with-douglas-purdy/&quot;&gt;the 43rd episode of Deep Fried Bytes&lt;/A&gt;, Keith and Woody sit down at PDC 2009 with Microsoft&amp;#8217;s Douglas Purdy to discuss all things data. Do you remember Oslo from the previous PDC event? Well Oslo has been rebranded to SQL Server Modeling Services to help developers store and manage models for the enterprise. Modeling Services enables you to more productive when building and managing data-driven applications. The guys also get the low down from Douglas on a new web protocol for querying and updating data called OData.&quot;</description>
</item>

<item>
  <title>Rocky's video series on SQL Server Modeling and CSLA</title>
  <link>http://www.sellsbrothers.com/news/showTopic.aspx?ixTopic=2323</link>
  <description>Rockford Lhotka has created &lt;A href=&quot;http://msdn.microsoft.com/en-us/data/ff381673.aspx&quot;&gt;a series of three videos showing how he has applied the SQL Server Modeling&lt;/A&gt;, specifically &quot;M&quot;, to drive his well-known CSLA, a framework for building the business logic layer in your applications. He shows a custom domain-specific language (DSL) that lets you create a CSLA entity, along with the data serialization, business logic and a forms-based UI, resulting in a 95% coding savings (his words, not mine : ). Enjoy!</description>
</item>

<item>
  <title>We need cloud apps to use cloud drives</title>
  <link>http://www.sellsbrothers.com/news/showTopic.aspx?ixTopic=2322</link>
  <description>&lt;IMG align=right src=&quot;http://www.kutchcraft.org/wp-content/uploads/2009/08/self-storage-units.jpg&quot; width=195 height=147&gt; 
&lt;P&gt;Reading about &lt;A href=&quot;http://www.bing.com/search?q=%22windows+azure+drive%22&quot;&gt;Windows Azure Drive&lt;/A&gt; reminded me of a conversation I had when I was hanging out with my Microsoft brethren last week. We started by talking about how apps target a particular OS and how Microsoft's bread-and-butter is making sure that apps continue to work forever on Windows so that our customers can upgrade their OS and still get their work done.&lt;/P&gt;
&lt;P&gt;We then moved on to wondering whether Apple was gonna do the same thing when it came to letting iPhone/iPod Touch apps run on the new iPad. As it turns out, we heard from the iPad announcement that Apple is doing just that (although in a particularly strange single-tasking way).&lt;/P&gt;
&lt;P&gt;From there we moved on to how it's really not a big deal whether you ditch your current smart phone, e.g. Dash, iPhone, BlackBerry,&amp;nbsp;Droid, etc.,&amp;nbsp;for another one because nobody really keeps data on their phones anymore anyway. It's either synch'd to their PC, e.g. photos, music, etc., or it's kept in the cloud. In fact, without realizing it, I already have a great deal of info in the cloud:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Exchange: email, contacts, appointments&lt;/LI&gt;
&lt;LI&gt;TweetDeck: twitter search terms&lt;/LI&gt;
&lt;LI&gt;Evernote: random notes&lt;/LI&gt;
&lt;LI&gt;Amazon: Kindle books&lt;/LI&gt;
&lt;LI&gt;TripIt: trip itineraries&lt;/LI&gt;
&lt;LI&gt;Mint: account and budget information&lt;/LI&gt;
&lt;LI&gt;Facebook: social contacts&lt;/LI&gt;
&lt;LI&gt;LinkedIn: business contacts&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Further, I could keep my pictures in Flickr, my documents on Live and I'm sure there are many, many more. This is fabulous, because I can move from platform to platform on my phone and it's in a vendor's interest to make sure that each major platform has their app on it and because it's a smaller, more focused platform, it's easier for them to do.&lt;/P&gt;
&lt;P&gt;The problem here, of course, is that we've moved from mobile vendor lock-in to cloud data storage lock-in. What happens when Amazon decides to repossess another book or Mint decides to start charging or Flickr goes out of business? Unlike the physical storage business (you know, little garages where people keep stuff when their relatives die or they're going through a divorce), the logical storage business doesn't have any legal responsibility to keep the doors open for 30 days when they go out of business to let me move my stuff somewhere else.&lt;/P&gt;
&lt;P&gt;And this has already happened. When GeoCities went out of business, all of those people's web sites were gone. When live.com decided to clean out my set of RSS feeds, there wasn't any notification or recourse. I'm sure there are more similar stories and there will be lots more in the future.&lt;/P&gt;
&lt;P&gt;And because I know there will be more, I'm worried.&lt;/P&gt;
&lt;P&gt;Right now, as we move our apps and storage in the cloud, we have a very different dynamic then apps and storage on the desktop. Because apps on the desktop use storage I own, I can back up that data, import it into other programs and, if I feel like it, write programs against it. It's my data. The vendor doesn't ever even see it, let alone gate my access to it.&lt;/P&gt;
&lt;P&gt;On the other hand, cloud app vendors ARE gating access to my data; I have to use their apps to get to it.&amp;nbsp;Unless there's some pressure, you can be damned sure the Flickrs and Mints and Amazons aren't going to be giving up the data they've got a wall around now so that I can take it to a competitor.&lt;/P&gt;
&lt;P&gt;Which is why we need control over the storage for cloud apps just as much as we do for desktop apps. I want to go to a vendor I trust, e.g. Amazon, Microsoft, GE, i.e. someone big, someone you know is gonna be around for a while, and purchase cloud storage from them. I want to be able to use it as a HD for my desktop data (like Azure Drive and other products before it), including general-purpose backup, but I also want my cloud apps to store their data there, too. That way, if they start charging or they go out of business or I want to go somewhere else with my data, I can do so.&lt;/P&gt;
&lt;P&gt;I expect to pay for this service, of course. That way, the cloud storage folks make money, the cloud apps folks make money for using my cloud storage and I get peace of mind knowing that I'll always have access to my data, no matter what happens to the cloud app or the cloud app vendor, just like today.&lt;/P&gt;
&lt;P&gt;We need cloud apps to use cloud drives. Call your congressman!&lt;/P&gt;</description>
</item>

<item>
  <title>What's New in EF4.0</title>
  <link>http://www.sellsbrothers.com/news/showTopic.aspx?ixTopic=2321</link>
  <description>&lt;P&gt;Soma has posted &lt;A href=&quot;http://blogs.msdn.com/somasegar/archive/2010/01/11/entity-framework-in-net-4.aspx&quot;&gt;a lovely description of what's new in the Entity Framework for .NET 4.0&lt;/A&gt;, including:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Foreign Key support so you can add a row without requiring you to download an object just to get the foreign key.&lt;/LI&gt;
&lt;LI&gt;Lazy Loading support so as you traverse a property that is a collection, the data is pulled on demand.&lt;/LI&gt;
&lt;LI&gt;Plain Old CLR Object support (POCO) so that you can build your own classes and have EF serialize those instead of generating new classes.&lt;/LI&gt;
&lt;LI&gt;T4-based Code Generation in case you do want classes generated but want to control the code.&lt;/LI&gt;
&lt;LI&gt;Data binding support for WPF and WinForms.&lt;/LI&gt;
&lt;LI&gt;WCF support with serialization attribute generation.&lt;/LI&gt;
&lt;LI&gt;Much better SQL generation so that you can read it better when you need what's going on over the wire and so that it's more efficient.&lt;/LI&gt;
&lt;LI&gt;Much better support for complex return values from stored procedures.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;That Soma really knows his stuff! &lt;A href=&quot;http://blogs.msdn.com/somasegar/archive/2010/01/11/entity-framework-in-net-4.aspx&quot;&gt;Check it out.&lt;/A&gt;&lt;/P&gt;</description>
</item>

<item>
  <title>LINQPad updated to support .NET 4.0b2!</title>
  <link>http://www.sellsbrothers.com/news/showTopic.aspx?ixTopic=2320</link>
  <description>I'm such a fan of &lt;A href=&quot;http://www.linqpad.net/beta.aspx&quot;&gt;LINQPad&lt;/A&gt; you don't even know. Recently Joe updated it to support Data Services and as of today, if you scroll down to the bottom of &lt;A href=&quot;http://www.linqpad.net/beta.aspx&quot;&gt;the LINQPad download&amp;nbsp;page&lt;/A&gt;, it's been updated to support .NET 4.0 beta 2, which means that you can point it at Data Services constructed with .NET 4.0. This makes my heart sing. Also, if you haven't&amp;nbsp;spent the $29 to get the auto-completion,&amp;nbsp;it's totally worth it. Highly recommended.&amp;nbsp;Thanks, Joe!</description>
</item>

<item>
  <title>Comparing NHibernate and EF4</title>
  <link>http://www.sellsbrothers.com/news/showTopic.aspx?ixTopic=2319</link>
  <description>This is &lt;A href=&quot;http://www.infoq.com/news/2010/01/Comparing-NHibernate-EF-4&quot;&gt;a nice piece comparing NHibernate and EF4&lt;/A&gt;. Personally, I'm an EF4 fan, but I'm hardly unbiased and there are definitely features I want to see added to EF v.Next. Either way, it's clear that EF4 is garnering much more appreciation from the community than previous versions and that's because you let us know what you wanted and we added it. &lt;A href=&quot;https://connect.microsoft.com/VisualStudio/content/content.aspx?ContentID=14631&quot;&gt;Keep those cards and letters coming!&lt;/A&gt;</description>
</item>

<item>
  <title>Stead Defines 'Customer'</title>
  <link>http://www.sellsbrothers.com/news/showTopic.aspx?ixTopic=2318</link>
  <description>&lt;P&gt;And here's one more from the paper file I'm putting into electronic format to reduce the pile of papers in my life:&lt;/P&gt;
&lt;P&gt;During the all-associate broadcast, Jerre Stead shared with the team a memo another associate had sent about defining a customer. Here are the highlights:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Customers are individual companies with unique needs.&lt;/LI&gt;
&lt;LI&gt;Customers are struggling with their competitors for success.&lt;/LI&gt;
&lt;LI&gt;Customers are people with feelings and opinions, therefore relationships and experiences matter.&lt;/LI&gt;
&lt;LI&gt;Customers will judge us by our performance, not by our words.&lt;/LI&gt;
&lt;LI&gt;Customers are influenced by every contact with us, each and every day.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Customer &quot;Must Not's&quot;&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;We must not import our products or ideas on customers.&lt;/LI&gt;
&lt;LI&gt;We must not ask customers to deal with people who cannot make decisions.&lt;/LI&gt;
&lt;LI&gt;We must not make customers wrestle with our bureaucracy.&lt;/LI&gt;
&lt;LI&gt;We must not allow any question, issue or awkwardness go unattended or unresolved.&lt;/LI&gt;
&lt;LI&gt;We must never unpleasantly surprise our customer.&lt;/LI&gt;
&lt;LI&gt;We must never, never take a customer for granted.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Customer &quot;Can's&quot;&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;We can help the customer succeed - make our customers winners.&lt;/LI&gt;
&lt;LI&gt;We can provide greater value to our customers than our competitors can.&lt;/LI&gt;
&lt;LI&gt;We can measure ourselves from the viewpoint of our customers.&lt;/LI&gt;
&lt;LI&gt;We can put decision-making close to our customers.&lt;/LI&gt;
&lt;LI&gt;We can continuously improve to better serve our customers.&lt;/LI&gt;&lt;/UL&gt;</description>
</item>

<item>
  <title>The Most Effective Words To Use With Customers</title>
  <link>http://www.sellsbrothers.com/news/showTopic.aspx?ixTopic=2317</link>
  <description>&lt;P&gt;Fred Gleeck had this to say about what not to say to customers and what to say instead:&lt;/P&gt;
&lt;P&gt;There's a right way and a wrong way to talk to callers. Even about the simplest matters. And make no mistake: Talking the wrong way can turn a loyal customer into an annoyed ex-customer. I have a name for talking the right way: PosiTalk (tm).&lt;/P&gt;
&lt;P&gt;PosiTalk is an attitude. It shows you're concerned. Professional. Helpful. And, while it sometimes requires a few extra words, it can make a big difference. below you'll find some common negative phrases, and the PosiTalk alternatives. Post them. Use them. And speak the language that keeps customers calling. After all... they pay the bills!&lt;/P&gt;
&lt;P&gt;Negative: She/He is out to lunch...&lt;BR&gt;PosiTalk: She/He isn't available at the moment. May I take a message.&lt;/P&gt;
&lt;P&gt;Negative: I can't do that...&lt;BR&gt;PosiTalk: Here's what we can do.&lt;/P&gt;
&lt;P&gt;Negative: Hold on a minute...&lt;BR&gt;PosiTalk: Could you hold a moment, please?&lt;/P&gt;
&lt;P&gt;Negative: That's company policy...&lt;BR&gt;PosiTalk: The way we'd normally handle that is...&lt;/P&gt;
&lt;P&gt;Negative: I don't know...&lt;BR&gt;PosiTalk: I don't have the answer to that. If you'll hold a moment, I'd be happy to find out.&lt;/P&gt;
&lt;P&gt;Negative: Huh? (or: What?)&lt;BR&gt;PosiTalk: Pardon me?&lt;/P&gt;
&lt;P&gt;Negative: He/She is no longer with us...&lt;BR&gt;PosiTalk: He/She has accepted another position, but his/her calls are now being taken by...&lt;/P&gt;
&lt;P&gt;Negative: She/He is busy bow...&lt;BR&gt;PosiTalk: She/He's not available at the moment. How can I help you?&lt;/P&gt;</description>
</item>

<item>
  <title>How To Handle Angry Callers in 7 Not-So-Easy Steps</title>
  <link>http://www.sellsbrothers.com/news/showTopic.aspx?ixTopic=2316</link>
  <description>&lt;P&gt;When I was first in technical phone support for the software I was building, I found out that I wasn't exactly a... um... &quot;natural&quot; at putting customers at ease. I used the following information from an AT&amp;amp;T magazine (I was working for a AT&amp;amp;T VAR at the time) in the fall of 1992 to start my education:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;STRONG&gt;Don't react. Stay calm. &lt;/STRONG&gt;When confronted with an irate caller, everyone has the urge to return fire. But don't fight back. And don't take it personally, or you'll become an emotional basket case. Keep relaxed by breathing deeply. And remind yourself that this discussion will not change the destiny of mankind.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Let them vent. &lt;/STRONG&gt;Remember, you simply cannot get customers to deal with the logic of a situation until you've dealt with their emotions. Trying to attack the problem before people have fully vented their anger or disappointment just won't work.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Defusing the anger. &lt;/STRONG&gt;When a tirade is winding down, try asking - sincerely - &quot;Is there anything else?&quot; By this point, they're usually exhausted and willing to talk. If you hear profanity, try saying: &quot;I know the words you're using right now aren't directed at me personally.&quot; If the caller replies, &quot;Oh yes they are!&quot; you're no worse off than you were. But generally they'll apologize, realizing it's not your fault. At which point, a real dialogue can begin.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;What do they want? &lt;/STRONG&gt;Once they've calmed down, that's the time to find out what they want: Money back? A defective part replaced? Find out quickly to determine whether you can solve the problem on the spot.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;What can they have. &lt;/STRONG&gt;Once you've figured out what they want, what can you do? This will be set by bounds of your company's policies - such as warranties or guarantees - as well as any flexibility that management may give you (which should be clearly spelled out).&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Customer solutions. &lt;/STRONG&gt;Sometimes, the best solution you can deliver is one the customer suggests. And, surprisingly, it can end up being less than what you yourself were willing to offer. Recently, at a major department store, a customer wanted a discounting an imperfect blouse. The cashier was willing to take 35% off the marked price, but first asked the woman what discount she wanted. The answer: 20% off. Of course, some customers will make outrageous demands. In that case, ask them what they'd consider to be a &quot;fair solution.&quot; Instead of confronting the customer, this reply opens up the discussion to a more equitable resolution.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Follow up. &lt;/STRONG&gt;Don't make an angry customer even angrier by not doing what you said you'd do. When a promise is made, keep following up internally to be certain that what was promised has been implemented. Even if that means making a minor pest of yourself!&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;Fred Gleek&lt;/P&gt;</description>
</item>

<item>
  <title>LINQPad updated to support Data Services!</title>
  <link>http://www.sellsbrothers.com/news/showTopic.aspx?ixTopic=2315</link>
  <description>&lt;IMG align=right src=&quot;http://www.linqpad.net/DataServices.png&quot;&gt; 
&lt;P&gt;Joe Albahari, the author of LINQPad, has added support for &lt;A href=&quot;http://msdn.microsoft.com/en-us/data/bb931106.aspx&quot;&gt;WCF Data Services&lt;/A&gt; to &lt;A href=&quot;http://www.linqpad.net/Beta.aspx&quot;&gt;the 1.37.1 version beta&lt;/A&gt;&amp;nbsp;of LINQPad. This means that you can point LINQPad at any &lt;A href=&quot;http://www.odata.org/&quot;&gt;Open Data (OData)&lt;/A&gt; endpoint and do queries interactively just like any other LINQ data source. He even supports HTTP security, in case the endpoint in question requires it. Further, if you have your own custom LINQ to Whatever and you'd like to plug a connection to it into LINQPad, Joe has already added the ability to create a custom data context provider. It is, as they say, a thing of beauty. Enjoy!&lt;/P&gt;</description>
</item>

<item>
  <title>Data and Modeling Talks from PDC 2009</title>
  <link>http://www.sellsbrothers.com/news/showTopic.aspx?ixTopic=2314</link>
  <description>&lt;P&gt;If you weren't lucky enough to be able to attend this year's PDC, not only did you not get a killer laptop, but you didn't get to see the Data &amp;amp; Modeling talks live and in person. Fortunately, Doug has a nice list of them so you can &lt;A href=&quot;http://www.douglaspurdy.com/2009/11/22/pdc-2009-data-and-modeling-talks-2/&quot;&gt;watch them from the comfort of your own home&lt;/A&gt;. Enjoy!&lt;/P&gt;</description>
</item>

<item>
  <title>&quot;Quadrant&quot;: Three Features in Two Minutes</title>
  <link>http://www.sellsbrothers.com/news/showTopic.aspx?ixTopic=2312</link>
  <description>&lt;P&gt;&lt;A href=&quot;http://www.douglaspurdy.com&quot;&gt;Doug Purdy&lt;/A&gt; shows off &lt;A href=&quot;http://www.douglaspurdy.com/2009/11/29/quadrant-three-features-in-two-minutes/&quot;&gt;three features of &quot;Quadrant&quot;&lt;/A&gt; from &lt;A href=&quot;http://msdn.microsoft.com/en-us/data/ee720187.aspx&quot;&gt;the Nov '09 SQL Server Modeling CTP&lt;/A&gt; bits in two minutes:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Access to SQL Azure databases&lt;/LI&gt;
&lt;LI&gt;Creating custom views (including master detail) by mashing views together&lt;/LI&gt;
&lt;LI&gt;See the &quot;markup&quot; of any view in Quadrant and steal it/change it (just like view source in a Web browser)&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Enjoy!&lt;/P&gt;</description>
</item>

<item>
  <title>Do you know someone that needs dinner this Thanksgiving?</title>
  <link>http://www.sellsbrothers.com/news/showTopic.aspx?ixTopic=2311</link>
  <description>&lt;P&gt;&lt;IMG align=right src=&quot;http://www.shoppingblog.com/pics/turkeydinneromahasteaks.jpg&quot;&gt; The boys and I were driving past a church with a holiday bizarre, so we stopped by. It was a mix of silent auction, bake sale and a $1 raffle for a turkey dinner with all the fixings. I made several comments about how they could skip the formality of the drawing and to make sure they could read my phone number on the back of my raffle ticket, because I was obviously going to win. They laughed.&lt;/P&gt;
&lt;P&gt;When they called this morning to let me know that I had won, they told me that they remembered me and I laughed.&lt;/P&gt;
&lt;P&gt;Anyway, the Sells Brothers and I have already picked up all we need for our Thanksgiving dinner, so if you know of a family in the Portland metro area without the means for a traditional dinner this holiday season, please let me know. I doubt it'll be so big that I'll need a sled to cart it through the streets, but I'm happy to deliver it when it needs to go. You can leave a comment on this post or &lt;A href=&quot;mailto:csells@sellsbrothers.com?subject=I know of someone that needs a turkey this Thanksgiving&quot;&gt;drop me a line&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;Happy holidays, everyone.&lt;/P&gt;</description>
</item>

<item>
  <title>&quot;M&quot; For Language Definition in November 2009 CTP</title>
  <link>http://www.sellsbrothers.com/news/showTopic.aspx?ixTopic=2310</link>
  <description>&lt;P&gt;I couldn't wait for the PDC, so I posted &lt;A HREF=&quot;http://www.sellsbrothers.com/spout/#M_For_Language_Definition_in_November_2009_CTP&quot;&gt;a screen shot of my favorite new three features of &quot;M&quot; for defining domain-specific languages (DSLs)&lt;/A&gt; in the November 2009 CTP of &quot;Oslo&quot;:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;P align=left&gt;&lt;STRONG&gt;Expressions on the right-hand side&lt;/STRONG&gt; in language actions to calculate&amp;nbsp;results. &quot;M&quot; supports a rich expression syntax for a variety of data types.&lt;/P&gt;
&lt;LI&gt;
&lt;P align=left&gt;&lt;STRONG&gt;Data conversion&lt;/STRONG&gt; &lt;STRONG&gt;functions&lt;/STRONG&gt; for output, one for each of the supported &quot;M&quot; data types.&lt;/P&gt;
&lt;LI&gt;
&lt;P align=left&gt;&lt;STRONG&gt;DSL debugging mode&lt;/STRONG&gt; to let you step through your input data and debug your language.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P align=left&gt;I can't wait for you to &lt;a href=&quot;http://www.sellsbrothers.com/spout/#M_For_Language_Definition_in_November_2009_CTP&quot;&gt;see it&lt;/a&gt;!&lt;/P&gt;</description>
</item>

<item>
  <title>From &quot;Oslo&quot; to SQL Server Modeling</title>
  <link>http://www.sellsbrothers.com/news/showTopic.aspx?ixTopic=2309</link>
  <description>&lt;P&gt;Extra! Extra! Read all about it!&lt;/P&gt;
&lt;P&gt;Doug Purdy, my boss and one of the chiefs on the &quot;Oslo&quot; project has just announced &lt;A href=&quot;http://www.douglaspurdy.com/2009/11/10/from-oslo-to-sql-server-modeling/&quot;&gt;the move from codename &quot;Oslo&quot; to SQL Server Modeling&lt;/A&gt;, which is the name we'll be using for starting now for the group of &quot;M&quot;, &quot;Quadrant&quot; and Repository that you've come to know and love.&lt;/P&gt;
&lt;P&gt;Tune in on November 17th, the first day of the PDC, for &lt;A href=&quot;http://msdn.com/data&quot;&gt;the new unified Data Developer Center&lt;/A&gt;, which will include all manner of data technologies, including XML, DataReader, DataSet, LINQ to SQL, Data Services (aka &quot;Astoria&quot;) and Entity Framework. One stop shopping!&lt;/P&gt;</description>
</item>

<item>
  <title>Chris Sells on .NET Rocks! talking about data</title>
  <link>http://www.sellsbrothers.com/news/showTopic.aspx?ixTopic=2308</link>
  <description>I was on &lt;A href=&quot;http://www.dotnetrocks.com/default.aspx?ShowNum=494&quot;&gt;.NET Rocks! recently talking to Richard and Carl about data&lt;/A&gt; in Visual Studio (object-oriented, XML and relational), what tools Microsoft is already providing for managing your SQL Server schema and data migration and&amp;nbsp;where &quot;Oslo&quot; (&quot;M&quot;, &quot;Quadrant&quot; and the Repository)&amp;nbsp;fits into the overall picture. It was fun and I think it turned out well. Enjoy.</description>
</item>

<item>
  <title>Questionnaire DSL with Microsoft &quot;Oslo&quot;</title>
  <link>http://www.sellsbrothers.com/news/showTopic.aspx?ixTopic=2307</link>
  <description>Gerben van Loon, a lead developer at Avanade, has put together &lt;A href=&quot;http://bloggingabout.net/blogs/gerben/archive/2009/10/30/questionnaire-dsl-with-microsoft-quot-oslo-quot-overview.aspx&quot;&gt;a nice overview of a DSL they've been building for describing questionnaires in &quot;M&quot;, seeing how they flow in Quadrant and then executing them on their web site&lt;/A&gt;. Sweet stuff!</description>
</item>

<item>
  <title>Sweet State Machine DSL in &quot;M&quot;</title>
  <link>http://www.sellsbrothers.com/news/showTopic.aspx?ixTopic=2306</link>
  <description>&lt;P&gt;&lt;A href=&quot;http://new.efficientcoder.net/&quot;&gt;Kevin D. Wolf&lt;/A&gt; has built &lt;A href=&quot;http://new.efficientcoder.net/2009/10/oslo-state-machine-editor-in.html&quot;&gt;a sweet little language to describe state machines&lt;/A&gt;:&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;The States of a Invoice are New, Reviewed, Submitted, Paid, Overdue and Canceled.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;An Invoice can transition from New to Reviewed and Canceled.&lt;BR&gt;An Invoice can transition from Reviewed to Submitted and Canceled.&lt;BR&gt;An Invoice can transition from Submitted to Paid, Overdue and Canceled.&lt;BR&gt;An Invoice can transition from Overdue to Paid and Canceled.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;He built this with a language definition in &quot;M&quot;. What could be simpler?&lt;/P&gt;</description>
</item>

<item>
  <title>&quot;Oslo&quot; at the 2009 PDC</title>
  <link>http://www.sellsbrothers.com/news/showTopic.aspx?ixTopic=2305</link>
  <description>&lt;P&gt;Lars Corneliussen, my friend and &quot;Oslo&quot; consigliere, has posted a nice update on what he's guessing &quot;Oslo&quot; might or might not be: &lt;A href=&quot;http://startbigthinksmall.wordpress.com/2009/08/19/updates-on-what-oslo-is-and-quadrant-not-is-september-2009/&quot;&gt;Updates on what Oslo is and Quadrant not is (September 2009)&lt;/A&gt;. The fact that he has to guess points to just how early we are in the development cycle. For our latest thoughts, I recommend &lt;A href=&quot;http://microsoftpdc.com&quot;&gt;the PDC 2009&lt;/A&gt;, where you should attend all of the following talks:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href=&quot;http://microsoftpdc.com/Sessions/P09-04&quot;&gt;Data Programming and Modeling for the Microsoft .NET Developer&lt;/A&gt;, Don Box, Chris Anderson&lt;/LI&gt;
&lt;LI&gt;&lt;A href=&quot;http://microsoftpdc.com/Sessions/FT10&quot;&gt;Evolving ADO.NET Entity Framework in .NET 4 and Beyond&lt;/A&gt;, Shyam Pather, Chris Anderson&lt;/LI&gt;
&lt;LI&gt;&lt;A href=&quot;http://microsoftpdc.com/Sessions/FT12&quot;&gt;ADO.NET Data Services: What&amp;#8217;s new with the RESTful data services framework&lt;/A&gt;, Pablo Castro&lt;/LI&gt;
&lt;LI&gt;&lt;A href=&quot;http://microsoftpdc.com/Sessions/FT50&quot;&gt;Building Data-Driven Applications Using Microsoft Project Code Name &quot;Quadrant&quot; and Microsoft Project Code Name &quot;M&quot;&lt;/A&gt;, Douglas Purdy, Chris Sells&lt;/LI&gt;
&lt;LI&gt;&lt;A href=&quot;http://microsoftpdc.com/Sessions/FT34&quot;&gt;Microsoft Project Code Name &amp;#8220;M&amp;#8221;: The Data and Modeling Language&lt;/A&gt;, Jeff Pinkston, Don Box&lt;/LI&gt;
&lt;LI&gt;&lt;A href=&quot;http://microsoftpdc.com/Sessions/SVR19&quot;&gt;Microsoft Project Code Name &amp;#8220;Repository&amp;#8221;: Using Metadata to Drive Application Design, Development, and Management&lt;/A&gt;, Shoshanna Budzianowski, James Baker&lt;/LI&gt;
&lt;LI&gt;&lt;A href=&quot;http://microsoftpdc.com/Sessions/SVC28&quot;&gt;The 'M'-Based System.Identity Model for Accessing Directory Services&lt;/A&gt;, Gert Drapers, Kim Cameron&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Personally, I'm very much looking forward to this PDC. I get to give what I'm sure is the talk with the longest title, but even better, I get to see friends, old and new, and I love listening to good talks on technologies I just don't have the time to dive into any other time.&lt;/P&gt;
&lt;P&gt;If you're going to PDC and you'd like to chat, &lt;A href=&quot;mailto:csells@microsoft.com?subject=Meet me at the PDC!&quot;&gt;drop me a line&lt;/A&gt; and we can set up some time. See you there!&lt;/P&gt;</description>
</item>

<item>
  <title>The New Microsoft Store Looks Cool</title>
  <link>http://www.sellsbrothers.com/news/showTopic.aspx?ixTopic=2304</link>
  <description>And &lt;A href=&quot;http://www.engadget.com/2009/10/22/microsoft-store-opens-to-scottsdale-campers-video/&quot;&gt;the folks in Scottsdale, AZ lined up overnight to be there when it opened&lt;/A&gt; and get their copies of &lt;A href=&quot;http://www.microsoft.com/windows/windows-7/default.aspx&quot;&gt;Windows 7&lt;/A&gt; (which goes on sale today and, if I may say so, rocks).</description>
</item>

<item>
  <title>&quot;M&quot; Language Type Definitions for 280 Popular (and not so popular) Data Models</title>
  <link>http://www.sellsbrothers.com/news/showTopic.aspx?ixTopic=2303</link>
  <description>Holy &quot;M&quot; types, Batman! Somebody's been busy building M type definitions for tons of existing data models, including ATOM, AWK, BPEL, C/C++/C#/Java, COBOL, HTML, LaTeX, Make and &lt;A href=&quot;http://www.emn.fr/z-info/atlanmod/index.php/MsOsloM&quot;&gt;the list goes on and on&lt;/A&gt;. I don't know how they did it -- it's an amazing task! Now that they've got some free time back, maybe they'll build M language definitions to parse the file formats. I'm just sayin'... : )</description>
</item>

<item>
  <title>NHibernate DSL Built Using &quot;Oslo&quot;</title>
  <link>http://www.sellsbrothers.com/news/showTopic.aspx?ixTopic=2302</link>
  <description>Felice has built &lt;A href=&quot;http://nhmodeller.selfip.com/&quot;&gt;a domain specific language (DSL) for defining NHibernate entities using &quot;Oslo&quot;&lt;/A&gt;, including both a command-line compiler and a very full-featured Intellipad add-in. Nice!</description>
</item>

<item>
  <title>Put Intellipad-like language editing features into your applications</title>
  <link>http://www.sellsbrothers.com/news/showTopic.aspx?ixTopic=2301</link>
  <description>Bill Henning from Actipro Software has done it again, this time providing the components to drop real-time language creation features into your application for building custom grammars in &lt;A href=&quot;http://blog.actiprosoftware.com/post/2009/08/25/SyntaxEditor-for-WPFe28099s-MGrammar-add-on-adds-AST-construction-and-error-reporting-features.aspx&quot;&gt;the critically acclaimed SyntaxEditor control&lt;/A&gt;. Enjoy!</description>
</item>

  </channel>
</rss>
