<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://www.pluralsight.com/community/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><title type="html">Jon Flanders&amp;#39; </title><subtitle type="html">Jon&amp;#39;s PS technical blog</subtitle><id>http://www.pluralsight.com/community/blogs/jfland/atom.aspx</id><link rel="alternate" type="text/html" href="http://www.pluralsight.com/community/blogs/jfland/default.aspx" /><link rel="self" type="application/atom+xml" href="http://www.pluralsight.com/community/blogs/jfland/atom.aspx" /><generator uri="http://communityserver.org" version="4.1.31106.3070">Community Server</generator><updated>2008-09-15T11:00:00Z</updated><entry><title>Matt Winkler on using WF 3.X</title><link rel="alternate" type="text/html" href="/community/blogs/jfland/archive/2009/01/06/matt-winkler-on-using-wf-3-x.aspx" /><id>/community/blogs/jfland/archive/2009/01/06/matt-winkler-on-using-wf-3-x.aspx</id><published>2009-01-06T22:22:47Z</published><updated>2009-01-06T22:22:47Z</updated><content type="html">&lt;p&gt;&lt;a href="http://blogs.msdn.com/mwinkle/archive/2009/01/06/thoughts-on-waiting-until-20xx-for-wf.aspx"&gt;Matt&lt;/a&gt; has a great post on WF 3.X and 4.0 – I totally concur.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=56084" width="1" height="1"&gt;</content><author><name>jon-flanders</name><uri>http://www.pluralsight.com/community/members/jon_2D00_flanders/default.aspx</uri></author></entry><entry><title>First Oslo course</title><link rel="alternate" type="text/html" href="/community/blogs/jfland/archive/2009/01/05/first-oslo-course.aspx" /><id>/community/blogs/jfland/archive/2009/01/05/first-oslo-course.aspx</id><published>2009-01-06T05:22:59Z</published><updated>2009-01-06T05:22:59Z</updated><content type="html">&lt;p&gt;Along with our course on &lt;a href="http://www.pluralsight.com/main/ilt/Course.aspx?id=AP30"&gt;Dublin&lt;/a&gt;, we are now offering a two-day course on &lt;a href="http://www.pluralsight.com/main/ilt/Course.aspx?id=AP31"&gt;Oslo&lt;/a&gt;.&amp;#160; I’m super exited to be working on this course, and excited that we are going to offer them back to back starting on 3/30 in Kirkland.&amp;#160; If you are interested in either or both technologies – sign up!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=56073" width="1" height="1"&gt;</content><author><name>jon-flanders</name><uri>http://www.pluralsight.com/community/members/jon_2D00_flanders/default.aspx</uri></author><category term="Oslo" scheme="http://www.pluralsight.com/community/blogs/jfland/archive/tags/Oslo/default.aspx" /><category term="M" scheme="http://www.pluralsight.com/community/blogs/jfland/archive/tags/M/default.aspx" /><category term="MGrammar" scheme="http://www.pluralsight.com/community/blogs/jfland/archive/tags/MGrammar/default.aspx" /><category term="Dublin" scheme="http://www.pluralsight.com/community/blogs/jfland/archive/tags/Dublin/default.aspx" /><category term="Quadrant" scheme="http://www.pluralsight.com/community/blogs/jfland/archive/tags/Quadrant/default.aspx" /></entry><entry><title>I couldn't think up a language of my own</title><link rel="alternate" type="text/html" href="/community/blogs/jfland/archive/2008/12/19/i-couldn-t-think-up-a-language-of-my-own.aspx" /><id>/community/blogs/jfland/archive/2008/12/19/i-couldn-t-think-up-a-language-of-my-own.aspx</id><published>2008-12-19T16:42:01Z</published><updated>2008-12-19T16:42:01Z</updated><content type="html">&lt;p&gt;So I decided to write an MGrammar for an existing language - XLANG (the language of orchestrations in BizTalk).&amp;nbsp; The picture shows Intellipad in 3-pane mode with an XLANG orchestration on the left, my MGrammar for XLANG in the middle, and the MGrammar projection on the left.&amp;nbsp; &lt;/p&gt; &lt;p&gt;What&amp;#39;s the point?&amp;nbsp; Well to help me learn more about MGrammar for one, but I think I have some pretty interesting stuff I can do with orchestrations once I can parse them using my grammar.&amp;nbsp; More to come...&lt;/p&gt;&lt;a href="https://www.pluralsight.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jfland/mgrammarforxlang_5F00_2.png"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" alt="mgrammarforxlang" src="https://www.pluralsight.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jfland/mgrammarforxlang_5F00_thumb.png" border="0" /&gt;&lt;/a&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=55766" width="1" height="1"&gt;</content><author><name>jon-flanders</name><uri>http://www.pluralsight.com/community/members/jon_2D00_flanders/default.aspx</uri></author><category term="Oslo" scheme="http://www.pluralsight.com/community/blogs/jfland/archive/tags/Oslo/default.aspx" /><category term="M" scheme="http://www.pluralsight.com/community/blogs/jfland/archive/tags/M/default.aspx" /><category term="MGrammar" scheme="http://www.pluralsight.com/community/blogs/jfland/archive/tags/MGrammar/default.aspx" /></entry><entry><title>Tis the season for book releases</title><link rel="alternate" type="text/html" href="/community/blogs/jfland/archive/2008/12/04/tis-the-season-for-book-releases.aspx" /><id>/community/blogs/jfland/archive/2008/12/04/tis-the-season-for-book-releases.aspx</id><published>2008-12-04T15:42:04Z</published><updated>2008-12-04T15:42:04Z</updated><content type="html">&lt;p&gt;I just got my copy of &lt;a href="http://www.amazon.com/gp/product/0735625999/ref=cm_cr_mts_prod_img"&gt;Programming SQL Server 2008&lt;/a&gt; - great book, I highly recommend it as the SQL Server 2008 reference for developers. Great job guys.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=55562" width="1" height="1"&gt;</content><author><name>jon-flanders</name><uri>http://www.pluralsight.com/community/members/jon_2D00_flanders/default.aspx</uri></author></entry><entry><title>Code for my book is up</title><link rel="alternate" type="text/html" href="/community/blogs/jfland/archive/2008/11/25/code-for-my-book-is-up.aspx" /><id>/community/blogs/jfland/archive/2008/11/25/code-for-my-book-is-up.aspx</id><published>2008-11-25T17:25:09Z</published><updated>2008-11-25T17:25:09Z</updated><content type="html">&lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;You can find it at &lt;a href="http://www.rest-ful.net/book/default.aspx"&gt;http://www.rest-ful.net/book/default.aspx&lt;/a&gt; .&amp;nbsp; My plan is to have more REST and WCF content up on that site soon - but at least the code files for the book are there.&lt;/p&gt; &lt;p&gt;Watch out for the code from Chapter 10 (consuming REST services)&amp;nbsp; - I created some code to use SQL Server Data Services - I haven&amp;#39;t had time to see if it still works, but I will be updating it soon.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=55241" width="1" height="1"&gt;</content><author><name>jon-flanders</name><uri>http://www.pluralsight.com/community/members/jon_2D00_flanders/default.aspx</uri></author><category term="WCF" scheme="http://www.pluralsight.com/community/blogs/jfland/archive/tags/WCF/default.aspx" /><category term="REST" scheme="http://www.pluralsight.com/community/blogs/jfland/archive/tags/REST/default.aspx" /></entry><entry><title>RESTFul.NET in stock at Amazon.com and O'Reilly.com</title><link rel="alternate" type="text/html" href="/community/blogs/jfland/archive/2008/11/24/restful-net-in-stock-at-amazon-com-and-o-reilly-com.aspx" /><id>/community/blogs/jfland/archive/2008/11/24/restful-net-in-stock-at-amazon-com-and-o-reilly-com.aspx</id><published>2008-11-25T00:32:12Z</published><updated>2008-11-25T00:32:12Z</updated><content type="html">&lt;p&gt;My book on WCF and REST is SHIPPING!&lt;/p&gt; &lt;p&gt;So many people have been asking me when the book would be ready - well NOW!&amp;nbsp; Code will be up this week (this of course I know will be the next logical question once people get their copies :))&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.amazon.com/RESTful-NET-Jon-Flanders/dp/0596519206" target="_blank"&gt;Amazon&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://oreilly.com/catalog/9780596519209/" target="_blank"&gt;O&amp;#39;Reilly&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=55231" width="1" height="1"&gt;</content><author><name>jon-flanders</name><uri>http://www.pluralsight.com/community/members/jon_2D00_flanders/default.aspx</uri></author></entry><entry><title>TechED US and PDC in LA again!</title><link rel="alternate" type="text/html" href="/community/blogs/jfland/archive/2008/11/19/teched-us-and-pdc-in-la-again.aspx" /><id>/community/blogs/jfland/archive/2008/11/19/teched-us-and-pdc-in-la-again.aspx</id><published>2008-11-20T03:25:00Z</published><updated>2008-11-20T03:25:00Z</updated><content type="html">&lt;p&gt;So its already been announced that TechED US will be in LA (where I happen to live :)) in May, and PDC again in November.&amp;nbsp; Shannon and I couldn&amp;#39;t be happier.&lt;/p&gt; &lt;p&gt;I did here a lot of complaints though from people who feel like Downtown LA is kind of boring in the evenings.&amp;nbsp; And well - I can&amp;#39;t really argue there,&amp;nbsp; there isn&amp;#39;t that much going on.&amp;nbsp; &lt;/p&gt; &lt;p&gt;Three tips for those of you coming to either event in 2009:&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;1) Leave Downtown!&amp;nbsp; I know cabs are expensive - but the Metro line goes to Hollywood from very near the convention center.&amp;nbsp; Hollywood can be fun (if a little weird)&lt;/p&gt; &lt;p&gt;2) Go to Little Tokyo.&amp;nbsp;&amp;nbsp; I tried to tell everyone I could that the thing to do in Downtown LA at night is to head to Little Tokyo - there are great places to eat, Karaoke, and good bars.&amp;nbsp; Check it out. &lt;a title="http://maps.live.com/default.aspx?v=2&amp;amp;FORM=LMLTCC&amp;amp;cp=34.047006~-118.251085&amp;amp;style=r&amp;amp;lvl=15&amp;amp;tilt=-90&amp;amp;dir=0&amp;amp;alt=-1000&amp;amp;scene=33819618&amp;amp;phx=0&amp;amp;phy=0&amp;amp;phscl=1&amp;amp;encType=1" href="http://maps.live.com/default.aspx?v=2&amp;amp;FORM=LMLTCC&amp;amp;cp=34.047006~-118.251085&amp;amp;style=r&amp;amp;lvl=15&amp;amp;tilt=-90&amp;amp;dir=0&amp;amp;alt=-1000&amp;amp;scene=33819618&amp;amp;phx=0&amp;amp;phy=0&amp;amp;phscl=1&amp;amp;encType=1"&gt;http://maps.live.com/default.aspx?v=2&amp;amp;FORM=LMLTCC&amp;amp;cp=34.047006~-118.251085&amp;amp;style=r&amp;amp;lvl=15&amp;amp;tilt=-90&amp;amp;dir=0&amp;amp;alt=-1000&amp;amp;scene=33819618&amp;amp;phx=0&amp;amp;phy=0&amp;amp;phscl=1&amp;amp;encType=1&lt;/a&gt;&amp;nbsp; (Little Tokyo in the upper right corner)&lt;/p&gt; &lt;p&gt;3) See &lt;a href="http://la.eater.com/archives/2008/11/19/plywood_tracking_la_live_restaurants_opening_soon.php"&gt;http://la.eater.com/archives/2008/11/19/plywood_tracking_la_live_restaurants_opening_soon.php&lt;/a&gt;.&amp;nbsp; This is all right next to the Convention Center, so by the time TechEd rolls around - there will be good massed produced fun to be had right downtown (I still recommend Little Tokyo for un-produced fun, but I do like the Yard House quite a bit :)). &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=55030" width="1" height="1"&gt;</content><author><name>jon-flanders</name><uri>http://www.pluralsight.com/community/members/jon_2D00_flanders/default.aspx</uri></author></entry><entry><title>WF 3.5 SendActivity with ChannelManagerService followup</title><link rel="alternate" type="text/html" href="/community/blogs/jfland/archive/2008/11/19/wf-3-5-sendactivity-with-channelmanagerservice-followup.aspx" /><id>/community/blogs/jfland/archive/2008/11/19/wf-3-5-sendactivity-with-channelmanagerservice-followup.aspx</id><published>2008-11-19T18:05:25Z</published><updated>2008-11-19T18:05:25Z</updated><content type="html">&lt;p&gt;Here&amp;#39;s a short &lt;a href="http://pluralsight-free.s3.amazonaws.com/jon-flanders/spwfeds.wmv" target="_blank"&gt;video&lt;/a&gt; on how to use the WF 3.5 SendActivity with the ChannelManagerService to populate named Endpoints.&amp;nbsp; It also shows how to &amp;quot;subvert&amp;quot; the SharePoint WF Runtime to add custom services, including the ChannelManagerService.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=55013" width="1" height="1"&gt;</content><author><name>jon-flanders</name><uri>http://www.pluralsight.com/community/members/jon_2D00_flanders/default.aspx</uri></author><category term="WF" scheme="http://www.pluralsight.com/community/blogs/jfland/archive/tags/WF/default.aspx" /><category term="WCF" scheme="http://www.pluralsight.com/community/blogs/jfland/archive/tags/WCF/default.aspx" /><category term="SharePoint" scheme="http://www.pluralsight.com/community/blogs/jfland/archive/tags/SharePoint/default.aspx" /></entry><entry><title>SharePoint, Silverlight, and Virtual Earth</title><link rel="alternate" type="text/html" href="/community/blogs/jfland/archive/2008/11/18/sharepoint-silverlight-and-virtual-earth.aspx" /><id>/community/blogs/jfland/archive/2008/11/18/sharepoint-silverlight-and-virtual-earth.aspx</id><published>2008-11-19T00:20:55Z</published><updated>2008-11-19T00:20:55Z</updated><content type="html">&lt;p&gt;I&amp;#39;ve been doing a number of project lately for the SharePoint and SharePoint online teams.&amp;nbsp; Mostly around services and integrating SharePoint services with Silverlight.&amp;nbsp; One of these projects was pretty cool so we decided to put it up on CodePlex - &lt;a title="http://www.codeplex.com/sharepointsilverligh" href="http://www.codeplex.com/sharepointsilverligh"&gt;http://www.codeplex.com/sharepointsilverligh&lt;/a&gt;&amp;nbsp; (yes I can spell Silverlight - CodePlex seems to not like long project names in its URIs ;-)).&lt;/p&gt; &lt;p&gt;The basic idea is a Silverlight control that coordinates data between a SharePoint List (using the SharePoint List Web Service) and the Virtual Earth map control in the browser.&amp;nbsp; You can point it at any list that has columns containing longitude and latitude data (it should be pretty easy to modify it to use addresses and do a query of Virtual Earth as well).&amp;nbsp; It can also be pointed at a Picture list, so the picture can show up on the pushpin &amp;quot;tooltip&amp;quot;.&amp;nbsp; Enjoy and let me know what you think.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=55007" width="1" height="1"&gt;</content><author><name>jon-flanders</name><uri>http://www.pluralsight.com/community/members/jon_2D00_flanders/default.aspx</uri></author></entry><entry><title>Modeling Cartoon</title><link rel="alternate" type="text/html" href="/community/blogs/jfland/archive/2008/11/17/modeling-cartoon.aspx" /><id>/community/blogs/jfland/archive/2008/11/17/modeling-cartoon.aspx</id><published>2008-11-17T22:38:00Z</published><updated>2008-11-17T22:38:00Z</updated><content type="html">&lt;p&gt;Somehow I missed this earlier.&amp;nbsp; &lt;a target="_blank" href="http://wm.microsoft.com/ms/msdn/oslo/ModelingThroughtheAges.wmv"&gt;Hilarious&lt;/a&gt;&amp;nbsp; Modeling explained for managers ;-)&lt;/p&gt;
&lt;div style="padding-right:0px;display:inline;padding-left:0px;float:none;padding-bottom:0px;margin:0px;padding-top:0px;" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:75aa379b-dd82-41cd-9c8c-ccdf92938bac" class="wlWriterSmartContent"&gt;Technorati Tags: &lt;a rel="tag" href="http://technorati.com/tags/Oslo"&gt;Oslo&lt;/a&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=54887" width="1" height="1"&gt;</content><author><name>jon-flanders</name><uri>http://www.pluralsight.com/community/members/jon_2D00_flanders/default.aspx</uri></author><category term="Oslo" scheme="http://www.pluralsight.com/community/blogs/jfland/archive/tags/Oslo/default.aspx" /></entry><entry><title>Controlling authentication with the WF 3.5 SendActivity</title><link rel="alternate" type="text/html" href="/community/blogs/jfland/archive/2008/11/16/controlling-authentication-with-the-wf-3-5-sendactivity.aspx" /><id>/community/blogs/jfland/archive/2008/11/16/controlling-authentication-with-the-wf-3-5-sendactivity.aspx</id><published>2008-11-16T15:23:42Z</published><updated>2008-11-16T15:23:42Z</updated><content type="html">&lt;p&gt;Someone emailed me a question about whether or not you can specify credentials when using the OOB SendActivity in WF 3.5 because they heard that you had to write a custom activity to accomplish this.&amp;nbsp; You do not have to write a custom activity.&amp;nbsp; While it is true that the SendActivity links to a named endpoint, and if you use the configuration file to configure your endpoint you can&amp;#39;t specify specific credentials (a username and password for example),&amp;nbsp; WF 3.5 has a OOB WorkflowRuntime Service named the ChannelManagerService.&amp;nbsp; The ChannelManagerService (which I described in my article on MSDN - here &lt;a href="http://msdn.microsoft.com/en-us/library/cc626077.aspx"&gt;http://msdn.microsoft.com/en-us/library/cc626077.aspx&lt;/a&gt;)&amp;nbsp; allows you to pre-populate some or all of the endpoints you want the SendActivities running inside of your WorkflowRuntime to use.&amp;nbsp; So you definitely can programmatically configure an Endpoint that the SendActivity can use without having to write a custom activity.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=54880" width="1" height="1"&gt;</content><author><name>jon-flanders</name><uri>http://www.pluralsight.com/community/members/jon_2D00_flanders/default.aspx</uri></author></entry><entry><title>Semi-short video on M - aka M is like an Onion</title><link rel="alternate" type="text/html" href="/community/blogs/jfland/archive/2008/11/04/semi-short-video-on-m-aka-m-is-like-an-onion.aspx" /><link rel="enclosure" type="application/octet-stream" length="998" href="http://www.pluralsight.com/community/cfs-file.ashx/__key/CommunityServer.Components.PostAttachments/00.00.05.42.42/trainingcompany.m" /><id>/community/blogs/jfland/archive/2008/11/04/semi-short-video-on-m-aka-m-is-like-an-onion.aspx</id><published>2008-11-04T11:57:00Z</published><updated>2008-11-04T11:57:00Z</updated><content type="html">&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;I spent some time the last few days recording a short screen cast on M.&amp;nbsp; You can view it here:&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="http://pluralsight-free.s3.amazonaws.com/jon-flanders/introtom.wmv"&gt;Intro to M&lt;/a&gt; (~ 39 minutes)&lt;/p&gt;
&lt;p&gt;One thing I would say about M is that it may be different things to different people.&amp;nbsp; This video is just one example of what you might do with M.&lt;/p&gt;
&lt;p&gt;I say in the title that &amp;quot;M is like an Onion&amp;quot; as an homage to Shrek (if you haven&amp;#39;t seen this movie look here - &lt;a target="_blank" href="http://www.youtube.com/watch?v=t9nJlXLF06k"&gt;Ogres are like Onions&lt;/a&gt;.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;It isn&amp;#39;t because M smells, but because M has layers.&amp;nbsp; There is the whole &amp;quot;M&amp;quot;.&amp;nbsp; You can split that up into MSchema, MGrammar, and MGraph.&amp;nbsp; Each part might be useful.&amp;nbsp; And any one of them has a number of different interesting scenarios.&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;In this scenario my concept was &amp;quot;I&amp;#39;m a .NET developer, I create tables in a database to hold my application data, so how might I use M?&amp;quot;.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=54242" width="1" height="1"&gt;</content><author><name>jon-flanders</name><uri>http://www.pluralsight.com/community/members/jon_2D00_flanders/default.aspx</uri></author><category term="Oslo" scheme="http://www.pluralsight.com/community/blogs/jfland/archive/tags/Oslo/default.aspx" /></entry><entry><title>IntelliPad (IPad): adding commands</title><link rel="alternate" type="text/html" href="/community/blogs/jfland/archive/2008/11/01/intellipad-ipad-adding-commands.aspx" /><id>/community/blogs/jfland/archive/2008/11/01/intellipad-ipad-adding-commands.aspx</id><published>2008-11-01T20:48:00Z</published><updated>2008-11-01T20:48:00Z</updated><content type="html">&lt;p&gt;Last week at the &lt;a target="_blank" href="http://www.microsoftpdc.com/"&gt;PDC&lt;/a&gt; was &lt;a target="_blank" href="http://msdn.microsoft.com/en-us/oslo/default.aspx"&gt;Oslo&amp;#39;s&lt;/a&gt; big coming out party.&amp;nbsp; If you haven&amp;#39;t heard Oslo is a new set of technologies from Microsoft relating to model-driven development.&amp;nbsp; The three main parts of Oslo are:&lt;/p&gt;
&lt;p&gt;1) A language:&amp;nbsp; The M language is a language for writing stuff down.&amp;nbsp; You write down the things you need to drive your application.&amp;nbsp; The things could be application configuration data, or application specific data, or data which is actually your application.&amp;nbsp; How exactly you use M is largely up to you.&amp;nbsp; There is also MGrammar which I&amp;#39;ll be covering more in future posts.&lt;/p&gt;
&lt;p&gt;2) A repository: There needs to be a place to hold all this data, so Oslo has a SQL Server 2008 database named the &amp;quot;Repository&amp;quot;.&amp;nbsp; The Repository is full of models, both models that Microsoft has created, as well as models you might want to create.&amp;nbsp; Microsoft has created a large number of models that they think will be useful for us as developers.&amp;nbsp; Things like endpoints, service contracts, workflows, as well as other data our applications will need.&amp;nbsp; You can choose to put your models made in M into the Repository, or you can put your models into your own database.&amp;nbsp; The choice I think will largely be based on whether you want your models to be able interact with Microsoft&amp;#39;s models, and whether the Repository becomes your main application database.&lt;/p&gt;
&lt;p&gt;3) A visual tool:&amp;nbsp; To view the models in the Repository they&amp;#39;ve create a visual tool named &amp;quot;Quadrant&amp;quot; (this is a code-name hence the quotes).&amp;nbsp; &amp;quot;Quadrant&amp;quot; is a tool for viewing models for those of you who are visual/spatial people.&amp;nbsp; Some people like text - so they have M.&amp;nbsp; Some people like drawings - so they Quadrant.&amp;nbsp; Quadrant is a highly customizable general purpose data viewing and editing tool.&lt;/p&gt;
&lt;p&gt;Those are the three &amp;quot;main&amp;quot; pieces, but there are other pieces as well.&amp;nbsp; To create a great editing experience for M, the Oslo team built a tool called IntelliPad (or IPad) for short.&amp;nbsp; IPad is a customizable text editor that has support for the M language.&amp;nbsp; Here is a screenshot of IPad in action:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.pluralsight.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jfland/ipadwithm_5F00_2.png"&gt;&lt;img border="0" width="644" src="http://www.pluralsight.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jfland/ipadwithm_5F00_thumb.png" alt="ipadwithm" height="341" style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;In this picture I&amp;#39;m using M to generate &amp;quot;Reach SQL&amp;quot; which is SQL that isn&amp;#39;t limited to the Repository.&amp;nbsp; The test.m buffer is in &amp;quot;MMode&amp;quot; which means there are additional commands available that wouldn&amp;#39;t be available if I where editing any other kind of text file.&amp;nbsp; The other buffer is generated from the M in the test.m buffer, and I made this happen by going to the MMode menu and selecting &amp;quot;Reach SQL&amp;quot;.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;If you want to see Repository SQL you can use the MMode menu and select &amp;quot;Repository SQL&amp;quot;.&lt;/p&gt;
&lt;p&gt;In this case I am beginning a model to represent a blog.&amp;nbsp; I&amp;#39;ve created an M type named BlogEntryType, and then an extent (the name for storage space in M) named BlogEntry.&amp;nbsp; You can see on the right that the M will generate a table named BlogEntry with the appropriate columns.&amp;nbsp; As &lt;a target="_blank" href="http://www.traceofthought.net/2008/10/17/ModelsAsText.aspx"&gt;Scott&lt;/a&gt; points out one of the nice features of this system for developers even if you aren&amp;#39;t using the Repository is that you will be able to check-in the m file to source control and doing all the usual source control type things on it.&lt;/p&gt;
&lt;p&gt;That&amp;#39;s all a brief introduction to Oslo and IPad.&amp;nbsp; The purpose of this post (indicated by the title) is that IPad is super customizable.&amp;nbsp; When I was at the last Oslo &amp;quot;SDR&amp;quot; like event a few weeks ago, I asked for a feature in IPad - the &amp;quot;Open Folder in Windows Explorer&amp;quot; feature from Visual Studio 2008 which I find to be the most useful simple feature in Visual Studio I think for all time.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="http://www.sellsbrothers.com/"&gt;Chris Sells&lt;/a&gt; (who is a PM on Oslo) said &amp;quot;You add it&amp;quot;.&amp;nbsp; Which is a very typical Chris response, but at least in this case it is possible since IPad&amp;#39;s whole system of commands is totally customizable. &lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="http://www.devhawk.net/"&gt;Harry&lt;/a&gt; will happy that this is forcing me to learn about IronPython, although I have to admit I was able to make it work without much actual learning of the IronPython language.&lt;/p&gt;
&lt;p&gt;Almost all of IPad&amp;#39;s commands are actually written in Python.&amp;nbsp; These commands are registered with IPad when IPad first starts, and the commands are implemented by manipulating the interface to IPad&amp;#39;s object model.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;The main command file is Commands.py which is in the Oslo install directory under Bin\Intellipad\Settings.&amp;nbsp; It contains almost all of the standard mode commands.&amp;nbsp; To add a new command, all I had to do was add a new .py file to that directory.&amp;nbsp; IPad seems to search at least that directory for .py files and loads up all the commands found inside into the environment.&lt;/p&gt;
&lt;p&gt;Each command has at least one IronPython function, which represents the &amp;quot;Execution&amp;quot; of method of the command.&amp;nbsp; This function is annotated with an &amp;quot;attribute&amp;quot; (which I think may be added by the IPad team, I can&amp;#39;t seem to find any reference to attribute support in IronPython - Harry?).&lt;/p&gt;
&lt;p&gt;The Metadata.CommandExecuted &amp;quot;attribute&amp;quot; tells IPad this is a definition of a command.&amp;nbsp; It has three parameters,&amp;nbsp; the IPad object that should execute the command, the name of the command, and the keyboard shortcut (which is optional).&amp;nbsp; Here is my CommandExecuted function defintion from the MyCommands.py file I created in the settings directory:&lt;/p&gt;
&lt;div&gt;
&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;import sys
import System
import Microsoft
import Common



@Metadata.CommandExecuted(&lt;span style="color:#006080;"&gt;&amp;#39;{Microsoft.Intellipad}BufferView&amp;#39;&lt;/span&gt;, &lt;span style="color:#006080;"&gt;&amp;#39;{Microsoft.Intellipad}OpenExplorerAtBuffer&amp;#39;&lt;/span&gt;, &lt;span style="color:#006080;"&gt;&amp;#39;Ctrl+B&amp;#39;&lt;/span&gt;)
def OpenExplorerAtBufferExecute(target, sender, args):
    from System.Diagnostics import Process
    from System.IO import Path, File
    exists = False
    file = sender.Buffer.Uri.AbsolutePath
    exists = File.Exists(file)
    &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; exists:
        Process.Start(Path.GetDirectoryName(file))&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The first argument of the CommandExecuted can either be (as far as I can tell so far) the BufferView object which represents the current buffer, or the HostWindow object which seems to represent IPad itself.&amp;nbsp; OpenExplorerAtBuffer is the name I gave this command, and Ctrl+B is the keyboard short cut.&amp;nbsp; The code is pretty easy, I just find the path of the buffer and if it exists (since a buffer in IPad might not have been saved yet) I just call Process.Start at the directory to open explorer.&lt;/p&gt;
&lt;p&gt;Each command can optionally have a function that IPad will call to find out if the command should even be available at a particular time, so I added that one as well:&lt;/p&gt;
&lt;div&gt;
&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;@Metadata.CommandCanExecute(&lt;span style="color:#006080;"&gt;&amp;#39;{Microsoft.Intellipad}BufferView&amp;#39;&lt;/span&gt;, &lt;span style="color:#006080;"&gt;&amp;#39;{Microsoft.Intellipad}OpenExplorerAtBuffer&amp;#39;&lt;/span&gt;)
def CanOpenExplorerAtBuffer(target, sender, args):
    from System.IO import Path, File
    file = sender.Buffer.Uri.AbsolutePath
    args.CanExecute = File.Exists(file)&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The &amp;quot;CommandCanExecute&amp;quot; function just checks to see if the file exists and returns the args.CanExecute as true or false, if true the command is active, if false the command is not.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;The next step was to add my command to a menu, since I tend to be a mouse/keyboard developer (sometimes I use the mouse at odd times - just the way my hands work I guess).&amp;nbsp; To add a command to IPad at all times,&amp;nbsp; I edited the MenuBar.xcml file which is in the Intellipad\Settings\VisualStudio folder, and drives the default menu (other IPad &amp;quot;Modes&amp;quot; can have additional menu items merged, as the MMode mode does with the MMode menu).&amp;nbsp; I added a new item under the File menu:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;
&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&amp;lt;act:Exports
      xmlns=&lt;span style="color:#006080;"&gt;&amp;#39;http://schemas.microsoft.com/winfx/2006/xaml/presentation&amp;#39;&lt;/span&gt;
      xmlns:x=&lt;span style="color:#006080;"&gt;&amp;#39;http://schemas.microsoft.com/winfx/2006/xaml&amp;#39;&lt;/span&gt;
      xmlns:act=&lt;span style="color:#006080;"&gt;&amp;#39;clr-namespace:System.ComponentModel.Activation;assembly=Activation&amp;#39;&lt;/span&gt;             
      xmlns:mis=&lt;span style="color:#006080;"&gt;&amp;#39;clr-namespace:Microsoft.Intellipad.Shell;assembly=Microsoft.Intellipad.Framework&amp;#39;&lt;/span&gt;
      xmlns:mi=&lt;span style="color:#006080;"&gt;&amp;#39;clr-namespace:Microsoft.Intellipad;assembly=Microsoft.Intellipad.Core&amp;#39;&lt;/span&gt;
      xmlns:mih=&lt;span style="color:#006080;"&gt;&amp;#39;clr-namespace:Microsoft.Intellipad.Host;assembly=Microsoft.Intellipad.Core&amp;#39;&lt;/span&gt;
      &amp;gt;
  &amp;lt;act:Export Name=&lt;span style="color:#006080;"&gt;&amp;#39;{}{Microsoft.Intellipad}MenuBar&amp;#39;&lt;/span&gt; xmlns:mti=&lt;span style="color:#006080;"&gt;&amp;#39;Microsoft.Intellipad&amp;#39;&lt;/span&gt; &amp;gt;
        &amp;lt;Menu&amp;gt;
            &amp;lt;Menu.Resources&amp;gt;
                &amp;lt;mi:FileNameConverter x:Key=&lt;span style="color:#006080;"&gt;&amp;#39;fileNameConverter&amp;#39;&lt;/span&gt; /&amp;gt;
                &amp;lt;mi:ModeToMenuItemConverter x:Key=&lt;span style="color:#006080;"&gt;&amp;#39;modeToMenuItemConverter&amp;#39;&lt;/span&gt; /&amp;gt;
            &amp;lt;/Menu.Resources&amp;gt;
            &amp;lt;MenuItem Header=&lt;span style="color:#006080;"&gt;&amp;#39;_File&amp;#39;&lt;/span&gt;&amp;gt;
                &amp;lt;MenuItem Header=&lt;span style="color:#006080;"&gt;&amp;#39;_New&amp;#39;&lt;/span&gt; Command=&lt;span style="color:#006080;"&gt;&amp;#39;{mis:NamedCommand Name=mti:New}&amp;#39;&lt;/span&gt; /&amp;gt;
                &amp;lt;MenuItem Header=&lt;span style="color:#006080;"&gt;&amp;#39;_Open&amp;#39;&lt;/span&gt; Command=&lt;span style="color:#006080;"&gt;&amp;#39;{mis:NamedCommand Name=mti:Open}&amp;#39;&lt;/span&gt; /&amp;gt;
                &amp;lt;MenuItem Header=&lt;span style="color:#006080;"&gt;&amp;#39;Open _Project&amp;#39;&lt;/span&gt; Command=&lt;span style="color:#006080;"&gt;&amp;#39;{mis:NamedCommand Name=mti:OpenProject}&amp;#39;&lt;/span&gt; /&amp;gt;
                &amp;lt;MenuItem Header=&lt;span style="color:#006080;"&gt;&amp;#39;_Save&amp;#39;&lt;/span&gt; Command=&lt;span style="color:#006080;"&gt;&amp;#39;{mis:NamedCommand Name=mti:Save}&amp;#39;&lt;/span&gt; /&amp;gt;
                &amp;lt;MenuItem Header=&lt;span style="color:#006080;"&gt;&amp;#39;Save _As&amp;#39;&lt;/span&gt; Command=&lt;span style="color:#006080;"&gt;&amp;#39;{mis:NamedCommand Name=mti:SaveAs}&amp;#39;&lt;/span&gt; /&amp;gt;
                &amp;lt;MenuItem Header=&lt;span style="color:#006080;"&gt;&amp;#39;_Close Buffer&amp;#39;&lt;/span&gt; Command=&lt;span style="color:#006080;"&gt;&amp;#39;{mis:NamedCommand Name=mti:CloseBuffer}&amp;#39;&lt;/span&gt; /&amp;gt;
                  &amp;lt;MenuItem Header=&lt;span style="color:#006080;"&gt;&amp;#39;Open _Buffer Folder In Explorer&amp;#39;&lt;/span&gt;
                   Command=&lt;span style="color:#006080;"&gt;&amp;#39;{mis:NamedCommand Name=mti:OpenExplorerAtBuffer}&amp;#39;&lt;/span&gt; /&amp;gt;
                &amp;lt;Separator /&amp;gt;
&amp;lt;!-- rest of file omitted--&amp;gt;
&amp;lt;/act:Exports&amp;gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;So adding the command allowed me to to Ctrl+B from any buffer and get the windows explorer folder of the current buffer to open.&amp;nbsp; Changing the MenuBar.xcml file enabled me to get the menu item on the File Menu:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.pluralsight.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jfland/menu_5F00_2.png"&gt;&lt;img border="0" width="644" src="http://www.pluralsight.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jfland/menu_5F00_thumb.png" alt="menu" height="341" style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;All in all I find IPad to be a really interesting and powerful text editor - but being able to customize the menus and commands with such ease I think is just another example of the cool work the Oslo team is doing for us as developers.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=54206" width="1" height="1"&gt;</content><author><name>jon-flanders</name><uri>http://www.pluralsight.com/community/members/jon_2D00_flanders/default.aspx</uri></author><category term="Oslo" scheme="http://www.pluralsight.com/community/blogs/jfland/archive/tags/Oslo/default.aspx" /></entry><entry><title>Looking foward to the PDC</title><link rel="alternate" type="text/html" href="/community/blogs/jfland/archive/2008/10/14/looking-foward-to-the-pdc.aspx" /><id>/community/blogs/jfland/archive/2008/10/14/looking-foward-to-the-pdc.aspx</id><published>2008-10-14T16:49:00Z</published><updated>2008-10-14T16:49:00Z</updated><content type="html">&lt;p&gt;
&lt;p&gt;The PDC is coming up fast!&lt;/p&gt;
&lt;p&gt;I&amp;#39;m so excited about the PDC in general - but I think the most exciting part might be what&amp;#39;s coming as part of Oslo.&amp;nbsp;&lt;a href="http://blogs.msdn.com/stevemar/"&gt;Steve Martin&lt;/a&gt;&amp;nbsp;has been talking about it among others.&lt;/p&gt;
&lt;p&gt;If you haven&amp;#39;t heard, Oslo isn&amp;#39;t the big wave of products anymore, its been re-defined to mean just three things:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Oslo the language (&amp;quot;M&amp;quot;)&lt;/li&gt;
&lt;li&gt;The repository (for holding models)&lt;/li&gt;
&lt;li&gt;The visual editor (&amp;quot;Quadrant&amp;quot;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;All three of these are very very cool. Although I have to give the biggest cool factory to &amp;quot;M&amp;quot;, and its ability to allow textual DSLs to be built with ease&lt;/p&gt;
&lt;p&gt;One thing I&amp;#39;ve been talking about for years is the benefits of modeling. But the modeling has always been visual (Orchestrations and WF). I think I&amp;#39;ve come to the realization (which clearly the Oslo team has as well) that visual models are useful for a certain portion of the developer population, but for the most part developers like to write code, which means text.&lt;/p&gt;
&lt;p&gt;Whether you are coming to the PDC or not, look out for the DSL capabilities of M&lt;/p&gt;
&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=53902" width="1" height="1"&gt;</content><author><name>jon-flanders</name><uri>http://www.pluralsight.com/community/members/jon_2D00_flanders/default.aspx</uri></author><category term="Oslo" scheme="http://www.pluralsight.com/community/blogs/jfland/archive/tags/Oslo/default.aspx" /><category term="Quadran" scheme="http://www.pluralsight.com/community/blogs/jfland/archive/tags/Quadran/default.aspx" /><category term="M" scheme="http://www.pluralsight.com/community/blogs/jfland/archive/tags/M/default.aspx" /></entry><entry><title>RESTful.NET Fundamentals</title><link rel="alternate" type="text/html" href="/community/blogs/jfland/archive/2008/09/15/restful-net-fundamentals.aspx" /><id>/community/blogs/jfland/archive/2008/09/15/restful-net-fundamentals.aspx</id><published>2008-09-15T19:00:00Z</published><updated>2008-09-15T19:00:00Z</updated><content type="html">&lt;p&gt;Besides working on my RESTful.NET book, I&amp;#39;m also working with &lt;a href="http://www.pluralsight.com/community/blogs/aaron/default.aspx"&gt;Aaron&lt;/a&gt; to build a course on REST and WCF for Pluralsight.&lt;/p&gt;
&lt;p&gt;We&amp;#39;re excited that the &lt;a href="http://www.pluralsight.com/main/ilt/course.aspx?id=AP28"&gt;course&lt;/a&gt; is now up and will have its first run in November (the 19th-21st to be exact) at the Microsoft MTC in Boston - so &lt;a href="http://www.pluralsight.com/main/ilt/registration/default.aspx?c=368"&gt;sign up&lt;/a&gt; today! &lt;/p&gt;
&lt;p&gt;Everyone who attends will get a copy of my new book as well, so come and learn about REST!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=53008" width="1" height="1"&gt;</content><author><name>jon-flanders</name><uri>http://www.pluralsight.com/community/members/jon_2D00_flanders/default.aspx</uri></author></entry></feed>