Welcome to MSDN Blogs Sign in | Join | Help

Announcing Microsoft Hohm

So, I haven’t been blogging much over the last year or so. But, there’s a reason. I couldn’t really talk much about what I’ve been working on. Turns out, starting today, I can. This morning we announced Microsoft Hohm. Once again I’m playing the role of architect of a Microsoft start-up. This one has been loads of fun because I’ve been getting a chance to play with a ton of new technology, have had an opportunity to do a mini-degree in Electrical Engineering, and learned more about energy production and consumption than I thought I’d even want to know.

We have a few final things to work out over the next few days, so go to our home page, add your email address, and watch this space for more about what we learn.

By the way, my home falls below the “efficient” home in my area, mainly because of all of the work I’ve done on it over the last few years. Where does yours fall?

Posted by mikemill | 0 Comments
Filed under: ,

Why are thermostats like a VCR?

Actually, I don’t have an answer. For some reason thermostats still seem to follow a 1980s user paradigm. There are days where a simple T-50 (you know, the round thermostat) model would work tremendously better. I needed to change my thermostat settings, first to deal with the newer insulation and windows, and second to deal with out of town situations. Both changes require setting the “program” for multiple days.

My thermostat is powered by the 24VAC provided by the HVAC system and doesn’t use a battery backup. That’s pretty typical. But, it means that there isn’t an “armchair” programming mode, and that means I need to stand in front of the device running through an arcane sequence of key presses. Sure, after three or four cycles, assuming I want every day to be just like every other day (and I don’t, weekends are clearly different, but so are a few of the week days), my fingers get into a groove and I can just press Next Day, Program, Copy, Save. However, those buttons are in a criss cross pattern – a big X – and it’s unnatural feeling to press them given their placement. And if that groove gets interrupted, all bets are off.

There are days where I’m convinced I’m going to walk by the thermostat and see it flashing 12:00 at me in warm LED red. Really. I’m convinced of it. For those of you too young to remember VCRs, before DVD, before TiVo, before DVR, they were devices capable of recording your favorite TV shows as long as your either had a Ph.D in VCR programming or were sitting in front of the TV and pressed the Record button right when you were ready.

It wasn’t a pretty picture. And because it wasn’t a pretty picture, nobody could ever figure out how to set the clocks, so they always flashed 12:00. (And if you can’t figure out how to set the clock, you certainly can’t tell it to record Sunday’s football game.)

Yeah, I know, I can buy a remotely controlled thermostat, or one of those “armchair” models that lets me take the thing off the wall and program it from the comfort of my favorite chair (in better light, with a martini in hand). But, the remote control versions are really expensive or have some weird requirement to install software on my PC or take a “programming remote control” over to that same armchair. If the experience wasn’t so horrible the armchair model wouldn’t be bad, but it just moves the discomfort from the hallway to the chair. I would still need to do the criss cross thing.

I want to make my house comfortable, I want to save money, and I want to save the planet by using less energy. My thermostat has a big sticker on the box that says it’ll do that for me. I don’t believe it right now.

Posted by mikemill | 0 Comments
Filed under: ,

Temperature inversion

Well, turns out doing a bunch of home “tightening” has some interesting effects on the climate in the house (and helped locate a few external leaks that were missed). My house is what’s called a tri-level. That is you enter on the main floor which has all the common living spaces, and can go up or down a half-flight of stairs to the bedrooms / office area or to the media room. Well, the rooms that used to be cold (defying logic and physics) were the upstairs (warm air is supposed to rise, right?) are now the warm rooms, and vice versa. So now the office and bedrooms upstairs are almost uncomfortably warm when the downstairs rooms are at a comfy 68°F. Turns out that the thermostat in our house is located near the stairs, but on the main floor. So, the main floor follows all the rules and seems cold when you walk down to it.

Sounds like it’s time to revisit the air return ducts (one at the top of the stairs and one downstairs in the media room) to see if they can be tweaked to move the right air at the right time. Or, time to figure out how to tweak the thermostat so it does the right thing. And no, my house is too small to have multiple zones (trust me, it’s small for the area, and small in general).

