2011-09-21



Last week I attended the Build conference. I was graciously invited to attend with all my expenses paid. Originally, I was slated to help host a booth by a team at Microsoft (that shall remain nameless). When this team’s booth was cancelled they still encouraged me to come and see for myself what all the excitement was about.

You might assume that because I was “staff for a week” I may have some special or insider knowledge. I assure you, I do not. Even if I did, I wouldn’t be able to tell anyone. Since I can’t keep a secret, it’s better this way.

Prior to attending Build I had read all the blog posts, watched the videos from Jensen Harris, etc. I knew about “metro” from the Windows Phone 7, knew about Muglia’s comments regarding HTML5 and Silverlight, knew about the emergence of the Windows App Store, knew about the unified touch/mouse/keyboard experience, the renewed focus on C++.

Nonetheless, I was still excited by what I heard. I have had several days to reflect on the fire hose of information I was attempting to take a drink from, and the following are my impressions.

What’s the deal with the Build conference?

As of now, Build is a one-off replacement for the Professional Developers Conference. It’s not clear whether we’ll see Build or PDC in the future. Build is where you learn about Windows 8 in all its incarnations … from a hardware perspective, investor perspective, desktop developer perspective, server and services perspective, etc. Clearly my interest was in the developer arenas. There were sessions on SQL Server, Windows 8 Server, ASP.NET, etc. but these were easily dwarfed by sessions on Metro, Windows Runtime and Azure.

Why “Build”?

The Build conference is an attempt by Microsoft to kick start the upcoming Windows 8 App Store, aimed at consumers (i.e., those people who in the past have purchased Windows 7 Home Edition or, more likely, have it pre-installed on their new laptop or tablet.) The conference attempted to excite developers about the opportunity as well as provide the education and the tools required to build apps.

From reading blogs and comments I get the impression that some think “I’ve got to throw away my prior knowledge about everything and start over by building everything in a Metro style”. If that was the take-away, you have completely bought into the marketing hype and missed the bigger picture.

Sure, there are huge new opportunities for some talented people (you?) to build applications that will benefit from the App Store, new services afforded by Windows 8′s new Windows Runtime and the Metro aesthetic. These applications will typically be consumer-based applications for mainly “consumption” (reading, watching, playing, etc.) or light-productivity (Photoshop and Visual Studio will never be Metro style applications).

However, it is important to remember that Metro + WinRT is NOT the ONLY “game in town”. That would be the equivalent of saying “ASP.NET MVC 3 is the only game in town.” Not true. It is a CONSUMER / CONSUMPTION based API + approach + business model. The are some “light productivity” style applications that will do well in this space as well … examples include note-taking, email, contact management, personal money management, etc. I suspect that the majority of people attending build were there as a result of their enterprise organizations sending them, and I suspect they got a bit less out of Build than, say, a small entrepreneurial organization that wants to establish or extend it’s brand on Windows 8, or perhaps an independent game developer.

Admittedly, the above statement (“not the only game in town”) is in sharp contrast to what Jensen Harris said in his keynote … something to the effect that “Metro is your future”. Obviously he knows more than I do, so I defer to him. However, I do believe his outlook and agenda is different than mine. I just don’t see this translating / affecting (a) web developers, and (b) enterprise software developers. I’m sure I’m wrong. We’ll see.

Why Metro?

The official answer: “re-imagining Windows” …

Note: Metro is NOT just the user interface, although most people are going to associate Metro with the large, colorful, clean UI and not the other tenets of their approach. Metro is about a thought process of eschewing a pre-personal-computer method of thinking about applications (i.e., the Notepad icon) in favor of a concise, easily navigable, user-content-centric experience (i.e., text that you want to interact with). Please do yourself a big favor before you get all hot and bothered about the changes and watch this:

http://channel9.msdn.com/Events/BUILD/BUILD2011/APP-395T

That session is from a designer and user interaction perspective, but I think it sums up the thought process behind the appearance. This was the talk where it all started making sense for me.

