A casual look at the world .NET coding
I was saddened today by the news that Microsoft has essentially killed the Ajax Library, including the cool client-templates and client data context. It’s not “new” news, but I guess I had missed the nuance that the Ajax Library was dead during the excitement of Silverlight 4 and Windows Phone 7 at MIX.
Consider this a public service announcement for those of you that may not be receiving (or paying attention to) the details about the upcoming changes to Microsoft’s Azure pricing. Up to now, Microsoft’s Azure cloud hosting has been a “CTP” preview and as such it has also been free. Come PDC and November 17th, though, your continued usage of Azure as a free playground for cloud development will nearing its end.
With the recent acquisition of my new Mac Pro, I knew it was time to face the music and clean-up years of accumulated digital files. I have procrastinated the task for years, and now I fear further delay could lead to tragedy, with old, loud hard drives just daring me to let them guard my data until their platters spin no more. It is time to stare my digital pack rat behavior in the face and do some house cleaning.
By now, everyone should know that Silverlight 3 is official. Born on July 10th at a big launch event in San Francisco, Silverlight 3 completes the 9 month cycle of improvement that kicked-off immediately after the official release of Silverlight 2 in October of 2008.
As you may have heard by now, Microsoft has just unveiled the official pricing for its forthcoming Azure cloud computing platform. Ever since its introduction at PDC08, Microsoft has been very coy about the pricing for Azure. They’ve always defaulted to the party line that Azure pricing will be “competitive” with other cloud offerings.
Here’s the problem:
With Windows 7 officially in beta and millions of people apparently clamoring to try it, I expect many people will be playing the “does it/doesn’t it” work game with their favorite software and the new beta OS. I recently made the jump to start running Win7 full-time and have already installed a number of applications with varying degrees of success. To help others traveling along this path, I plan to log my experiences here for my app compatibility experiences with Win7 Beta.
As pretty much the entire developer world knows by now, Google recently made a splash by introducing their own "home grown" browser called Google Chrome. The browser was introduced as "the browser that does everything right because it doesn't have legacy baggage," and it has largely lived up to its billing. The browser is fast. It's easy on the memory footprint. And it's definitely got Google's minimalist signature all over it.
For anyone having trouble understanding this post's title, it's old analogy syntax: XAML is to Developers as Modern CG is to Steven Spielberg and George Lucas. Still not making sense? Let me provide some more explanation.
How great directors lost their way with CG
Few people would disagree that the great movie directors of yore- namely Steven Spielberg and George Lucas- have passed their great movie making prime. If we look at the movies these directors have produced in the last 5 years (or so), like AI, War of the Worlds, or the new Star Wars, they pale in greatness to early hits. Movies like Jaws, Close Encounters of the Third Kind, ET, Indiana Jones, Star Wars, and American Graffiti are universal classics that make recent flicks look like uninspired, freshman projects.
So what happened? Did these creative minds become less creative with success? Did they lose their ability to make a great movie? I would argue that modern CG happened. Technology opened these director's brains for the world to, enabling them to put every "creative" idea they could conceive on screen. And that, as it turns out, is not a good thing.
Think about it. The practically fully animated Star Wars prequels with their armies of robots and everybody's favorite Jar Jar Binks. The latest Indiana Jones movies and it's cliche aliens and UFOs- and Indiana Jones flying through the air in a CG refrigerator. Even War of the Worlds, for all of its production value, didn't come close to capturing the magic of Spielberg's more successful alien movies like ET and Close Encounters. In each case, these movies were loaded with CG, "enabling" the directors to tells stories and put things on screen they couldn't have done due to technical limits in the 70's, 80's, and even early 90's.
And in each case, these movies have failed to live up to the greatness of their directors. Without technical constraints, these great creative minds aren't making great movies. It seems that creative minds like Spielberg and Lucas produce better results when thy have technical limits. Their movies actually benefitted in the past from some built-in editing. Technical constraints forced them to be more creative, to keep things simple. The result: better stories and better movies.
What's this got to do with XAML and Developers?
Just as great film makers made better movies when they had to be creative within limiting technical boundaries, I see the emergence of new "freeing" technologies like Silverlight and WPF (both based on XAML) creating a new challenge for developers. Now that developers can easily integrate animation, media, 3D, and a whole array of "wiz-bang" features in their applications, I fear developers will make the same missteps as the movies. Previously impossible features can now be easily included in apps, and in many cases developers and designers will probably see this as a good thing. "Finally we can put our ideas in to our apps," they'll say.
But will this lead to better applications for users? I'd argue that in many cases it won't. As application developers, I think we've benefited from a little technical constraint to keep our application's in-check and to force us to be more creative, more resourceful. With flexible technologies like XAML, great developers will be those that can be good "editors" of their own applications.
Are you saying new technology is bad?
Of course, not! I'm all in favor of new technology and moving the quality of movies and software forward. It just needs to be done appropriately to enhance traditional experiences, not completely re-invent them. We don't need Indiana Jones flying through the air in a refrigerator, but putting him on a rocket powered sled (again CG) is great! It fits the story and the CG makes the experience more believable. So it goes with software. Do we need to replace our ASP.NET AJAX apps with Silverlight? No, but we can definitely enhance them with technologies like Silverlight to make the experience more enjoyable where appropriate.
I suppose this all boils down to the old-ish adage: Just because you can, doesn't mean you should. As you start developing with new platforms like WPF and Silverlight, don't fall prey to "unlimited freedom." Be good editors of your applications. Create constraints. Be creative. If you do, I think you'll avoid going the way Spielberg and Lucas and you'll continue to create great software hits on these new platforms!
Have you ever found yourself spending more time trying to learn patterns than actually designing or coding your application? It's easy to do. With the maturation of .NET, suddenly everywhere you look you see presentations, books, and blog posts talking about this pattern or that pattern, each asserting that the other is inferior for some obscure reason. And you, being the mature .NET developer that you are, follow these conversations, desperately trying to find the "magic" patterns that will make your next project perfectly maintainable, easily extendable, and consistently scalable from the get-go. I know, because I've been there.