Category Archives: 5647

Here’s what’s right with Windows 8

Summary: Windows 8 is a massive gamble for Microsoft, and right now I can see the potential for it to be one of the most successful operating system releases ever.

A friend of mine pointed me to this article by Adrian Kingsley-Hughes. He points out some issues about Windows 8 and comes to the summary: “Windows 8 is a massive gamble for Microsoft, and right now I can see the potential for it to fail harder than Windows Vista did.”

He’s right. It might fail massively. Vista was poorly executed and a forced undesired changes that annoyed a lot of people. It was forced at one point, which made people angry. People hated Vista. If Windows 8 is poorly executed, people won’t get the paradigm shift, they might hate it and it might fail.  If they are moronic enough to stop Windows 7 sales, they will probably make people angry.

But, assuming the final Windows 8 is well executed, I think it has the potential to be a massive success. Looking first at Adrian’s points:

“No method to make the Classic desktop the default”

Ok, Microsoft has not overcome its hubris. I’d love it if Microsoft simply offered the classic desktop as an option.  Point goes against  Windows 8.

“Metro doesn’t work for everything”

Of course Metro doesn’t work for everything. It shouldn’t.  As an application developer I’m looking closely at what apps should embrace Metro, what apps should shift to application specific chrome in HTML 5 browser apps, and what apps should stay in the classic desktop. It would be silly to think there is a single answer for all applications.  I have seen positively amazing Metro apps that may change the way you think about information.  I’ve also complained loudly about some Metro-like changes to the Visual Studio developer environment that still makes sense in classic Windows style. Windows 8 allows applications to live in the world that suits them best. Point goes to irrelevant.

“No apparent Kinect support”

Kudos to Adrian for seeing how important Kinect is in the long haul! I think it’s safe to see this as a figment of the fact we’re looking at a consumer preview. Exactly when Kinect support releases for Win 8 is unclear, but I’m not at all worried about its inclusion. Point goes to Win 8 because having Kinect support will be very cool.

“Inefficiencies everywhere”

Inefficiency and resulting discomfort is the heart of question with Win 8. But there are also improved efficiencies. It’s very fast to type part of an application name and there are scenarios where Win 8 is faster. Hopefully the consumer preview will let Microsoft tune these scenarios. Windows 8 is well executed if it is stable and has more efficiency gains than losses.  This is going to be one of two points that will decide the game.

“Live tiles may not be that live”

And they may be super live. Tiles are far more integrated at a software and a user experience level than gadgets.  Applications will be competing hard for the first page of your Metro start menu. They will have to add value to be there. The biggest different between gadgets and tiles is that applications important to you will be searching for value to add to their tiles. Applications will truly care about displaying information when they are not “open” and expect to see very cool stuff. Everyone will have a “dashboard” into their world. Point goes to Win 8.

And to look at other points I think are important regarding Win 8 success

Application development support

An operating system is like the theater, lighting, sound, and air conditioning system for a theatrical production. If it’s wrong, your experience will suck and you won’t suggest the play itself to your friends. Win 8 appears to be a good theater. This lays the groundwork for you to immerse yourself in the play itself – for you to interact with your applications on a richer level. This is why consumers have embraced smart phones – they allow fundamentally richer and more intimate applicatoin interactions. Microsoft has done a good, although imperfect, job of empowering developers with an exciting round of improved tools and technology access. The next phase is to get new thinking and new techniques embraced by a broad swath of developers so there are awesome Win 8 applications on the tablet, and Metro justifying tiles on the desktop.  This is the second point that will decide the game.


What I’m not so sure of is Win 8’s success on the tablet. How many people want a full powered laptop replacement tablet with a short battery life? How many want a lower power long battery life inexpensive ARM based tablet? How well will Windows 8 on ARM tablets be executed and what apps will be available for it? How will the security model integrate with existing enterprise security models for that market? What do consumers ultimately want in this market sector? How well will the hardware vendors deliver? What will the pricing/bundling/carrier story for data plans be? There are boatloads of outstanding questions that will affect Win 8 success in the tablet market.

Final thougts

