Main

April 16, 2007

I have seen the Silverlight...

So TechMeme is chock full of news about SilverLight, including the patented Microsoft astro-turf announcement technique, where all the Microsoft WPF/Expression employees post the same links to their blog without actually saying anything new and substantive. The best post is the real announcement from Tim Sneath. The other post worth reading is this one from Loke Uei where he has a handy comparison chart listing Silverlight vs. WPF vs. Flash/Flex. Too bad the column on the Flash/Flex stuff is almost completely incorrect. Every other post from Microsoft’s folks is pretty much worthless.

But what did they actually annnounce at NAB? A decent new name (by Microsoft standards it is excellent since it only has one compound word) and a really boring new logo. The runtime downloads have been renamed but the bits themselves are the same pre-alpha stuff from a couple of months ago. No news on actual Expression support for Silverlight either. Some teasing about the miniCLR “surprise feature”. Guess they want to save all the real news for MIX. All that’s left for NAB is hype, hype, hype. The wow is back!

Meanwhile Apple and Adobe actually had new never-before-seen products to talk about, not just new product names.

March 25, 2007

PDF Preview Handler from Ryan Gregg

Ryan Gregg has done a nice little hack (and I mean hack as a compliment: the program was small, easy to create, and darn useful) to embed Adobe Reader’s ActiveX control within a Vista/Outlook 2007 Preview Handler. So now you can see what those PDF attachments in Outlook 2007 look like without all that double-clicking. The nice thing about his handler is that it works with Outlook 2007 on XP unlike the FoxIt Preview Handler from Tim Heuer - very handy for me as I prefer to run XP in Parallels. Plus you don’t have to deal with all that FoxIt stuff :-)

I should warn people that the ActiveX control’s UI wasn’t designed to work with small amounts of screen real estate, so those with smallish laptops might want to wait for a better solution to come along…

March 07, 2007

Call PETA: Microsoft doing animal research!!!!

So I’m reading Laughing Squid (which I love) and I see an article about the Microsoft Research TechFest that just happened. I’m scrolling through all the pictures and what do I see:

Picture of a cat in a cage, from Laughing Squid, released under Creative Commons license

OMG, Microsoft is keeping cats in cages and doing experiments on them! I always knew they were evil but this is beyond the pale!

Turns out this is really something much more innocuous and rather cool: the Assira CAPTCHA solution.

Not only is it a clever idea, but it actually helps find homes for pets via a partnership with petfinder.com. Nicely done!

March 05, 2007

Petzold on WPF Book Structure

Interesting post from Charles Petzold about why he structured his book Applications = Code + Markup they way he did: with code-based examples first and then XAML-based examples towards the end.

When I read the book, I immediately remarked on the structure and wondered several times while reading it whether or not it made sense the way he did it. I found his article very helpful in explaining why:

The more I explored XAML on my own, the less I seemed to know. How do panels work? Why were some properties bindable but others were not? Why were some properties animatable but others were not? Why do those properties called “attached properties” seem to be in the wrong place? Why can you specify an event handler for children in a parent’s tag? What happens when modifying an existing control with a template isn’t enough and you need to write a custom control with keyboard and mouse handling and drawing?

Of course, answering these questions for myself required a lot of exploration. XAML is not as simple as it first seems. XAML required a whole intrastructure in WPF that involves layout mechanisms, dependency properties, routed events, and other features. It became quite obvious that most WPF programmers would want a familiarity with this infrastructure. Most WPF programmers would also want to gain a facility for working with this infrastructure. This can only be achieved in code.

Just one example: If you see an attached property in XAML — such as Grid.Row=”2” — it really doesn’t make a lot of sense. You’re specifying a property of the Grid panel within a child element of the Grid. If you look at the syntax in code, however, and you’re given an explanation of what’s going on behind the scenes in the context of alternative syntax, then attached properties make perfect sense.

I made a decision to tackle a lot of the WPF infrastructure very early in the book. I have an early chapter on dependency properties and a chapter on routed input events. I show how to write custom elements and custom panels comparatively early in the book. Many of my sample programs contain Window constructors that create and intialize elements and controls, which is a job that is eventually taken over by XAML, but doing it in code is something that every WPF programmer should know. Some stuff — such as defining a template — is incredibly painful in C#, but my book shows examples of that as well, and I hope the reader later comes to appreciate the relative simplicity of doing it in XAML.

He also gives a hint at a WPF feature that never saw the light of day:

I kept a close eye on one very special feature: the ability to embed C# code in a stand-alone XAML file and have it run in the browser. Although this feature was hinted at a bit, it never became real. If it had become real, I might have gone this route — or at least seriously considered it.

Is this where the WPF/E mini-CLR comes in?

February 12, 2007

SuperFetch Rocks!

I’ve been using Vista as my main OS on my desktop PC for quite some time now - knowing what Vista can and can’t do is part of my job. One thing I’ve really been impressed by is the SuperFetch feature, which intelligent preloads application code into memory based on a machine learning algorithm.

