oslo

October 28, 2009 oslo

“Oslo” at the 2009 PDC

Lars Corneliussen, my friend and Oslo” consigliere, has posted a nice update on what he’s guessing Oslo” might or might not be: Updates on what Oslo is and Quadrant not is (September 2009). The fact that he has to guess points to just how early we are in the development cycle. For our latest thoughts, I recommend the PDC 2009, where you should attend all of the following talks:

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.

If you’re going to PDC and you’d like to chat, drop me a line and we can set up some time. See you there!

June 29, 2009 oslo

MGraph Visualizer Plug-in for Intellipad!

MGraph Visualizer Plug-in for Intellipad!
Ceyhun Ciper is at it again, this time taking advantage of the Intellipad plug-in capabilities in the Oslo” May 2009 CTP and adding real-time M” visualization as you type. This is a wonderful way to see both the textual and graphic abstract symbol tree of your data as you type it. Keep up the good work, Ceyhun!
June 23, 2009 oslo

Need a visualization of “M” in your programs?

If you want to display M” languages or values, Ceyhun Ciper from sixpairs.com has got you covered with the MGraph Object Model Display Library for WPF. It’s as simple as this:

Canvas canvas = new ObjectModel().Display(
"Person {Name=>'Ciper', 47, 'sixpairs\n.com'}");

Sweet!

May 27, 2009 oslo

“‘Oslo’, the May CTP and You” at the PDX Code Camp

I’ll be speaking at the Portland Code Camp on Saturday, May 30th, just as the May CTP of Oslo” is hot off the presses:

As you may or may not know, Oslo” is also a place. However, we’re not going to talk about that. Instead, Chris Sells, a member of the technical staff on the Microsoft Oslo” team, is going to give you a quick intro to Oslo,” including M” and Quadrant, taking you end-to-end on a few real-world-ish examples and then wave his hands furiously about the rest, begging you to give it a try and complain loudly and often so we can get it right before we ship v1.0.

Come one, come all! Bring a friend and get a free GUID!

May 26, 2009 oslo

Oslo May 2009 CTP Available Now

The May 2009 CTP of Oslo” available on the Developer Center contains a new unified setup, an Intellipad with an integrated DSL authoring mode, the UML domain and the CLR domain, a slimmed-down SDK with the samples and the documents available on the DevCenter, a unified tool set for the M” language and, the one that folks have been most anticipating, Quadrant.

For more details about what’s new, check out the letter from Kraig and Kent and the release notes. Also, in the coming weeks and months, Kraig and Kent have a pipeline of content for the DevCenter to keep you informed about how we’re using Oslo” and how you can use it better. If you’ve got suggestions, please use the Connect site and don’t hesitate to post your questions on the forum.

Enjoy!

May 12, 2009 oslo

“Olso”: Hot or Not?

A coupla weeks ago, I did two days with of meeting, greeting, talking and interviewing at a Dutch company in The Netherlands named Sioux. They do a conference with the politically incorrect name of Hot or Not, which includes an even more politically incorrect picture of two women as part of their advertising, one lovely and one… less so. They have done this conference 12 times before (I was lucky number 13, just like Bilbo) and the goal is to have someone known for a particular technology come and give a talk, e.g. Alan Cox on Linux, and then rate the technology as Hot” or Not.” Since they couldn’t get someone good for Oslo, they had to settle for me.

I spent day one having lunch with the Sioux engineers who were very insightful in their questions about how models fit into their process (all kinds of ways), how it works for embedded systems (XML generation), how it works across platforms (MSC and OSP, baby!), etc. After lunch, I had time to work on my demos and slides (whew) and play with a desktop electron microscope. We must’ve spent an hour looking through fly parts at 26,000 times magnification. They build seriously cool software at Sioux!

My Oslo” talk was 2.5 hours long with a 30 minute cocktail break. I thought the Dutch were loud before the alcohol was served, but that was nothing… : )  There were 120 attendees in the room they’d set aside for me, and they’d turned away another 60 more that had wanted to come. I did Don Box and Doug Purdy’s Lap Around Oslo” talk with a German twist (“this picture of the Fairytale Castle is a model, not the castle itself”), David Langworthy’s M talk (“let’s parse a simple sentence”) and showed off Spork, WIX, MUrl and MService. The audience’s questions were even more insightful, e.g. what about schema versioning? Why a new language? How do you debug a declarative language? Can I embed languages in each other? What if I want to use an M language without a database at all?

At the end, I was awarded a book on Dutch culture (very useful! Now I know why the bicycles throw themselves in front of my car and why it wasn’t such a big deal as I thought for me to have to drive up on the sidewalk a little…). And then, without so much as a courtesy screen, the vote was called right in front of me — thumbs up, Oslo hot” or not?” I was to learn later that this is a serious thing — they’ve rated at least one technology as only 30% hot.