The un-official answer to “why metro”: money (duh). All these years people have been building apps running on Windows. Microsoft licenses Windows to computer manufacturers pretty cheaply. (I don’t know the exact number, but I’m thinking it’s like $20 for Windows 7 Home … maybe cheaper if you agree to a ton of licenses.) If you, as a consumer, purchase $100 worth of software in their App Store and if they are taking a 30% (I don’t think they announced this yet … just using Apple’s high water mark) then they make $30 (gross). They’ve more-than-doubled their revenue per installation of their OS.

There’s also profit to be made in Platform as a Service (Azure), new hardware (tablets and phones) and more. Microsoft is pulling out all the stops.

Why HTML5 and JavaScript?

At this point, the whole HTML5 + JavaScript + Windows Runtime stack makes sense: increases the potential reach of who can develop applications to sit inside of the App Store from “millions of .NET developers” to “tens of millions of web developers”. This also explains why C++ has gotten a fresh coat of paint … the message is clear: everyone is invited to sell at this flea market.

Who / what is the “Metro” experience best suited for?

It became obvious to me that Metro-style applications are better suited for:

– Applications that have a smaller scope

– Applications that involve CONSUMING information, not CREATING information (much like the iPad … why people try to do serious work on that device is beyond me. It’s great for reading a book, magazine, watching a movie, playing a game, etc. Editing pictures? Documents? Stick with a desktop. Metro is the same.)

– Applications that would range in price from free to $20.

– Applications that retrieve at least some information from the web and update their “live tile” with refreshed content

– Casual and/or social games

Does this mean there will be 5,000 RSS reader apps in the app store?

Yes. Unfortunately. However, Microsoft had a whole session on how to get your application included into the App Store and fortunately there was a vetting process that was part-automated, transparent and moderated.

What did I learn?

Given that I was reading a lot of speculation on blogs and such, many big details had already leaked out and I had a general idea of what was going to happen (see above). However, there were still a number of surprises to me:

(1) I learned about the Windows Runtime (WinRT) – Think: class libraries and services that provide access to Windows at a deeper level than .NET that allow you to build applications running on Windows 8. It’s not the only way to build Windows 8 applications, but does provide new services (i.e., Contracts, Metro, etc.) not available in the .NET API’s.

(2) I learned about the purpose and thought process behind Metro … it’s NOT just a glorified program launcher. It’s not just clean lines and colorful boxes for the sake of art.

(3) I learned about Contracts … exposing source data that conforms to a certain contract (Search, Share, etc.) so that it can be consumed in any target application that understands what it can do with that type of information. Target apps register with Windows 8 saying “I can understand ___”. Windows 8 filters the list of possible targets based on what each target app can understand. This is NOT copy and paste.

(4) I learned how central (and simple) Async would become to all Windows developers … I knew Async was the next big language improvement. I didn’t realize how much it would be emphasized. Also I didn’t realize the implementation … how methods containing those async keywords sprinkled throughout splice up your methods and execute them on different threads for you providing a synchronous programming experience but getting the advantages of async. Pure. Genius.

(5) How mature Azure has become. I devoted a lot of time to learning about Azure at this conference. This is the future of enterprise software development and administration. I’ve been doing all of this for 15 years so there was nothing about the Windows RT that scared me — as innovating and interesting as it may be, it’s not all that unlike what we’ve seen already (not poo-poo-ing, just saying, been there, done that). However the shift in computing from Azure scares me (in a good way). One presenter likened the current state of Azure to “Windows 3.0″. I think that is an accurate assessment. There’s a lot of opportunity here and I see my career heading in this direction as a result of this conference. If I had influence over a greenfield development project in my near future, it would definitely involve Azure in a big way.

What am I still unclear of?

I don’t have any gaping conceptual holes … it all makes sense, and at this point it’s just a matter of getting the implementation details figured out (and there’s no way to get that figured out than to get my hands dirty in some code).

