It’s a WPF World, part 2

Let me continue my ramble about Microsoft technologies leading up to WPF.  Last time, I ended by talking about the .NET technologies and why I think they are so important.  .NET has become the de facto standard for developing applications for the Windows platform (thick clients).  And although ASP.NET likely doesn’t have nearly as big a chunk of market share as Windows Forms, it feels like the WISA stack (Windows, IIS, SQL Server, ASP.NET) is gradually overtaking the LAMP stack (Linux, Apache, MySQL, PHP).  And with the rise of RIAs (Rich Internet Applications), ASP.NET Ajax will likely encourage the continued adoption of the ASP.NET technologies.

Going back to my list of the most important benefits of the .NET world from last time, I realized that I’d like to add a final bullet item.  (In the list–what’s so special about .NET):

  • Programmer Productivity — with things like intellisense and code snippets in Visual Studio, you can be incredibly productive, whether working in Win Forms or ASP.NET

I make the claim about productivity without having had experience with other development environments (at least since doing OWL development with Borland tools).  But the rise in productivity is true even just of Microsoft tools.  They just continue to get better and better.  And though “real programmers” might pooh-pooh all this intellisense nonsense in favor of hand coding in Textpad, I have to believe that even these guys would be more productive if they truly leveraged the tools.

When .NET first came out, I remember reading the marketing materials and being a little misled about where ASP.NET fit into things.  It seemed like Microsoft was touting convergence of Windows vs. web development, by talking up the similarities of the dev experience, working in Windows Forms vs. Web Forms.  Developing with ASP.NET was ostensibly very similar to developing Win Forms applications–you started with an empty design surface, dragged visual controls onto it, and double-clicked to bring up an editor where you wrote your code-behind.  (Nevermind that this model encouraged low quality architectures as people wrote monolithic chunks of event handler code–perpetuating bad habits that we learned with VB6).

But the web model was still very, very different from the thick client model.  On Windows, we were still working with an event-driven model, using the same old Windows message loop that we’d always used.  But users interact with a web-based interface in a completely different way.  We used server-side controls in ASP.NET to hide some of the complexity, but we were still just delivering a big glob of HTML to the client and then waiting for a new HTTP request.

The ASP.NET development environment also felt a bit kludgy.  I remember being a bit dismayed when I wrote my first ASP.NET application.  In the classic Win Forms development environment, there were two separate views of your application, where a developer lived–the design surface and the code behind.  The ASP.NET environment has three–the design surface, the code behind, and the HTML content.  So now instead of a developer jumping back and forth between two views, you end up jumping around in all three.

Spoiler–this web application architecture gets a lot cleaner with Silverlight 2.0.  There seems to be actual convergence between thick vs. thin clients as we use WPF for thick clients, Silverlight 2.0 for thin.  But more on that later.

So along comes WPF (Windows Presentation Foundation) and XAML (Extensible Application Markup Language).

I remember when I first read about XAML and WPF (Avalon at the time).  My first reaction was to be mildly frustrated.  At first glance, XAML seemed to be an arbitrary switch to a new syntax for defining GUIs.  And it seemed cryptic and unnecessary.  In the effort to be able to define a user interface declaratively rather than procedurally, it looked like we were ending up with something far messier and garbled than it needed to be.  It felt much easier to understand an application by reading the procedural code than by trying to make sense of a cryptic pile of angle brackets.

But I’ve come to realize that the switch to defining GUIs declaratively makes a lot of sense.  With XAML, thick clients move a bit closer to web applications, architecturally–the GUI is built from a static declaration of the UI (the XAML), a rendering engine, and some code behind.  And the layout of a user interface (rather than the behavior) is implicitly static, so it makes sense to describe it declaratively.  [As opposed to Windows Installer technology, which converts the dynamics of the installation process to something declarative and ends up being far messier].

Why does it make sense to separate the markup from the code like this?

  • Architecturally cleaner, separating the what (XAML declaraction of GUI) from the how (code-behind).  (Separating the Model from the View)
  • Enables broad tool support–tools can now just read from and write to XAML, since the GUI is now defined separately from the application itself.  (Enabling separate tools for designers/devs, e.g. Expression Blend and Visual Studio).
  • Cleaner for web apps — because we can now serialize a description of the GUI and send it across the wire.  This just extends the ASP.NET paradigm, using a similar architecture, but describing a much richer set of elements.

