All Streets

May 3rd, 2008

Just came across a new Ben Fry (data viz wunderkind) exploration piece.  All Streets is a street map of the lower 48, but one that contains each and every of the 26 million individual road segments found therein.  Check it out and notice how geographical and cultural details emerge from the image.  While you’re at it, don’t forget about Ben’s book on data visualization and, if you haven’t already seen it, check out the related zipdecode.
 

crossdomain.xml Filename is Case-Sensitive

May 2nd, 2008

Form what I can tell, you’re going to want to make sure it’s all lowercase…at least if you’re putting it a *nix box.  That’s how it went down for me, anyway.  I had initially named it CrossDomain.xml and was getting errors.  After the name change, things work super smoothly.

John Gossman on Silverlight Control Templates

May 2nd, 2008

I took some flack for my (arguably polemic) thoughts on the Silverlight control templating model so I was happy to see the second to last paragraph of this post where John shares some of my views (albeit less dogmatically).  Granted, he’s among the guys making those decisions so he may have a bias.

More importantly, in spite of a little advocacy for the PART/STATES model in Silverlight, he also mentions that “in the future, when [they] add Triggers into Silverlight,” blah blah blah.  Awesome!  All I heard was the part about forthcoming Silverlight triggers.  Now that’s something we can all get excited about!

ISO50, Barack Obama and the Power of Design

April 30th, 2008

Obamap PosterRegardless of your politics, I’m pretty sure that you can get behind Scott Hansen (Mr. ISO50 / Tycho Music). He’s a brilliant designer. His print work, in particular, is a major fount of inspiration.

I saw this morning that the Obama campaign has commissioned him to do a poster, presumably a follow-up to the iconic image done by Shepard Fairey.

This kind of blew my mind. Partially because it’s a weird convergence. I didn’t really know who was paying attention to ISO50. I knew he was big but, you know, big the same way that James Doohan might be big at a Star Trek convention or the former quaterback might be big at a high school reunion. So it was strange when all of the sudden he had been commissioned by Barack Obama who is big like running for President big.

It also blew my mind because I had just assumed the previous poster had been a lucky fluke for Mr. Obama. And it may have been, but the campaign embraced it and apparently are looking for a follow-up. When I read that the Obama campaign had contacted ISO50 and asked for a poster, it got my attention. Is Barack Obama (or someone on his campaign) really that in touch with the power of a designer like Scott? Unless the design geek demographic is more important than I realized, something is going on here. Scott’s design does have broad appeal and it’s definitely evocative, but I wouldn’t call it mainstream by any means and a presidential campaign is about appealing to the masses.

That’s what gets me excited. Is the mainstream shifting? Is great design like this seeing it’s day? Is this an acknowledgment of the real power and appeal of a great design and a great designer? Apparently, the first poster is doing some good. I can’t wait to see what ISO50 has created for the second.

Kaxaml Support for Silverlight Available in Beta

April 17th, 2008

Get it here!  Unfortunately, that’s the only change and it’s pretty beta, but really cool!  It’s a real Silverlight surface too.  There are some issues (thus the beta).  I still haven’t, for example, worked out an up-to-date Silverlight schema file and there are some issues getting images to load.  If you have ideas, definitely let me know.

Once you install the beta, you’ll need to open a Silverlight tab to get Silverlight working.  Do that with the shortcut key Ctrl+L or choose "New Silverlight Tab" from the File menu.

default1.xaml - Kaxaml

Thanks to the dozens of you who have sent emails about bugs, feature suggestions, etc.  I really do appreciate the interest.  I’ve tried to respond.  If I missed yours, I’m really sorry and you can certainly feel justified in resending.  Oh, and Chris, I did add support for local paths.  Still no assembly loading.  That’s coming soon though.

That’s it for tonight…more details a mañana.

RegExr

March 31st, 2008

If "stop being afraid and learn to love regular expressions" was a New Year’s resolution for you, then Grant Skinner just made things a whole lot easier for you.  Seriously, if the System.Text.RegularExpressions namespaces isn’t part of your repetoire, then you’re missing out.  It’s part of the Silverlight CLR too.

Data Visualization Mother Load

March 26th, 2008

Looking for something to get those data visualization creative juices flowing?  Look no further.  This probably isn’t a comprehensive list of every cool data visualization I’ve seen in the last 2 years, but it’s really close.

I Like the Silverlight 2.0 Control Templating Model (better than WPF’s)

March 25th, 2008