The only technical thing I’m a bit unclear about is the co-existence of both .NET and WinRT in the same application. They demonstrated it, I just don’t understand how that division of labor happens “under the hood”. I’ll be investigating this more in the near future. I’m sure this was covered and I missed it. After all, there were like 20 concurrent sessions going on every time slot. I’m still watching the recorded sessions every day … at this pace I should have watched it all by December!

From a “store” perspective, I’m not clear on how they’ll lock down your applications so that it’s not pirated, and whether or not they’ll allow micro-payments (i.e., free game, but the app maker sells in-game items … a common model nowadays).

I suppose a minor head scratcher … it’s mid-September 2011 … why release a pre-beta version of Visual Studio called 2011? I’ve got to think this is just a “code name” and not what they’re going to actually call it (right? right?)

Finally, am I missing something with regards to the “enterprise story”? The App Store, and thus, Metro, isn’t really an “enterprise developer who builds apps for internal customers” thing, right? Right?

What was personally fascinating to me with regards to the entire conference experience?

(1) How few Microsoft employees were willing to talk about anything in regards to Win RT, Metro, Windows 8, etc. outside of the official sessions. Admittedly, I really didn’t try very hard after a while, but definitely got the sense from a few people I spoke with that they were not authorized to talk. Hmm….

(2) Developers in the Microsoft camp are used to getting early bits and requests for lots of feedback. This time, it was all dropped at once. The OS, the tools, etc. There was definitely a shift here from what we as developers have grown accustomed to. It felt kind of like … gulp … Apple! And, building on that …

(3) There was an Apple-fication of the presentations and the management of the entire process as a whole … I can’t tell you how many times people from the top-down used the words “One more thing” … clearly a tongue-in-cheek references to Jobs’ presentations. While that was a clever little device used in their presentations, it did signal a change in philosophy — perhaps Microsoft needs a little less community influence (“Bah, this sucks!”) and a little more driving direction from the top.

I was sitting in the midst of Microsoft employees who commented how Sinovsky’s (Microsoft VP) presentation was very Jobs-like. Heck, trade out his v-neck gray sweater for a black turtle-neck … (I for one think it’s cool that he was wearing sneakers. I had an Eddie Bauer button down collar shirt, jeans and a new pair of Allen Edmonds McTavish shoes and I felt like the best dressed guy there!)

(4) How few times the words “Silverlight” and “WPF” were used. It was as if these technologies didn’t exist. I’m impressed how the branding police were on top of this!

(5) How courteous and professional Microsoft employees are. I must admit, in each interaction (save one or two) I’ve been treated with respect and I much appreciate that. They may have thought “you’re an idiot” based on my incessant questions and speculations, however they’ve never vocalized it.

(6) How much user testing going into creating a product like this. I refer you to this video (which I repeat a bit later for a different purpose) but watch this and see how they get real user reactions to software, or how the designers determine where to put interactive elements on a tablet screen based on people’s hand measurements, etc. Fascinating process.

http://channel9.msdn.com/Events/BUILD/BUILD2011/APP-395T

What was my favorite moment?

At the very end of the morning keynote on Day 2 when Balmer made fun of his own “Developers, developers, developers” rant. You’ve got to love a guy who can be self deprecating. But he turned it around and made it a sweet moment emphasizing Microsoft’s love affair with developers. Balmer also said that there’s never been a better time to have software development as a core skill set and this (App Store) represents the single largest opportunity for developers in history. With 500,000,000 installs of Windows 7, each of which can run Windows 8, I believe him.

So, is Silverlight and WPF dead?

No. Not yet. This conference was the coming-out-party for the débutante, Windows 8. Microsoft needs apps in the App Store to fulfill their vision and they emphasized “selling to our mutual customers” over and over.

If you’re an enterprise application developer I don’t think anything changes for you at all (except the tangential benefits of learning about async in .NET 4.5 and learning more about utilizing Azure in your enterprise). You can still build both WPF and Silverlight apps, and in many enterprise-scale applications WPF or Silverlight will be the most appropriate end user experience and deployment model.

