Category Archives: Dev

UI Design

I’ve been assigned to do the User Interface design mock-ups for our settings by my boss because I’m the guy who gets all excited by well designed things and starts talking about user experiences and such. I’m the guy who reads Passionate Users, Infosthetics, Alex Barnett, Etc. I get hot for sparklines.

Most applications are capable of great things, but never get a workout from their users because they are difficult or scary to configure. It isn’t obvious to users how to do the things they want to do, so they just learn the minimum and stay with that.

Well designed things are easy joys to use. The best known thing like that right now is the iPod. People who don’t know technology are not afraid of the iPod because it works the way they expect it to. In the area that I work in, users are so involved in their business that they can’t afford to waste time learning the complexities of their applications. Things that are hard to understand just don’t get explored, the users call up the help desk and get someone to do it for them.

Every call like that is wasted money for users and for the development/support teams. The user isn’t doing their job and the developers aren’t doing their job.

My task is to make sure that our newest application will be iPod easy to use and configure, no small feat when you are doing a hell of a lot more than playing music.

In the beginning I was writing a little sample application that would be a sort of be a dummy with dummy data. Of course, I spent too much time digging into the programming and produced a close-to-working-shell with databinding to object collections. Too much for a mockup. To keep myself thinking about just the design I’m doing the rest as drawings to be implemented. We’ve got visio somewhere but it’s overkill for what I need. I got through just fine using the free web application Gliffy. It’s handy and fast, exports to JPG so I can stick it in our freshly minted wiki.

I’m writing up a user experience design guide for my team as well, most of which I’m getting from what I’ve read in Jensen Harris’s UI writings and Creating Passionate Users.

when I think of the past, the twitches come back

The Daily WTF – MAKEing Fools’ GOLD:

“Paul’s company develops financial software that’s used by major stock markets. In his brief tenure, Paul was witness to millions of dollars in loss as a direct result of their software. “

I am proud to claim Paul as a friend and former coworker. He was one of the lights in an otherwise Kafkaesque experience. I’m pleased to see in the comments shoutouts from other former coworkers, one of whom I’m guessing was Eric.

I still talk to folks who work there. They are a working hard against a very discouraging culture, and I’ve heard recent reports of progress.

That said, I still tell stories about what went down there.
It’s the only place I’ve worked at where multiple people put holes in the walls in anger without getting let go.

Atlassian Developer Blog: Good Fences Make Aloof Neighbours

Atlassian Developer Blog: Good Fences Make Aloof Neighbours:

“In an enterprise environment, where every contributor to the wiki is identifiable, and every change reversible, what value remains in restricting edit rights a priori?”

I stumbled on this on the atlassian site. My group is trying out Jira and the Confluence wiki. This article from an atlassian developer expresses some of the core oversights enterprise wikis face. Rights management, like any security measure, is a balancing act. How much does rights management cost you in terms of lost good and effort spent managing the management? How much benefit do you gain?

My default setting for behind-the-firewall social software is full rights with authentication, with security imposed as needed, and only the amount of security needed to protect from specific probably problems.

Is Your IDE Hot or Not?

As I read Coding Horror: Is Your IDE Hot or Not?
I noticed the call for someone to create a hotornot site for IDE screenshots.
It didn’t seem like a bad idea, and I immediately thought of Ning, a social software platform that debuted a while ago.
They make it dead easy to create an actual application relevant to whatever social software use you are into.

I created this IDE Hot or Not ratings site in less than 10 minutes.
It’s not tweaked, it could use more care, but damn – 10 minutes and it is working. It’s got a few screenshots up there and a few ratings. I’d encourage you to submit yours and rate others for a lark.

And take some time to play with Ning. Next time you hear “Someone should whip up a website that lets us do x” you can finish it before they stop telling you how cool it would be. BTW – all the source code for your app is editable on Ning, but the standard stuff is truly code-free. It just works.

Configuration screens

I’m thinking about configuration screens for stuff at work.
Some setttings affect things that happen on our server.
Other settings affect things that happen on the clientside.
There is a conflict between building things ahead of time and crafting them to be very userfriendly, and building things dynamically on the fly and letting them be very flexible.

If a setting is going to only affect things on our server we want to avoid having to do a new client release just to let the client change them. After all, the client program doesn’t need new code. These kinds of settings it would be good to build user controls for dynamically. That way the client doesn’t need to download anything new when we expose new settings.

If a setting is going to affect only the client side, then we have to deliver new components to the client to consume those settings. In that case, we want to deliver the new functionality along with the settings and it makes sense to construct the controls beforehand so they are as userfriendly as possible.

One way might be to deliver a document on loading up configuration screens where you list the major pages of configuration. Each listing would describe either a usercontrol to load or a list of options to construct a control around. For dynamically created settings controls you would create checkboxes for booleans, textboxes for mapping strings, combo boxes for enums, etc, then slap them all in a flow layout or something.

Even if the coolness of dynamically created controls for server side settings is doable, is it worth it? If we are creating a way to deliver updates to users in the background, shouldn’t we just use that?

Why don’t ratings travel?

I’m using musikcube as the player for my music and it has 5 star ratings. So does windows media player on my pocketpc. So does iTunes. But they never translate between them!

How could they?

One way would be to store it in the id3 comments tag. Both id31 and id3v2 formats support comments. This is a great place to store ratings as text. ***** is 5 stars and anyone can read it. What would make sense is to store ratings in the last 5 characters of the comment field. Then, when changing or loading ratings, you can push or pull from that location.

After doing a little more research, I found that id3v2 supports freeform key=value tagging. Now it seems that all you need is for players to start reading and writing a custom ratings tag.

Why is this important? Because time you spend rating songs in itunes or musikcube or anything else is valuable. That’s valuable info about your song that only you know. If it is lost everytime you switch from an ipod to an iriver, it is less valuable.

If I download a creative commons track or rip a cd at work and rate it in musikcube, I should be able to take that track to my home and have my ratings show up there. The information I put into it loses value if it is bound up in one location or one player.

Update:  It turns out that Foobar2000 in some configurations does store ratings in id3 tags.

Programming: The standard treeview doesn’t really support xml

I’m putting together a utility at work that generates stylesheets given the output of a stored procedure in xml. There are a lot of choices on how to represent this.
I thought a tree-view would be nice (like the left hand side of windows explorer), but it looks like there is no good way to bind a tree view to the contents of an xml document without changing that document. Very odd, since a tree is the most natural way to present an XML document.

So for now, I’m going with a list of fields available and adding them to a datagrid view. All of this would be easier with .net 2.0, but it’s politically unsound to be playing with the new toys if you are as junior as I am.