Showing posts with label WPF. Show all posts
Showing posts with label WPF. Show all posts

Tuesday, October 14, 2008

Silverlight 2.0 RTM!

This is a little far from the usual BI topics, but I think it's pretty exciting regardless. Microsoft Silverlight 2.0 has[1] been released. You can download the bits and the development tools on the official Silverlight web site. There is also a great blog post from Scott Guthrie that describes the 2.0 platform and lots of resources that are available to Silverlight developers.

I don't know about you, but as a developer who has to play in the UI tier occasionally, this is the release I've been waiting for. Check it out!

[1] Finally! I can't remember the last time there was a product that I'd been hearing about and seeing so much of for so long before it was released.

Monday, September 17, 2007

The Vulture Does Silverlight

I love to read The Register. It has a delightfully irreverent and decidedly anti-Microsoft take on the world of IT, and covers a broad swath of topics every day. I like to think of it as "keeping me honest," as their viewpoints are often quite different from my own, and I like to proactively fight my own biases when I can.

In any event, El Reg had an interesting article on Silverlight today, including portions of an interview with Scott Guthrie. Even though it's not technically deep at all, I enjoyed its skeptical take on how Silverlight stands up to competition from Adobe and Google. Check it out.

Sunday, September 9, 2007

Silverlight - WTF/E?

I attended an excellent users group presentation[1] last week on the topic of Silverlight. I’ve been vaguely interested in Silverlight since I first saw it previewed at the Mix06 conference in Las Vegas last March, but honestly haven’t devoted many cycles to tracking (or learning) it in the months since then. Since I’ve been looking into WPF lately as a data visualization tool[5] I thought I should see more about what “the presentation tier technology formerly known as WPF/E” had to offer.

Andy Beaulieu delivered a great presentation, which included demonstrations and code samples of some very cool games[6] he’s developed using the Silverlight 1.1 alpha bits and a decent overview of the platform in general, with as much detail as you’d expect to get out of a 90-minute session. I came away from the session with a few impressions/thoughts/questions in mind:

  • What’s with the name? Usually Microsoft has the habit of having the coolest code names during product development, like Avalon or Indigo, and then replacing them with lame and boring product names closer to RTM, like WPF and WCF. But with Silverlight, Microsoft took the opposite tack – they called it WPF/E[7] for the first year or so and then replaced the world’s lamest code name with something relatively cool – Silverlight. Who would have thought they had it in them?
  • Silverlight 1.0 is pretty much worthless. Who wants to write and debug JavaScript code? Masochists, that’s who.
  • Silverlight 1.1 looks much more promising, since you can use real managed .NET languages to write your code, and not be restricted to JavaScript in the browser.
  • That last bullet says a ton – Microsoft is positioning Silverlight as a broad reach, cross-platform “Flash Killer”[8] that will run on MacOS, Lunix and Unix in Firefox and Safari as well as on Windows in Internet Explorer. That on its own is damned interesting from a company that isn’t always known for playing will with others, but that’s more of a “Microsoft watching industry analyst” sort of interesting. The thing that gets my blood pumping about Silverlight 1.1 is that it relies on Microsoft (working alone or with 3rd parties like the Mono Project people) porting the .NET CLR to non-Windows platforms. Holy crap! This has been one of those things that has been an interesting possibility since the CLR came into being, since the CLR itself serves as something of an uber abstraction layer, but no one really expected it to happen.[9] Since Silverlight 1.1 is still in Alpha it’s not yet clear how this will play out in the end, but let’s just say it has my attention now.
  • Even Silverlight 1.1 is just for play, not for building “real” applications. Why do I say this? Instead of replying in my own words, let me provide a quote from Adam Nathan, senior developer type guy from Microsoft. This quote is the first sentence from Chapter Four in his excellent book Windows Presentation Foundation Unleashed[10]: “No modern presentation framework would be complete without a standard set of controls that enables you to quickly assemble traditional user interfaces.” Note to the Silverlight team: Go talk to Adam. Silverlight lacks the basic controls that will be essential for building even the simplest business application, and based on the information I’ve seen even things as ubiquitous as a data grid are being presented as “partner opportunities” and not included in the core product from Microsoft.
  • Despite this, I can still see building “islands” of Silverlight content to be included in “traditional” ASP.NET web applications, so perhaps my “just for play” comment above isn’t completely fair. Still, the thought of having to mix-and-match more and more technologies to build an application seems like a step backward. Hopefully the Silverlight team will produce some best practice documentation even if they don’t produce a complete control set.

So I guess I’ll be keeping my eye on Silverlight as 1.1 gets closer and closer to RTM. As with WPF, I don’t know if I’ll ever write any production Silverlight code (or even if I’d ever want to) but it’s caught my interest if nothing else…