I agree with a lot of what Adrian said. I really felt that it was only part of the story. The gamble is not between ho-hum and a huge loss. It’s a gamble between a big win and a big loss from Microsoft’s perspective. This is anything but a ho-hum release. From the consumer perspective there’s not much of a gamble – you’ve got an awesome operating system in Win 7. With luck, Microsoft will carry this into a well-executed final release of Windows 8 that builds on the consumer preview and shaves off some of the previews warts. If not, wait for them to get it right in Win 9.

Entity Framework Petition

I feel I need to respond to the “Vote of No Confidence” on the Entity Framework.

I have little interest in petitions. They are by nature backwards looking. To get a group of people to sign onto something they have to either understand it or be driven by the charisma of the leaders. In this case, I assume the first. The contents of the petition must be stable and old enough that everyone has worked out the details. That’s the case with all the technical petitions I can think of, although admittedly that’s just a handful like the VB6 petition.

When it comes to the appalling scenario where we have at least 14 major categories of data access strategies in use in new projects today, we need the Microsoft teams to look forward and be creative in combining the best set of techniques – NOT pick one of the existing strategies and latch on to it because it came from the group that yelled the loudest.

Entity approaches are good because they better separate the business and data sides of our middle tiers. But they are also inherently difficult and inaccessible to most programmers. Entity Framework’s goal must be to bridge this gap. That means being extremely creative in picking its battles to reach toward the real world developer – not copy a strategy that is available to that developer today and fails (the combination of NHibernate and other tools used in a specific style of development). The failure is not because NHibernate is an Open Source tool. It’s not because people don’t know about it. If it worked in the majority of shops it would burn through our industry like wildfire. Why don’t you use them? Because they do not fit your development environment! This is not an easy problem that someone’s solved and Microsoft is looking the other way. It’s an incredibly hard problem – how do I know? I’ve been working on occasionally novel solutions to the problems for 20 years.

Entity Framework has issues. This is not news. It’s not even news to the Entity Framework team.

– EF is not a failure because it doesn’t fit TDD development

– EF is not a failure because business logic goes into partial classes

– EF is not a failure because it treats data as an important part of biz objects

– EF is not a failure because it accepts that most people do data first development

– EF is not a failure because lazy loading is hard – lazy loading can destroy performance

– EF is not a failure because its design tools are 1.0 level

– EF is not a failure because it has a poor strategy for merging into source control

All of these are potentially issues, but it’s critical, essential, I cannot yell this loud enough – Entity Frameworks must not be designed for the group that is best organized and screams the loudest. This already happened once with the disastrous IPOCO attempt that helped no one and wasted a lot of manpower that could have improved mapping and provided better metadata.

But then I’m sort of caught in a corner, because an important point of the petition is correct. Be cautions with EF. Do not jump into Entity Framework because of Microsoft marketing. It’s a tough platform that will get a little easier when the current spasm of books comes out. The niche is pretty narrow and if you step off the boards, the quicksand can be pretty deep. Treat it like what it is – an amazingly large and complex project that is being released as a 1.0 product. It’s an infant. The metadata and mapping still stink. Look at it as Microsoft’s current future direction, but remember how many current future directions we’ve had over the last 15 years (around ten) and remain skeptical.

Liking a User Interface

I think it’s important to differentiate between a likable user interface and a good one. A user interface can be likable and bad. It can be good and not likable.

I got a comment from my last post that said because someone liked the UI it was good. I disagree. A good UI supports you in all actions, at all phases of learning the program. Because it happens to fit the particular set of features you use now and the state in learning you are in now does not, ever, make an interface a good interface.

And I did not mean to imply that the Office 2007 user interface was entirely without merit. It attempts to address the fact we’d outgrown graphic toolbuttons, and toolbars as the sole organizational item. Those of us that could organize our toolbars pretty much liked them. Other users were often stuck with menus.

But menus have been the backbone of all of our learning programs and, as I understand it, screen readers. Bill McCarthy has a great post with an exercise to show you how deeply screwed up Office 2007 is to the Windows reader. He compares it to Notepad. If someone can compare to Office XP and post, I’ll be happy to link. Accessibility is important on two levels – it certainly retains its focused on people that can be enabled or disabled by specifics of the world around them.