On the CONSUMER side, WPF and Silverlight are not dead per se … the programming model (and the name) has simply changed a bit. You don’t HAVE to be in the App Store. Your Silverlight app won’t be able to run inside of the Metro IE 10, but it’s not THAT big of deal, right? Life doesn’t end for you. Two things in that regard: (1) The most important innovations around Silverlight and WPF are still in play, (i,e., the XAML as a means of creating instances of objects, specifically in these cases, objects that represent UI elements.) (2) They emphasized that if you really wanted to move an app from, say, Silverlight to XAML-to-WinRT, many of the same class names exist. You would merely need to change the namespace references. That’s it. I saw it in action and it seemed to work (at least, in a controlled demo).

What about the free tablet?

Well, I didn’t get one because, technically, I was “staff” and not an “attendee”. I was able to download and install the OS and tools in a VM on my MacBook Pro using VMWare Fusion 4.0 (had to upgrade because 3.x caused Windows 8 to blow chunks) and that’s all I really was interested in. The free tablet was a nice gesture and a bit of an Oprah moment. I’m sure it was very expensive for all parties involved to pull off (Microsoft, Samsung and AT&T) however compared to the iPad, the screen lacked brightness and brilliance. It did have 4 gigs of RAM and could be used as a Visual Studio development machine, so kudos on that! I realize I am influenced by the iPad form factor, but I didn’t like the aspect ratio of the tablet … too long and narrow. Again, just a personal preference unduly influenced, I’m sure, by the iPad. I hope other vendors provide different form factors at some point. The Windows Phone 7′s screen looked brilliant — this unfortunately was nothing like it.

Was it a good use of time and money?

I generally never go to conferences. As the owner of a micro business, I generally don’t have the time or the money. After this conference, I’m now planning on attending every Microsoft conference despite the costs. There was so much information distributed in a short amount of time — as well as access to the team members who built the tools and API’s — that it made it worth it. While I always rationalize that I’ll just watch the presentations online, in reality the likelihood of me taking a week and just watching the videos is slim. However, if you can manage it:

http://channel9.msdn.com/events/BUILD/BUILD2011

I’ve been trying to watch 2 additional sessions each night before I go to sleep. This has conflicted with my desire to watch pre-season NHL hockey (go Blackhawks!) so now I’m aiming for watching BEFORE my workday begins. I might be able to watch them all by December if I’m faithful to the plan. There was *that much* to watch.

Other Cool Developer Stuff?

– Did I mention Azure?

– Did I mention async?

– ASP.NET MVC 4 has some great new features including Firebug-style integration and a focus on mobile jQuery for mobile apps. More about those soon …

– Visual Studio’s Solution Explorer got a facelift … think: combining the best of the Object Explorer into the Solution Explorer.

– Team Foundation Services … cloud hosted Team Foundation Server with a few twists. Nice addition to the Application Lifecycle Management products with emphasis on DevOps (i.e., the tools and processes that allows developers and those who support those apps in production to communicate to keep a given enterprise app available across new releases).

What does all this mean for me, personally?

This is always the hard part — to figure out where I fit into this world. Frankly, I don’t have any clever ideas sitting in the wings. (Well, I do, but I’ve lost a little confidence in the idea over the years. I’ve decided for now to stick with the only idea I’ve had that has really paid off for now.)

First, I came to the conclusion a few years ago that *any* new device (or by extension, operating system) that is shiny, new and has an app store is a great bet — AS LONG AS YOU’RE ONE OF THE FIRST ONES IN. Once the app store gets crapified with 5000 RSS readers, it’s too late. The chance of getting the only truly scarce resource in the world today (i.e., other people’s attention) will be gone. So, if you can’t deliver a cool idea by this time next year (i.e., September 2012) then you probably should just forget the idea. My advice: get in fast.