Luckily for my pride and my continued employment, Oslo was rated 98% hot. That made the magazine interviewing the next day much less embarrassing I’ll tell you!

May 7, 2009 oslo

James Clark Getting Involved in M

James Clark, the father of the world’s fastest XML parser (according to his bio) is helping us with M on the M Specification Community. He had some initial thoughts that I thought were interesting. I’m sooo glad he’s keeping us honest!
April 1, 2009 oslo

Run your house with Oslo!

Kris Horrocks in our marketing team is using Oslo to run his house via X10. He’s got two posts on it and it’s damn cool! Hmmm… How much to get X10 at my house…
March 14, 2009 oslo

Intro to Oslo in Dutch

My Dutch is a little rusty, but RJs Intro to Oslo screencast looks great to me. Good work, RJ.

March 12, 2009 oslo

Preview of Doug’s “M” RESTful Services Talk at Mix

Preview of Doug’s “M” RESTful Services Talk at Mix

Scott Hanselman got a preview of the talk that Doug is giving at Mix this year on RESTful services using M”, took some screen shots and did a nice write-up. Worth a quick look-over even if you’re coming to the talk (which will be a hoot — I’ll be carrying Doug’s bags on this one : ).

March 12, 2009 oslo

BizTalk Application Deployment DSL

Yossi Dahan has posted a most excellent DSL for building BizTalk application deployment scripts. Plus, he’s created a most excellent project on codeplex for his bits. Most excellent!
March 6, 2009 oslo

OsloTool: GUI for the command line Oslo tools

Bryan Sumter has posted a GUI app he built to run the Oslo command line tools for him:

I’d love to see this integrated into Intellipad, Bryan!

March 5, 2009 oslo

Self-Modifying DSL from Savas

Leave it to Savas to invent a self-modifying DSL in MGrammar. You go, Savas! : )
March 4, 2009 oslo

January 2009 “Oslo” SDK Refresh

The Oslo” team heard you! There was some regression in the quality of the bits” in the Jan CTP from the PDC CTP that affected you guys in our 3-pane mode for grammar editing in Intellipad (aka the bits are worse than they used to be). It was just a sample, but it’s so so useful, that language developers are using the hell out of it, which means they’re running into performance and robustness issues” (which means it was slow and crashed) and we’ve fixed the worst ones in the January 2009 Oslo” SDK Refresh.

You have to uninstall the three things that are called Oslo” before you install and there are no new features or other changes — this is just to make the 3-pane mode better.

Please bang on it, ask your questions and report your issues. Thanks!

Oh, and 3-pane mode will be an official part of the product in future CTPs, so it will receive the same testing love as the rest of the project. We heard you!

February 16, 2009 oslo

Martin Fowler on DSL Migration

Martin, who has recently agreed to be the keynote speaker for the DSL DevCon, has a nice piece on DSL migration strategies.

While Oslo has no direct support for the incremental migration strategy to migrate DSL documents forward, we absolutely provide the tools for building it yourself. We do have very nice support for model-based migration, which keeps a parser around for each version of the DSL and produces the same underlying semantic model (which we call MGraph).

February 2, 2009 oslo

Stephen Forte: Oslo Confessions of a .NET Programm

Stephen’s been turning himself into an Oslo programmer:

Telerik is building some cool Oslo utilities and I am in the middle of designing them. As I was talking to Chris about some of the specs the other day, he asked me: What are you using to keep track of the metadata of your application in your design process?” I was like: Pen, paper, whiteboard, Word and Excel.” He said why are you not using Oslo? Then it struck me, I was in .NET programmer mode. So last decade. While I am using Visual Studio 2008, WPF, SQL Server 2008 and the Oslo SDK to build an application for Oslo, I was not using Oslo to help build the application.”

Worth watching.

January 30, 2009 oslo

Bill Gibson on Domain Modeling

Bill Gibson is an architect on the Oslo team and is in charge of our M coding conventions and modeling patterns documents. He’s started blogging recently and has a nice post about domain modeling in Oslo. He’s a good guy to hit up with questions about how to model various constructs in M or just modeling questions in general. He’s been doing this modeling thing forever

January 27, 2009 oslo

Agilitrain: Model Driven Development with Oslo

Holy cow — another Oslo course, this one from Agilitrain:

Microsoft’s Oslo is trying to change the way that software is designed, developed and delivered. They are introducing a platform for building real, scalable and manageable model-driven applications. Being an early adopter of this platform will prepare you for our changing world.

This course will show you how to build models and domain specific languages and use them all at runtime using the Repository to create great applications for your users.”

I’m a huge Shawn Wildermuth fan (Shawn’s the author of this course and the instructor). Recommended.

January 25, 2009 oslo

All Technology Has Downsides

