toxicsoftware.com -->

Welcome

This is the home of Toxic Software, makers of software for Mac OS X.

About Me

My name is Jonathan Wight and I am the sole person behind Toxic Software. I have been a Macintosh software developer for many years.

Now in 2005 I've decided to take the plunge and work for myself as a shareware developer and Mac OS X consultant.

October 30, 2006

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.

spacer

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.

• Posted by schwa at 7:11 am, October 30, 2006

• Headline

• permalink

23 Comments »

  1. […] Und scheinbar bin ich nicht allein. […]

    Pingback by Le Monde de MatzeLoCal » Blog Archive » Disco — October 30, 2006 @ 7:42 am

  2. This is just freaking awesome!

    Comment by Jason Harris — October 30, 2006 @ 9:31 am

  3. 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 spacer But I love the effect itself. Very cool. Very interesting looking at the cikernel code too. Very slick indeed.

    Comment by schwa — October 30, 2006 @ 9:38 am

  4. For some reason I sense hostility towards smoking windows in this post. spacer

    Comment by Justin Williams — October 30, 2006 @ 10:03 am

  5. “Bad developer. No cookie.”

    Wow, that just hit me as so funny. Thanks for the laugh!

    Comment by Kevin Hoctor — October 30, 2006 @ 11:10 am

  6. 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!

    Comment by Brian Ball — October 30, 2006 @ 1:56 pm

  7. 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!

    Comment by dave — October 30, 2006 @ 4:13 pm

  8. 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?

    Comment by Indigo — October 30, 2006 @ 8:02 pm

  9. 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 spacer

    Comment by schwa — October 30, 2006 @ 8:46 pm

  10. 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 www.codethecode.com/Projects/class-dump/ )

    Comment by Brian — October 30, 2006 @ 9:07 pm

  11. Edit: Oh, you already pointed that out, sorry spacer

    Comment by Brian — October 30, 2006 @ 9:09 pm

  12. 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.

    Comment by Erik J. Barzeski — October 30, 2006 @ 9:12 pm

  13. 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…)

    Comment by David Young — October 30, 2006 @ 10:46 pm

  14. 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.

    Comment by schwa — October 31, 2006 @ 7:00 am

  15. […] With all the fuss over Disco and it’s smoke effect, Jonathan Wight decided to take a deeper look. The result of his labor - anyone can integrate smoking windows into their apps. Stick around and let me show you how. […]

    Pingback by Vacuous Virtuoso » Blog Archive » Passive smokin’ — November 1, 2006 @ 4:37 am

  16. […] As a final note, check out this cool hack by Jonathan Wight. Warning: it’s a bit technical, but the movies definitely do impress spacer […]

    Pingback by Applegeeks 3.0 — November 4, 2006 @ 4:08 am

  17. Forget NNW, I want NewsFire to burn baby burn spacer

    Awesome hack, wish I knew Objective-C so I could actually make use of it, but still cool.

    Comment by Libb — November 5, 2006 @ 10:32 am

  18. “…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.

    Comment by Peter — November 14, 2006 @ 12:29 pm

  19. “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.

    Comment by Matt — November 14, 2006 @ 9:33 pm

  20. 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?

    Comment by Brad Choate — November 15, 2006 @ 1:50 am

  21. “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.

    Comment by Kelvin — November 15, 2006 @ 10:58 am

  22. 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”.

    Comment by David — November 17, 2006 @ 7:23 am

  23. 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?

    Comment by Ankur — March 16, 2007 @ 6:52 pm

RSS feed for comments on this post. TrackBack URI

Leave a comment

 
gipoco.com is neither affiliated with the authors of this page nor responsible for its contents. This is a safe-cache copy of the original web site.