Another of my earlier reactions to XAML was that it was just a different flavor of external resource (.resx) files.  It looked similar–using angle brackets to describe GUI elements.  But XAML goes far beyond .resx files.  Resource files are used to externalize properties of UI controls that are potentially localizable.  E.g. Control sizes, locations and textual elements.  But the structure is flat because a resource file is nothing more than a big collection of keyword/value pairs.  Nothing can be gleaned about the structure of the UI itself by looking at the .resx file.  XAML, on the other hand, fully describes the UI, hierarchically.  It is far more than a set of properties, but it is logically complete, in that it contains everything required to render the GUI.

XAML is a big part of what makes WPF so powerful.  But there are a number of other key features that differentiate WPF from Windows Forms.

  • Totally new rendering engine for the GUI, based on Direct3D.  This enables better performance in rendering of the GUI, because everything in your GUI is described as 3D objects.  So even apparent 2D user interfaces can take advantage of hardware acceleration on the graphics card.  [The new NVidia GT200 GPU has 1.4 billion transistors, compared with original Core 2 Duo chips, which were in the neighborhood of 300 million].
  • Vector graphics.  The GUI is now entirely defined in vector graphics, as opposed to bitmapped/raster.  This is huge, because it means that you can define the GUI geometry indepedent of the target machine’s screen resolution.  This should mean–no more hair-pulling over trying to test/optimize at various screen resolutions and DPI settings.  (Gack)!
  • Bringing other APIs into the .NET fold.  E.g. 3D, video, and audio are now accessible directly from the .NET Framework, instead of having to use APIs like DirectX.
  • Focus on 3D graphics.  All of the above technologies just make it easier to develop stunning 3D graphical user experiences.  Powerful/cheap graphics hardware has led to 3D paradigms like Apple’s “cover flow” showing up more and more often in the average user interface.  (Battleship Grey, you will not be missed))

So where does WPF fit into the rest of the .NET world?  Is WPF a complete replacement for Windows Forms?

Adopting WPF will not be nearly as big a learning curve as adopting .NET was, originally.  WPF is a full-fledged citizen of the .NET world, existing as a series of .NET namespaces.  So .NET continues to be the premiere Microsoft development technology.

WPF is definitely a replacement for Windows Forms.  It is the new presentation layer, meant to be used for creation of new Windows-based applications (thick clients).  Microsoft is probably hesitant to brand WPF purely as a Windows Forms replacement, not wanting to dismay development shops that have invested a lot in learning .NET and Windows Forms.  But it’s clearly the choice for new Windows-based UI development, especially as the number of WPF controls provided by the tools, and shipped by 3rd party vendors, increases.

WPF is also highly relevant to web development (thin clients).  Silverlight 2 allows a web server to deliver browser-based RIAs containing a subset of the widgets found in WPF.  (Silverlight 2 used to be called Windows Presentation Foundation/Everywhere).  With WPF and Silverlight, Windows and web development are definitely converging.

So we clearly now live in a WPF world.  WPF will rapidly become more widely adopted, as it is used for more and more line-of-business applications, as well as serving as the underlying engine for the new Silverlight 2 RIAs that are starting to appear.  And the best news is that we also still live in a .NET world.  We get all of the .NET goodness that we’ve learned to love, with WPF being the shiniest new tool in our .NET toolbox.

It’s a WPF World, part 1

Has everyone realized that it’s a WPF world out there?  What I mean is this.  Let’s say you’re a classic Windows programmer–meaning that you want to build a basic native Windows application.  You know–just an .exe file that lives on your hard drive, that you run, and that displays a window with some stuff in it.   (Let’s set aside for just a moment Bill’s “Internet Tidal Wave” and Ozzie’s “Device Mesh” and assume that you want to build a good old-fashioned Windows app).  Where are we at today?  Well, WPF is absolutely the world that we live in at the moment.

