- I’m not sure if I should laugh or cry at Nick Malik’s definition of politecture. I mean, it’s funny so I’m laughing, but it’s so true that it makes me want to cry.
- Don Box comments on retiring the tenets. It’s good to see him say “please God tell me we can do better” than CLR interfaces or WSDL.
- Looks like the P2P APIs are finally getting the managed treatment in .NET FX 3.5. A long time ago, John deVadoss asked me what an enterprise system like CRM might look like if it used a peer-to-peer approach instead of client-server. If I had any free time, I’d prototype one out on this API. (via Mike Taulty)
- Scott Guthrie goes back to his LINQ to SQL series to tackle Stored Procs and UDFs. Being able to use UDFs inline with LINQ queries is very cool. However, it seems to me that LINQ discourages the use of stored procs. As a developer, I’d rather write LINQ queries than stored procs, if I can. The probably puts me at odds with DBAs who’d rather all DB access be via stored procs they control.
- Soma writes about new MSBuild enhancements in VS08: multi-targeting and parallel build.
- I just discovered Vista Battery Saver. Basically, it turns off Aero and Sidebar when you’re on battery. I’m traveling to Chicago next week, so we’ll see if it has much impact on my battery life. (via Plenty of Code and Larkware)
Morning Coffee 111
Hawkeye on Office Communicator 2007
I’ve been running Office Communicator 2007 (aka OC07) and the Polycom CX200 phone for a couple of weeks now. Here are a few thoughts on the experience.
- Multiple Points of Presence. I’ve got OC07 installed on both my desktop and laptop. Unlike WL Messenger with it’s “you’ve signed in on another machine” messages, OC07 happily lets me log in both places. If I get an IM, it pops up on both screens. If my phone rings, I can answer it on either machine.
- Simultaneous Ring: When I get a call, both my machines and my mobile phone ring. I can answer in whatever place I want. For the most part, people know my mobile phone number, so I’ll need to get out the word to call my work number instead. (First step: re-program my work number in my wife’s phone.) I can also choose to forward my work calls directly to my mobile phone, though I tend to be better about checking work voice mail so I doubt I’ll use that feature.
- Outlook Integration: The previous version of OC had PBX system integration and Outlook. So you could call someone simply by right clicking on their name in Outlook, OC would talk to your PBX system to place the call. Unfortunately, when we moved offices we also got new IP phones that didn’t integrate with OC05. Now that I’m on OC07, my computer is my phone and all the Outlook integration works again.
- Status Indicator on the Phone: It’s minor, but the USB handset has the OC logo that lights up the same as your status. If you’re available, the logo is green. Busy? The logo is red. Do Not Disturb? Logo flashes red. Nice touch.
- Missed Conversations: The other day when I was in training, a colleague IMed me but I was away from my desk and my laptop was turned off. The IM conversation ended up in my inbox like an email. Doesn’t help for “You there?” IMs, but when he realized I wasn’t there, he just wrote the information he wanted me to know and I got it the next time I logged in.
- No Clock: A very minor sticking point, but the old phone system had a clock on the phone so you could easily see what time it is, even if your machine is locked. The USB handset doesn’t have a clock and I miss it. Not nearly enough to go back to my old phone, but enough that I’m going to go buy a little desk clock.
- No Keypad: I didn’t miss it right off the bat, but the lack of a keypad is a hassle. If I have to look a phone number up, having the ability to place the call inside of Outlook is slick. If I know the number off the top of my head (home, wife’s cell phone, helpdesk) then having to type it into Communicator is a pain. Also, if you’re calling one of those automated systems, keying the numbers on the software keypad is a real hassle.
- IM to Phone: Since I have to look my wife up in Communicator to call her anyway, I can shoot her an IM before call her. The kids nap in the afternoon, so if I catch her online, it avoids a potentially waking ring.
- Extra Speaker: When you set up the USB phone, it sets itself up as the default speaker. That’s typically not what you want, but it’s easy enough to change in the sound control panel. However, when my earphones broke and I found myself sans audio, I changed it back until I could get new earphones. The only problem with this approach is that in a cube environment (like I work in), the noise from the phone speaker is a bit loud. You can pick up the receiver and listen that way without bugging your neighbors, but after about 20 seconds, it reverts back to speaker phone for no apparent reason.
Morning Coffee 110
- Monday @ Gamefest, the XNA team announced XNA Game Studio 2.0. The two big new things are support for the entire VS product line (1.0 only works on VC# Express) and the addition of networking APIs. Let’s Kill Dave has a good wrapup of the announcements from Gamefest Day One.
- Speaking of Xbox 360, I played thru the demos of Stranglehold and Bioshock. Two thumbs up on both. It’s gonna be an expensive year for Xbox gamers.
- Mark Cuban noodles on taking your house public. “Why not create a market or exchange where homeowners can sell equity in their homes?” I’ve thought about this myself from time to time. However, Mark thinks making it happen would “probably take the country’s biggest banks working together”. I wonder if there’s a more Web 2.0 social lending approach that would work better.
- Jeff Atwood calls virtualization as “the next great frontier for computer security”. I agree 100%. But I don’t think the action is going to be in “full-machine” virtualization like Virtual PC. Rather, it’s going to be sandbox virtualization. Jeff mentions GreenBorder (now part of Google) but it’s not the only solution. Some time ago, Microsoft acquired SoftGrid which uses sandbox virtualization for application deployment, but using SystemGuard for security sandboxing seems like a logical step.
- The WCF LOB Adapter SDK has released. Sonu Arora has the details. As part of the Integration team @ MSIT, I have a feeling we’re going to become fairly familiar with this technology. (via Jesus Rodriguez).
- Speaking of Jesus, he thinks the six new SCA4SOA committees are “going to help”. Why? Because inventing technology in committee has turned out so well in the past?
- John deVadoss cements BPM’s fad du jour status by contrasting “big” BPM and “little” BPM. It’s fairly obvious to me that big *anything* just doesn’t work in the enterprise. But I worry that little *anything* doesn’t work that well either. So how long until someone (probably Nick) starts arguing for “middle out” BPM?
- David Bressler wonders “What is it about registries that everyone thinks is a panacea for all things SOA?” Amen, Brother! Joe McKendrick claims it’s required for governance, but then gets to what I think is the *real* reason for focus on registries: the “registry is a tangible offering” that vendors can sell. Just because it’s productizable doesn’t mean you need it.
- Hartmut Wilms responds to my retire the tenets post, but he seems to contradict himself. On the one hand, he suggests that “the four tenets just expressed, what “almost” everybody outside the MS world knew already”. But then he goes on to dispute that the SO paradigm shift has even occurred! Hartmut, I’ll grant you that WCF (among other similar stacks) are way too focused on “you write the classes, we’ll handle the contracts and messages”. On the other hand, if you don’t provide a productive interface that most everyone can pick up and run with, the technology won’t get adopted in the first place.
Retire the Tenets
John Heintz and I continue to be in mostly violent agreement. It’s kinda like me saying “You da architect! Look at my massive scale EAI Mashup!” and having him respond “No, you da architect! The SOA tenets drive me bonkers!” Makes you wonder what would happen after a few beers. What’s the architect version of Tastes Great, Less Filling? ^[Not that you would catch me drinking Miller Lite. Ever.]
Speaking of the tenets, John gives them a good shredding:
Tenet 1: Boundaries are Explicit
(Sure, but isn’t everything? Ok, so SQL based integration strategies don’t fall into this category. How do I build a good boundary? What will version better? What has a lower barrier to mashup/integration?)Tenet 2: Services are Autonomous
(Right. This is a great goal, but provides no guidance or boundaries to achieve it.)Tenet 3: Services share schema and contract, not class
(So do all of my OO programs with interface and classes. What is different from OO design that makes SOA something else?)Tenet 4: Service compatibility is based upon policy
(This is a good start: the types and scope of policy can shape an architecture. The policies are the constraints in a system. There not really defined though, just a statement that they should be there.)Ah, I feel better getting that out.
As John points out, the four tenets aren’t particularly useful as guidance. They’re too high level (like Mt. Rainier high) to be really actionable. They’re like knowing a pattern’s name but not understanding how and when to use the actual pattern. However, I don’t think the tenets were ever intended to be guidance. Instead, they were used to shift the conversation on how to build distributed applications just as Microsoft was introducing the new distributed application stack @ PDC03.
John’s response to the first tenet makes it sound like having explicit boundaries is obvious. And today, maybe it is. But back in 2003, mainstream platforms typically used a distributed object approach to building distributed apps. Distributed objects were widely implemented and fairly well understood. You created an object like normal, but the underlying platform would create the actual object on a remote machine. You’d call functions on your local proxy and the platform would marshal the call across the network to the real object. The network hop would still be there, but the platform abstracted away the mechanics of making it. Examples of distributed object platforms include CORBA via IOR, Java RMI, COM via DCOM and .NET Remoting.
The (now well documented and understood) problem with this approach is that distributed objects can’t be designed like other objects. For performance reasons, distributed objects have to have what Martin Fowler called a “coarse-grained interface”, a design which sacrifices flexibility and extensibility in return for minimizing the number of cross-network calls. Because the network overhead can’t be abstracted away, distributed objects are a very leaky abstraction.
So in 2003, Indigo folks came along and basically said “You know the distributed object paradigm? The one we’ve been shipping in our platform since 1996? Yeah, turns out we think that’s the wrong approach.” Go back and check out this interview with Don Box from early 2004. The interviewer asks Don if WCF will “declare the death of distributed objects”. Don hems and haws at first, saying “that’s probably too strong of a statement” but then later says that the “contract, protocol, messaging oriented style will win out” over distributed objects because of natural selection.
The tenets, IMHO, were really designed to help the Windows developer community wrap their heads around some of the implications of messaging and service orientation. These ideas weren’t really new – the four tenets apply to EDI, which has been around for decades. But for a generation of Windows developers who had cut their teeth on DCOM, MTS and VB, it was a significant paradigm shift.
These days, with the tenets going on four years old, the conversation has shifted. Platform vendors are falling over themselves to ship service/messaging stacks like WCF and most developers are looking to these stacks for the next systems they build. Did the tenets do that? In part, I think. Mainstream adoption of RSS was probably the single biggest driver of this paradigm shift, but the tenets certainly helped. Either way, now that service orientation is mainstream, I would say that the tenets’ job is done and it’s time to retire them. Once you accept the service-oriented paradigm, what further guidance do the tenets provide? Not much, if any.
Fantasy, Free Code and the SharePoint Model
It might sounds like a fantasy, but Nick Malik really wants free code.
He started talking about
it
a few months ago when he was getting raked over the coals by
debating Mort with the agile .NET community:
Rather than look at “making code maintainable,” what if we look at making code free. Why do we need to maintain code? Because code is expensive to write. Therefore, it is currently cheaper to fix it than rewrite it. On the other hand, what if code were cheap, or free? What if it were cheaper to write it than maintain it? Then we would never maintain it. We’d write it from scratch every time.
Then about a week ago, he laid out the reasons why free code would be a good thing. At a high level (Nick’s blog has the details), those reasons are:
- Lower the cost of IT through reduced skill requirements.
- The speed of development goes up.
- Projects become more agile.
- Solution quality goes up.
Talking about the benefits of free code is sorta like talking about talking about the benefits of dating a movie star. The benefits are actually pretty obvious, but talking about them doesn’t really help you get there from here.
Actually, Nick isn’t suggesting that all code can be free. He’s focused on separating out business process modeling/development from the rest of software development. In essence, he’s describing a new class of developer (should we call the persona Nick as an homage?) who needs their own class of tools and for the IT department to “formally” allow them to “easily develop, test, and deploy [aka host] their processes.” For the most part, these BP developers wouldn’t be traditional developers. They’d be more like software analysts who do the work directly instead of writing specs for developers.
I call this separation of business and IT concerns the SharePoint Model. SharePoint, IMO, does an amazing job of separating the concerns and needs of business and IT users when it comes to running intranet web sites. Only the truly geeky stuff that requires specialized access, knowledge or equipment – installing the SharePoint farm in the first place, keeping it backed up, installing service packs, etc. – is done by IT. Everything else is done by the business folks. Need a new site? Provision it yourself. Need to give your v-team members access to it? Do it yourself. I see similarities in the free BP code approach Nick’s suggesting. I’d even argue that SharePoint is the natural “host” for such business processes. It already supports WF and can provide access to back-end enterprise data via the Business Data Catalog.
On the other hand, some of what Nick suggests seems fairly impractical. For example, he thinks IT should “formally and officially take control of managing the common enterprise information model and the business event ontology.” First off, who officially manages this today? Does such an official information model or event ontology even exist? I’m guessing not. That means you’ve got to start by getting the business people to agree on one. That’s usually a sucker’s bet. Nick also suggests we “reduce the leaky abstractions” in our services. To suggest this is even possible seems incredibly naive.
The good news is the things that will work (evolving BP into its own
development discipline, building custom tools for BP development,
getting IT into the BP hosting business) don’t depend in any way on the
things that wont work (getting lots of folks to agree on anything,
breaking the laws of physics, overcoming the law of leaky
abstractions). I’m not sure it will result it truly free code, but it
sure would bring the costs down dramatically. Thus, I think most of
Nick’s free code vision is quite practical and not a fantasy at all.
As for dating a movie star, you’re on your own.