Now Patrick Schmid of TG Daily has done some benchmarking on the performance effects of SuperFetch and ReadyBoost on application launch times, using Outlook, iTunes, and Acrobat as sample applications. Its an interesting article, well worth a read. His conclusions, though: he recommends buying a 1GB machine then buying a USB Flash memory stick. I’m not sure I’d agree: he didn’t actually test with 2GB of RAM.

Based on my experience with a 2GB machine, I recommend that as the way to go if you can afford it. PhotoShop CS3 launches a lot faster than CS2 did, but with SuperFetch it starts up super quickly - sweet! I'm told that an x64 machine with 4GB+ of memory is even more impressive when launching PhotoShop. :-)

Kudos to the team(s) at Microsoft who pulled off this nice piece of applied research.

January 31, 2007

C# 3.0 adds categories

As a language geek, I found this discussion of the new extension methods in C# 3.0 fascinating. I haven't been paying as much attention to C# 3.0 as I probably should because I've been too infatuated with Ruby of late. I'd love to see someone from the C# team respond.

January 30, 2007

Some Reflection on the Market for Components

Once upon a time, there was a HUGE market for ActiveX components that would work with Visual Basic. After Microsoft introduced .NET and especially .NET 2.0, a lot of the energy moved from the ActiveX component world into the .NET library world (although it should be noted that this doesn’t necessarily imply that all the money has moved as well).

This morning I was browsing through the newest edition of MSDN Magazine (dated Feb 2007) and noticed that the vast majority of the ads were for .NET 2.0 stuff. So I asked myself: “I wonder how much take-up there has been for WPF components?” I remember going to PDC events a few years back where Microsoft brought Infragistics and others on stage and talked about how wonderful the new WPF market was going to be.

I guess I must have had too much free time, because I decided to do my own very unscientific survey. I counted the number of ads that featured a particular technology. Ads that mentioned more than one technology got counted multiple times, and I didn’t count the ads that were placed by Microsoft itself - just those from paying ad customers. There were 51 ads in total. I also checked for mentions of a few other terms that were near and dear to my heart: PDF, Java, and Flex. Here are the results:

Chart of Ads per Technology in MSDN 02-2007

There were a couple of things that jumped out at me:

  • As I mentioned at the beginning of the article, it appears that components for WinForms and .NET 2.0 in general have most of the energy in the Microsoft component space.

  • PDF was mentioned quite a bit in various ads, and XPS not at all. Again, not too surprising, but its nice (for Adobe) that developer take-up of XPS is still low.

  • Java is still doing quite well, even in the heart of Microsoft-country.

  • WPF & .NET 3.0 take-up amongst developers selling to developers is quite low. Of the 3 ads found, two were actually for training and not for software you could buy. Developers seem more exciting about products around ASP.NET AJAX, which I find interesting since both technologies went final around the same time.

  • Its also interesting that trainers seem to see a richer market for WPF than for ASP.NET AJAX. Maybe that is a reflection of pent up demand for WPF, or maybe its a reflection of the increased complexity of WPF development.

Not the most earth-shattering piece of analysis work ever, but hopefully something people will find interesting.

[Update 02-12-2007] I mentioned Infragistics and its announcements of WPF components at PDC events of yore, so I thought it would only be fair to point out the news on Mike Swanson’s blog that Infragistics has posted a beta of its NetAdvantage for WPF 2007 Volume 1 set of controls, and that DevComponents has its Office 2007 UI controls for WPF in private beta. Congratulations to both companies. I look forward to seeing them both shipped as final products sometime soon - maybe the market for WPF components will materialize then.

I also wonder what the licensing story is for all of these Office UI lookalike controls - do these companies have a license from Microsoft to duplicate the stuff in the Office UI guidelines? Do companies that ship applications using these control libraries get a license as part of the purchase price? Given how scary the Office UI license is for a typical ISV legal department, it would be nice if these sorts of libraries could make those sorts of issues go away.

January 11, 2007

Vista hurts casual gaming

Via Todd Bishop of the Seattle Post Intelligencer, I read a very interesting article by Alex St. John on Gamasutra.com. In this article, entitled Vista Casts A Pall On PC Gaming, Alex writes that the combination of Vista’s security changes and the parental controls in the Gaming Center will have a chilling effect on the adoption of casual PC games:

One of the pieces of information a game has to supply to register with Game Explorer is a ESRB rating. Games that do not supply a rating will be subject to the “Not Rated” parental control setting. Since games are “trusted” to supply accurate ratings information, one might expect that they are also trusted to handle parental messaging themselves. Not so, any game that registers with Game Explorer becomes “subject” to Vista parental controls which will proceed to block the game from running and offer to delete the link to the game if you try to run it from anywhere on the system other than within the Game Explorer.