Let’s think about how we got here.  In the beginning, it was a WinAPI world.  For years, the mantra was, “Thou shalt read Petzold, cover to cover”.  If you don’t know what this means, you’re either too young or you just plain don’t care about what’s under the hood.  With NT and Windows 95, we got to graduate to Win32, but it was still a grand world, working with WinAPI.  (Test yourself–do you get a warm fuzzy feeling, or do you shudder, when you read the following)?

SendMessage(hList,LVM_SETITEM,0,(LPARAM)&LvItem); // Enter text to SubItems

Ahh, memories. Well, after the WinAPI world, we got to graduate to the world of MFC.  (Didn’t it stand for “Millions of Freakin’ Classes”)?  Remember message maps and CCmdTarget?  Actually, aside from unwanted Afx functions in later COM applications and the inevitable bloat, I mostly escaped working with MFC.  I was writing Motif applications for VAX/VMS at the time–but that’s a different story.

Then we come to the glorious days when it was a COM world.  Ahh–David Chappell, Don Box, and even–shudder–Brockschmidt.  I’m still paying off loans taken out to buy tech books during the COM era.  All you really need to know about COM is: a) it’s all about interfaces, baby; b) you need to chant the following in your sleep every night–QueryInterface, AddRef, Release; and c) you’ll learn to love the venerable BSTR.  When I’d worked with COM long enough to finally understand it, my main thought was–holy crap, this stuff is complicated enough that I now truly have job security.

It was, briefly, an ATL world.  ATL was a fluffy breath of fresh air for the beleagured COM programmer.  Or maybe it just felt like a well-earned reward for having truly learned COM.  Sort of like the boy scout who finally gets to use a gas stove after years of making fires by rubbing two sticks together.  Actually, I get a pretty warm fuzzy feeling, remembering ATL–and building out-of-process COM servers in VC6.  Not a bad world at all, really.  I almost miss it.

Still with me as I ramble?  Shall we jump to 2002, when it became a .NET world?

Ok, a brief rant.  A few years back, a fellow colleague (Software Engineer), who’d been a developer for quite a few years, confided to me that he liked programming, but what he absolutely hated is how things kept changing.  Every time a new technology came out, he became infuriated.  I was a little shocked–first of all, because the constant stream of new technologies is what I absolutely love about being a Windows developer.  But mainly, I thought–if you hate change so much, why the hell are you a Windows developer?

On to 2002, when it became a .NET world.  Regardless of when you jumped into .NET, or which Windows technology you came from, you just have to agree that .NET is our Seventh Heaven reward for all of those years of wrestling with these other technologies.  Or is it just Dante’s outermost circle of hell?  In any case, being a C# developer in the .NET world is truly a treat, after the path that we’ve taken to get here.  (Yes, yes, yes–VB.NET is fine language, you do have XML literals while we do not, and you are a person that people like and respect).

If you can’t tell, I’m a C# developer.  Of course, as has been said many times before, the choice of language in .NET is really irrelevant–it’s all about the framework.  The learning curve is obviously in learning thousands of framework classes, rather than arguing about this vs. Me.  I’m definitely not a VB hater–I’ve written a lot of VB6 code over the years.  But I just love working with C#.  It’s C++ with all the dangerous pointy stuff that can hurt you removed.  So no need for political correctness here–I’m going to post examples in C# and get on with it.

What’s so special about .NET?  Some of the standouts for me, in no particular order, are:

  • Language Independence — you can write in your language of choice, since all CLS-compliant languages just resolve to IL and your code can run in the the CLR.
  • Memory Management — (and garbage collection).  No more having to remember to delete every element of an array, as well as the array itself.  Just create your objects and let the CLR worry about having to delete them.
  • CLR as a VM — because your code runs in a virtual machine, we can hypothetically run anywhere and are no longer tied to Windows.  (E.g. Mono).  This is less critical for thick clients but will become more important as we move to Silverlight 2).
  • Reflection — very cool, for debugging, discovery, or just the elegance of having an assembly be self-describing.  Much nicer than the old COM external .tlb file scheme.
  • The .NET Framework — without a doubt, the greatest benefit of .NET.  Wow–thousands of classes that someone else has written that just work.  I’m constantly stumbling on things that I thought I’d have to write, but discover are already present in the framework.