Rocky makes some good points in his recent piece on DSLs (DSLs — fun, cool, but maybe a bad idea? ) — basically, who’s going to learn the DSL when the folks that know it move on? That’s one potential downside of the proliferation of DSLs and I could give you more.

However, all technologies come with these downsides, e.g.

  • Managed environments make new programmers forget what’s under the hood (and in some cases, actually afraid to look).
  • Horseless carriages produce pollution.
  • iPhones are killing the English language by encouraging the use of words” like lol,” afaik” and wtf.”
  • Airplanes crash.
  • Very very bad code written in Visual Basic can still do the right thing.
  • Fonts let every letter look like a ransom note.
  • etc.

The point isn’t whether a technology has downsides or not — of course, it does. The point is whether the upsides outweigh the downsides. In the case of DSLs and model-driven development all up, the Oslo” team is making a big bet that we can make you overall more productive when digging ourselves out of the IT software backlog hole. Will we be? I think so, but we have a lot of work to do before we’ll know for sure.

And how do we reduce the impact of the downsides of a new technology? By knowing that they’re there, which is why Rocky’s commentary is so useful. Recommended.

January 18, 2009 oslo

Dan Vanderboom: Why Oslo Is Important

I couldn’t have said it better myself. Very much worth the read. Enjoy.
January 16, 2009 oslo

SE Radio: Oslo with Don and Doug

Episode 123 of Software Engineering Radio is all about Oslo:

In this episode we discuss Microsoft’s OSLO platform with Doug Purdy and Don Box. We briefly discuss what OSLO is in general and then look at the various components of OSLO. We also look at how OSLO fits in with the general Microsoft strategy and how it compares to other DSL/Model-driven approaches. We then look at language modularization and composition and discuss the similarities with XML and Smalltalk. Finally, we discuss possible integrations of OSLO with other MD* approaches and technologies.”

Enjoy.

January 13, 2009 oslo

MGraph: Taste Great, Less Filling

Lars Corneliussen has a fun post entitled Microsoft Oslo” MGraph - the next XML? He concludes by comparing JSON, XML and MGraph to represent the same data:

  • JSON: 661 characters
  • XML: 1065 characters
  • MGraph: 590 characters

Enjoy.

January 12, 2009 oslo

I’m speaking at VSone in Munich, Feb 11-12

I’m giving two talks on model-driven development at VSone in Germany in Feb this year: the keynote and a dive into Oslo. If you’re in the neighborhood or are looking for a party spot, drop on by!

I’m even going for an extra few days to see the sights — hopefully it won’t be too cold. I’m from the Midwest and all, but when it’s cold there, we stay home. I want to go out! Any suggestions for what I should oughta see?

January 9, 2009 oslo

Oslo Tool: SQL schema -> MSchema

Kristofer Andersson is designing and implementing an airline reservation in the open air. In the process, he ported his models to M, but not by writing them by hand, but by writing a tool to convert existing SQL schema to M. Enjoy.
January 8, 2009 oslo

Dealing with the Visual Studio 2010 expiration in the WCF and WF 4.0, “Oslo”, & “Dublin” PDC08 Virtual Machine

If you’ve been using the WCF and WF 4.0, Oslo”, & Dublin” PDC08 Virtual Machine provided on the PDC08 Goods Disk, you’ve probably noticed that Visual Studio 2010 within the VPC expired at the end of December and you are presented the following message The evaluation period for Visual Studio Trial Edition has ended”.  Below are details on how you can export your data and get the image working again.

The work around involves creating a new differencing disk and new virtual machine configuration file and then disabling the clock synchronization between the host and guest OS.  In the end you will have a fresh virtual machine that believes it is 10/10/2008 and the clock will only increment when the machine is running.

NOTE: This workaround assumes you have not altered the PDC08-CSD.vhd” file that was marked Read Only on the PDC08 Goods Disk.  If this file has been altered, the work around may not work.

1.     Export the data you want to keep from the VPC image.  This can be done using the Shared Folders” feature of VPC 2007 to copy the data to your host and then copied into the new image at the end of this process.  See the Share a folder between a virtual machine and the host operating system” topic in VPC 2007 Help for more details.

2.     Shut down the Virtual Machine and discard your changes. At the end you will end up with a fresh, new image but you need to discard any saved changes so that you can alter the VMC file later in this process.

3.     Create a new differencing disk.

a.     On the Goods Disk” search for the PDC08-CSD-WorkDisk.vhd file and rename it to anything you want.

b.     Launch VPC 2007, click File, select Virtual Disk Wizard and click Next.

c.      Select Create a new virtual disk” and click Next.

d.     Select A virtual hard disk” and click Next.

e.     Store the new disk in the same folder where you found the PDC08-CSD-WorkDisk.vhd file and give it the same name.  Click Next to continue.

f.       Select Differencing” and click Next.

g.      Locate the PDC08-CSD.vhd” file in the same folder where you found the other vhd file, select it and click Open and Next.

