Iraq Statistics

From a State of the Union open thread on DailyKos, here’s a list of Iraq statistics as of tonight and one year ago tonight. No adjectives or opinions or analyses, just some numbers.

Office 12 Ascend Workshops

Having posted a few photos of the Office 12 Ascend workshops in the last month (from Toronto and Dallas), I thought it was interesting to come across a developer attendee’s post about the workshop in Paris. Patrick Tisseghem, the instructor at that event, also posted a group photo from the same event.

I’ll be attending the upcoming workshops in Sao Paulo, Brazil (with Ted) and Bangalore, India (with Patrick), so I’ll be posting some more photos from those destinations. Carnival starts in Brazil the week I’ll be there for the workshop, and Megan’s going to drop in for the weekend. Hmmm, one of the world’s craziest parties, in a city of 22 million? That shouldn’t be any fun. :-)

Fish & George


Fish enjoyed having a roommate for the weekend. He and George shared many interests, including surfing the web.

Fluevogs to Bremerton

My friend George is in town, so today we went to Pike Place Market for breakfast and walked around a bit. Then we went to the Fluevog store, where I bought some burgundy Angelic Flames.

Then we took the ferry to Bremerton, just for fun. We drove back through Tacoma and stopped in Normandy Park to take a few pictures at the beach.

Now we’re off to Cody’s birthday party. The new ADT alarm’s set, so if you come in while we’re gone please turn it off. The blue lights scare Murg.

Business Data Catalog Overview

Last time I blogged about Office 12 in much detail, I covered the new XML file formats. Next I want to cover the aspect of Office 12’s suite of technologies that I personally find most exciting: The Business Data Catalog (BDC).

Why do I find the BDC so exciting? Well, some background will make that clear …

Back in the 1990s, I developed highly customized bar-code tracking systems for large corporate filerooms. These systems were based on my Gen-Bar framework, which provided a foundation for building applications that tracked entities (files, audits, transactions, whatever) that moved between various locations (shelves, people, storage boxes, other offices). My clients were organizations like Ernst & Young, KPMG Peat Marwick, and the Chicago Board of Trade — companies with millions of paper files to track. Gen-Bar helped them manage this data, from printing the color-coded labels to providing search functions to people throughout the organization.

I added lots of fancy search functions to Gen-Bar, based on the feedback we got from users. These search functions worked great on the data in Gen-Bar, but the whole Gen-Bar database was disconnected from other types of information that users might want to search. For example, we had a Gen-Bar installation in the HR department of a large company. When those people wanted to search for everything related to John Doe, they had to search Gen-Bar, then search their internal HR system, then search their intranet, and perhaps search other systems as well.

I tried a few things to get around this clumsiness, but none of the solutions were ideal. The problem is, when you have data in a relational database (or other types of databases, for that matter), you can’t do meaningful searches without understanding some of the details of how the data is structured and stored.

So it’s hard to make a single search function work well across databases from different systems. Some organizations have done it, but it’s a lot of work, with lots of custom programming, and somebody has to understand and maintain all that custom code. As more and more systems are used in a large organization, a single integrated search function becomes more and more difficult to accomplish.

The Business Data Catalog provides an elegant solution to this messy problem. The basic concepts are deceptively simple:

  • a BDC “connector” — an XML file — contains information about how to retrieve data from a data source
  • the data source can be any ADO.NET data source (a SQL database, for instance), or a web service
  • Sharepoint’s enterprise-wide search function uses the BDC connectors to search various custom data sources in addition to searching all of the web pages and document libraries within Sharepoint

The end result is impressively simple and straightforward. For example, we have an internal implementation of the BDC here at Microsoft (where we like to dogfood our products and verb our nouns), and you can search for a customer name and find hits on web pages, in documents, and in line-of-business applications such as CRM and other types of systems. You just type in what you’re looking for, and through the BDC connectors Sharepoint can search all of our internal system and give you a consolidated set of search results.

The BDC represents an approach that’s here to stay: declarative interfaces between line-of-business applications and portal search functions. Declarative meaning XML, of course: no custom programming involved.

Also note that the interface defined by the BDC isn’t just used in search functions. Web parts and document lists in Sharepoint can use the BDC to filter content and do other creative things; think of the BDC as a true “catalog” of business data, and application developers can use that catalog to retrieve data for whatever their application needs to do with the data.

The details of building BDC connectors are beyond the scope of this post, but here are a few of the key concepts involved:

Finder method. This is a method that you define which will take some filter conditions and return a set of instances of business data entities that meet the filter. Example: a finder method that retrieves a list of the customer meeting some type of sales-history criteria.

Specific Finder method. This method returns the details of a specific instance of an entity, given an instance ID. Example: a specific finder that returns customer details, given a unique customer ID number.

IDEnumerator method. This method abstracts the concept of retrieving a list of ID values and timestamps. Example: an IDEnumerator method that returns customer IDs and when each one was last updated. Note that the IDEnumerator method is used for searching data sources that are exposed via web services, so a web-service data source needs to have services that can return ID values and services that get the details for those ID values (i.e., something to hook up to the Specific Finder method).