That’s a very crude list of some of the highlights of .NET and why I think it’s so powerful.  There’s no need for me to write yet another high-level overview of what .NET is, or what the parts are.  The book Understanding .NET, by David Chappell is still an excellent introduction/overview.

Well, I’ve run out of room and run out of time.  I’ll save the rest of this particular ramble for later, when I talk just a bit about Win Forms, ASP.NET, and WPF..

[Ok, an editorial comment–this started out being a simple set of notes for creating a first “Hello World” WPF application.  Instead, it sort of turned into a campy litany of old Microsoft technologies.  So I’ll save the Hello World post for next time].

Confessions of a Podcastaholic

I’ve been an iPod user for about a year and a half now.  I’m an obsessive music lover and collector, but I waited quite a while before I bought my first MP3 player.  My rationale was that I didn’t just want something that would let me carry around an album or two.  If that was the case, I’d be constantly moving music onto the player and off again.  Instead, I wanted to wait until I could buy something that could store my entire music collection–or at least enough of it that I’d be able to carry around a good percentage of my collection with me.

I’d been digitizing my CDs for years and enjoying listening to them on my PC, working my way through various player software.  Pre-iPod, I’d eventually settled on the RealPlayer application for managing all my music.  But it never crossed the line to become a truly great application for me.  I liked the idea of being able to organize everything into multiple playlists and then play through a playlist on shuffle mode.  But the biggest pain point was still that my music was stuck in one physical location–on one physical PC.

Like a lot of software developers, I like to occasionally wear headphones while at work.  Working in cubeland, this is often necessary, given the noise and distractions.  I hauled an old laptop into work at one point, after copying much of my music collection to it.  So I now had my music in two different places–on my home PC and at work.  I could also now make the statement that I had an MP3 player of sorts, albeit a 6 pound one that took a few minutes to boot up.

At some point it dawned on me that I should just ditch my old laptop and upgrade to one of the latest and greatest iPods.  At the time, the 80GB video model was the largest one available.  I plunked down my money and after a short wait got my first ever Apple product.

It was incredible.  As expected, it just worked.  It took some time, but I gradually started moving my music collection onto the iPod.  I had plenty of room with 80GB, and I was pleased that I’d finally found what I wanted–a single device where I could store my entire music collection.  It also truly amazed me when I realized one day that my “little music player” had a hard drive twice as large as my Windows development laptop at work.  Ok, granted, my company tends to cheap out on PCs.  But still–here I am a well-paid software developer and I have 2x the space on a deck-of-cards device as I do on my development machine.  Wow.

This is the point where my life really began to change.  Having my entire CD collection, going back 25 years, in my pocket was truly astounding.  But I quickly discovered the true killer app of the iPod–podcasts.  Before I bought the iPod, I had some vague notion that there were podcasts out there and I understood the basic concept.  But I’d not planned on listening to podcasts at all–I’d bought the iPod solely as a music device.

The podcast habit started when, out of curiosity, I began to listen to some of the more popular tech/software podcasts–This Week in Tech and .NET Rocks.  I quickly added daily news, more technical stuff, and a bunch of family history related podcasts.  I just couldn’t get enough–I became a complete podcastaholic.  Just one month into my iPod experience, I was listening to podcasts during my commute, while at work, and late into the evening.  I was hooked.  At some point, I realized that it had become rare for me to listen to music anymore.  I was using the iPod exclusively to listen to podcasts.

Podcasts became a huge hit for me for two reasons.  For starters, it was just so darn easy to get the music onto the device.  I left iTunes running constantly on my PC at home and plugged the iPod in every night, which meant that I’d automatically get all the latest episodes of everything the next morning.  Better yet, Mr. Jobs was clever enough to remove the podcasts that I’d already listened to.  Nothing could be easier.

The second biggie for me was just the excellent content that was available.  It was reminiscent of hunting for good programming on public radio, except that I had about a thousand times the number of programs to choose from.  So instead of getting Science Friday (fairly interesting, mildly relevant), I was now listening to .NET Rocks with Carl and Richard twice a week (very energizing and hugely relevant).  I was in absolute techie heaven!

The great thing is how dynamic the podcast universe is.  Podcasts are born and die all the time, with new content showing up almost daily.  I try to go back to iTunes every few weeks and just do some browsing.  And it seems like I always stumble on something new, interesting, and worth listening to.