h.     Click Finish and then Close

4.     Create a new Virtual Machine.

a.     Launch VPC 2007, click New and click Next.

b.     Select Create a virtual machine” and click Next.

c.      Click browse and navigate to the same folder where you created the new PDC08-CSD-WorkDisk.vhd file in step 3 above.

d.     Create a new vmc file with any name you like and click Save, then click Next.

e.     Select Windows Server 2008 in the Operating System dropdown and click Next.

f.       Select Adjusting the RAM, click Next, set the amount of RAM you want to allocate (we allocated 1536 in the original virtual machine) and click Next.

g.      Select An existing virtual hard disk” and click Next.

h.     Click browse and select the new the new PDC08-CSD-WorkDisk.vhd file in step 3 above and click Open.

i.       Check the Enable undo disks box and click Next.

j.       Click Finish.

YOU MUST DO STEP 5 BEFORE LAUNCHING THE IMAGE OR YOU WILL HAVE TO DO STEPS 3 & 4 AGAIN.

5.     Disable the host OS synchronization of the VPC.  This is a change to the PDC08-CSD.VMC file that disables the clock synchronization between the VPC and the host OS.  This means that time in the VPC moves forward only when the VPC is being used. As a result, you will have over 2 months of runtime (not wall time) for a fresh VPC.

a.     Find the PDC08-CSD.VMC file in the same folder where you found the PDC08-CSD-WorkDisk.vhd in step 2.

b.     Open the file in Notepad and made the change highlighted in RED below:


   
       
            true
       
       
           
                false
           
       

Bunch of other stuff that I am skipping over to save space…
   

c.      Save and close the VMC file.

6.     Launch the Virtual Machine in VPC and repeat step 1 to create the Shared Folder for copying your data back into your new image.

Your virtual machine will now show a date of 10/10/2008 and will only increment when the virtual machine is running.

One important note:  Don’t attempt to join the VPC to a domain since the domain will set the time within the VPC and thus cause Visual Studio to expire.

Many thanks to Jeff Beehler for this information which he posted on his blog, Brian Keller and his detailed description of the various activation messages associated with the CTP as well as to Virtual PC Guy who provided the original information on how to disable the VPC clock synchronization. 

If you’ve converted this VPC image to HyperV following Grant’s instructions, be sure to read Cameron’s update to learn of a similar workaround for HyperV.

January 6, 2009 oslo

The First “Oslo” Training Course!

Pluralsight has a two-day course of Oslo” available on 3/30 in Kirkland:

Since the release of .NET 3.0, Microsoft has been actively engaged in an internal initiative to unify their services and modeling technologies. The result is a new modeling platform — codename Oslo”. To summarize, Oslo” makes it possible to move from a world where models describe the application to a world where models are the application. The technology to deliver this new set of capabilities will be delivered through future versions of BizTalk Server, System Center, Visual Studio, .NET Services and the .NET Framework. Come get a first look” at this ambitious effort and see what’s available today!

Enjoy.

January 5, 2009 oslo

What is all the fuss about how you can write DSLs in Lisp?

I found an interesting post on domain-specific languages and Lisp from June of 2007. It has this to say about designing a DSL:

There are three approaches to designing programming language syntax. The first is to develop a good understanding of programming language grammars and parsers and then carefully construct a grammar that can be parsed by an LALR(1), or LL(k) parser. The second approach is to `wing it’ and make up some ad-hoc syntax involving curly braces, semicolons, and other random punctuation. The third approach is to `punt’ and use the parser at hand.”

I like these categories. I find most folks do #2 with no tooling support or #3 using XML. MGrammar in Oslo is about making #1 easier than #2 and providing the tooling support, e.g. language-specific Intellisense services.

The real topic of the thread, however, is how to do a DSL in Lisp. The questioner would like to implement the following syntax:

trade 100 shares(x) when (time < 20:00) and timingisright()

I find this syntax to be reasonable for an event and it wouldn’t be hard to imagine a system with a bunch of rules expressed this way and I could imagine a developer and a business person working together on such a system to ensure things were expressed properly. I don’t think I could imagine the business person keeping up as well with syntax expressed as the answerer suggests, however:

(when (and (< time 20:00)
                   (timing-is-right))
      (trade (make-shares 100 x)))

IMO, that’s not a DSL — that’s just a set of function calls in an existing language.

December 30, 2008 oslo

Martin Fowler: DslExceptionalism

I love what Martin has to say on the topic of designing DSLs:

DSLs are seen as a small and simple subset of general purpose programming thinking. As a result people think that what’s true for general purpose languages is also true for DSLs (with the implication that DSLs are too small to be worth thinking much about).

I’m increasingly of the opposite conclusion. The rules for DSLs are different to the rules for general purpose languages - and this applies on multiple dimensions.”

When you’re ready, Oslo lets you build DSLs to be as simple or as complex as you like.

