Browsing the blog archives for November, 2008.

Blue Wiskey and Big Py Country

work safe
Last night, Anthony Panazzo gave a talk about cloud computing to the InyAlt.NET use group.  He got some help from Jon Fuller, Mike Brown, and Shane Milton.  Shane’s not from around here (originally written for an internal company blog).
Jon F gave a demo using Google’s App Engine.  It got me slightly itching to dig open my “old” appegnine project from earlier this year.  I dropped it because it’s Python and Django.  I don’t know Django and I’m not excited by Python.  Personally, I believe Python is evil but not evil enough.  I’m getting picky about my languages in my old age.  But, still I was interested.
On the drive in this morning, I was thinking about how cold it was, but also about how if I deployed a project on Google, Mike Brown would whine about not using Azure.  He’s biased.  He’s got a website.  Not to be one to stand up to peer pressure, I began to think about the fact WebApp (Google’s default appengine library) and Django both use an abstraction calls WSGI (Pronounced Wiz-Gee).  If I could get an Adaptor to sit between IronPython and WSGI and ASP.NET, then I can have my appengine and azure it too.
Oh, life was grand!  I was gonna start a code-plex project and call it “bluewiskey” (Aszure + WSGI).  I was gonna write blog post called “A Year of Living Django-usly.”  But I sit now in ruins as it’s already been done.  More correctly, NWSGI is currently in development.
NWSGI does work, but has two big fallbacks.  It doesn’t currently support DJango out of the box (you could probably jurry-rig it).  And secondly, It currrently runs full-trust making Azure deployment an issue.  However, It’s active (a check-in from Wednesday) and the full-trust issue is being fixed.
Back to looking for something strange to do.  Erlang + MUD?

Why Model Driven Design?

work safe

I’m trying to get a presentation together for Work on Oslo.  I was thinking, what do I cover?  MSchema is very conceptually small.  MGrammar is uber-geeky.  The repository should, for the most part, be a black-box.  Quadrant isn’t in the CTP.  So what’s left?

Why Oslo Matters.  In trying to figure out why Oslo matters, I’m starting to put together a few examples of situations where Oslo should be the “default implementation” for which you reach.  In addition, I want a few pithy sayings or platitudes that help developers use Oslo to it’s fullest.

What am I talking about?  In OO, they say, “Favor composition over Inheritance”.  If a piece of your application is “Highly algorithmic” or involves “Massive Data Structures” you should start by thinking functional programming FIRST.  

When do you reach for Oslo?

Few “types” but each instance a special flower.

In a rules engine, there are few rule types but each type could have many instances.  These two attributes may not be present.  This attribute is only allowed if a certain entity is present and less than six months old.  etc.

Type Hierarchy is out of control

The more concrete types you have, the more likely you need to sit down and think about WHY the types are important.  If you just want to say, “Shinbone connected to Anklebone and Kneebone”, then you’d probably be better off define the connections in data and only have a “Bone” class that knows if the Hipbone can actually connect to the Thighbone because it has a modeled schema.

Algorithm/Workflow always changes

Lets say you’re a car insurance company.  You partner with several rental organizations to provide replacements to your customers.  The general flow of your rental approval process is the same, but maybe Hertz and Enterprise need an up front deposit and Alamo doesn’t because you’re a corporate account.  These differences can be captured with data, and a workflow (yes, even a WF workflow) can be built up at run time depending on which is closest to the customer’s location.

Hyper Configuration

Agile says to hold off on making a descision until the last responsible moment.  What if that moment is after you’re done programming?  In the most extreme cases, you can alter or extend a program by adding only data.  In Neverwinter Nights, the first one, you could add classes just by editing some configuration files.  You could add spells and monsters by combining art that already existed with some data to make something new, just for your story or for the heck of it.

How do you Think in Oslo?

Favor Variance by Data over Variance by Implementation

Variance by data means there is no difference between a drug and a treatment.  Both are prescribed by a doctor.  Both cost.  Both have to be approved by insurance.  How they travel through the system is mostly the same, but where things change, you can ask if it’s a drug and do drug things.

To be slightly more dorky, In D&D 4th edition the difference between a fighter and wizard are, for the most part, the powers to which they have access.

Favor Composition by Data over Composition by Implementation

This is harder for me to explain.  Let’s say we have a workflow for our rental car example.  If we capture our workflow in data, then we can use that data to build up the forms that need to be shown to the insurance claims clerk at any given step.  We don’t create a wizard for Alamo, and a wizard for Hertz.  We create a meta-wizard that uses the data to create wizard screens when needed.  That way, when we finally get a contract with Rent-a-Wreck, we don’t have to create a wizard for them, we just model and implement the workflow and the wizard is generated.

No Comments

What I Want to do With Oslo

work safe

I’ve decided to dive into Oslo after watching the PDC 2008 videos.

Before I start, here are some links of interest.

Second, there are a few questions I’ll be looking into and posting, in addition to blogging about my first few projects.

  • What’s the basic development workflow?
  • Using model data in an external application?
  • Can an MGrammar language script generate MSchema objects?
  • Does it make sense to use MGrammar with Quadrant?
  • Can we get an MGrammar image to give syntax highlighting to a WPF control?
  • Can you tell I’m a bit obsessed with MGrammar and textual DSLs?
No Comments