By the way, those external leaks were places where the old cable TV lines were pulled into rooms, but the siding wasn’t replaced during remodels we’ve been doing. There was an actual paper-moving draft in my kitchen a few days ago coming from between two upper cabinets. Yup, there was a hole on the outside wall right behind that. I still don’t know where the path is, but plugging the source helped.

Posted by mikemill | 0 Comments
Filed under: ,

It’s getting warmer in Bellevue?

I’ve been paying attention to two different things about my house for the last year or so (while I’ve gone dark). The first is that it’s unusually cold in parts of the house, the house is showing its age, and the single-pane windows always seem to be wet. The second is that it costs me an arm and a leg to keep the house warm or cool depending on the time of the year.

So, last week I had a crew out to do an insulation check. Turns out that there really wasn’t any. The walls, except where we had remodeled, were empty (and cold to the touch), and the ceiling above the bedroom area had something like an R8. Oh yeah, and none of the knee walls – those vertical walls between living space and cold space, like in the attic – had insulation. None. Just drywall and paint between.

Step one was to fix that problem because it’s the least expensive, there’s an energy rebate available from my local energy provider (PSE), it’s quick, and it has immediate benefit. Yeah, immediate. The first night after having the new insulation blown into the attic and stuffed through little holes in the outside walls was uncomfortably warm.

The next step was to remove all those single-pane, aluminum framed windows with something that is energy efficient. We noticed that the rooms where we had already done windows – the living room, kitchen, and other main-floor spaces – had a very different feel to them already. No drafts, no damp windows, no uncomfortable spots.

Side benefit – the new windows are exactly the same size as the old windows, but the egress size was more than doubled, that means that in case of an emergency where we need to get out of the house ASAP we can easily do so without squeezing out of the old opening. Oh, and if we open the windows upstairs there’s a breeze now. Ah, fresh air.

I’m looking forward to seeing a few of my energy bills this winter to see what the bottom line looks like. I suspect that this will be a long term investment (about $12k worth) that will take a few years to pay back, but the impact on my family’s comfort and the environment is well worth it.

Call me a greenie cheapskate if you want. But this is one of those cases where spending (a lot of) money is well worth it.

Posted by mikemill | 3 Comments
Filed under: ,

I've decided that I finally really give up on stored procedures

As much as I want to play the game and use stored procedures for data access logic, time and time again I run into yet anothe rissue where I get bit. I've always pushed back on developers who want to use stored procedures for any number of reasons. There's a great list of reasons here. This time it turns out not to be the usual reasons - this time it's much simpler: there's really no way to make the whole deployment story scale in any way. As soon as you have more than one database (i.e. a multi-tenant application hitting a "private" database) you WILL run into a problem when you need to fix the always present data access bug.

Ugh... why can't I have a single place where I can put all my data access logic? Like, maybe, just maybe, a shared database holding no structure, only proc definitions? Or, maybe a DLL. Yeah, that'll do it, I'll use a DLL with dynamic SQL.

Posted by mikemill | 5 Comments

Too funny

Yeah, yeah, I've been really quiet for a really long time. I know. I'm sorry. But, I've been busy with my new venture in MSR. I can't talk about much of it right now, even our internal email messages go through DRM. Let's just say that I've been having fun with hardware (ya know, soldering and stuff), embedded systems (not CE), and lots of toys.

Anyway, the point of popping my head up is to try to figure out why the sudden increase in CRM-related traffic into my inbox. Seriously, it's like I started over or started posting a bunch of interesting things about CRM. It's been a long time - I left when we were just thinking about what CRM V4.0 was going to look like under the covers (and it even looks like I thought it might). But nothing since then. Anyone else have any idea why I'm suddenly popular again?

I'll post a lot more information about my new project in the coming months and may even start posting stuff about the group I belong to independent of that.

Posted by mikemill | 0 Comments

GP's been drinking the Kool-aid again

I really respect GP's opinions on a lot of SaaS-related issues, but this one might be pushing my boundaries a little bit. GP is starting to confuse a rich client experience sitting on some "free" cloud storage as an S+S story. I don't know about this. It's a very small step from storing a document on a file server somewhere, anywhere. The only difference is that the "save" API used is slightly different.

 