December 30, 2008 oslo

Spirited Discusson of Oslo on stackoverflow.com

Joel Spolsky and friends have started a developer question/answer board and they’ve started to get some Oslo traffic. Jump on in; the water’s fine.
December 30, 2008 oslo

Jon Flanders Builds XLANG in MGrammar

December 30, 2008 oslo

Creating a Logo / Turtle Graphics Textual DSL using Oslo MGrammar

Jason Hogg has posted a very cool Oslo DSL and an interpretter for doing Logo Turtle Graphics. He had this to say about MGrammar:

I did the bulk of the work specifying the grammar for this simple version of Logo on the flight back from LA to Seattle - which should give you a sense of how intuitive Mg is - and how productive the Intellipad authoring experience is.

Thanks, Jason. We try!

December 30, 2008 oslo

Shawn Wildermuth on Oslo

Shawn’s been doing a bunch of Oslo work on his web site:

Enjoy.

December 30, 2008 oslo

Jeffrey Juday Exploring the Oslo Repository

Jeffrey has a nice hands on intro to Oslo focusing on the Repository:

Oslo is Microsoft’s model-driven future. The Repository is one of the many architectural components debuting in the Oslo SDK. M is the Oslo model building language. M is translated to TSQL and the resulting Data Definitions create tables and views in the Oslo Repository.

Check it out!

December 30, 2008 oslo

Erik Stepp provides the question for Oslo’s “42”

I’m just catching up a little after one set of holidays and before another one on Wednesday and I noticed Erik Stepp’s blog post entitled Oslo == 42” in my inbox. In his post, he provides a lovely discussion of what Oslo is and why we built it, giving us a concrete example from his own development life. He got it pretty much dead on. Check it out.
December 22, 2008 oslo

Parsing relative and absolute dates with MGrammar

Dilip Krishnan has built a lovely little date parser that supports absolute dates like 6/2/1969” (just like DateTime.Parse already supports today) and relative dates like today” or next Monday” or 5 days from today”. I find myself using relative date expressions like these all the time in Outlook and I’ve love to have them in every app I use that does dates. With Dilip’s parser and the Oslo SDK, you can add it to your app. Good work, Dilip!
December 22, 2008 oslo

If you liked Zork, you’ll love Spork!

Spork is a sample of an end-to-end application using M and the Repository. It starts by defining a set of M types that describe the data needed for a text adventure along the lines of the famous Infocom game Zork (and hence the corporate bad-café-inspired name). The M instances are generated by running a custom compiler developed with the VBA (Visual Basic for Adventures) MGrammar grammar. We also provide a runtime driven by adventure data loaded into the Repository in multiple versions of the types called AdvRunner.

Follow along with the video or with the ReadMe see Spork in action. Enjoy!

December 10, 2008 oslo

Notation, Notation, Notation!

Markus Völter has posted some interesting model-driven design guidelines, my favorite of which is notation, notation, notation!” Since Of course, since Oslo provides MGrammar to let you build the notation of your choice, I’m hardly unbiased. : )
December 9, 2008 oslo

.NET Rocks! Oslo is Love

COM spread the love between developers of multiple languages.

Oslo spreads the love between domain experts, developers and IT folks.

Check out show #401 of .NET Rocks for the how and the why. Enjoy.

November 16, 2008 oslo

Mr. Epl on the brain

I’ve been writing my MSDN Magazine pieces introducing Oslo and spending a great deal of time in Mr. Epl mode inside Intellipad. So, at 1:23p on a Sundary afternoon, I’m getting a little loopy, which is manifesting itself as me repeating famous lines from popular culture, only substituting Mr. Epl’s name, e.g.

Mr. Epl, I am your father.”

Oh, Mr. Epl, I can’t pay the rent!” You must pay the rent.” I can’t pay the rent!”

Help me, Mr. Epl. You’re my only hope!”

Mr. Epl, Mr. Epl, it hurts when I do that!” Don’t do that.”

Did I mention I’m doing the voices, too?

November 15, 2008 oslo

SpankyJ is an Oslo Star!

SpankyJ (Josh Williams) is a star developer on the Oslo team (specifically the MSchema compiler) and he’s been doing some very cool stuff with M.

Firstly, Spanky’s the author of the Mr. Epl tool, which is a Read-Evaluate-Print-Loop program for interacting with M (M-REPL => Mr. Epl — cute, eh? When we used to call M” D”, it used to be Dr. Epl. If we change it to S”, we’ll Senór Epl! : ). Mr. Epl ships with the Oslo SDK, so if you’ve installed it, you can find it in C:\Program Files\Microsoft Oslo SDK 1.0\Bin\Intellipad\Samples\Microsoft.Intellipad.Scripting.M\MREPL.exe or you can execute it directly inside of Intellipad with the MScriptMode mode.

