Those who speak do not know…
I have been blogging on and off since May 2002.
I just found my first post at http://web.archive.org/web/20030529100121/www.douglasp.com/2002/05/05.html.
I have always struggle with how open to blog about things in the company and things in my own life.
These days, it is not just blogging, but Twitter, FriendFeed, etc., but the issue is the same.
I will admit that blogging/micro-blogging is a powerful way to communicate with the broader community, but I wonder about being “too accessible”.
I think a lot about the lessons of Lao Tzu (the title of this post) and Machiavelli (particularly chapter 12 of The Prince) in this regard.
As I think through this, I likely going to take one of my semi-frequent pauses from blogging/micro-blogging…
“M”: Read Pinky’s Blog
Jeff Pinkston is the GPM of the Modeling Languages team.
We call him Pinky.
http://tinyfinger.blogspot.com/
I really want Jeff to be the ‘voice of the Microsoft “M” implementation’ in the community and blogosphere.
Looks like he is taking me up on the challenge.
“M” language model and infoof operator
If you are paying attention to “M” language specification, you will notice some very interesting additions in the latest draft, particularly if you are someone that likes to add the “meta” prefix to your words.
In short, DLan included the language model and the infoof operator in the spec.
The January CTP doesn’t do any of this yet, but the bits in our tree have had it for sometime and it should make it into the next CTP.
For those of you of a practical bent, this lets you do things like the below (how we would use something like this in our tooling is fairly obvious).
module Test { import Language.Catalog; type Person { Name : Text; Age : Integer; } People : Person*; Children() { People where Age < 18 } Documentation : { About : Language.Catalog.Declaration, Description : Text }*; Documentation { { About = infoof(Person).Declaration, Description = "Describes people" }, { About = infoof(People).Declaration, Description = "Contains people" }, { About = infoof(Children).Declaration, Description = "Extracts young people" }, } }
Unified Language Specification
As part of rolling out the “M” Specification Community, DLan published the draft of the language spec that marries MSchema and MGrammar together.
MGraph was always in the MSchema spec, so we now have a unified language specification for “M”.
We used the terms MSchema, MGrammar and MGraph at PDC to help people understand what we had in the bits at the time, but we have always known that we will have a single language.
That is one of the downsides of engaging in this effort so early with the community, but we judged that being more open and less buttoned up than we normally like was the right trade off.
Likewise, the language specification (even the most recent version) needs a lot of work, but we are blessed with a number of seasoned language spec authors both on my team and externally, so we should land in a fine place.
We have two more milestones before PDC and the Microsoft implementation of the language is converging to a point where we have “One M”.
We have a bunch of new things that we will reveal at PDC (with some peeks in CTPs prior) and the unified specification is evidence of our progress on that journey.
Google Reader to Twitter (rdr2twt), Part II
Prereading: Google Reader to Twitter (rdr2twt)
In the interest of doing a simple comp for some other work I am doing, I decided to move this mere trifle to Google App Engine.
It took around 100 LOCs of Python code.
Observations:
- The local SDK environment (dev fabric in Azure-speak) is straightforward, did what is was supposed to do, and mostly stayed out of the way.
- Using whatever Python libraries I wanted was reasonable, although I had some issues with paths around the GData client (which I wanted to use for the Reader feed). I ended up using ElementTree and urlfetch directly, not a big deal.
- I didn’t like the fact the the SDK environment didn’t run cron jobs, but I did like two things. First, it told me that the configuration was right and when the job would have right. Second, cron just does supports HTTP GET, so it makes trivial to test.
- The online management environment is quite nice. I like the analytics a great deal for example.
- TextMate is hands down the best text editor on the Mac. This is not a GAE observation, but I want to the Intellipad team to read this and get motivated by the fact that I am using a different text editor.
I am thinking about adding more to see how this scales with application complexity. Two ideas are to make rdr2twt a public service (needs UI, etc.) or to use this as a prototype of some Infobus ideas that I have. Still thinking on it.
That said, this has to compete with the siren call of the iPhone. I am getting a lot of pressure to use the basis of LocoFoto as launching point for a couple of different apps.
Big Sur Marathon
I am running the Big Sur Marathon this year.
I have run more than my share of half-marathons (13.1 miles), but this will be my first full length event.
Based on my reading, if there is one marathon to do in North America modulo Boston, Big Sur is it.
I am at the end of my training arc and I have happened upon an approach that I am going to use moving forward.
Half-marathons on MWF each week (doing this now), one marathon per month run on a Sunday with the week following off.
I don’t know if the week off is going to be enough, but I did 22 miles the other day and it took me two down days to recover, so I hope 8 days is fine.
I’ll be taking photos and tweeting from the event, as it is my excuse to walk up H. Ridge, so you can share in the adventure.
This also let’s me tell people if I need some to pick me up.
The Quiet Coup
Wonderful read. Via Winer. http://www.theatlantic.com/doc/200905/imf-advice/2
In a primitive political system, power is transmitted through violence, or the threat of violence: military coups, private militias, and so on. In a less primitive system more typical of emerging markets, power is transmitted via money: bribes, kickbacks, and offshore bank accounts. Although lobbying and campaign contributions certainly play major roles in the American political system, old-fashioned corruption—envelopes stuffed with $100 bills—is probably a sideshow today, Jack Abramoff notwithstanding.
Instead, the American financial industry gained political power by amassing a kind of cultural capital—a belief system. Once, perhaps, what was good for General Motors was good for the country. Over the past decade, the attitude took hold that what was good for Wall Street was good for the country. The banking-and-securities industry has become one of the top contributors to political campaigns, but at the peak of its influence, it did not have to buy favors the way, for example, the tobacco companies or military contractors might have to. Instead, it benefited from the fact that Washington insiders already believed that large financial institutions and free-flowing capital markets were crucial to America’s position in the world.
Where is “Oslo” Going, IV
Continuing the conversation with Jean-Jacques.
So if it is not too much to ask, could please clarify the M3 layer of Oslo or, possibly what are the extensible mechanisms you provide at the M3 level to support this kind of concept.
Our M3 (M4M) doesn’t make assertions about implementation.
We do make assertions about our data model at this layer however.
This is layer is, of course, extensible via annotations, specialization, and instantiation.
I have to think more about it, but I think we could make the same claim as MOF (“[s]uffice it to say MOF 2.0 with its reflection model can be used with as few as 2 levels and as many levels as users define”), as we just added a new reflection model to “M” (which will be part of the next CTP, I believe).
DLan can answer that definitively.
What you outline “service implemented as orchestration with one implementation that integrates N operations” is a foundational scenario for what we call the services domain.
If you download and install the SDK, you can see some early work in that that domain (in the models folder).
I talked to Keith Short the other day and he is going to join this conversation to talk concretely on how we are using “M” to model software artifacts and systems.
As you may know, Keith is is very passionate and knowledgeable about employing the technologies like “M” to model the exact sorts of systems you are interested in.
BTW: I absolutely love conversations like this. We have started talking about Oslo with the community (customers, partners and competitors) very early to ensure that we are getting the right level of feedback and involvement. In this day and age, developing something as broad as this requires the involvement of everyone you can muster. The only constant for us is a goal (make it easier to design, build, and manage applications) and a set of principles around approach (data-driven, dynamic, transparent, etc.).
Going to California, Part II
My post the other day with the lyrics of “Going to California” was a bit of an inside joke.
I am starting to tell people outside of the company now (I think Dion was the first), so I’ll just create a post.
After PDC 2009 (you should go, it is going to be great), I’ll be moving back to the Valley again.
Same team, same technology, same sort of work (slightly different focus), but with different location.
These means more time at my favorite coffee shop and hopefully getting Microsoft into some the parties that we aren’t invite to right now (and maybe starting a few of our own).
Where is “Oslo” going, Part III
Charles Young hits the nail on the head in his comments over on Jean-Jacques’ blog.
http://www.ebpml.org/blog/181.htm#IDComment18452505
They are split up over a host of comment blocks, but I could not agree with him more.
“Oslo” is a platform for building and interacting with models (fancy term for data, metadata, and metametadata).
There are a host of applications of this technology.
Writing cloud applications is one.
Writing REST Services is one.
Writing a Web application hosted in IIS is another.
Writing down an application architecture independent of the implementation is another.
In fact, the use of this approach is not limited to design, build and managing software systems and applications.
The thing I am really excite about is what sort of things are going to emerge from third-party developers and users when these capabilities are broadly available as part of the platform.