Eighteen months into my podcast experience, I haven’t slowed down and I’m as much a podcastaholic as ever–even more so.  With plenty of house projects to work on and a huge lawn to mow, Carl and Richard now accompany me on the riding mower–along with Leo, Paul Thurrott, Robert Heron and even those wacky Digg guys from time to time.

Here’s my current podcast lineup.  These are the podcasts that I listen to fairly regularly and I can highly recommend everything on these lists.

Audio Podcasts

– A Prairie Home Companion’s News from Lake Wobegon – weekly, 15 mins – I’ve been listening to PHC since the early 80s and now I no longer miss the core Keillor experience (NFLW).
– Garrison Keillor’s The Writer’s Almanac – daily, 5 mins – Nice little bit of daily history (whose birthday is it today), along with a poem
– The ASP.NET Podcast by Wally McClure and Paul Glavich – every few days, variable – Wally is easy to listen to and you’ll get plenty of ASP.NET goodness
– Dear Myrtle’s Family History Hour – weekly, 1 hr – a bit too quaint for my tastes, but often some nice family history gems
– Entrepreneurial Thought Leaders – weekly (seasonal), 1 hr  – Excellent lecture series out of Stanford, wonderful speakers
– Front Page – daily, 5 mins – NY Times front page overview, good quick news hit
– Genealogy Gems – biweekly(?), 45 mins – Lisa Cooke’s excellent genealogy podcasts
– The Genealogy Guys Podcast – weekly, 1 hr – very solid genealogy stuff, weekly news & more
– Hanselminutes – weekly, 40 mins – One of my favorites, Scott Hanselman helps you grok the coolest new technologies
– History According to Bob – daily, 10-15 mins – Bob is a history professor and relentless podcaster.  Excellent stuff.
– .NET Rocks – 2/wk, 1 hr – Absolute must-listen for anyone doing .NET.  Great, great material.
– net@night – weekly, 1 hr – Leo Laporte and Amber MacArthur, with weekly web gossip.
– News.com daily podcast from CNET – daily, 10 mins – Good daily tech news overview
– NPR 7PM ET News Summary – daily, 5 mins – Another little daily news blurb.
– Polymorphic Podcast – sporadic, 45 mins – Craig Shoemaker, sometimes good stuff on patterns, bit spotty lately
– Roz Rows the Pacific – every 2 days, 25 mins – Roz Savage is podcasting 3 times/wk as she rows across the Pacific.
– Security Now – weekly, 1+ hrs – Steve Gibson on all things security.  Deeply technical and not to be missed.
– stackoverflow – Weekly, 1 hr – New podcast, with Joel Spolsky and Jeff Atwood.  Both very insightful on software dev topics
– This week in Tech – weekly, 1.5 hrs – Leo Laporte’s flagship podcast.  Can be more fluff than content, but a fun listen
– Windows Weekly – weekly, 1+ hrs – One of the highest quality podcasts available, Paul Thurrott w/excellent stuff on Windows

Video Podcasts

– Democracy Now! – daily, 1 hr – I don’t always have time for it, but Amy Goodman is true journalism, pure gold.
– Diggnation – weekly, 1 hr – absolute fluff, but sometimes fun to watch Kevin and Alex gossip
– dl.tv – weekly, 1/2 hr – Tied for 1st place w/Tekzilla as best techie show, great content
– Gametrailers.com – XBox 360 spotlight – daily (multiple), 2-3 mins – some great game trailers
– Geekbrief.TV – daily, 3-4 mins – Cali Lewis, quick recap of latest cool gadgets
– Mahalo Daily – daily, 5 mins – more entertainment than tech content, but sometimes some interesting stuff
– Tekzilla – daily, 1-2 mins (weekly, 40 mins) – Excellent techie show, with Patrick Norton & Veronica Belmont
– X-Plays daily video podcast – daily, 2-3 mins – Video game reviews