For a demonstration (and an explanation of how to get MScriptMode working in Intellipad), Spanky has recorded a very nice Mr. Epl screencast. Highly recommended.

Secondly, Spanky has just released a library for taking the output of MGrammar and producing a graph of .NET objects via XAML. He’s got a nice screencast of using it to create something simple to give you a feel, then he moves right into a natural language processor for creating WPF windows and controls interactively. The ability to type text that translated into WPF without using angle brackets demonstrates the potential for DSLs very well, I think.

A few notes when watching Spanky’s screencasts:

  • He has slowed himself down considerably to be clear and understandable and he’s done a good job. If you’d like to hear what he sounds like in real life, run the screencast at 1.5x speed. : )
  • He has a blinking red/green light in the taskbar — what *is* that?!
  • He’s a dev that tells a story like a champ — why the hell does my team even need PMs?

Anyone interested in Oslo should absolutely subscribe to Spanky’s blog. I know I have.

November 13, 2008 oslo

Syntax Coloring for Your Custom Mg Language with Intellipad

November 12, 2008 oslo

Rocky on Oslo

Rockford Lhotka had this to say about Oslo:

The Oslo modeling tools are also interesting, though they are more future-looking. Realistically this idea of model-driven development will require a major shift in how our industry thinks about and approaches software development. Such a massive shift will take many years to occur, regardless of whether the technology is there to enable it. It is admirable that Microsoft is taking such a gamble - building a set of tools and technologies for something that might become acceptable to developers in the murky future. Their gamble will pay off if we collectively decide that the world of 3GL development really is at an end and that we need to move to higher levels of abstraction. Of course we could decide to stick with what has (and hasn’t) worked for 30+ years, in which case modeling tools will go the way of CASE.

But even if some of the really forward-looking modeling ideas never become palatable, many of the things Microsoft is doing to support modeling are immediately useful. Enhancements to Windows Workflow are a prime example, as is the M language. I’ve hard a hard time getting excited about WF, because it has felt like a graphical way to do FORTRAN. But some of the enhancements to WF directly address my primary concerns, and I can see myself getting much more interested in WF in the relatively near future. And the ability of the M language to define other languages (create DSLs), where I can create my own output generator to create whatever I need - now that is really, really cool!

Once I get done with my book and all my fall travel, you can bet I’ll be exploring the use of M to create a specialized language to simplify the creation of CSLA .NET business classes : )”

Rocky on, Rocky!

November 11, 2008 oslo

Designing a language is hard; implementing it shouldn’t be

Frans Bouma has an interesting point: Designing a language is hard, and M won’t change that. And he’s right.

For many domains, a DSL can make expressing what’s important easier so that the developers using the DSLs can communicate between themselves and to a computer with fewer lines of code, making it easier to read, check and maintain. Many (arguably most) domains live without a DSL, instead encoding design decisions into general purpose languages, adding unnecessary ceremony to the essence of what’s being decided, thereby obscuring it.

Does M making designing a language easier? No. It’s still hard to design the syntax of a language. Does the M family of languages and the associated tools make it possible for more developers to add DSLs to their domains, letting them concentrate on the essence their language and reducing the Weird Science-like ceremony to bring it to life? We hope so. You’ll have to let us know.

November 11, 2008 oslo

More Oslo Reactions: What “Oslo” is and is not

Lars Corneliussen (not the wonderful Lars that did a cameo at the Repository & Schemas PDC talk about 8 minutes in) did a nice overview of Oslo. It’s amazing to me how well the vision and details of the platform came through at the PDC. General-purpose modeling is a new thing for mainstream developers, but at least the developers that we’ve heard from so far seem to be open to the idea.
November 11, 2008 oslo

Ted Neward Explores M

When I was an external to Microsoft, I used to see new Microsoft technologies and have several reactions: wonder, awe, lust, hate, confusion, apathy. Really, Microsoft was a harsh mistress that caused all kinds of reactions.

I’ve been heads down for 3.5 years working on Oslo, so seeing other peoples’ opinions from inside of Microsoft is very enlightening. Ted Neward has an Oslo opinion that I enjoyed reading, even if it wasn’t all positive. Thanks, Ted.

November 11, 2008 oslo

News: How modeling will change programming

Burley Kawasaki is a Microsoft marketing person, it’s true, but he also really understands the point of Oslo. Enjoy.
November 11, 2008 oslo

Three-Pane MGrammar Development in Intellipad

Roger Alsing has posted a discussion of how Intellipad’s support for MGrammar development makes writing DSLs easier but showing you what parsers and how as you update the input file and the grammar file itself.

Personally, I’m a huge fan of seeing something work as I type. Think of it as “holistic intellsense.” The SQL generation in Intellipad works the exact same way. I find it a huge help.

November 11, 2008 oslo

Another Oslo MGrammar Sample: WatiN

