It’s surprising how suddenly those new skins started pouring in


A friend of mine told me a story of a project from over ten years ago. Part of the product design was that it would include a bunch of skins (visual styles). The development team had written up the skinning infrastructure, but the company which was hired to create the actual skins hadn't delivered anything. My friend's assignment was to test the skin-switching interface, but since there were no skins, there was nothing to test.

My friend was responsible for testing a bunch of other product features, so it's not like the days were spent thumb-twiddling. But eventually, it got to the point where the automated testing for most of the other features was nearly complete, and at the weekly status meetings, my friend would ask the representative from the company that was hired to deliver the skins when they might send over the first two or three. "I don't need all twenty skins, just two or three so I can test the skin-switcher."

At the meetings, the company representative always answered, "Yes, we know you're waiting for it, but designing these skins is really complicated stuff, and it's pretty slow going."

My friend wondered, "How hard is this, really?" A visit to the development team quickly produced the same tools and documents that the skin design company was given, and in a few hours on a Saturday, my friend produced a brand new skin. Since my friend was a big Star Trek fan at the time, the homegrown skin was naturally based on the science fiction series, created by surfing the Internet and downloading pictures and sound effects. There was obviously no way the company could include this skin with their product, but at least it was something to test with. The skin-switcher finally had something to switch between: You could have the standard look or the Star Trek skin.

At the next meeting, my friend once again asked the representative from the design company when they might deliver a skin or two and received the same runaround as usual. "It's a lot harder than we anticipated, but we're getting close, so who knows, you might have something in a few weeks."