If we are average in sight and dexterity, we expect computers to react to our own level of ability – we expect that the mouse adjust to our dexterity, the keyboard sized to our finger reach, and the font to be a readable size. If we are slightly off average, we compensate with larger fonts or a large trackball. If we fall outside the anticipated norms, we fall off a cliff, as shown in Bill’s exercise. Computers have the capacity to be a more level playing field- to extend enabling further.

And the second level at which accessibility is important is during the lifetime of people with average abilities. Almost all of us will have limited ability when we are young and old. Many of us will pass through stages of temporary limited ability. A few years ago when my arm got wrecked I had my mom (a programmer in her own right) reformat my code. I could write the code, but I couldn’t quite handle arrangng the declarations with one parameter per line the way I wanted to deliver.

More attention needs to be paid to making computers physically easier to use. It will also save some people from life changing RSI injuries.

Which was one point of the post.

The other was that much as the Office 2007 user interface sucks, I do not think it is beyond redemption.

– Add back the menus as an option and the default appearance when you start

– Raise the logo to a button and have a timed “look here” toolbar/arrow (although I’d really prefer to see those things in a ribbon page)

– Have the Alt popups also include short cut keys (Ctl-I, Ctl-B) so these are discoverable

– Fix accessibility, which might be a fully separate user interface for screen readers

– Allow the font on the ribbon to be changed

– Have the ribbon bar learn my habits. Do not collapse Word Count which I use daily.

– Re-prioritize the Home ribbon page so the ugly and rarely useful styles take up ½ the screen width and Cut/Copy, and all the very common formatting items remain small icons

– Allow me to promote commonly used items to the ribbon. I use Paste/Special/Unformatted all the time and its buried

– Rethink the ribbon in light of the wasted space on each side of the document on a standard monitor. Pull things like styles back into sidebars. Use this space with abandon. Consider allowing me to move ribbon pages there, or at the very least create a magnificently large and beautiful set of shortcuts.

– Fix the Quick Access toolbar. It’s a good idea gone bad. It’s as far as you can get onscreen from where I’m usually typing, there are not displayed shortcuts, and it uses small icons. And absolute ton of work could be done here.

And those are the thoughts of someone not a professional UI person. If the Ribbon solved accessibility, used space effectively, morphed automatically to how I work, it does have potential.

But right now, it sucks.

The Elephant in the Room

I have a hundred (ok dozen) finished not quite ready blog posts. Except it’s hard to finish them because I don’t particularly like saying hard things. Negative things. Some of which will be brutal to people I have enormous respect for and consider friends.

I’ll get back to the technical things. It’s just the code gen stuff has been evolving at a background level in real projects and I need to work out verbalizing the core, the best practices of the details. And, my column takes up some of my Tips and Tricks type stuff.

This is one of a series of passion posts – posts about how deeply screwed up our industry is becoming because we are tied to Microsoft and they are becoming rather screwed up.

Let me start with someone I don’t know, that way it’s easier for me.

Redmond Developer published a cover story regarding Steven Sinofsky replacing Jim Allchin as head of the Windows team. That’s cool. Let Jim move on to whatever pleases him. Maybe he’ll have time for lunch as he’s second on my list of people I’d like to meet (and no, neither Gates nor Ballmer is first).

The entire article was about Sinofsky “holding his cards close” – meaning we don’t know what’s coming in Windows 7. First, I agree completely with the article. We should rise in revolt at any attempt to remove transparency from the Microsoft development cycle.

Microsoft wishes to believe it is just a company making money. It is not. Perceptions to that affect are bad for us and bad for Microsoft stockholders. Microsoft’s job is not to create great new products. Its job is to lead an ecosystem with great new products. Out here, that’s not a subtle difference. Microsoft decisions affect trillions of dollars in investment and assets for companies around the world. They have an absolute obligation to be transparent and if they do not continue to lead through transparency – which is the only way to ride the tornado they created – we must call the bluff that we have no options. We are certainly not there now, but we as the consumers must not bow down to the vision that we have no choices. As individuals today, we may have little choice. But as an industry, we can create choice.

It is imperative that Microsoft lead by transparency.