Torkel Ödegaard has done a very nice, detailed look at created a DSL in MGrammar for the WatiN browser automation library, including a look at the code he used to parse the Abstract Symbol Tree produced by MGrammar to do something useful.
November 11, 2008 oslo

Generating code from M

On the Oslo team, we think of three kinds of models:

  1. Drawings: This is modeling to communicate from human to human, e.g. on a white board or in Visio. An architecture diagram in a design document is an example of such a thing.
  2. Model-Assisted: This is modeling where we’re talking to a computer, most often to generate code, e.g. the .edmx file used by Visual Studio to generate C# data access code.
  3. Model-Driven: Here we’re also communicating from a human to a computer, but instead of doing it at development-time to generate code, the model is actually used at run-time to drive a run-time, e.g. a Workflow definition to drive the Workflow engine.

I’ve seen various samples around the interweb on model-driven aka executable models” (some of which we’ve supplied on the Oslo DevCenter), but Kirill Chilingarashvili has done a nice little sample of combining Visual Studio’s T4 codegen language with a custom DSL in MGrammar. Enjoy!

November 11, 2008 oslo

MisBahaving with M

The M family of languages is meant for all kinds of things, from executable models, e.g. defining a workflow and executing it via the Workflow runtime, to allowing a business person to express something in a language, either visual or textual, that they understand so that it can be communicated as formally as desired to another human. As an example of the latter, Claudio Perrone has implemented a DSL in MGrammar for Behavior-Driven Development.

It is amazing to me how many of these little DSLs have popped in M just since the PDC. Keep em coming!

November 11, 2008 oslo

MSchema and Decorator Tables

The one where Shawn Wildermuth explores the MSchema syntax that looks like inheritance but isn’t (since inheritance has no meaning in a structurally type language).

November 11, 2008 oslo

Vim Support for MGrammar

November 6, 2008 oslo

Big, Juicy Video on M from Jon Flanders

Jon Flanders from pluralsight has posted a 39 minute screencast video introducing M to .NET developers. Enjoy!
November 6, 2008 oslo

Oslo: Using Mg to Define a To-Do Language

Justin Bailey has built a little language in MGrammer to create tasks and even better, he’s provided a very tutorial on how he did it. Following along with him would make a great way to learn the basics of Mg. Plus, I love his conclusions:

Mg is clearly a powerful technology for defining languages. The above is a trivial use, but already we have bypassed most simple file parsing techniques. Quoted strings and balanced parentheses are the bane of non-parsing techniques and it appears that Mg will be placing those abilities within reach of most .NET developers.”

Good work, Justin!

November 3, 2008 oslo

Aaron Skonnard on “Oslo”

Aaron Skonnard of pluralsight has provided a very nice overview of Oslo,” including the major pieces and most importantly, why you care. Enjoy!
November 2, 2008 oslo

Oslo Week One Wrap-Up

Oh my lord above. I have been working towards last week for about 3.5 years altogether. It started with an incubation in the Connected Systems Division (CSD — the folks that own WF, WCF, BizTalk, etc) doing work to see if modeling was a feasible way to build applications and we just announced the work so far along these lines at the PDC last week. It’s called Oslo” and here are the top places you should look to get up to speed on it:

Microsoft Oslo” Resources

But don’t take my work on Oslo.” Check out what the world is saying (in no particular order — honest!).

The World’s Take on Oslo”

Whew. We just announced Oslo” last week and it’s crazy how much there is on it already. Enjoy!

September 6, 2008 oslo

Oslo Defined

I’ve spent the last 3.5 years of my life working in various roles on a project that is now called Oslo.” Both Don and Doug have posted definitions.

See you at the PDC!

August 1, 2008 oslo

Oslo talks at the PDC

After 3.5 years, my team’s work in Microsoft’s Connected Systems Division will finally see the light of day! Here are the related talks we’re giving at this year’s PDC:

June 13, 2008 oslo

Bill’s Last Review

The last coupla months have been crazy. We’ve been warming up our PDC message with a series of SDR (Software Design Reviews) where we invite folks from the community, influencers, important customers, etc, to come and hear what we think the story is for our new technology before we blow it in front of a live PDC audience. There’s a ton of prep to make sure we’re as polished and as thought through as possible and that we’re presenting as well possible, so there’s been a ton of work on what the story is and how to present it properly. The latter means that I run a little internal training course called Sells University” which is kind of an extreme presentation skills” workshop I run, complete with Sells U hats and t-shirts (the alumni parties are fun : ).

Still we don’t always get it right, which means mining the feedback (loud, enthusiastic and extensive feedback) to see what we can improve for the next time.

Sometimes the next time,” is something called a BillG Review.” This is where we get together our best folks, our best bits and our best story and we bring the all together for BillG himself for up to 4 hours of dog n’ pony show. Normally this is as much about forcing teams together that should’ve been together all along as it is about the actual presentation to Bill, but either way, it’s generally a month or more of hard work.

