Welcome to MSDN Blogs Sign in | Join | Help

Blog Moved...Sort Of

I originally started and have always maintained DevHawk as my primary blog. However, back in the spring of 2004, I started cross posting to this MSDN blog due since I was being featured on the MSDN Architecture Center and I needed the blog up 24x7.

Fast forward two years and I have a new role on a new team. Keeping two blogs is more trouble than it's worth, so I'm going to stop blogging here. Regular readers - or at least readers who wish to be regular - should head over to DevHawk, or pick up the RSS feed directly.

Posted by DevHawk | (Comments Off)

New Teammates Blogging

I'm settling in to my new job. One way to tell, read Dale Churchward's blog. Dale's a teammate of mine. He only joined Microsoft a few months ago. Apparently, he used to blog at his old job, but either way we've now doubled the number of bloggers on my new team, with hopefully more to follow.

In addition to his opinions of political discource and the Seahawks chances next season, Dale's got some interesting posts on data integration and system diagrams. Check it out.

Posted by DevHawk | 2 Comments

Gartner EA Summit Day One

I'm in sunny San Diego for the Gartner Enterprise Architecture Summit. I'm presenting a sponsor session and case study tomorrow (MSFT is a platinum sponsor for the event) but I came in yesterday so I could attend a few sessions, meet a few customers and work the MS booth in the Solution Showcase. It's my last event and deliverable for my old team before switching to the new role full time.

The first of two keynotes today was Richard Buchanan's session on The New Enterprise Architecture: Time for Leadership. Pretty decent session, though much of it was pretty obvious. He even said at one point that this was "Strategic Enterprise Planning 101". Not exactly the best way to kick of an EA summit, IMHO. However, he did make some interesting points:

  • It's hard to quantify the value of business effectiveness. Richard's quote on this was great: "What’s the dollar value of staying out of jail?"
  • He compared most of how IT is operated today as "looking in the mirror" (i.e. focusing on running what we already have). He suggested instead "looking out the window" (i.e. at the industry and the future).
  • I always say that architecture is the intersection of business and IT. Richard said “Architecture is a translation from business strategy to technology implementation. Architects must institutionalize this translation.” Close enough.
  • He also suggested that architects need to learn to speak the language of business. That's good advice.
  • Richard did do a good job capturing the dynamic aspect of enterprise and IT architecture. It's about change, not structure. He said "EA is not about the past or the present. It’s about the future." Couldn't agree more.

The second keynote was Werner Vogels talk Order in the Chaos: Building the Amazon.com Platform. This was a great talk. I know a little about how Amazon has evolved, but I had no idea that it powered websites like Target and Bebe. His talk was a little scattered - I'm guessing he's not as used to speaking at events like this than the Gartner folks. There's no way to do the talk justice without basically repeating it verbatim, but my key takeaways were:

  • Amazon naturally evolved from an application into a platform. This is fascinating and worthy of more study, esp. as I'm making the switch to MSFT's internal IT department. Microsoft knows a thing or two about platforms, but I'm not sure how it applies inside IT.
  • Amazon sees it's "secret sauce" as their ability to automate operations at scale. For example, handling over a million sellers in their system. That helps explain their moves into services like S3 and MTurk which at first glance seems at odds with their retail web site.
  • One of the key values to becoming a platform is being able to open it up to partners. Again, Microsoft knows a lot about opening a platform to partners, but I'm not sure how it applies inside IT.
  • Money Quote: "At Amazon, things are always failing. It’s not a bad thing, it’s a fact of life." I've started theorizing about this on my own, good to know where to start looking for people putting this into practice.
  • Towards that end, he made probably the most interesting observation of the day. At Amazon, there is no wall between development and operations. Combined with the secret sauce of automating operations at scale and there is a good recipe for how enterprises need to run their IT department.

The final session I went to today was Nick Gall on Architecture for the Agile Enterprise: Integrating EA & SOA. The use of the term "agile" in this context was unfortunate, as he had no discussion of agile principles. He primarily focused on what he called Web Oriented Architecture or WOA. His formula for WOA was 'WOA = SOA + WWW + REST" which seems redundant. Isn't REST an attempt to capture the architectural style of the WWW? Anyway, this session wasn't very good. He had about 15 minutes of really good content but you had to wade thru the other 45 minutes of crap to find it. For example, he spent about ten minutes talking about the value of using a small set common modular operations (i.e. the REST / WS-Transfer approach) before he used this great analogy:

Modularity can be open or closed. Closed modularity is like a jigsaw puzzle. There are lots of individual pieces, but they can only be put together one way. Open modularity is like a tangram puzzle. There are only seven pieces, but they can be put together in hundreds of different combinations.

That was a great analogy that really got the point across! Why not just start with that and skip the mumbo jumbo?

