Modeling vs. Visualization

Javier got me thinking when he left a comment to my square peg model post. I’ll get to intended semantics of class diagrams in another post, but I wanted respond to the latter part of the following comment:

I suppose you are assuming that the Class Diagram is intended to be used for design purposes. Then, a class diagram could be considered simply as a code visualizer.

That’s a great point that ties into something I’ve been thinking about lately: the Class Designer in VS2005 is not a modeling tool, it’s a visualization tool. For me, the difference comes down to abstraction and transformation. In VS2005, the Class Designer is built on top of the same metamodel as the underlying language. This means there is no transformation and that the diagram and the text of the code itself are at exactly the same level of abstraction. To me, you’re not modeling unless you’ve raised the level of abstraction.

However, while I think VS2005′s class diagram is a visualization, I also believe that UML’s class diagram is a model. UML is not built on the same metamodel as the underlying language. It’s at a slightly higher level of abstraction. That’s why you can generate Java, C++, Ruby or C# from a given class model. That transformation step between diagram and code is what makes UML a model. Granted, the class model of UML is intentionally close in abstraction to the code, but it’s still an abstraction.

The only reason it matters IMO if a given diagram is a model or a visualization is to be explicit about the need for transformation. And even the need or lack of transformation is only important for usage purposes. Each method has its pros and cons. UML can’t model C# code as precisely as VS2005 can visualize it, but VS2005 can’t be used to generate code for non .NET languages.

Javier’s point cuts right to the idea that modeling classes “for design purposes” isn’t particularly valuable as classes are such a low level abstraction. I think that’s why so many people use UML’s class model as a general purpose “thing” designer. The question is, what was the class diagrams intended use?

DIY Car Radio Harder Than I Thought

I want to listen to my Nomad in my car. Turns out you can get a cable that plugs into the CD Changer port on the back of the stock stereo in my 2001 Chevy Blazer that converts it to an RCA jack for only $60. Add a $5 miniplug to RCA cable and I figured I was golden. That is, until I tried to install it.

A comedian named Rida Rutner once said she “only like cars because they take me to clothes”. I’m not a big fan of clothes, but I don’t like cars much either (I only like care because they take me to Fry’s?). Apparently, this simple sounding DIY project of “plug in cable” requires the disassembling of half the car. Well, half the dashboard anyway. I didn’t realy expect that removing the radio would require “releas[ing] the park brake release cable from the park brake lever”. Wow.

Of course, in my area of expertise I guess most non-experts would be equally lost. I’m setting up a website for some friends, so I sent them a quick email with the status, and the response came back “could you write this again, but this time in English?” 😄

Almost Hockey On Carpet

I watched the National Lacrosse League All-Star Game this afternoon. It’s not hockey, but I enjoyed it quite a bit – especially at the end. They had the league commissioner on at halftime talking about expansion. If they had a team in Seattle, I’d go.

One of the things I liked about Lacrosse is that the players all have to have day jobs. Average NLL salary is apparently around $12,000. Apparently, many of the player’s teach for their “day jobs” which impressed my wife immensely. She mentioned that this is how all sports leagues should be. I couldn’t agree more.

When I lived in LA, I used to play hockey in the amateur league. I haven’t played since I moved up due to a variety of reasons – including cost and distance to rink. But there’s an indoor facility where they play lacrosse in Redmond, less than four miles from campus. They also play inline hockey and indoor soccer too.

Another Zen Micro Feature Request

The other day, I wished my Zen Micro supported variable speed playback for podcast playback. I’ve got another feature request, this time for podcast recording. The Zen Micro features include built in microphone and support for voice recording. But there doesn’t appear to be any way to hook up an external microphone. The built-in mic is fine for leaving messages for yourself, but it’s not high enough quality for podcasting “on the go”. Additionally, since I’m using WMP 10 instead of the app that comes with the Zen Micro, I’m not sure there’s any way to sync the recorded files back down to my PC, but I’m thinking that’s just a matter of geting Notmad Explorer talking to my Zen Micro.

Update: Sometime shortly after I blogged this, Adam curry posted an episode of DSC recorded on a Zen Micro that Sean gave him. I haven’t had a chance to listen yet, but I’m interested in how it sounds and how well it worked for Adam. Do you have to hold it near your mouth the whole time? I still wish I could use an external mic.

Speaking of the Class Designer

As I pointed out in my last post, VS2005 includes a Class Designer that those familiar with the UML class model should feel right at home in. By happy coincidence, I found out today the Class Designer team is blogging. Additionally, two of the Class Designer team members – Ramesh and Rakesh - are blogging on their own. Apparently, the team blog will feature a new post every Thursday. This week’s post features an overview of the v1 Class Designer goals. Subscribed.