Now, if something happened to GP's document once it was stored, or even better, while he was editing it. And that something happened because GP had signed up for a cloud-based service that added value to the client, then I'd have to say have another sip. But, this is not what I think of when I think of S+S (disclosure: I'm not part of the DPE organization that truly believes in S+S and I'm no longer part of the MBS organization that wanted to believe in S+S).

 

The "light-up" scenario just doesn't cut it for me. I want SaaS - either the stuff runs in the cloud and that's my primary interaction point, or the cloud is completely indispensible like in IM, or we finally start building service-oriented applications where stuff just runs and the fabric figures out where things happen. But, saving an Office document to a SharePoint site? Not so SaaS.

Not surprising, but I have nothing to say

It's not going to come as a surprise to anyone who used to read my blog and has noticed that it's been very quite. I realized that I really have nothing to say when I'm not working on a project that I can say nothing about. I have been working on a few interesting projects over the last two years, but neither one is something that I can publicly discuss. I've found that makes keeping my blog current particularly difficult.

I'll try to keep writing here as I move on to my next project - which is again extremely MSFT-only at this point. Hopefully I can find a way to talk about the different ways we're solving general problems in the space without giving away what it is there we're actually going to work on. How's that for promising and saying nothing.

Wow, just sitting here trying to explain why I have nothing to say is hard. I wonder what's happened that I'm gotten quiet. Weird...

Posted by mikemill | 0 Comments
Filed under:

SaaS: Collaboration

Yesterday I set the stage for the 5Cs of Saas: collaboration, community, connectedness, completeness, and changeability. Today I'm going to focus on collaboration in SaaS. As I mentioned yesterday our team found, through customer interviews and research, that a motivating factor - one of the primary factors - for SaaS purchases is to allow seamless collaboration between parties in arbitrary (but well-defined) roles.

 

Well, what exactly does this mean? From our perspective it means that an actor using the software has full, role-specific privileges and experiences directly within the software. That is, there's no concept of a "portal" or any other external "connector" to the software. It also means that the provisioning of that experience is seamless to the actor doing the provisioning.

 

An example here might help explain this. Let's say we have a customer support representative using a customer service application. This person receives a phone call or other trigger causing them to describe a customer to the application. Now, in a typical application, this means that there's a user, the customer service representative, and a customer. These two concepts are typically quite distinct in their semantics. The user has access to the application and, by definition, can use it. The customer is a data point somewhere in the application represented by a row in a database, but has been granted no additional rights.

 

In a collaborative world this model breaks down. There's a distinct difference in the caste model: in some way the user is a higher caste entity than the customer. The user can create new data items and fully interact in business processes. The customer is disconnected from the application and may be able to "interact" via some external connector (for example receipt of an email message or a message exchange).

 

What we found was that our customers want us to remove this divide. They want to see the customer as a first-class, privileged actor in the application. But, and this is important, they do not want the customer to be a user in the application in a way that either uses a license or requires a specific provisioning step. As you might see we have a bit of a dilemma here. Most business software written to date enforces this divide. We can't use the existing models.

 

What can we do about this? Well, we could fake it and create an additional layer on top of the business application which provides some level of interaction for the customer. But, this means that any customization that takes place in the core application must be duplicated in this additional layer. It's not only that, but any business logic or business process which is enacted in the core application must be augmented so that it explicitly takes this additional layer into account; and this business logic must typically be duplicated, often in a different way, in the additional layer. This doesn't sound like a good thing.

 

What customers want is a single application, with defined identities, playing well-understood roles to collaborate around a given business process. Additional layers only mean additional work. That is, customers want to treat their partners as if they are first class citizens in the business process.

Posted by mikemill | 0 Comments

What does SaaS mean (to me)

I've been thinking about this software-as-a-service thing for many, many years now (prior to joining MSFT I wrote one of the first internet chat applications with my buddy Scott, and later on I worked on the leading internet-delivered skills assessment system). Clearly there are different camps and that's a good thing. It means we understand that there are different classes of needs and desires.

 