I missed the last session as I had to prep for booth duty. Even though this audience is very different from a typical MSFT event like TechEd, they still mobbed the booth for swag and a chance to win an Xbox 360. I had a few interesting architectural discussion, but mostly it was about the swag.

My session is tomorrow at 11am. I'm presenting Beyond SOA and a case study session on the Dell Integrated Desktop . Then there's two more hours of booth duty tomorrow, but I'm hoping it's more content and less swag this time as 1) I will have just presented so I'm hoping to get some questions and 2) everyone has already gotten their swag ration for the conference. 

Posted by DevHawk | 1 Comments

Alpha Release of Ruby.NET

I'm not sure what a "Preliminary Beta" is but QIT has released a one for their Ruby.NET compiler. They expect to achieve "full semantic compatibility" (can you tell this is an acidemic project?) by the end of the year. Thanks to David Ing for the link.

They claim to "pass all 871 tests in the samples/test.rb installation test suite of Ruby 1.8.2." which seems odd since later they say "We have a plan for how to deal with continuations but we have not yet implemented them." Doesn't the Ruby test suite test continuations? I wish they would provide more details on this plan, continuations might not be the most interesting thing in Ruby, but it's up there and it's probably the hardest thing to implement on top of the CLR.

BTW, there are two other projects @ QIT that Ruby.NET leverages that look interesting. The Gardens Point Parser Generator is essentially a YACC clone written in C# and making extensive use of generics. Personally, I'm more interested in Parsing Expression Grammars, but there's no C# implementation as of yet. QIT also has a library for reading and writing program executable files (i.e. EXEs and DLLs).

As a quick aside, I'm getting pretty tired of all the different euphemisms for "alpha". In the age of perpetual beta, isn't alpha the new beta? But everyone seems worried about calling their releases alpha as if it means "it might not cause your machine to explode, if you could actually get it to compile". So we end up with things like "Preliminary Beta" and "Community Tech Preview". We all KNOW what these terms mean, so lets just call an alpha and alpha, shall we?

Posted by DevHawk | (Comments Off)

Moving On...

It's not the biggest job change news this week (or the day), but after three years on Architecture Strategy and six years total as an evangelist, I'm moving on to a new role. After six years, I decided it was time for me to put my money where my mouth is as well as get my hands dirty building something more substantial than buzz.

I'll be moving over into Microsoft's IT division as a member of the Integration Center of Excellence Architecture Team. Integration, as you might guess, is a euphemism here for service-orientation. My team is tasked with architecting and delivering the shared service-oriented infrastructure for four of the biggest projects Microsoft IT will be delivering in the next year. Last time I changed jobs, I lamented that "With each job I take at MSFT, coding seems to become less a part of the job description." Happily, this is NOT the case this time.

About a year ago, Microsoft hired Stuart Scott to run the business apps side of IT as one of our two CIOs (our other CIO Ron Markezich oversees the IT infrastructure). Stuart was kind enough to spend about an hour with me last week explaining his vision for how he sees MSIT evolving under his leadership. Here's what he said in a recent interview:

PressPass: How do you see Microsoft IT evolving?

Scott: There is a broader role for IT to play at the front end of the development of products and services. Our IT organization knows a lot about the challenges that other IT organizations face because we build and maintain the IT backbone of a massive worldwide enterprise. IT must become future-thought leaders in the development of the product roadmap for our enterprise products.

By using our internal applications and experiences to build better products for our enterprise customers, we have the potential to solve the challenges that other IT organizations face. We’re heavily involved in dogfooding our products once they’ve been developed, but we also see a role closer to the front end of the product development cycle. Business Intelligence is one area where we will be partnering with the product groups and Finance as we build out our internal capability. I want to ensure that any product we develop to meet the needs of Microsoft, also meets the needs of the marketplace.

He was also very frank about the current state of affairs in MSIT relative to the vision. He was quoted in China Information World (no link, sorry) as saying that "The systems Microsoft now uses are already 14 years old and based on previous versions of windows, so from a systems capability perspective, they cannot support the needs of the growing business."

All in all, I was pretty impressed with what he's setting out to do and the opportunity not only from a business perspective from from an industry perspective as well. Hence the whole "going to work in his division" thing. Of course, "Thought Leadership" is one of the things Architecture Strategy works on very diligently, so in some ways this isn't as big a change as it might be. On the other hand, giving advice to people solving hard problems is a lot different than solving those hard problems yourself.

I'll be starting this new role pretty much immediately, so expect the less-than-usual blogging to continue for the time being. But my external visibility on my blog and presenting at conferences and executive briefings is one of the things they hired me for. So after I get my bearings things should be back to normal. At that point, I'll hopefully be able to talk in more specific terms about what we're tackling on my new team. I hope to shake things up quite a bit over there and deliver the play by play here on my blog.