But the article ignores the elephant in the room. Sinofsky came from Office – unless my timeline is warped – he brought you Office 2007. Let me choose the nicest words possible: Office 2007 is an abomination. Do not believe for one second that this was an attempt to make your life easier. Do not believe that any honest usability lab could have been shown this UI to be useful to you. And for reference I use it and have for over a year, so this is not a comment on the initial shock factor. Nor will I waste your time with the stupidities in the interface. Let’s jump to why.

It was an attempt to protect Office – at your expense. Open Office is pretty damn good. It’s run on most of the computers in my home. We exchange documents with Office on a regular basis. There is no true force keeping people on Office for the vast majority of document and spreadsheet creation. Microsoft knows this. So it created a user interface that it believes it can protect. If you don’t believe me, look at what you have to sign to use the interface.

Ha! Let’s put the features you’re guaranteed to use every day under a logo that does not look like a button. Mom becomes the geek of her retirement community whispering that secret. Let’s backtrack on accessibility – don’t let them change font size. Let’s have the only discoverable way to make italics be Alt-H, Alt-2. OK, we’ll leave Ctl-I but to discover it (previously in the menu caption) make them type Alt-F, Alt-I (you can’t tell if that’s a 1 or the cap letter I on screen either), six down arrows, enter, Alt-t, one down arrow (assuming you know which tab Italics is on), tab, two down arrows. (Think you’ll never have a stroke or skiing accident?) Oh, and does any of this work right to left yet? Full stop. I could go blog post after blog post on what’s wrong with the Office UI. This UI was created to be different and protectable, not better for you.

The core issue is that Microsoft put the person in charge of the most extreme shift to controlling the ecosystem since Lotus and AmTrak fought over the sliding bar interface (if you don’t get that joke, never mind). Protection of a grossly overpriced Office superceded the good of the ecosystem. And the person in charge of that mess is now running Windows. You worried? Add in that he is being allowed to reverse a companywide shift to transparency apparently started by Ballmer himself eight years ago.

The shift to transparency is couched in the Karl Rovian phrase “translucency” meaning secrecy.

Transparency means “my people will not be afraid to talk to your people.” I’ve only seen two fallouts from transparency: Insider’s groups whine a little about not having much warning ahead of the public (It is beautifully short, often at zero) and people being disappointed when Microsoft backtracked, particularly on Vista, previously known as Longhorn.

Hey, I was there. I drove through fire to get to the Longhorn PDC and ice to get home. Microsoft got explicit feedback (from me and many others) that it was too grandiose a plan “even if you could do it, which you can’t, we can’t uptake it.” The shrinking of Longhorn was the right thing to do and the stupid thing was that they said they could do it all. You don’t fix that by removing transparency. In fact the transparency around Longhorn was important – there was a lot of feedback regarding which features had marginal value like the whole let’s do the file system in SQL so we can organize our photographs stuff.

Translucency means “I will control what you know.” It means things aren’t public and there isn’t a route for you to give feedback until a beta stage – in case you haven’t noticed, betas happen at feature complete meaning your input is explicitly excluded in terms of shaping the product. It means people can’t talk. And, it is not the solution for the issues given. Just look at Charlie Calvert or Paul Vick’s blog. They don’t say “This is what we’re going to do.” They say “this is what we’re thinking about.” It’s transparency with honesty and realism. And it gives you an opportunity to shape the product in public discussions. It wasn’t transparency that led to Vista disappointment; it was a lack of honest assessment of reality.

This is getting long, but I want to answer the 89 people that have already started writing comments that Microsoft is a company and is in the business to make money. That is totally true. But, as the keeper of the ecosystem, they make money by managing the ecosystem to the ecosystem’s advantage. They cannot help but make money if the Microsoft ecosystem is healthy. They will wither as a natural result if the ecosystem is damaged, no matter how they contrive to exploit the dying ecosystem. It cannot be any other way. Trying to protect the ridiculous price of Office with a unique but terrible UI metaphor to perpetuate the myth that people must use Office is a disservice to shareholders. Hiding the future of Windows 7 prohibits us giving the feedback. Here it is: the most important thing in Windows 7 is to get Vista right: fix the driver issues for legacy hardware, improve performance, fix a few annoying bugs like that stupid toast the details layout, keep up the improvements in security. Hmm. That’s about it. Market it showing off the cool features its already has and only throw in new things that work really well.