[1] Although Syracuse is a pretty small town, we have an excellent INTEA-affiliated users group which focuses on .NET development topics.[2] The CNY Developers users group is run by a local developer and MCT named Andy Beaulieu, and it was he who delivered this Silverlight session.
[2] Although I have been making an effort to introduce more SQL Server and BI topics with my presentation a few months back on SQL Server 2005 CLR integration and my upcoming presentation on SQL Server Integration Services.[3]
[3] Is it kosher to have a footnote within a footnote? Would that make it a meta-footnote?[4]
[4] I think this has to be ok, because I never meta-footnote I didn’t like…
[5] Not to give the impression that I’ve been spending a great deal of time with “real” EPF either, because I haven’t.
[6] One of them is a scrolling space shooter that uses the Microsoft Virtual Earth web service API to provide the background. You can enter lat/long coordinates or a street address when you begin, and battle invading aliens in the sky above your house, your school, your workplace, or as we saw last week, over the Syracuse New Horizons training center where the users group meets every month. I wish I could provide links to the games where Andy has them posted on his home page, but I’m typing this post at 35,000 feet en route to Atlanta, and I know that when I arrive in Seattle tonight at midnight I’m not going to have the energy to do much more than drive to my hotel and crash, so those links will have to wait for another day.
[7] Windows Presentation Foundation/Except for the stuff you really want.
[8] Although I’ll personally believe this when I see it – People said the same things about the Zune, that it would be an IPod killer, but all I hear from the Zune team these days is silence, instead of the steady stream of PR that I would be hearing if Microsoft really cared about owning the portable media player market. BTW, did you notice that I spelled it “Xune” in my last post? I haven’t heard anything about it in so long I didn’t even get the name right… For what it’s worth, I do think that Silverlight has a lot of promise, but Flash is entrenched and mature and such, and Silverlight has a lot of catching up to do.
[9] Kind of like it’s always been theoretically possible for developers to get dates, but it never really happens when you’re awake. ;-)
[10] This is one of the best technical books I’ve read in many months. Adam’s approach to presenting the capabilities of WPF is exactly what I would have asked for if he’d asked me: he introduces new concepts up front, then build on those concepts throughout the book, showing the reader what is new, what is interesting and how what they already know can be applied to the new tools and technologies, without wasting time explaining things that an experienced .NET developer would already know. Great work, Adam! [11]
[11] He also makes use of sidebars for out-of-band discussions and drill-downs almost as liberally as I make use of footnotes, which fits with my style of reading as well as it fits with my style of writing. Especially since he pulls it off better than I do…

Tuesday, August 28, 2007

Random Thoughts on Usability

I’ve been working a bit with Windows Presentation Framework lately. Don’t worry – it’s not as bad as it seems. No one has asked me to design a new cutting-edge user interface for their software. I plan on remaining on the back end as close to the data as I can get without burning myself, and closer if necessary.[1] But the opportunities that exist for rich data visualization with WPF and WPF/E are too exciting to ignore, so even if I never write a line of production XAML, I still want to know enough about it to be dangerous.

Besides, it’s new and cool, right?

Right?

Yes, it is. And that’s what’s been scaring me. I’ve been thinking about usability, and how the temptations presented[2] by WPF may overwhelm those developers who are tasked with designing that next great UI, causing them to forget their users and instead focusing on the cool new features of the cool new platform.

And we know that’s not good, right?

Right?

Boy, I sure hope we do by now.

Anyway, I’ve had a few random thoughts running around my head that my tagging service[3] has categorized as “usability,” and once this tag bubbled to the top it was immediately correlated with WPF. So in no particular order, here they are: Random usability thoughts.

1) The Price Tower. The Price Tower is a 19-story building in Bartlesville, Oklahoma that was designed by the renowned architect Frank Lloyd Wright and has since been converted into a hotel without modifying his design. He’s a famous guy, right? He’s a master architect and artist who really knows his stuff, right?

This may be the case, but this building is a usability nightmare. Before I get into any details on that front, let me start off by saying the tower is beautiful – it has delightful angles and motifs that really embody the Frank Lloyd Wright look and feel, and it’s aesthetically very pleasing. But as a usable space it falls flat. Flat onto rusty metal spikes. The rooms themselves are split onto two levels, with a narrow[4], steep and angled stairway connecting them. The stairs are dangerous. The rooms themselves are lovely, but bizarre. There is not a right angle to be found. The ceiling in places is high and lofty; in others it is so low that I need to duck to avoid scalping myself. The bathrooms are tight and confined – if you can picture the last bathroom you used on an airplane and squeeze a shower into that space you’re not far off. And you can’t get to the toilet without closing the bathroom door, so there’s no way to escape the claustrophobia when nature calls.

There are many more usability horrors in the Price Tower (such as the hexagonal elevators that only hold one person at a time) but I won’t attempt to list them all here.[5] But it sure is pretty!

2) Thrifty Rent-A-Car. This usability horror story is a little less blatant, but no less frustrating. I recently rented a car from Thrifty – I reserved it online using their web site to be picked up Sunday night when my flight arrived, and returned on Friday when my return flight departed. As part of the reservation process I provided profile information (name, address, phone, etc.), trip information (airline and flight number) and was in return given a reservation number, a daily rate and a total estimated price. Standard fair so far.