Massive thanks to John deVadoss and the rest of the Architecture Strategy Team. Back when I started, I think Simon Guest was the only other blogger on the team. Now there are only three non-bloggers on the whole team. It's been a great three years and I've been a part of so many great accomplishments:

I always joke that if I ever left Microsoft, I wouldn't want to go work for another technical company. Now, I get the chance to go affect the business of a Fortune 50 business while not having to leave Microsoft. Pretty sweet.

See you on the other side.

Posted by DevHawk | 1 Comments

June DSL CTP

Congrats to the team for their latest version of the DSL Toolkit, integrated into the June CTP of the VS SDK. According to the published product plans of the VS SDK, they're suppoesd to ship their next release - including the final DSL toolkit - next month. Looking forward to it.

Posted by DevHawk | (Comments Off)

Thinking About Object Models

I'm doing some experiments with Amazon's S3 Service. Very cool service, I might add. Anyway, the sample C# REST code basically wraps the network requests with a single connection class that has individual methods for each type of service interaction (list all my buckets, list all objects in a bucket, create a bucket, create an object, you get the idea).

However, S3's service is a natural hierarchy. The Service contains many Buckets, which in turn contain many Objects. So another way to wrap the service interaction is with a series of objects that are related to one another and only implement the service interactions relevant to that class. (Service would implement List My Buckets and perhaps Create Bucket. Bucket would implement List Objects and Delete Bucket. Again, you get the idea.)

For an interface as relatively simple as S3 (the SOAP interface has a grand total of 13 operations) it probably doesn't matter one way or the other. Furthermore, it's probably a question of personal preference. My question: What's your personal preference? A single object with many methods or a hierarchy of objects each with fewer methods?

Posted by DevHawk | (Comments Off)

Enterprise 2.0 ARCast

Ron just posted his latest ARCast featuring yours truly talking about Enterprise 2.0. Some of the same stuff I blogged about last month, but in a conversational style. Check it out.

Posted by DevHawk | (Comments Off)

Architect Connections Conference

For any readers in LA, I'm keynoting the MS Architect Connections conference in LA next week. They have a few spots still open, so if you're interested you can sign up here.

Posted by DevHawk | (Comments Off)

TechEd Iron Architect Contest

For a change, I'm not involved with TechEd at ALL this year. It's all Simon and Marty. Looks like they've got some cool stuff cooking, particularly the Iron Architect contest. Almost makes me wish I was going this year.

Posted by DevHawk | (Comments Off)

ChucK Audio Programming Language

I saw reference to ChucK on Prompt Criticality, a Second Life Blog. I wanted to blog it for my own reference if for no other reason. ChucK is "a new audio programming language for real-time synthesis, composition, and performance" that "presents a new time-based concurrent programming model, which supports a more precise and fundamental level of expressiveness, as well as multiple, simultaneous, dynamic control rates, a precise and straightforward concurrency, and the ability to add, remove, and modify code, on-the-fly, while the program is running, without stopping or restarting".

Sounds facinating, esp. given my recent discussion of internal vs. external DSLs w/ Neal Ford. Plus it deals w/ concurrency and is dynamic.

Posted by DevHawk | 1 Comments

Sacred Code Cows

I wrote of my meeting w/ Neal Ford a few weeks ago. Today he has a long post on what he calls Eating Sacred Hamburger that goes into more detail of some of the things we discussed:

Software development cults tend to create sacred cows: habits and idioms that might have meant something at one time but only remain as baggage now. I tend to like to kill sacred cows and grill them up, with some nice lettuce, tomato, and a sesame seed bun. On my current project, we're actively killing some sacred cows.

The main sacred cow he's talking about slaughtering is Hungarian Notation for interfaces. You know, interfaces like IDbConnection and IHttpHandler.

Thankfully, Hungarian Notation has mostly been banished, except for one lingering, annoying location in the .NET world: the stupid "I" preface on interfaces. In fact, if you understand how interfaces should be used, this is exactly the opposite of what you want. In our application, every important semantic type is represented by an interface. Using interfaces like this makes it easier to do a whole host of things, including mocking out complex dependencies for testing. Why would you destroy the most important names in your application with Hungarian Notation telling you it's an interface? Ironically enough, that your semantic type is an interface is an implementation detail -- exactly the kind of detail you want to keep out of interfaces. I suspect this nasty habit developed in the .NET world because interfaces first came to the Microsoft world as COM (or, back when it started, OLE). It's a stupid cow now, and should be slaughtered.

I agree 100% with this, though I'm guessing the next time I write an interface, I'll have to go back and delete the stupid "I" because I'm so used to writing it.