Profile page. This defines how an entity is displayed to the user. The default profile page is simply a list of field names and values, but it’s designed to be customized.

There is a lot more detail, of course. If you’re on the Office 12 beta for ISVs, you can get more information from the latest Sharepoint SDK. For everyone else, details of the BDC architecture will be forthcoming after the release of the publicly available Beta 2 this spring. And don’t forget to check out the Sharepoint blogs and web sites listed in the sidebar on the home page of my blog — there are lots of people listed there who will be covering the BDC in great detail as the Office 12 beta cycle moves forward.

MSN Spaces Upgrade

There has been a lot of talk the last couple of days about the recent upgrade to MSN Spaces. Dare Obasanjo and the guys over at LiveSide have both done nice overviews with links to all the details.

MSN Spaces, for those who don’t know, is a Microsoft platform that allows people to quickly and easily create a blog and/or share photos on-line. This content can be updated or surfed on a variety of devices, from mobile phones to your Xbox to a PC.

Record Revenue: Is That a Good Thing?

As a new guy at Microsoft, I don’t much care about the stock price. Sure, I have some stock, and will be buying more, but I don’t have enough shares to care deeply about the price. The fact it’s been hovering around $25 for a long time doesn’t bother me as much as it might bother those folks who will be able (and willing) to retire as soon as it gets above $50 again.

I’m more concerned about how we’re doing on innovation and long-term strategy, and also how well we’re managing the business day-to-day.

Regarding the former, things are looking great. Vista is going to be the biggest step forward for Windows in a decade, and Office 12 and Sharepoint are going to rock when they ship later this year. (Hell, they rock already.)

Here’s a good example of why I’m excited about the Sharepoint/Office Server platform …

I just finished taping an interview with Kurt DelBene, the VP who runs our Office Server groups. This interview was for a newsletter that goes out to ISVs around the world, and I thought we’d be spending 5 to 10 minutes covering a high-level look at the cool new features of the Sharepoint platform.

But we got to talking about things like the new BDC and versioning concepts, support for RSS and tight email integration, enterprise content management capabilities, web parts in ASP.NET 2.0, and a bunch of other cool features, and I forgot the time. Suddenly I realized we had taped for 30 minutes, all of it packed full of interesting new information about Office Server. So now I have some editing to do!

Regarding day-to-day management of the business, here’s a good measure of that: todaywe announced 2nd-quarter earnings, which included the highest quarterly revenue in Microsoft history ($11.84 billion), and a net income for the quarter of $3.65 billion. I don’t know much about financial analysis, but I think those sorts of numbers are generally considered a good thing for a business.

Screw the stock price. For now, anyway. :-)

Champs Karting Outing

We took the TAP ISVs out to Champs Go-Karting for electric cart races tonight. I took some photos, but not nearly as many as last time. Here are a few …

Busy, Busy, Busy

After posting quite regularly since the first of the year, I’ve fallen out of the habit a bit the last few days. But there have been some pretty good reasons:

  • We’re putting on another developer workshop here in Redmond, for ISVs on the leading edge of building solutions that are tightly integrated with Office 12. It’s a great event, very educational for us as well as the attendees, but it sure eats up the days. And nights — I’m about to drive over to Champs Go-Karting, where we’re putting on an event for the developers tonight. We’re expecting a good turnout; software developers come in many shapes, sizes, and colors, but they all love to drive too fast.
  • Some of the things I’m working on right now are not bloggable. Can’t really say more than that, but it’s fun to get involved in some new types of work. And it will all be stuff I can blog about eventually, but I need to respect and accept my place in the food chain.
  • Today I had a bit of a self-induced Office meltdown. I was running the beta just fine, but got a little greedy and decided to upgrade to the latest daily build to get some of the bug fixes and enhancements that I saw on a co-worker’s machine. And I tried to do it in a hurry, which of course resulted in a big mess that I had to slow way down to get cleaned up.

But I’m back up and running, my hard drive is happily defragmenting (it really needed it after this afternoon!), and I’ll have a lot of good Office 12 technical content to write about in the next two weeks while I’m not traveling for a change.

Meanwhile, here’s something nice in the press about Microsoft’s approach to security patches. Has hell frozen over, or could it be true that we’re doing a good job of listening to customers these days?

Speaking of which, I need to get over to Champs and listen to some customers. The free beer ought to loosen up their tongues a bit; not that these guys need much help!

Botnet Boy Breaks

Today was a landmark day in the short but checkered career of 20-year-old Jeanson James Ancheta.

Until he got busted, Ancheta had been a botnet operator. He installed remote-control software on thousands of other people’s computers that enabled him to dole out tasks to those computers. Which he did, trying various approaches to herding all that computing power into an income stream, with various degrees of success. His arrest last year was a major event in the history of hacking.

Young Mr. Ancheta was lured to an FBI office in Los Angeles and captured on Thursday morning, November 3, 2005. (The following Monday, I showed up for my first day working at Microsoft.)

Today, Ancheta pled guilty.