The most valuable thing Microsoft could do for its future position and the ecosystem would be a commitment that Vista will be compatible with all existing hardware and to write the drivers themselves if necessary. Twenty five years ago, in the midst of the Xerox PC debacle, a tiny little company in Houston took on IBM by promising if software didn’t run on its OS, they’d fix it. Guess who? That’s a powerful promise. If Microsoft can’t make that promise on drivers, they screwed up and need to fix it in Windows 7.

Either that or they need to plan a decade long strategy for uptake, including ongoing availability and upgrades to XP.

If the Windows team was transparent, showing us flashy features, our answer would be “for god’s sake, just make Vista work well”.

This is your ecosystem. Don’t stick your head in the sand. Pay attention to what’s going on. Talk about it. Scream about it.

PS. I don’t know how widely used the “elephant in the room” metaphor is. It means we have something so big we can’t be unaware of it, but at the same time, we’re avoiding talking about it.

Comments Fixed

For someone that writes software for a living, I have a remarkably hard time using it. I would not have expected “Filter: Ignore” to display no new comments. Ignoring a filter would be more like showing everything.

Happily I have friends that are as patient as I am confused. Thanks to Bill McCarthy and Susan Bradley (who reset my password which was lost in the bowels of my system and I wanted to switch to Live Writer) my blog is slightly more functional.

My apologies to the folks that wrote comments that I seemingly ignored for the last several weeks. They should be fixed, and please let me know if you have difficulties.

I’m still approving anonymous comments so that will sometimes take a while. Non-anonymous comments go live immediately. Unless I start getting spammed too badly.

Minnesota VSTS User Group – Code Generation in 2008

I’m stepping out of my comfy sandbox again. Not only am I going to Minnesota in February, but I’m also talking to a VSTS user group – to remember that it’s not just about code.

You can get more information here.

I am really looking forward to this talk and sharing perspectives with people that I’m hoping connect on some of the process questions about code generation. While I dropped the ball on updating the abstract, this talk won’t just be templating techniques – I’ll spend a good bit of time on the research I’ve been doing moving to an activity metaphor for code generation – raising above the simple process declarations. This is very fun stuff and I’m excited to find a group interested in sharing it. If you’re in the area, please come by.

Los Angeles Masters Series – Workflow on Dec. 1

I’ll also be doing an all day “Introduction to Windows Workflow” talk on Saturday for the Los Angeles .NET Developers Group . If you’re in the area, or can get a great weekend flight rate in, it’s a fabulous deal. I call it “Introduction” because there’s still so much we’re all learning about workflow. But this will be much more than a little drag drop. I’ll be specifically focusing on architecture guidelines that I want people to work with from their very first workflows. I’ll be looking at Why as much as How. I’m also available to give workflow sessions in your organization if you can’t make it to LA. The link for the LA event is and I don’t think it is sold out yet.

I’ll be at DevTeach this week. If you’re there, drop by and say Hi! Conferences each have distinct personalities. DevConnections was intense in Las Vegas early this month and I know I walked right past at least one friend without seeing them because my brain was elsewhere. I tend to push myself hardest at DevConnections. DevTeach and SDC (Amseterdam) are much more relaxed for me and I’m looking forward to a great week.  I’m talking on three subjects I enjoy – WPF controls, WF activities, and What’s New in C#. I didn’t manage to get a single conference to let me do both C# and VB new stuff this fall, but I did it at two conferences. I believe in being bilingual.

Next week I’m in Roanoke and then California Maryland. If you can make those user groups, it will be great to see you. That’s my party down ending to an insane quarter. The last of 27 speeches in 90 days. I’ll spend that weekend hanging with some old friends’ labs near Charlottesville and meeting their nearly grown kids for the first time. A totally awesome ending to what’s been a great quarter. I’ve got to be the luckiest person on earth.



DevConnections Orlando

I’m happy to be back at DevConnections in Orlando April 20-23rd. We’ll be at the Marriott again which is big enough to hold the expanding show.

I’ll post soon as to what I’ll be talking about, but I expect to expand on the topics popular in Las Vegas and important to you – Workflow, WPF, and data architecture. I know I’ll be talking about customizing Entity Framework in the Data Access track.

Stay tuned for the schedule to be posted and start twisting your boss’s arm.