Second Hand Smoke

So ‘Disco‘ (you know, that Disc burning program that does a fraction of what Disk Utility does but actually costs money) is now available as a public beta.

One of the most controversial “features” of the program is the fact that the main window actually smokes when a disc is being burnt. Poking inside the bundle of Disco.app I came across Smoke.framework with what looks like full headers included.

Ignoring the dangers of passive smoking for a moment I decided it would be fun to try and use the smoke effect in a test application.

SecondHandSmoke.png

And here’s a quick movie to illustrate the pretty smoke animation:

SecondHandSmoke.mp4

Now you too can add the smoke effect to your own applications. Download the public beta of Disco (version 1.0b3 according to the Finders “Get Info” window). Be quick. I’d imagine that the next release of Disco wont include headers for the framework. Move the application to your /Applications folder. Then download my test application here: SecondHandSmoke.zip.

You should be able to compile and run “SecondHandSmoke” (it will warn that it cannot find OSXHIGuidelines.pdf – but do like the Disco authors did and ignore that warning). If your hardware is capable enough you should be able to see the smoke effect rising from the top of the window. (It might take 10 to 20 seconds for the smoke to appear).

You can change the smoke parameters by using the smoke settings window (dialog? pane? view?) within Disco. Then just copy Disco’s prefs (com.discoapp.Disco.plist) to SecondHandSmoke’s prefs (com.example.SecondHandSmoke.plist).

Feel free to add smoke to your own applications, Brent – NNW users expect the main window to Smoke now. Dan, don’t feel left behind, Sandvox needs to smoke. All the cool kids are doing it. Peer pressure is a bitch.


Update Predictably the guys at DiscoApp have removed the headers from the framework. Of course they refrained from rev-ing the version number of the beta. So now there are two 1.0b3 versions of DiscoApp in the wild. 1.0b3 (with headers) and 1.0b3 (without). Bad developer. No cookie.

Of course removing the headers does nothing to stop you from using class-dump to generate your own headers (and pretty cool headers they are – look at all those CIFilter subclasses). I’ve just uploaded an amended project that includes a class-dumped header. You’ll need to install Disco 1.0b3 (sans headers) into /Applications as before.


Update 2 Just had a nice AIM conversation with Austin Sarner, one of the authors of Disco, and he seems to be quite amused by this little hack. Although I really don’t like the use of the smoke effect in Disco, I completely support their attempts to innovate.


Update 3 I took 15 minutes to hack the Smoke framework into a SIMBL plugin so that any application can have the smoke effect (why wait for developers to innovate?). I’m not distributing this project as it requires a modification of the Smoke framework itself, but here’s a movie: HolySmokesMovie.mp4


Update 4 Reduce size of movie to 640×480 to keep people with smaller screens happy.

Update 5 My code no longer works. For an updated description of how to get the smoke working see: dev.lipidity.com

This entry was posted in Uncategorized and tagged . Bookmark the permalink.
  • Thanks for making this known. I've had a lot of fun with the smoke.

    However, it doesn't work when using the framework from Disco 1.0. I've taken another class-dump, but I can't beat the errors. Maybe I should've kept a copy of the beta version... Anyone got any ideas?
  • David
    Never mind "novice users". Real world users, ie people who use computers to do useful things, rather than people who use computers to use computers, I think would find this pretty good. Maybe it would be fairer - and considerably less disingenuous - to compare with Toast. I don't Toast has got anything like "Discography".
  • Kelvin
    "Spandex is nothing special, it actually doesnt seperate large files, it just splits up the directories amoungst multiple discs… wupdidoo..."

    That's quite true but there's a certain derision in the post about how Disco is charging for features that are available free in Disk Utility. I think there's some value in the streamlined interface that does automatic spanning and indexing and automatically chooses the type of disc to be burned based on the context of the files being thrown at it.

    While most expert users would have no use for this I could see a lot of novice users finding a use for a utility like that (I don't know how many times I've had to explain that you can't just burn MP3s or VIDEO_TS folders as normal data CDs and expect them to work in the normal media players...)

    I think the main problem though is that demographic is one of the least likely type of users to look on the internet for a third-party shareware solution.
  • So can the amount and density of the plume be derived on a combination of memory and CPU usage? So once you have a couple of dozen tabs open in Safari, it should look like Rome burning?
  • "There’s really only one feature of Disco that interests me, and that’s “Spandex”"

    Spandex is nothing special, it actually doesnt seperate large files, it just splits up the directories amoungst multiple discs... wupdidoo. So if you have one huge video file, it won't even be able to span.
  • Peter
    "...that Disc burning program that does a fraction of what Disk Utility does"

    There's really only one feature of Disco that interests me, and that's "Spandex". Given the above statement, can Disk Utility do what Spandex does, and if so how? It's something I've been trying to figure out for some time.
  • Libb
    Forget NNW, I want NewsFire to burn baby burn :)

    Awesome hack, wish I knew Objective-C so I could actually make use of it, but still cool.
  • David Young: Yes ripping it off and redistributing it, especially if I had tried to pass it off as my own work would have been uncool. But I didn't do that.

    The DiscoApp developer I smoke (Austin) even mentioned sponsoring a contest for the best smoke related hacks with free copies of Disco to the winners. Basically I think that they look at this as extra free publicity.
  • I dunno man, while it's true that anyone with class-dump could've reverse-engineered Smoke.framework on their own, it certainly looks like a lot of effort went into engineering it. Ripping it off (especially if one were to link to the framework and redistribute it) seems pretty uncool. If I were the developer, and the smoke effect turned up in a bunch of applications, I probably wouln't waste money on a lawyer, but I wouldn't be happy either.

    But, if you've chatted with one of the developers and he/she says it's okay, no harm done. Have the developers really confirmed that they meant for other developers to use Smoke.framework? (Having removed the headers from the shipping product indicates to me that the answer is probably no...)
  • Brian Ball strikes me as an odd duck. First he grabs people's names and email addresses from the macsb mailing list (and then spams them) to promote MacZot. Then he comments here about lawyers.

    That's just silly.
  • Brian
    Edit: Oh, you already pointed that out, sorry :-)
  • Brian
    You can reconstruct the missing headers using:

    class-dump Disco.app/Contents/Frameworks/Smoke.framework/Versions/A/Smoke

    I don't know why they bothered to take them out.

    (class-dump is available from http://www.codethecode.com/Projects/class-dump/ )
  • Brian: I've chatted with one of the developers of Disco, and the developer of the smoke effect actually commented on this post earlier. I'm not really worried about being contacted by anyone's laywers.

    Dave: glad you enjoyed it.

    Indigo: You're on your own :-)
  • Indigo
    hay, i am on an intel mac and i can't get it to work. it just won't start. as soon as it starts to start, i quits. any help?
  • wow, this is cool. I was too late to get Disco with the intact headers, but yours worked just fine, as did changing the settings in disco. Smart thinking, thanks for sharing this!
  • Brian Ball
    Wow! Whoever coded that smoking framework must be a genius.

    Also, it's great that you made this post public so their lawyers can contact you easily.

    Keep up the good work!
  • "Bad developer. No cookie."

    Wow, that just hit me as so funny. Thanks for the laugh!
  • For some reason I sense hostility towards smoking windows in this post. :-P
  • Thanks Jason,

    Very slick code by the way. I don't like how the code is being used within Disco (as you might have been able to tell from the tone of my post ;-) But I love the effect itself. Very cool. Very interesting looking at the cikernel code too. Very slick indeed.
  • Jason Harris
    This is just freaking awesome!
blog comments powered by Disqus