There have been a lot of opinions flying around the web-o-net about the problems with the control templating model in Silverlight 2.0.  I’m going to go out on a limb here, though, and say…I like it.  That’s right, I like the new model.  In fact (insert teeth gritting here), I wish we had done the same thing in WPF (gasp!).

The reasonable opinion against the new model (as I understand it) is based on the fact that Silverlight doesn’t have support for triggers in control templates (or just about anywhere for that matter).  This means more code and less XAML for defining those behaviors. 

In WPF, for example, if you wanted a control to respond to a mouse hover (and, say, change its color), you would create a trigger on the IsMouseOver property and then party in that trigger and create whatever storyboards (or setters) you want to implement that color change.  This all happens in markup. 

In Silverlight, on the other hand, the developer has to create an event handler for the MouseEnter and MouseLeave events and then explicitly load a set of storyboards with well known names to handle the transitions between those states.  Silverlight is doing a lot less heavy lifting for you and there’s definitely a code component to what, in WPF, seemed like a simple XAML task.

See how much better Silverlight is?  Okay, so the "better" part may not be obvious.  Here’s my take though:

First, things got much cleaner in the new component model.  Do you remember this doc?  It’s an attempt to prioritize the eight (that’s right, eight) different "best practices" for expressing control state changes and behavior in your control.  This includes: bindings, triggers, commands, named parts, etc.  This is some serious complexity and leads to some serious lack of discoverability.  This is why we needed projects like SimpleStyles.  Templating for WPF controls is simply not predictable (let alone toolable, but we’ll get to that) so we end up needing a lot of sample code to get people off the ground. Plus, it’s really tough for developers.  You have a myriad (well, eight) different recommendations for doing the same thing and the choice between them is not always clear even to an experienced WPF developer.

That said, you may have thought that the complexity was worth it.  It may seem, after all, like this complex model puts flexibility in the designer’s hand since, of those eight, two (bindings and triggers) have a very strong markup component to them.  Moreover, the Silverlight way (the named parts approach) looks a strong code component to it. 

The thing that is easy to forget, though, is the fact that all of those bindable and triggerable properties and events had to be defined by a developer at one point.  The IsMouseOver property had to be created somewhere.  So at the end of the day, it’s not that behaviors require more code now, it’s just a different kind of code: more event handlers and fewer property change handlers to kick off behaviors.

Second, the Silverlight model has a very good chance of being much easier to use in a tool like Blend.  Frankly, I haven’t seen a lot of people have great success with control templating in Blend.  Button and Checkboxes don’t count.  Try creating a template for a ComboBox or a Menu.  It’s really hard, even if you know what you’re doing.  Once again, this comes down to the complexity of the contract between the template and code. 

Imagine, on the other hand, a model where you can simply walk through a checklist and provide elements for each of the UI "parts" of the template and storyboards for each of the "behaviors."  Menu might have a lot of parts and behaviors, but at least there is a predicable way to discover and provide them.  In this kind of a model, the designer could theoretically retain much (if not all) of the flexibility he has in WPF but have a much easier time accessing it.

Silverlight 2.0 isn’t there yet, but the model they’ve chosen is at least predictable and declarable and that gets us much closer to the templating Xanadu that I just described.  Even in the meantime, we still have a model that’s much easier to understand and even code for and the only trade off is that now I the developer exposes behaviors by responding to events instead of responding to property changes.

Now having said all that, I would love to have triggers in control templates, styles and especially data templates in Silverlight.  In fact, not having triggers in data templates has resulted in some serious hackery on my part (in which I end up creating a UserControl everytime we have a data template with any complexity).  But I like where this new templating model is going and I hope it goes even further. 

Andy Rutledge on Creativity

March 18th, 2008

This is the best read I’ve had on a blog (if you can call A List Apart a blog) in a long time.  It’s really mind opening. 

Technical guys: don’t let the title fool you, this is for you too.  For a long time, I’ve held on to the idea that creativity is a process that belongs to the technical guy on a team as much as the design guy.  Andy would agree.  

“Creativity is an inborn capacity for thinking differently than most, seeing differently, and making connections and perceiving relationships others miss. But most importantly, it is the ability to then extrapolate contextually useful ways of employing that data: to create something that meets a specific challenge. By this definition, creativity is merely a tool; it does not convey skill.” (my emphasis)

So, if you want a really unique perspective on what creativity is, where it comes from and how to best use a creative process (no matter what you do), definitely check this one out.

Kaxaml Button Siting

March 17th, 2008

Sweet!