Looking back, I realize that I did go through an evolution in how I listen to music when I bought the iPod.  Although I started out thinking that I just wanted a convenient way to listen to my CDs, I was of course moving from CDs to a world where all my music is digital, and stored as MP3s.  This is truly an evolutionary step, in the same way that moving from vinyl to CDs was, back in the 1980s.  I do still buy lots of CDs, but only because I object so strongly to DRM.  The moment I pull a new CD out of its shrink wrap, it gets ripped, stored and sprinkled into various playlists.  I now have dozens of CDs that I’ve purchased, but never actually listened to on a CD player.

But as life-changing as it’s been to evolve my music listening habits, the amazing thing is that CDs to MP3s was a subtle life shift, compared to how podcasts have changed things for me.  I have access to so much wonderful content and in such a convenient form factor.  And my kludgy setup–iTunes on the PC and nightly synchs–will likely soon be replaced by something much more convenient and seamless.

The great thing is that the podcast revolution is just getting started.  Or maybe we should call it the user-generated content revolution.  Media is beginning to change in ways that most people just can’t imagine.  We are just beginning to be able to watch and listen to exactly what we want, when we want and where we want.  Technology is bringing our media to us.  Not only do we no longer have to physically plop down in front of a television, the content that we can choose from goes far beyond the selection that we’ve gotten from satellite TV.  Even more amazing, the boundaries between media producer and media consumer are dissolving.  It’s nearly as easy for me to produce my own podcast as it is to subscribe to one.  That’s just incredible.  And it’s far, far easier for people who generate high-value content, like Leo Laporte, to get their content delivered to me.

It’s a wonderful world–and I plan on continuing to wear my podcastaholic badge proudly.

Mix08 Notes: Keynote #1 – Ray Ozzie

Mix08 in Las Vegas  (5-7 Mar 2008)

Ray Ozzie
[KYN0801, 0:00]

– Lots of great products during past year
– Many software projects finally coming to fruition this coming year
– Mix ’08 is 1st of key launch milestones this year, culminating at PDC in October
– Many key elements of Software+Services will be released this year
– Let’s look at big picture, put various products into context

– Two distinct aspects of Microsoft’s services strategy
– Things that we do to deeply embrace advertising, which is economic engine that powers the web
– Internet is reshaping & transforming Microsoft’s existing products and services

– Advertising
– Innovation in the experiences on the web provides fuel for ad-based economic engine

– Content, Commerce, Community web properties–key drivers of user engagement
– Innovation in community area transforms the other properties (content/commerce) on the web
– E.g. blogs, social networks, etc.
– Greater and greater user engagement
– This user engagement is why advertising is now huge economic force on the web
– Online ads projected to grow from $40 billion to $80 billion over next 3 yrs
– Advertising is going to be the primary way that we all monetize services/apps on the web

– Aspect 1:  What is Microsoft’s role in advertising on the web?
– Ensure that there is vibrant advertising ecosystem on the web
– Based on highly competitive ad platform
– Significantly investing in search and in content/commerce/community innovation
– Goal: highly engaged, well-targeted audience

– Aspect 2:  How is the web impacting Microsoft’s products/services?
– Look at 3 core principles that MS is using to drive reconceptualization of its software, to embrace world of services

– 3 core principles
– People — Think of the web as a hub — of social & technology experiences — our “social mesh” and “device mesh”
– (Fundamental changes impacting the individual)
– Business — provide power of choice as enterprise moves to embrace the cloud
– Developers — We need to embrace a world of “small pieces, loosely joined”

– Principle 1 — Think of web as a hub / mesh
– Social mesh — interpersonal nature of web will impact everything that MS does
– All applications will incorporate the “group forming” aspects of the web   (linking, sharing, ranking, tagging)
– Device mesh — number & diversity of our devices is on the rise  (phones, PCs, smart TVs, DVRs, media centers, game consoles, car nav systems, etc)
– Idea of “My computer”, single PC, is dated, quaint
– Give way to personal collection of connected devices, brought together by the web
– Web serves as hub for these meshes

– Principle 2: Power of choice in the enterprise
– Most enterprises are in early stages, transition from dedicated application servers to virtualization and consolidating apps on computing grids
– “Virtualization powered utility computing model”
– Spans from enterprise data center, to cloud
– Utility computing model will reshape enterprise applications
All of Microsoft’s software will be re-factored to have symmetry between
– Enterprise-based software
– Partner-hosted services
– Services in the cloud
– Power of server-service symmetry, allows IT to choose
– Systems are distributed, and federated

