Larry vs. Crap

I've actually had way more fun than I realized writing this series - I honestly didn't think I had this much content on this subject.  As I'm finishing up the series, I want to talk about how I personally feel about applets.

As I've mentioned before, I often end up sending mail to various email lists inside Microsoft railing about all the crap that <pick my favorite victim of the day> has running on my box (I did start these posts by saying "It's my machine, dagnabbit").

I always add a caveat to that comment: "Please remember that my definition of 'crap' is 'Stuff I don't use'.  If I use it, by definition it's not 'crap', and I recognize that my 'crap' isn't always your 'crap'".  What I find fascinating is the number of people who respond "Wow, I never thought of it that way!"

There are a lot of people who are rather upset about applets, given the lack of quality and respect for the user I've seen in some of them, I'm not totally surprised at this.

It's extraordinarily easy, when designing a feature or component to get caught up in the idea that you MUST make your feature discoverable and thus you forget one of the basic tenets of system programming: "Do exactly what you need to do to get the job done as efficiently as possible."  They forget that it's NOT their machine to do with as they will, it's their customers' machine, and their customer might not be as enamored of their feature as they are.


At the end of the day, I tend to be relatively agnostic about applets.  I recognize that they have to exist, I like some of them (I've already mentioned that I like RSS Bandit's (not really an applet, to be honest) use of the notification area, similarly, I like taskmgr's use), I tolerate some of them (the flash helper applet), and I'm utterly infuriated by still others (there's an printer driver that came with a printer I own that crashes the spooler service once a day, even though the printer in question is powered off and is used maybe once a month).

What gives me hope for the future is that it's NOT impossible to write applets that have relatively minor impact on the user - if you follow some basic rules, it's possible to have applets that don't tank the system.  But the critical thing is that you MUST change your mindset about your applet.  Instead of trying to figure out how to get your functionality in your users faces, try to figure out how to make your user want to use your functionality.  Make sure that you provide significant value to the customer before you start consuming their resources.

Every single applet that runs on a machine acts as a tax on the customers machine - they consume memory and cpu resources that could normally be used by the user.  Eventually the taxes add up and the customer's computer becomes totally useless.

I firmly believe that the people who write software actually want to help improve their customers experience (yeah, I know that I'm hopelessly naive).  But the people who write the programs that our customers use are NOT trying to actively harm the user.  They just don't know how to do the right thing (or are faced with with schedule pressures that don't allow them to do the right thing). 


My personal feeling is that people will realize which vendors have produced bad applications and will eventually start avoiding those vendors because of the quality of their product.  And when you hit them in their pocketbook, it works - the vendors will either improve the quality of their product or they'll go out of business.

Comments (19)

  1. Matt says:

    This is definitely why I stopped using Real Player in 2002 and never looked back.  Too much crap installed all over the place, including monthly pop-ups notifying me of their newest media content.  Yuck!

  2. I won’t name the company, but when I install their multimedia viewer to view certain video content, do I really need an auto-start "iPod Service" that runs as LocalSystem all the time?  I don’t have a freaking iPod!

    There are at least two companies I can think of that produce very popular apps/utilities (that I use) that include quick-start helper apps that just help improve their load time when you finally use the app (at the cost of degrading everything else).  Because they are very popular and do produce decent quality software, they’ll continue to get away with inclusion of their craplets.  (As I recall, they do offer the option not to run them, but only nerds will ever find the option, let alone disable it.)

  3. Dean Harding says:

    Hehe, the title of this post and Raymond’s, uh hum, "non-technical" post for today match up nicely :p

  4. Joku says:

    There’s some really nice gadget platforms that allow writing stuff in all kinds of scripting/managed languages. The issue obviously is that doing so can get resource intensive. It’s not ALL that different of having all kinds of tiny and not so tiny (CLR process), but potentially poorly coded processes for doing very little work or just showing some status in the notification area.

    In my mind, one, perhaps not the best in terms of not pissing of every vendor out there, solution would be for MS to finally start using CLR somewhere where it really is best suited for:

    Create some type of managed trayicon/applet hosting platform that allows vendors to add somewhat sandboxed (in terms of not being able to crash the host without native code help).

    One way that comes to mind is to load a clr based notification manager process that uses the Add In support that’s coming to the 3.5 .net to run these craplets inside their own app domains. By enforcing certain rules they could be made forward compat if the clr updates under their feet etc.

  5. Taxpayer says:

    "Every single applet that runs on a machine acts as a tax on the customers machine"


    "Pay your taxes"

    Anyone want to do the googlefight on this?

  6. Cheong says:


    They just don’t know how to do the right thing (or are faced with with schedule pressures that don’t allow them to do the right thing).


    But… "schedule pressure"? I think writing applet takes more time then just NOT writing it.

    For example, I think writing a service as interactive one (although it’s a wrong move) takes less time than writing a separate applet applet and implement those IPC functionalities to display the status information.

  7. steveg says:

    Great series. You know the next step is ensuring Larry’s Crap Attack ends up as documentation somewhere inside MSDN or the Windows user experience guidelines.

    Although guidelines won’t help those companies that make a decision to advertise/market their flavour of whatever it is, whereever it is (I’m looking at you Cupertino, California specifically WRT to the tray and your enormous downloads. And in general, you Mr Big App where your "major usability release" has the File menu replaced with a counter-intuitive brand logo, I mean puh-lease!).

    And Larry, could we have an article or two on surround sound APIs and Vista? (I’m just curious what the fuss is about).

  8. Rob says:

    For this reason I always ignore installation CDs which come with hardware (controllers, video cards, etc.) and download only the drivers, to avoid having the crappy software all over my machine. If they aren’t available directly I’ll go hunting on the CD for the driver files to install them manually rather than use the installer.

  9. Rob, one of my favorite techniques is to ignore the CD and see if either the in-box driver or windows update has a driver for the hardware.

    You’d be surprised at how many times that works.

  10. vince says:

    So what are your feelings on the WGA applet?

    Hopefully you are sending some strongly worded e-mails around Microsoft for this one.

  11. pcooper says:

    While not buying from vendors that install garbage may seem like a good plan, the problem is that *they* *all* do it.

  12. The WGA applet is surprisingly well behaved.  I didn’t even know it existed until the WGA outage hit over the weekend.

    That exactly matches my criteria for a well written applet – it doesn’t consume resources until it’s needed, it pops up UI to let the user know there’s a problem, and to let the user know how to fix the problem (not that it helped when the WGA servers were down).

  13. pcooper: Try the inbox driver or WU.  The level of annoying extras is much lower if you use those drivers.

  14. Dentaku says:

    "And when you hit them in their pocketbook, it works – the vendors will either improve the quality of their product or they’ll go out of business."

    The problem is that most of this annoying stuff is free. They seem to think that since you didn’t pay for their product it gives them permission to slap an add in your notification area and waste resources.

  15. Leo Davidson says:

    I meant to mention back in the Serivces post, but forgot. Hope I’m not too late or off-topic:

    I had always assumed that each svchost.exe was a single service and that svchost.exe was only used to avoid the small time/effort of writing a proper service executable. That, in my ignorance, did not seem like a good trade-off to me.

    (The problem being that it’s more difficult to tell one svchost.exe from another. Vista’s Task Manager lets you see the command-line so it’s not *as* bad now but it’s still not as nice as individual process names, especially when one crashes and you don’t know which it was.)

    Seems like I was wrong, though. I didn’t realise svchost.exe could bundle up multiple services and thus reduce their overhead.

    I’m still not sure that I am a big fan of it — I’ve got twelve svchost.exe processes running on my machine and that’s still annoying — but I no longer hate it and I’m glad to know there’s a valid engineering reason behind it, beyond saving a few minutes of development.

  16. Leo, run tasklist /svcs – it’ll show you how many services there are in each svchost instance – it’s a lot.

    You can split them out to one service/process if you want, but it’s not pretty.

  17. Dean Harding says:

    Leo: Process Explorer also displays all the services running in a process when you hover over it.

  18. WGA is an applet? says:

    WGA is an applet?

    How bizarre!!!

Skip to main content