The other convention he's looking to do away with camel and pascal casing, which is convention in .NET. He's a bigger fan of using underscores between words (which is big in the Ruby world). So far, he's only using underscores in his test methods since they tend to be longer, such as "Verify_end_to_end_security_connectivity_to_infrastructure". Frankly, I'm ambivalent on this one. I'm pretty good at reading camel and pascal casing and I would hope never to see a production method name like that.

So that's two down, but there's still an entire herd of sacred cows out there. What other ones do we need to get rid of?

Posted by DevHawk | 2 Comments

ActiveRecord::Migration

When I wrote about the Dual Schema problem a few weeks ago, I specifically wrote that the Rails model is backwards because it derives the in-memory schema from the database schema. While I still believe that, Rails' ActiveRecord::Migration library does make it significantly easier to manage the database from Ruby code. For those not familiar, ActiveRecord::Migration is a series of Ruby script files that define the database schema. Inside each migration script is an up and down method, so you can migrate forward and backward in the history of your project. And it provides easy to use abstractions such as create_table and add_column so you don't have to geek out on SQL syntax (unless you want to). Once you have a collection of these scripts, simply calling "rake migrate" will bring your database instance up to the current schema (rake is Ruby's equivalent of make). Or, you can set your database to a specific version of the schema by running "rake migrate VERSION=X".

I wonder why the Rolling on Rails tutorial uses the database tools directly instead of ActiveRecord::Migrate? I'm thinking it wasn't available when the tutorial was written. Whatever the reason, they really should update the tutorial to reflect the current state of Rails.

Posted by DevHawk | 1 Comments

Apparently, Microsoft Delivered on Enterprise 2.0 Three Years Ago

In the past few weeks, there’s been a major uptick in discussion about Web 2.0 / Enterprise convergence. Andrew McAfee has a new article on what he calls Enterprise 2.0. Dion’s got an entire blog on the subject, though he thinks it should be called Enterprise Web 2.0. Nicholas Carr is skeptical. Seems to me all this discussion about what might happen in this space is pretty silly since it’s happened already.

Unfortunately, Andrew’s Enterprise 2.0 isn’t freely available (you can buy a copy of the PDF for $6.50), but it primarily focuses on the growing frustration with email and the rise of collaborative Web 2.0 technologies such as blogs and wikis inside the enterprise. No big shock here – for collaboration, blogs and wikis are to email what word processors are to typewriters. Andrew also introduces a model he calls SLATES for describing the aspects of these technologies: Search, Links, Authorship, Tags, Extensions and Signals. So far, all good stuff.

The problem with the article is that he talks about these technologies in the future tense. For example, he writes: "As technologists build Enterprise 2.0 technologies that incorporate the SLATES components" which implies that these are coming down the pipe rather than here right now. Not only here right now, but available for going on three years. I’m talking about SharePoint 2003. 2003 as in "a year before Tim O’ Reilly coined the term Web 2.0".

SharePoint (I’m talking primarily about the free feature pack for Windows Server 2003 though about the portal server as well) supports Search, Links, Authorship and Signals – four of the six components of Andrew’s Enterprise 2.0 stack. (And frankly, I'm not sure where Andrew is going w/ his Extensions aspect so four out of five is probably more accurate.) More importantly, it’s specifically designed to support what Dion called the Democratization of Content. As of December 2004, Microsoft’s internal IT department was supporting "more than 60,000 users, 250 group and division portals, 50,000 team sites, and manages more than 3 terabytes of information." Personally, I use the coportate enterprise intranet portal, my division portal, a handful of team sites and my personal site on a pretty much daily basis. Only the enterprise and division portal are centrally managed. Given the explosion of SharePoint sites inside Microsoft, I'm obviously not alone.

Creating a new SharePoint team site inside Microsoft is totally self service and takes literally a few seconds. Once you have a site, you can configure it as you like, creating lists and setting permissions as you see fit. Again, it’s totally self service. Plus, it’s totally public unless you specifically lock it down (well, public inside the firewall at any rate). Of course, it could be easier and better, and that’s what next versions are for. SharePoint 2007 will have direct support for blogs, wikis and RSS. Check out the C9 video for more info.

Given the market momentum to date and the impending release of a new version, I find it very surprising to find Dion, Andrew and Nicholas discussing the potential ramifications of these technologies without even mentioning SharePoint. If these guys want to see the Enterprise 2.0 technology in action, all they need to do install SharePoint.

Posted by DevHawk | (Comments Off)

Why's (Poignant) Guide to Ruby

Even if you don't care a lick about Ruby, you should read Why’s (Poignant) Guide to Ruby. It is by far the most facinating (and freaky) technical book I've ever read.

Posted by DevHawk | (Comments Off)
More Posts Next page »
 
Page view tracker