– Principle 3: Small pieces loosely joined
– Fabric of software & service componentry, spans from cloud to to world of devices
– Applications are trending towards loosely-coupled compositions
– Cooperating systems
– Transparency, standards, interoperability are key
– Lightweight APIs ubiquitous, e.g. REST, RSS, between services across the web
– XAML allows repurposing UI components
– New apps needing to extend beyond the browser, beyond the PC
– Users expecting rich, seamless experiences, delivered across all of their devices
– Applications take advantage of unique strengths of each platform
– Multi-device UI environment
– At back-end, new design models, more appropriate for cloud
– Vast arrays of commodity computing resources–storage & software
– Need new skills to: write code on back-end; deploy across grid; debug remotely
– Developer skills changed by shift to utility computing model

– How will Microsoft products be impacted by these principles?
– Will talk about specific offerings in 5 major groupings
– Connected devices, connected entertainment, connected productivity, connected business, connected development

– Connected devices
– We’re juggling/managing more and more interconnected devices
– Many of them are internet-aware at birth
– Use software to bring them all together into your own personal device mesh with web as hub
– Devices report into central server for status, health, location
– Remote control of all your devices, from anywhere
– Transparent synchronization of data across all devices
– Bi-directional synch of arbitrary feeds
– Application mgmt–centralized web-based deployment of device-based applications
– App platform that is cognizant of all of your devices
– MS has been working on this already
– For starters, looking at PCs, bringing all your machines into single seamless mesh
– Using web as hub
Live Mesh tech preview

– Connected entertainment
– Only license your media once
– Organized collections/subscriptions once
– Use any of your devices to access/enjoy your media
– On portable device, in living room, on desktop
– Each person has “media-centric web presence” — express your tastes, interact w/others
– Microsoft entertainment products/services will be progressively transformed by this connected entertainment vision

– Connected productivity
– Productivity (for MS) =
– Office for PC
– Office Mobile for phone
– Office Live for web
– Seamlessly enjoy
– Rich dynamic benefits of working on PC
– Mobility, capture capabilities of phone
– Work-anywhere ubiquity of Internet
– Devices seamlessly connected, using web as “experience hub”
– Office live extends productivity into social mesh, sharing/tagging, etc.
– Office Live Workspace — in beta, Mar08
– Focus on servicing individual’s productivity needs
– Also deliver connected productivity to people in enterprise  (e.g. Sharepoint, Exchange)

– Connected business (enterprise)
– Services, e.g. CRM, CRM Live
– Well received by small businesses
– Biggest impact of services on business — will come from shift to utility computing within enterprise
– During past year:
– Windows Server 2008, Hyper-V
– System Center products, e.g. Virtual Machine Manager
– “Embrace utility computing in the cloud”
– Now releasing:
– Online business services, beta in Mar08
– Run Exchange, Sharepoint, Office Communications as either local servers or as services in the cloud
– Beta for SQL Server Data Services — API for online data storage; high-scale database services

– Connected development
– Realizing connected development environment through:
– .NET Framework
– Silverlight
– Expression Studio  (designers)
– Visual Studio  (developers)

– This year, delivering on potential promised w/Silverlight
– Devs have many amazing technology choices to pick from
– You should “bet on Microsoft” — can create extraordinary experiences across world of devices

Why Blog?

Ok, here we go–first post in a brand new blog!  What to say?  Oh, the intimidation factor of the blank page.. Though I’ve been journaling compulsively for years and I’m a fairly avid writer, there is an odd feeling to the idea of a public blog.  I realize that blogs are primarily an ego-boosting activity for most people and likely to be unread by all but the author and maybe some family members.  So I’m under no illusions that my ramblings will be read by anyone but me.  But still–writing a blog feels like stepping up to a microphone in some huge auditorium.  Granted, the auditorium is empty at the moment, but it’s still a tiny bit intimidating.

When it comes to blogging, I’m still also suffering to some extent from what my wife and I refer to as a strong case of “disdainium”.  When I first heard about people blogging, or touting their blogs, I scoffed at what I felt was just a fancy new name for plain old ego-laden personal web pages.  Okay, the typography and layout was clearly superior, based on some very nice templates.  But that only served to make the trite content more painful to read because it looked so nice.