But my flight on Sunday was delayed due to weather, and I arrived at 11:30 instead of 9:30 as planned. No problem right? The reason you provide your airline and flight number when you reserve a car is so that if the flight is delayed, the rental company employees can wait for the delayed customers and not cancel the reservation or leave, right?

Right?

Apparently not. When I got to the rental counter, there was no one there. The very helpful young woman at the Alamo rental counter next door let me know that they’d all left. Gone. No note, no notification, no communication, no phone call, no nothing. And certainly no car.
I won’t go into the many negative emotions I felt at the moment. I was able to rent a Nissan Murano SUV from Alamo for one day, and got to my hotel before I fell asleep, which is really what matters.

But I was seriously let down by Thrifty. There is an implied contract between the rental company and renter in the exchange of flight information, and that contract was broken. When I called Thrifty the next day to ensure that I still had a car waiting for me and told the “customer service” representative about my disappointment, the only thing that he could say[6] was “we go home at eleven.” I won’t go into more frustrating details, but I certainly will never rent a car from Thrifty at this location if my flight is scheduled to arrive later than mid-afternoon. It’s just not an acceptable risk, because a rental provider that doesn’t reliably provide rental cars isn’t usable.[7]

3) Nissan Murano. (http://www.nissanusa.com/murano/index.html) As I mentioned above, I rented this SUV from Alamo when there was no service at the Thrifty counter. I wanted a compact car (I don’t like driving large SUVs) but this was the best vehicle available. I drove it for the day on Monday, and took it back to the airport Monday evening so I could pick up my reserved car at Thrifty. I didn’t pre-purchase fuel, so I stopped off at a gas station near the airport to fill up the tank before returning the car.

This should be a simple operation, right? There is a standard way to do this, right?

Right?

Wrong!

First, I reached down to the floor to the left of the driver’s seat to pull up the little lever that is there on 99% of the cars I’ve driven in the last five years. Nope – nothing there. Next, I looked over the dashboard to see if there was a “fuel door release” button. Nope. Then I looked inside the glove compartment to see if there is a release button in there, as I vaguely remembered some older cars having. No go. So I got out and looked at the fuel door itself to see if it was designed to open manually from the outside. And this was not the case. WTF? What other options could possibly exist for this simple task? I could think of none, so I repeated the steps above several times, looking more closely and more slowly each time. I probably spent the better part of ten minutes doing this, to no effect. There simply was not a button or lever or anything to open the fuel door.

Then I found that thing you almost never find in a rental car: the user manual. I flipped through the table of contents and found the diagrams of the control panels. Four or five pages with diagrams; dozens of labels for details on the diagrams. No mention of anything related to fuel other than the fuel gauge. WTF? I then flipped to the index, found the entry for the fuel tank door and flipped to the center of the book where the topic was buried. There I found the instructions for opening the fuel tank door. Ready for them? This is what you need to do:

* Exit the car
* Close the driver’s door
* Insert the key into the lock on the driver’s door
* Turn the key twice clockwise in the lock on the driver’s door
* Remove the key from the lock
* Push on the right side of the fuel tank door

Am I allowed to say “WTF” one more time in a single blog entry? Who thought of this? Who approved it? Who failed in their review to allow this incredibly horrible and completely unusable design to make its way from the drawing board through manufacturing? And perhaps even more importantly, where are their bodies buried?

To be fair, I’m sure that this usability disaster would be greatly lessened with effective training, but to be blunt, training should not be required to complete a simple task for which a standard solution is ubiquitous.[8] Nissan’s decision to reinvent the wheel, to implement a proprietary solution to a well understood function for which a standard solution already exists resulted in an incredibly negative user experience.

So what does all of this have to do with WPF?[9] My concern is that developers will give in to the siren call of new features to build UIs that they could never build before just for the sake of doing it, without remembering all of the usability practices and guidelines that “applied to the old tools and technology.” So I’m still very excited about the new capabilities that WPF provides, but that excitement is tempered with more than a little trepidation on how real developers in the real world use these capabilities to build applications that are not only beautiful and cool, but also usable…

[1] Or should that be “and closer if possible?”
[2] Pun intended
[3] I don’t know exactly where they’ve come from or who installed them, but I have a serious number of background services running all the time. Even though they’re supposed to all run at lower priority so that their threads don’t impact the performance of mission-critical threads, sometimes it seems that this isn’t always the case these days. Perhaps I need a hardware upgrade…
[4] The word “narrow” does not do these stairs any justice. Although I did not measure them, I would be surprised if they were more than 15” wide, and amazed if they were more than 18” wide.
[5] Instead, ask my colleague Ted Malone ;-)
[6] Although to his credit, he did say it over and over again, so at least he was consistent…
[7] Yeah, the usability link is a little weak for this story, but it’s a necessary lead-in to the next one.
[8] I did not have this in mind when I started writing, but this sure sounds a lot like the Office 2007 “Ribbon” UI redesign, doesn’t it? I personally love the ribbon and love Office 2007 in general, but because of this rant against Nissan I finally better understand where people are coming from when they rail against the removal of menus and toolbars in Office 2007.
[9] Oh yeah – that’s what we were talking about!