Beyond Repair


Where can you find an application that comprises a single shell command wrapped in so many layers that it ends up 10,000 times bigger, slower, more obtrusive, less intuitive and full of junk, but still performs the same function as the original command?

Here’s your answer.

AppleScript can be handy sometimes, but when people release applications like this, and get awards for it, alarm bells should be going off. WallSaver is almost two megabytes in size. For a single command-line.

Just reinforce the point, I wrote another wrapper for the same command in Objective-C. It’s 100 kb, or 60 kb without the icon. It can pause the screensaver (which brings it down to 0 CPU usage), resume it or restart it. And not once will it throw an “AppleScript error” ;) . Download it and see for yourself.

As for the source code, all you need is:

/System/Library/Frameworks/ScreenSaver.framework/Resources/ScreenSaverEngine.app/Contents/MacOS/ScreenSaverEngine -background

Back to Top ↑

17 Comments so far

Leave a comment
  1. 1

    More on this gem here.
    http://rixstep.com/4/2/wallsaver,00.shtml

    Also this.
    http://rixstep.com/4/2/desksaver,00.shtml

  2. 2

    Yes, I know those things…

    http://www.appletje.nl/ (yeah, I know, mostly a Dutch site…) offers for €3 (±$4) an application that they call a ‘patch’ (like it’s actually repairing something that’s broken in Apple’s code!) to enable Time Machine for network drives (i.e. “defaults write com.apple.systempreferences TMShowUnsupportedNetworkVolumes 1″). They even made it into one (Dutch) national newspaper for this… Completely ridiculous…

  3. 3

    http://www.appletje.nl/ offers for €3 (±$4) an application that they call a ‘patch’ (like it’s actually repairing something that’s broken in Apple’s code!) to enable Time Machine for network drives (i.e. “defaults write com.apple.systempreferences TMShowUnsupportedNetworkVolumes 1?). They even made it into one (Dutch) national newspaper for this… Completely ridiculous…

    Wow. That’s even more ridiculous than WallSaver. And they’re charging for it!!

    That’s like the defaults write com.apple.finder AppleShowAllFiles 1 “applications” that are released by the dozen.

  4. 4

    Agree. So much software today is “blotware” - from adobe PDF 7 to PDF 8 the program became 4 times bigger….and with very few improvements….
    The same thing happened with Nero and lots of other good commercial programs.

  5. 5

    Adobe Reader 8 doesn’t even work properly most of the time. And initially they had the random crashes caused by the updater plugin. No thanks, Adobe. Maybe version 9.0.

  6. 6

    I find this blog somewhat humorous, especially coming right after your announcement of Trimmit.

    While I’m sure trimmit does other stuff, your own announcement proudly proclaims that a large part of what Trimmit does is run existing command-line commands.

    Anyone see a conflict here?

  7. 7

    Wade, I find it humorous that you’re making inflammatory comments like this. FYI, he released a shell script first, but found that Mac users are scared by the command line, so he had to write an app. And anyway, developers should be doing packaging their apps correctly to start off with.

  8. 8

    Nothing is broken at all; the “bloat” is a total nonissue.

    I had a long reply written up, but this article:
    http://www.joelonsoftware.com/articles/fog0000000020.html
    says it better then I did.

    The only things I can add are:

    1) Wallsaver performs automatic updating, using the sparkle framework, which weighs in at 1.4 MB. 1.4MB is an excellent trade off to make for stable functionality without writing any code.

    2) One gigabyte costs about then thirty cents today. By the time you read my this, the price will have fallen.

  9. 9

    Vincent, you want automatic updating for a single command line operation!?

  10. 10

    Yes. I like all the software that I use to update itself automatically. And there’s room for improvement with this little party-trick-app, so updates are welcome.

  11. 11

    there’s room for improvement with this little party-trick-app, so updates are welcome.

    This “party-trick-app” is nothing more than a command line. How about I write a 2 MB app that runs a defaults command to show hidden files in the Finder?

  12. 12

    The command-line isn’t a good interface. It violates pretty much all of http://www.asktog.com/basics/firstPrinciples.html
    People have good reason to avoid it.

    A simple interface to hide a command-line can be useful, like Trimmit. It’s why I use otx instead of otool. It’s a good thing to trade ease-of-use (important) for file-size (unimportant). Especially when we are talking about such infinitesimal sizes as 2MB, which is less then 0.02 percent of my disk’s capacity.

    Of all the dimensions where programs could be improved, size-on-disk is currently least important.
    /usr/bin/mail is 165K
    Mail.app is 286.5MB
    Yet Mail.app is a much better program by any reasonable definition.

    The only thing I could see changing this is solid-state memory supplanting current hard-disk technology without a major price-drop.

  13. 13

    Vincent, please be careful. There’s going to be heated discussion if you keep changing what you’re saying.

    The simple reason that WallSaver - which wraps a single command line operation (in AppleScript) - needs auto-updating functionality is enough notice that it’s broken. Why else would it need updates? He’s certainly not going to be adding more features to ScreenSaverEngine.

    A simple interface to hide a command-line can be useful, like Trimmit.

    But Trimmit’s not a wrapper for a single command-line. A peek in the Resources folder will find you a lovely - almost complicated - shell script.

    You don’t seriously think WallSaver is better than the Obj-C alternative?

  14. 14

    I don’t understand where I am changing what I say, but my apologies for (apparently) being unclear.

    For the record then:

    Application-size is not a big deal, and it’s a total non-issue when the we are talking about only a few MB.

    Consequently, I don’t see the how WallSaver is broken “beyond repair” or “dysfunctional”, since it functions just fine at running a screensaver as the desktop. It does not matter that it’s over a MB instead of under a KB. Even a little bit.

    Again, http://www.joelonsoftware.com/articles/fog0000000020.html
    says it better then I do, “In fact there are lots of great reasons for bloatware. “

  15. 15

    The DeskSaver bundle does not have write privileges for the user, and it should. When someone tries to move the app, say to to /Applications/ , Finder asks them to authenticate first. That’s no good.

    (Strangely, you can still move the folder with DeskSaver inside it. You cant even move it to the trash and empty it. But you can’t move just DeskSaver.app without authenticating.)

  16. 16

    People’s time is worth something. Federal minimum wage in the US is $5.85 per hour. I think that’s a major under-valuation, but it’s an indisputable lower-bound, so let’s go with it.

    Now I claim hard-drives cost $0.30 USD per GB [1].

    Divide price/hour by price/GB and we find that a person’s time is worth a minimum-wage of 19968 MB per hour [2].

    So 2MB translates to at most 0.36 seconds of someone’s time [3]. That’s totally inconsequential. I don’t understand why you make such a big deal about < 2MB. Sure, all else being equal, smaller is better. But it’s not a big deal. FAT binaries were a good solution in the early 90’s and they’re a better solution now.

    The whole point of wrapper programs is to save people time (not save computers time). And they do a good job of that, despite their flaws. It would take the average person 31 seconds to type in the 125 character sequence [4]:
    /System/Library/Frameworks/ScreenSaver.framework/Resources/ScreenSaverEngine.app/Contents/MacOS/ScreenSaverEngine -background
    And that’s totally ignoring the time it takes them to find and launch Terminal — which they never use because they’re not geeks, remember. And that’s assuming they memorized that command in the first place!

    Now I timed myself, and it took me about 25 seconds to bring up Terminal, and type it in. With Terminal already running, and using tab-completion of course.

    But It took me 13 seconds to find and launch WallSaver, then click “Activate”. A two-fold savings.

    The reason WallSaver is winning awards is because it lets people do something neat with their computer, and because it doesn’t matter that it’s footprint isn’t optimal. In fact, the strange permissions DeskSaver ships with will do more to aggravate normal people then WallSaver’s “bloated” size.

    [1] A 750GB external-hard-drive for $229.99.
    http://www.newegg.com/Product/Product.aspx?Item=N82E16822136132
    It works right out of the box. There’s no hidden labor costs for instillation.

    [2] http://www.google.com/search?q=%285.85+dollars+per+hour%29+%2F+%2830+cents+per+GB%29+in+MB+per+hour

    [3] http://www.google.com/search?q=2+MB+%2F+%28%285.85+dollars+per+hour%29+%2F+%2830+cents+per+GB%29%29

    [4] The mean typing speed is 40 WPM according to:
    http://www.readi.info/TypingSpeed.pdf
    40 WPM * (5 letters + space) = 240 characters/min.
    125 characters / 240 characters/min = 31 seconds.

  17. 17

    Vincent - I’m not going to argue about whether file size is important. However:

    The DeskSaver bundle does not have write privileges for the user, and it should. When someone tries to move the app, say to to /Applications/ , Finder asks them to authenticate first. That’s no good.

    It’s actually the parent directory’s permissions that affect what you can do with the bundle; moving and deleting are still ok. Finder shouldn’t be asking for authentication - maybe it’s paranoid?

    So 2MB translates to at most 0.36 seconds of someone’s time. That’s totally inconsequential.

    That’s not the point. WallSaver is bloated. It’s written in AppleScript. For a single command-line. It has auto-updating functionality. For a single command-line. It’s 2 MB. For a single command line.

    The whole point of wrapper programs is to save people time (not save computers time). And they do a good job of that, despite their flaws.

    We’re not talking about a “wrapper” here. We’re talking about a wrapper for a wrapper for a wrapper.

    But with bugs like Pop-up dialog box titled ‘AppleScript Error’ appears when screen saver is activated. and Fixed yet another “AppleScript error” related to preference files - you know it’s gotta be good.

    Really, what’s wrong with Obj-C?

RSS feed for comments on this post. TrackBack URI

Leave a comment

Comments may be edited for formatting.