The recent push toward social networking (hmm…) has its roots in the individual or casual group. That is, social applications are about connecting people and groups based less on their work affiliations and more on those intangibles: likes, wants, and desire to belong. This aspect of the new internet has bled nicely into other application spaces, like the one that I work in.

 

My work for the last few years has been around creating great experiences in line of business applications. These applications are usually known more by their acronyms: CRM, ERP, ERM, HRM, etc. It's also interesting to note that these applications traditionally are not productivity applications such as Office, but are more about helping to automate certain business operations.

 

It's this concept of user though that made me start thinking hard about how social networking applications are changing the face of LOB applications. For the last year my team has been doing research into SaaS LOB applications to understand why customers would consider purchasing them instead of traditional on-premise software. There are a few easily guessable and recognizable patterns in the purchase decision such as security, cost-cutting, and availability. These were aspects that we assumed customers were looking for and we weren't overly surprised to find them.

 

What was surprising, at least to a number of people on the team (I'm not saying I knew this, but I suspected it) was that customers were beginning to purchase SaaS because they expected to collaborate seamlessly with their trusted partners. This was the basis for the work that my previous team was doing last summer and fall. What's interesting about it is that it goes against the core design of (nearly) every LOB application ever built.

 

I think of SaaS in terms of some additional intangibles: collaboration, community, connectedness, completeness, and changeability (the 5 Cs for now). For me it's not about multi-tenant architectures, or feature sets, or any of the other things that we as architects typically worry about. It's about how to create great experiences for businesses. I'll talk more about the 5 Cs over the next week or so and try to explain how this new web is having an impact on the status quo.

What is an application platform?

I'm working on a short paper / presentation that describes my position on what an application platform is, the services it provides, and what it does for the application developer. This is this initial outline. This doesn't talk about a specific (LOB) application platform, but instead talks about a set of requirements that a platform should meet. One of the things that started me down this path was noticing partners using the Microsoft CRM application as a platform.  I'm curious to understand how other people think about this "problem" and whether there's any benefit in pursuing the definition.

 

I want to set the stage by talking about what I mean by "application" first. This paper will look at large-scale line of business applications. This isn't to say that productivity applications such as Office aren't applications, it's just that they're not the class of application that necessarily has this set of requirements.

     

Diversion

  1. Line of business applications
    • Tools for automating the business process
  2. Productivity applications
    • Tools for executing business tasks

     

 Caveat

  • A platform isn’t useful without an application
  • It’s not possible to determine requirements without an application
  • Most people aren’t interested in buying a platform – they want an application
  • An application is the start, customers and partners want a solution

 

Then I'll talk about the necessary and sufficient requirements for a platform. I'm trying to keep this list as short as possible because most application logic tends to leak "down" into a platform thereby making the platform less applicable to other applications.

Platform services

  1. Identity and roles
  2. Rich type library
  3. Security
  4. Storage and persistence
  5. Extensibility
  6. Process identification and execution
  7. Solution packaging and containment
  8. Deployment models
  9.  

Identity and roles

  1. What is a “user” of the system?
  2. Collaboration scenarios drive SaaS
  3. Roles come in many flavors
    • Work roles (position), security roles, reporting structures
  4. Roles are facets of an identity
  5. Relationships between roles are primary
  6.  

Rich type library

  1. Meta-types
    • Constituents
      • party, role, relationship, contactMethod
    • Collaborations
      • collaboration, interaction, goal, participation, structuredDocument
    • Unstructured collateral
      • simpleDocument, annotation
    • Opaque data
      • Reference data, lookup tables, auditing, etc.
  2. Data types
    • enumerations, elemental types, higher-level types

     

Security

  1. Authorization and authentication
  2. Security roles are privilege collections
  3. Privileges provide access
    • User interface, data, process, tasks
  4. Security roles trump work roles
  5. Storage and persistence

  6. Storage structure is schema independent
    • From an application perspective
  7. Storage is disconnected from logic
    • From an application perspective
  8. The platform controls persistence
    • Types DO NOT know how to persist themselves

     

Extensibility

  1. Schema
    • Types and storage
  2. Presentation
    • Navigation
    • Data capture
    • Clients and user interface
  3. Process
    • Business rules (simple and compound validation)
    • Business logic (“big” and “little” process definition)
    • Process execution structures (message definitions)

     

Process identification and execution

  1. Message definition and execution
  2. Actor identification by identity and role
  3. Task and work lists
  4. Loosely bound to an extreme
  5. Declarative vs. imperative
  6. Long-running business processes
  7. Transactional business logic
  8. One entry point to execute processes
  9.  

Solution packaging and containment

  1. Everything is an extension
    • Schema, process, presentation
  2. All extensions are named and grouped
    • Names are like CLR strong names
  3. Packages are like applications or modules
  4.  

Deployment models

  1. Multi-tenancy is important
  2. Multi-language per tenant
  3. Presentation is independent of the platform
    • But the platform can provide presentation tools

My WPC schedule

Wow, the calendar system on the WPC site isn't quite what I had expected. So, I'm going to keep my calendar in this posting. I'll update this as I pick times. Drop me a note if you want to meet and pick an open slot that works for you. The times listed here are already booked. Sorry.

(updated 7/6/07 10:30am PDT) 

I arrive late on Monday. Well, later anyway. I get in around 9pm or so. I suppose I could be convinced to meet for drinks after I get checked in.

Tuesday July 10th
9:00 to 9:30 with Anne S at Breakfast at Convention Center
2:30 to 3:00 with Ryan T at Convention Center
3:00 to 3:30 with Peter H at Table 140
4:00 to 5:00 with Mike R at Convention Center

Wednesday July 11th
11:30 to 1:00 with RT at Hyatt
12:00 to 1:00 with John O for Lunch at Convention Center
1:30 to 2:00 with RT at Convention Center
3:00 to 3:30 with Mike S and Jim S at Convention Center
3:30 with Rob H and RT at Convention Center

Thursday July 12th
10:00 to 10:30 with David K, Jason H, and Mike B at Convention Center
3:00 to 3:30 with RT at Convention Center

I'm leaving for the airport at 3:00 on Thursday

Posted by mikemill | 0 Comments

WPC here I come

I've finally registered for this year's WPC and I'm extending an invitation to MBS customers and partners to come chat with my team about some of our plans. We're currently putting together a short presentation to talk about what we're doing and how we think it impacts the MBS community. In return we're asking you to complete a short survey -- the plan is that is fits on a single piece of paper. If you're interested in participating, or just want to catch up, drop me a note and we'll set something up.

Posted by mikemill | 0 Comments
Filed under:

Oh yeah, and the core of LOB applications *is* financials

So it took me seven years to come to this realization. Financials is a hard requirement for just about any line of business application. Without at least core financials it's impossible to really hit day-to-day scenarios that make business run better. Apologies to Jeff and the rest of the Green team. You were right.

Posted by mikemill | 0 Comments
Filed under:

Why MS-CRM isn't a CRM product

For the longest time I've held the belief that the underlying infrastructure behind MS-CRM was there to support arbitrary business applications. It's funny, for the last six months I've been betting my career on that belief, and even more today, I truly believe that the core value proposition is that CRM is so extensible that its CRM-ness becomes secondary to how and why people buy it.

 

I've been talking to a number of customers and partners who have purchased CRM not for the CRM aspects at all (although I suspect they end up using quite of bit of the functionality) but for the platform components. It seems to have come full circle - the CRM product was, a very long time ago (in industry terms) designed to be the platform on which bCentral applications were based. After a short segue into on-premise core CRM functionality where the extension capabilities were disabled or hidden, the product is really progressing into a true platform.

 

It'll be interesting to see what happens over the next two releases. One that's been talked about is called Titan and that's the one that I think of as the core platform. I'm looking forward to seeing what that team can provide to the rest of Microsoft, and possibly to the industry, in terms of platform. Watch out SharePoint, there's a new kid in town and that kid knows all about business application requirements.

 

Posted by mikemill | 1 Comments
Filed under:
More Posts Next page »
 
Page view tracker