Expectations of an OS

Written by David Frampton @ 9:43 am, August 30, 2009

With the recent public release of Snow Leopard, I have quickly found out that one of my creations – iSight Screensavers – no longer works at all.

As a result I’ve been asking myself a few questions, trying to figure out how I feel about the situation I’ve been put in. So I wrote the questions down, because that seems to be a good way to make me write about things.

Should Apple have broken every installed third party screensaver with the release of Snow Leopard?

Short answer: No.
Medium answer: I can see an excuse, but damn it sucks.
Long answer:

Here is a little background. With Snow Leopard, one of the key ‘features’ is the 64-bit transition. Apple OS developers would have been under a lot of pressure to make all of the system applications 64-bit. ‘System Preferences’ is no exception, and this is the application that allows users to configure screensavers. The screensaver configuration panel pretty much has to run in a 64-bit process if the System Preferences application is to be a 64-bit process, and the way this is all structured means that without a huge overhaul, all screensavers must be able to run in 64-bit mode.

And this is the problem. Nearly all third party screensavers will currently only run in 32-bit mode. Developers have been sitting in 32-bit mode for years, screensavers have always run in that mode, and there has been no reason or requirement for anyone to make most apps run in 64-bit mode. So for most users who upgrade to Snow Leopard, most of their third party screensavers will no longer function.

Frankly, this is a crap user experience. Apple are thinking forward, have forced developers to become backward, and in the process have created a bad user experience for anyone who had a screensaver installed, and required most screensaver developers to create and distribute a new version of their screensaver for Snow Leopard, or be blamed for the result.

I don’t know enough about what happens behind the scenes in the OS X code base, or in Apple politics to know if there is a fan-freekin-tastic reason for breaking all the screensavers in Snow Leopard. I can only hope there is, because from the outside looking in, it shouldn’t have happened.

Should Apple force developers to migrate to new features?

Short answer: Yes
Medium answer: In the name of progress, old applications may stop working over time, as long as ample notification is given to developers
Long Answer:

I’m all for progress. Keeping old things running with new technologies is a difficult task for anyone. However if any new software/hardware update ever makes an old document or application unusable, it is a bad thing, and it had better be for a good cause, and really must offer a switchover period for everyone.

Normally there isn’t actually an issue here, Apple usually run a pretty tight ship with feature regression in OS releases. Developers can target their own range of OS releases, they get warnings when certain things will get deprecated and everything is fine.

But in this situation, with any screensaver we have gone from compiles and runs fine, to does not work at all, in a single OS release.

Again, this only really applies to screensavers, and as you might imagine I am growing convinced that Apple don’t actually give a shit about screensavers, but here is the point: Apple wronged every Mac OS X screensaver developer. They instantaneously made all screensavers fail within a single point release. This is bad.

Is Apple obliged to make sure that every conceivable feature achievable in previous operating systems is also available in new operating systems?

Short answer: No
Medium Answer: They really should try really hard to make sure anything available in previous OS releases is also available in new ones
Long answer:

Again, in normal situations, Apple does a good job here. It is pretty rare that a new anything means that anyone can’t do something they did before. However it does happen.

In this case, with the 64-bit requirement, all screensavers must now only use 64-bit APIs. Quicktime is not usable directly, but must now be indirectly accessed via QTKit. But QTKit isn’t complete. There are many many things that the old 32-bit Quicktime framework could do that 64-bit APIs cannot. So any screensaver that used functionality available only in the Quicktime framework is screwed.

So I’m whining about stuff I can’t do anymore… boohoo…  But this is real. Hundreds of people have given me money for this screensaver, thousands more have pirated it. All of these people will now have to download a new version with no movie playback because it is not possible to achieve this with Snow Leopard.

Apple isn’t obligated to do anything here really, but it looks a bit bad. I won’t be defending Apple here, ‘Apple removed this functionality in Snow Leopard’ will be my response.

Conclusion

iSight Screensavers is now running in Snow Leopard, and I will distribute it as a Snow Leopard only separate screensaver next to the file that runs on 10.4 and 10.5. It took 3 full days to port, and I have had to remove the option for movie sources as Apple removed this functionality in Snow Leopard.









Super Awesome Tiling Texture Creation From Photo Technique

Written by David Frampton @ 8:39 am, August 24, 2009

I don’t usually do video tutorials, or any tutorials at all really. But over the past few years I have experimented with a bunch of different methods for creating seamless tiling textures for use in computer graphics.

Many of them haven’t really produced good results, or have been fairly labor intensive. So when I finally developed a method that I felt worked really well, I always intended to share it. So here it is.

I use photoshop in the tutorial, but it should apply to any image editing software. If I subliminally stole this idea from someone then sorry! I’m pretty sure I came up with this myself though. It does seem kind of obvious too, so I wouldn’t be surprised if many other people already use this technique, but it took me a few years to figure out, so chances are it can help someone.

Hope it’s useful!