So what is the deal with blogs?  Are they really worth writing?  Worth reading?  The answer is, for some authors, absolutely.  Reading content written by the likes of Steve McConnell, Joel Spolsky, Jeff Atwood, or Mary Jo Foley is always time well spent.  These are people who would be writing good books or good technical articles if they weren’t blogging.  Actually, these are people who DO write good books and good technical articles.  A blog is nothing more than a low-energy mechanism for good authors like this to share miscellaneous thoughts with us.  And blogging lets us enjoy them in many tiny little doses, rather than waiting for months to read the next article or for years to digest the next big book.

So we should, indeed, thank the original authors of the blog tools that came up with the now familiar reverse chronological format.  Sure, our favorite bloggers could easily be publishing static web content every week, dishing up plain old HTML.  But the rise of blogging as a well-known cultural phenomenon just lowers the barriers to publishing one’s own content.  And so, for authors of engaging content, blogging is truly a no-brainer.

And what about the rest of us?  Just because we can say something, should we?  If the band leaves the microphone on while they go on break, should the rowdy at the front table walk up there and start babbling to the crowd?  Well, that depends on who the audience is.  At the bar, if the audience is mainly the rowdy’s frat buddies, he should absolutely step up–he’ll be well received.  At orchestra hall, or a coffee shop, well–probably not so much.

When it comes to blogging, the same holds true.  It all depends on the audience.  If my audience is my wife and my mother-in-law, then blogging about my daughter’s latest potty-training escapade will be much appreciated.  And I won’t truly be that heartbroken when Joel Spolsky doesn’t read my blog.  But the beauty of the web is that it’s truly democratic.  Though we basically have one microphone, we’re not all forced to sit in this room and listen to whoever is talking.  For the most part, natural selection will prevail and the people who are the most interested in what we have to say will end up reading what we write.

So that brings me to the critical first-post question–why am I blogging?  This is the same as asking–what do I want to say and who do I want to say it to?  The obvious follow-on question is then–is blogging the best way to communicate with this audience?

For me, it turns out that I’ve thought about blogging for a number of years and managed to resist the temptation until now.  I always ended up concluding that it would just be an ego-feeding activity with not much real value.  Although I love to write and I’ve always written for myself recreationally, I’ve never had much of a desire to write for other people.  And given the cacophony of blogging going on right now on the web, I honestly don’t feel that I have much to add that is of value–or that anyone else would care to read.  I’m also the kind of person who always has about a hundred personal projects that I’m working on concurrently, so I really don’t need to add what I figured was a low-value project like blogging to the list.

But in the end, I come back to the core idea of blogging–it really doesn’t matter if anyone else reads this stuff.  If I have some topic that I’ve invested enough thought into to write it down anyway, why not use blogging as a vehicle for my writing?  That way, I end up with all my ramblings and notes in a central place where I can get at them.  And if there’s someone else out there that gets a little bit of value from what I’m rambling on about, that’s fine too.

As it turns out, I’ve been journaling at a pretty good clip for years.  And, like most diarists, I guess I have a couple of audiences in mind as I write.  My first audience is myself.  Writing about daily life, experiences, or people I interact with is just a great way for me to process everything.

But as I write, I’m also always thinking about my second audience–posterity.  For me, this mainly means–my kids reading my journals at some distant point in the future, after I’ve gone.  I’m sure I’ll write a lot more on this in the future, but this ties in with my passion for family history and capturing personal and family experiences.  I would give anything to have more snippets of writing from my Dad or other family members who are no longer with us.

So that brings my back to blogging.  I’ll never publicly publish any of my journaling on the web.  That’s far too exhibitionist for my taste.  But aside from journaling, there are plenty of miscellaneous thoughts and ramblings that I wouldn’t mind capturing–for myself and in a format that I can pass on to my kids.  I’m under no illusions that I have anything all that mind-bending to say.  But it is what it is and a blog isn’t a half bad place to keep this stuff.  It’s a place that I can come back to myself, for reference.  And if someone else stumbles on my collection of mental trinkets and finds something of value in one of them, then it will have been well worth the effort.