This time, we had two weeks.

Chris, how’d you like to put together the demo for Bill’s last review?” was what Doug asked me. I’d been to a BillG before, but had never been that involved, so I really had no idea what the effort was going to be. When faced with a new challenge and little information, I did what I always do: I’d be happy to,” I said.

And so began two weeks of 14+ hour days, meeting every day with execs up to the VP-level, figuring out what the story was, who’d say what, the mix of demo to slides, what he’d heard before, what he’ll want to hear, rat holes we want to avoid, rot holes we want to engage him on (called drawing the foul” in softie-speak), timing, etc.

And those are just the daily meetings — the rest of the time is spent actually getting the bits to work, which means integrating technologies across teams and divisions, often for the first time. Can’t have Bill saying, But why didn’t you just use such and so — they’ve already solved that problem?” so we have to make stuff work, even if it’s alpha and hasn’t been made to work together yet or isn’t stable when you bring it together. So I’m pulling in all my friends and their friends to set up conference calls to make these bits work with those bits and using the name BillG” like a club to motivate folks that are already very very busy.

And it worked. It was more than full-time for two solid weeks, but we got a stack of bits working reliably and repeatably to demonstrate the goals of our work. It was chewing gum and bailing wire, but it got the point across. And the demo I worked on was just 15 minutes of a two hour review; there were dozens of other folks working on the rest of it.

The BillG review itself? Imagine the nicest conference room you’ve ever been to, with giant leather chairs, a podium, a huge retractable projection screen, miles of white board and acres of windows looking out over the green Microsoft campus. Imagine our Sr. VP checking in on us minutes beforehand to straighten out any questions we need answered (we spent 30 minutes guessing where Bill would sit and arranging ourselves accordingly). Then imagine Bill himself coming in like a ninja, appearing in his designated seat as if he’d teleported to it from his previous meeting (and maybe he did). No introductions, no fanfare, just We’ll get right to it, Bill.”

And he listened, laughing a little from time to time, asking the odd question. I’d been at one of these before, but sitting along the wall, looking at the back of Bill’s head. This time I was at the big boy’s table. Last time, I’d tracked f-bombs, keeping a running total in my head: the higher the number, the worse you’re doing. The last time, we had one/hour, which was considered to be outstanding. This time, zero. Even though the demo I’d prepared didn’t go off flawlessly (there was a continuous reset in the underlying communications stack we were using that we’d never seen before), he got enough of the demo to appreciate our intent and was interested enough in the the rest of the material to seem pleased.

Near the end, he started talking more, synthesizing our work with the work going on in the rest of the company, making startling leaps that I’d never considered (and I’ve got pipe dreams in my head for the upcoming release and the one after that). We agreed some. We pushed back some. We asked him for help making some things happened.

And then he was gone, 30 minutes over his time, but off to somewhere else he had to be.

And then gushing started. We kicked ourselves for the little hiccup in our demo, but really we’d shown him what we wanted to show him and we felt good about it.

Was it really Bill’s last review? Well, probably not. He’s still got a few weeks left in his official role as chief software architect and I hear he still wants to work part-time on his pet projects (I was surprised to learn that we were one of those), but it’s certainly one of the last. I can say that I worked to put together part of a BillG review while he was still around.

I still can’t say that I’ve actually *met* the man, though. sigh.

December 3, 2007 oslo

12 ways to de-commercialize the holidays

From 12 ways to de-commercialize the holidays:

  1. Yankee Swap
  2. Secret Santa
  3. Un-Secret Santa
  4. Re-gifting
  5. Pool your resources
  6. For children only
  7. Donate in others’ names
  8. Limit spending
  9. Families helping others
  10. Plan family outings
  11. Let the kids rule for one day
  12. Take a trip

On the Let the kids rule for one day” front, that’s what we do each year for each kid’s birthday. They look forward to that part of it more than any other.

August 2, 2007 oslo

eWeek: Microsoft Moves Ahead w/ Software Modeling

I work on the same team as Don and Chris to which this article refers. There’s few actual facts in this piece and some of those are wrong (love Chris like a brother, but he wasn’t on the WCF team : ), but it’s interesting that my little group is making its way into the news.

BTW, as a matter of context, I’m not a big codegen fan (in spite of my previous dealings : ) and it would be a mistake to think of modeling” as fancy codegen,” in spite of what this article implies.

November 6, 2005 oslo

11/10 PND Topic: What does MDD mean to you?

I haven’t been able to hang out at the Portland Nerd Dinners in forever, but it’s on my calendar for 11/10 and my topic is what does model-driven development mean to you?” I’ve been doing a ton of experimentation lately and I’m especially interested in how folks deal with a client-model, e.g. data binding, linq, etc, that expects client-server and a middle tier that exposes a service endpoint.