Having said that, before investing a lot of time and expense in building a killer app, I would give serious thought to having Microsoft as a partner. Do a little research on the experiences of developers who have submitted games to XBox Live Marketplace and the Windows Phone 7 store. Success stories? Frustrations? I would weigh that before jumping into code.

I’ll be keeping my eyes open for ideas. I use a Mac as my primary OS (with Windows running in Virtual Machines and dual-boot) and I’ve seen some apps that I would love to have on the Windows platform. It’s just a matter of time and money — I’m short on both. But if I were serious about making the most of this opportunity I would definitely be looking on other platforms for ideas (not to steal them, but to get inspiration for your own creativity).

Second, I came to the conclusion that I really need to “think in JavaScript”. I’ve used it for years (how could you not?), and I can write JavaScript / jQuery and I’m relatively comfortable. But being comfortable and really “getting it” are two different things. In addition to the “JavaScript thought process”, there are so many libraries and implementations now of JavaScript on the web, desktop and server that I cannot ignore it any longer. While I don’t think I’m going to build anything personally (I don’t have the time or the great idea) and even if I was, I probably would be using C# and XAML, I think there’s still merit to making this a core skill.

Third, I’ll be looking at building a simple Metro app for the purpose of personal comprehension. The application will need to utilize those elements of a Metro-style app, including appearance, responsiveness, saving content to the cloud, and more. These are always fun days for me — when I’m writing code and learning so I’m much looking forward to it. Prior to that, however, I have other fish to fry in the form of more ASP.NET MVC 3 (and 4) videos and those other topics I’ve listed in the member’s area.

What does all this mean for you?

HTML5 + JavaScript? C# and XAML? I would recommend going with whatever you feel makes you most productive at this point. I suspect my audience would gravitate towards the latter. Clearly the effort behind adding HTML5 + JavaScript to the mix was a means of increasing the number of developers who can develop on this platform (and include apps in the App Store) as I mentioned earlier. I’ve not developed a Windows 8 application using HTML5 + JavaScript yet, but from the demos Solution Explorer looks … cluttered … with a lot of .js files implementing the wrappers around the Windows Runtime. Also, I’m not sure what the development or debugging experience will be like.

During this conference I had a profound realization that no one — and I mean no one — knows it all. Speaking with (or listening to) Microsoft employees, they have a deep understanding of their product or corner of the world and just a general or tangential understanding of other areas. Same is true with other so-called “experts”. It is easy to feel like you’re losing ground, that you have to be an expert in every new technology that comes down the pike leading to a high degree of anxiety (well, at least if you’re like me). It’s ok, you’re not Brainiac (and I mean this in the context of Superman’s galactic knowledge grubbing enemy). No one is. Just work at a comfortable pace, learn what you can, have a learning plan and devote time to it, and then enjoy the rest of your life with your family and friends.

The fact of the matter is that not every technology deserves your undivided attention. That would drive you crazy. I know — I’ve tried it and failed miserably (emphasis on the “misery”).

I would recommend this for now:

– Watch as many sessions as you can to get familiar with the major concepts. If this is like everything else that is “version 1″ it will take a few revs to mature, so the concepts are more important than the specific implementation details at this point.

– More practically, use the filtering and tagging mechanism in Channel9 to find the most popular sessions. Watch one a day for a while. Keep an eye on Metro, Windows RT, etc. unless you have an idea.

– If you have an idea, ACT ON IT IMMEDIATELY! You have about one year, maybe less. Your best opportunity in any App Store is “Day 1″ (at least, as a small developer. If you have connections or a lot of venture capital behind you, it might be a different story.)

– Invest heavily in learning the new async stuff in .NET 4.5 … I’ll be on that part first because the applications of it apply to nearly everyone regardless of the type of apps you’re developing.

– Invest in Azure if you’re an enterprise developer. This isn’t hype — it’s the real deal.

– Invest in ASP.NET MVC 3 (and 4) and jQuery.

Good luck, and here we go again …

Show more