Except this time, my friend had a response for them. "Oh, maybe I can help you guys out. I threw together this skin in just a few hours. Here, let me show you." And then followed a demonstration of the Star Trek theme. It had a lot of rough edges (for example, the sound volumes weren't leveled), but it certainly did the job as a demo.

As if by magic, just a few days later, the company that had been contracted to produce the skins managed to overcome all the obstacles that had been plaguing them up until now, and a steady stream of new skins started arriving.

Comments (37)
  1. benjamin says:

    It’s funny to me how app skinning has been around long enough that there are skinning clichés. It seems like every user-skinnable app will have within its first couple weeks of public release:

    1. A skin that looks like OS X.

    2. A skin that looks like it was drawn on notebook paper.

    3. Skins that correspond with Windows Classic, Luna and/or Aero.

    4. An “Orbit” skin.

    5. A variety of garish, gothic, black/death metal designs that have clickable icons that are approximately one pixel in size.

    Skin #3 goes along with the comment I’d made yesterday, how every skinnable app should have an option to make it look just like any other Windows program. I really have to wonder if the people that designed skins like #5 even use them on a daily basis.

  2. nathan_works says:

    Alas, this is the first time that a link from OldNewThing was blocked by works proxy as "Category: Sex;Adult Material".. Don’t get me fired trying to learn about windows programming here, Raymond!

  3. Bryan says:

    I’ve seen a lot of companies add Skin #6:  The prototypical web looking Skin that no one really wants to use.

  4. Matt says:

    @benjamin: I think the original Winamp skin was basically a #5.  I can’t believe I used to click those tiny buttons.

  5. benjamin says:

    I think the original Winamp skin was basically a #5.

    Very true, especially for the options along the left side of the track time and such. Honestly I think I used Winamp for years before I even realized that there was something there to click.

  6. bramster says:

    So, Raymond. . .  You’re getting ready to submit to the "Daily WTF"

  7. CDarklock says:

    I have this same problem with new interfaces. If I’m given a series of APIs and a single example (or, worse, no example at all), I’m stuck and it takes me a long time to get unstuck. If I’m given a second, wildly different example… the dam breaks.

    If the two examples are written by the same person, he probably started the second example by copying the first, so they might as well be the same example.

    I think it’s about comparison. If I have a rule and two examples of that rule, I can connect the dots and see a pattern. When there’s only one example, I only have two data points, and two data points is not a pattern.

  8. Dan says:

    bramster: my thought exactly, in fact for a second I thought I was on TDWTF.

  9. Henning Makholm says:

    Methinks the dev team should at least be able to produce #0 "The test skin that looks like it was drawn in MS Paint by a color-blind toddler", as well as #NULL "The no-nonsense skin that uses system default colors and standard UI widgets everywhere". That’s two things to switch between while testing.

    Surely the developers themselves need some test data for their initial test runs?

  10. Nicholas says:

    When Winamp 2.0 (I think?) launched, I was the one who made the built-in new theme, with more rounded buttons, etc… basically just throwing EyeCandy filters everywhere. So you have me to blame for that. But hey, it was easy, and I liked contributing to the project.

  11. MS says:

    People need to look back to the classic Windows 3.1 theme "hotdog stand" for inspiration more often.

  12. benjamin says:

    I loved hotdog stand, if only for its absurdity. It’s weird though, noone I know seems to remember it. Then again, most of the people I know weren’t old enough to use Win3.1 anyway.

  13. Jonathan says:

    Surely the dev team had something to dev-test the skin-switching code with?

    [I wondered about that, too. -Raymond]
  14. Someone You Know says:

    @benjamin:

    I remember Hot Dog Stand. It was my favorite of the standard themes. That may or may not be related to the fact that I was 5 at the time.

  15. Salty says:

    "Surely the dev team had something to dev-test the skin-switching code with?"

    I’ve seen raymonds blog (also bradA’s) featured in ms office source control. It was just a long text file with lots of articles in raw text. Apparently it was used as input text for some text tools…

  16. benjamin says:

    It’s too bad Microsoft didn’t start its in-depth telemetry until XP came around. I would have loved to see some graphs about which Windows color schemes were popular in 3.1/3.11/95/98 and NT4.

    I fear for the day that Windows Classic/Desert color scheme isn’t offered, as my wife simply won’t use anything else.

  17. Scott says:

    So, was it that

    a) they didn’t know what a skin was or

    b) that they didn’t realize the app had skinning capabilities and couldn’t find it until it was demonstrated that it wasn’t as hard as they were making it or

    c) they were making excuses for not working on it?

  18. Daniel Lehmann says:

    That "Star Trek" skin is called LCARS:

    http://en.wikipedia.org/wiki/LCARS

  19. benjamin says:

    >So, Raymond. . .  You’re getting ready to submit to the “Daily WTF”

    The *real* WTF is that Raymond already submitted an article there.

    http://thedailywtf.com/Articles/Raymond_Chen_on_Sleep%28%29_Deprivation_.aspx

  20. Ben Cooke says:

    I deal with this quite often, though in the web context rather than the application context.

    My usual approach is to make a really ugly skin and make it the default so that the designers get sick of looking at it. Even if the designers themselves don’t look at it, the managers do and think "there’s no way we could ever show this to anyone" and ride the designers hard to get the pretty stuff done.

    For years I did site development on a skin which had pink, blue and orange elements in no particular arrangement, in 16pt Times New Roman with some elements deliberately off-center by a few pixels. I was always amused when folks would come by and remark on how ugly it looked, and I’d respond "the designers haven’t given me the skin for this yet."

  21. peterchen says:

    > #NULL "The no-nonsense skin that uses system default colors and standard UI widgets everywhere". That’s two things to switch between while testing.

    Barring suport of the skin engine to actually use native controls, this is probably a nightmare to get right. All the little details: when do you draw focus rectangles and underline shortcuts? How do your controls respond visually to keyboard events and various mouse (mis)treatments? Add to that deriving every font and color from system settings, and responding to change events.  

    And somethign that tries to pass by as, but doesn’t really fit is – for me – ahorrible experience.

  22. Arlie says:

    Skins are just horrible.  I hate just about every “skinned” app that I’ve ever used.  The absolute worst are DVD players (like Product X, Product Y, etc.) that try to make the interface look like a physical DVD player.  People, software isn’t hardware.  And the interfaces of physical DVD players are famously difficult to use.

    Skinning is basically a way for designers to abdicate their responsibility.  Skinned apps always, ALWAYS have poorer usability than normal apps.

  23. peterchen: Skin #NULL as described means actually using native controls. "When to draw focus rectangles and underline shortcuts?" Easy: that’s what the native controls do for you.

    This skin is MANDATORY; it will be selected by 99% of all users, possibly after a short initial period of curiosity-based experimenting.

  24. In the designers’ defense, it is often easier to implement an interface if you are given a working example.

  25. Friday says:

    Arlie: My man.

    Always always always always always.

  26. Aaargh! says:

    Skins are just horrible.  I hate just about every "skinned" app that I’ve ever used.  

    Same here. Strangely enough I haven’t encountered a single skinnable OS X application yet. Let alone one with a Windows skin.

    The absolute worst are DVD players (like Product X, Product Y, etc.) that try to make the interface look like a physical DVD player"

    Remember ‘back in the day’ there used to be those media player apps that looked like a stereo set. Those were reall, really annoying.

  27. Product Y3 says:

    >> Same here. Strangely enough I haven’t encountered a single skinnable OS X application yet. Let alone one with a Windows skin.

    Apart from many apps which don’t respect OS/X (poor) color choices anyway. Video Editing Program X is one IIRC being black.

    Apart that, you Vendor Y guys like so much messing up with skins on us.. please give me one.. well half is enough.. half a reason why Product Y1, Product Y2 and Product Y3 couldn’t have at least a standard window border (not to mention standard font rendering, scrollbars and all other widgets)..

  28. Michiel says:

    Agree with Maurits. The people who build "skin APIs" often manage to come up with poorly documented kludges noone understands. But once you get a complete, running skin from them, re-coloring and replacing a few images in that skin is easy.

    If you’re goin to expse a skin API yourself, remember that simple things should be easy.

  29. peterchen says:

    Henning: >> This skin is MANDATORY; it will be selected by 99% of all users, possibly after a short initial period of curiosity-based experimenting.

    No need to tell me – I’ve never understood why people are so obsessed with skins. Give me one that works (which is a definition that does include it isn’t horrendous).

    However, thsi means that the skinning system must support using native controls, or build on top of them.

  30. Aaargh! says:

    > “Apart that, you Vendor Y guys like so much messing up with skins on us.. please give me one.. well half is enough.. half a reason why Product Y1, Product Y2 and Product Y3 couldn’t have at least a standard window border”

    I don’t understand that either. Product Y1, Product Y2 and Product Y3 on Windows are horrible, too bad because they work really well on OS X. I don’t use Product Y1 on Windows, for Product Y2 there’s Product Q and for Product Y2 there’s Product Z.

  31. "However, thsi means that the skinning system must support using native controls,"

    Yes. It must.

  32. Worf says:

    @Safari: “Apart that, you Vendor Y guys like so much messing up with skins on us.. please give me one.. well half is enough.. half a reason why iProduct Y1, Product Y2 and Product Y3 couldn’t have at least a standard window border (not to mention standard font rendering, scrollbars and all other widgets)..”

    Easy. They’re not native applications. They’re ports of Cocoa applications, but ported using OS X libraries. It’s like how some Windows apps are ported to MacOS or Linux – they take the source code and link it against some Win32 library that maps thw Win32 API to the underlying OS. E.g., WineLib, by the WINE folks, Cider, by Transgaming, etc. (And everyone else complains when those apps look like Windows apps rather than native…) We may the same complaints with Product Z as well…

    Product Y2 over the years migrated from legacy MacOS, to Carbon, and now Cocoa APIs. Product Y1 uses Cocoa API. Apple ports by providing an Objective-C and Cocoa API runtime (including all the necessary OS X technologies). And yes, that includes font rendering. Funny thing, too – the font rendering is the same as OS X, but it’s different from Vista in enough ways that people notice. It’s not “worse” or “better”, just different.

    People have taken Objective-C compilers, headers from OS X SDK, and compiled Cocoa apps under Windows using those same libraries shipped with Product Y1.

    As for Video Editing Program X being black – it seems photo and movie editing suites started using black to highlight the workarea and subdue the interface – going full screen as necessary to minimize distraction.

  33. Dog says:

    "I don’t need all twenty skins, just two or three so I can test the skin-switcher."

    So what happened to the other 19 skins that didn’t get shipped with Windows then?

  34. Staale S says:

    As for Premiere being black – it seems photo and movie editing suites started using black to highlight the workarea and subdue the interface – going full screen as necessary to minimize distraction.

    Yes, for photo and video editing it is highly desireable to have a black or neutral grey work area, otherwise it can affect the user’s perception of colours in the image/video. Not a good thing when editing.

  35. Aaargh! says:

    It’s also nice when you don’t want any distractions. E.g. there is a simple but still very cool app called WriteRoom dat basically gives you a fullscreen text editor.

    Although for text I prefer black text on a yellowish background.

  36. Kaenneth says:

    Windows Presentation Foundation (WPF) makes this all so much easier. XML UI customization built in to apps for free.

  37. Paul says:

    So way this company hired to do the skins;

    A. Thick

    B. Trying to pull a fast one, saying it’s more complex than it was so can we please have some more money please.

    C. They were designers using macs. They could not find there way around windows and were to affaid to ask for help.

    D. The documention was written by Microsoft, and as such was not complete or was incomprehensible to normal people.  The MS Office team has the only copy of the not yet publicly released documentation so they could get a competative edge over the competition (not that there is any anymore… wonder why!).

    [Who said this story took place at Microsoft on a Windows-based product? Besides, given that my friend could figure it out in a day with no help, it probably wasn’t bad tool documentation. -Raymond]

Comments are closed.

Skip to main content