The heavy handed implementation of parental controls presents several problems for PC game developers. First, most free family and casual games are “unrated” because the ESRB rating service, designed for multimillion dollar boxed titles, is too expensive for most small casual game developers. Any parent concerned enough about the games their kids are downloading online to use Vista’s parental control system are likely to block “unrated” content and break most family appropriate content that can be found online. Note that Vista’s parental control system does not apply to web games and is not accessible from the browser so parents who expect them to protect their kids from “all” online game content may be in for a shock.

The bottom line of all this is that the idea of just trying out a casual Windows game on Vista is gone. Alex says he can’t speculate on what Microsoft was thinking, and I won’t try. I will point out that the obvious solution to the problem is to make your games web-based using Flash - the problems Alex complains about only effect games written to the Windows APIs that need to be installed locally. Longer term, Apollo will let you bring those games to the desktop as well.

[Update 1-17-2006] GigaGamez has a good followup article on the story, where an anonymous Microsoft executive says:

“It’s unfortunately a mercenary way of doing things,” a Microsoft executive tells GameDaily, explaining why indy/casual developers are receiving less support. “Certainly we want Blizzard’s ‘World Of Warcraft’ to work flawlessly on day one of Vista because 8 million tech support calls would be a very bad thing. The casual developers don’t sell quite as many.”

That's pretty sad, and shortsighted to boot.

December 06, 2006

Expression, WPF, & WPF/E: The triumph of the developer over the designer?

As anyone who reads digg, slashdot, and/or techmeme knows, yesterday Microsoft released new versions of the Expression tools and the first “CTP” of the WPF/E runtime.

One of the more interesting posts made about the announcement was Robert Scoble’s explanation of why “Microsoft targets Adobe”. In it, he talks about how in the early days of longhorn, the UI design folks created all kinds of whizzy demos in Director, and that this became a problem when those prototypes had to be turned into real code. Why was it a problem? Scoble says:

Why? Because executives bought into the Flash and Mirrors song and dance too. They thought what they were seeing was possible.

The problem was, developers weren’t involved. Only people who studied interaction, design, and Macromedia Director.

Problem is, anything you create in Director has to be thrown out and rewritten in C++ (if you work on the Windows team).

That meant a whole bunch of time is wasted, plus it’s very possible that what you are dreaming of is simply not possible. It’s also possible that development teams, that don’t understand interaction design, will change your “experiences” and totally munge things up.

So, could Flash ever be “force fit” to be the UI of Windows? Not according to the engineers who’ve studied the problem.

They needed a system that could be used to design real pieces of Windows, if not the entire UI, and handed off to a developer, or team of developers, without having to have the developers touch the UI at all.

What Robert Scoble is saying here is important, in that it demonstrates the fundamental weakness in Microsoft’s strategy: WPF, WPF/E and Expression Blend were all designed first and foremost to address the designer-developer workflow as practiced in the Windows group at Microsoft. And based on what Robert Scoble wrote above, and on what I saw when I worked at Microsoft, this is a workflow that is all about having designers fit in with how developers want things to work. That’s why they put so much focus on things like having Expression Blend use the same project format as Visual Studio, having it work with Visual Studio’s version control mechanism, and so forth. When was the last time you heard a designer put any of those things near the top of their wishlist?

By contrast, Adobe feels that designers developing modern, interactive applications (whether using Web 2.0/Ajax or RIA technologies) want to build workflows that are first and foremost about delivering great designs to your clients. Those clients may be developers, but they might also be a corporate marketing department, or an online or offline content publisher, or any one of a zillion different content consumers. Adobe has designed Creative Suite, Apollo, Flex, and so forth to enable all these workflows, in a way that lets designers focus on what they do best.

Personally, I think Adobe’s choices show that we have a better understanding of designer needs. Of course, that doesn’t mean we don’t have lots of room to improve. I’d love to hear what real designers think, so please comment!

November 15, 2006

Zune and Vista: compatibility is hard

I almost feel bad piling on, given how poor a reception the Zune is getting in the press: first CNN does their story on Zune which ends with the anchor and the reporter enthusing over how much cooler the anchor's new iPod Shuffle is, then all the guff Microsoft is getting because the new Zune isn't compatible with Windows Vista yet.

But my primary purpose in writing this isn't to pile on, but to point out how difficult it is for developers to make their software compatible with Vista in a timely manner. Adobe just released Acrobat 8 a few weeks ago, and it too isn't compatible with Vista or Office 2007. This isn't because we don't care about those platforms: rather, it shows how sometimes software release schedules make compatibility difficult. We could have delayed the Acrobat launch by a few months to wait for Vista and Office 2007 to go final, then do all of our testing and so forth, but doing so would have been risky. We didn't really have any way of knowing that Vista and Office would really hit their RTM dates, and every day you delay shipping costs your company revenue. So it goes.

That probably won't stop others from pointing at this lack of support as proof of incompetence or nefarious intent, though. (I'm actually surprised no one has accused the Zune team of omitting Vista incompatibility on purpose yet.)