Archive for the ‘Apple’ Category

iPhone: why I don’t care

Sunday, July 13th, 2008

So, this has been the iPhone week. It started right on monday, with Vodafone and Optimus, the two portuguese carriers that sell the iPhone, announcing their pretty ridiculous price plans. Then, the iPhone was launched, together with the App Store and a barely functional activation site. And I couldn’t care less. Why? Many reasons, some of them are Apple’s fault, some of them are consequences of the wildly spread stupidity that exist in my country. If you are one the 4 regular readers of my blog, you know that most of my articles are techie-focused, and not opinion-based. This one is an exception.

The iPhone itself

So, what’s wrong with the iPhone? What should have been made much better in the most popular gadget of the week? A lot.

First, the phone itself. I never had a smartphone. I don’t know how does the phone part operate in a smartphone. But I know how it works on a regular phone, say, a Nokia phone. And, pick up any Nokia and it will tear the iPhone apart in what relates to be a phone, you know, something to make calls with. My first complain is something really obvious: it’s hard or impossible to use the iPhone with just one hand. Of course it depends on how large your hand is, and how much are you willing to risk dropping the iPhone on a hard ground in the middle of a street (that glass keeps shouting “break me!”). But personally, I find it a challenge, specially if I’m walking in a hurry in the middle of the street carrying stuff in one hand, which seems to be the preferred time for people to call me. I never tried to operate one while driving but it should be a real pain (I know it’s illegal to make calls while driving without a loudspeaker, I just receive or start the call and turn on my Nokia’s built-in loudspeaker, so it’s not that bad). On top of this, you have to do all that scrolling-trough-the-alfabet, and then scrolling-trough-the-names-on-the-selected-letter, and finally call the person. That sucks, because not only it’s slow, but it also requires you to actually look to what you are doing and wait for the visual feedback. On a normal phone, with a numeric keypad, if I want to call John, I press the 5 key (jkl) once and I’m already on the J. If I want to call Fred, I press the 3 key (def) three times. No feedback needed, I know where I’ll end up. I just then need to scroll (with a key, thank god!) and push the green button. You are free to disagree, but I think Nokia is so much better.

Second, the keyboard. Yuck. It’s true that I never set it to portuguese, but even when I try to write in english, it SUCKS. Man, it sucks big time. I rarely can get the word I actually want. The phone suggest wrong things. It’s hard to understand how to NOT accept the suggestion. I actually think that removing all the “intelligent” guess-what-the-user-is-trying-to-write stuff would actually improve the usage a lot, because most of the times I screwed up writing on an iPhone keyboard was actually not because I placed my finger on the wrong “key”, but because iPhone decided that I pressed a key that I actually didn’t. And of course, not having the physical feedback of a real keyboard is also bad, but I can understand that as a compromise between size and functionality.

Third, Safari. I do believe iPhone’s Safari is the best web browsing experience in the mobile market, I really do. But it sucks. It’s painfully slow. And I don’t mean the network. I mean the CPU of that thing. Even with a high-speed WiFi network, it’s slow. Rendering is slow. Panning is slow (hate that checkerboard pattern). Zooming is slow. Argh. I don’t know exactly how to make this better, but having a faster CPU would be a nice start. Yes yes, I know that faster CPU = less battery time, but as a client, I can demand! :)

Fourth, the GPS. Are you kidding?! What’s the use of a GPS if it doesn’t support turn-by-turn mode? I usually know where I am, thank you. My problem is knowing how to get to where I want while driving. If the iPhone GPS can’t do it, it’s useless. It’s worth zero for me. Now is the part you say, hey, but iPhone is an open platform, so someone will develop a better GPS software, right? Who cares. First, it won’t be free. I don’t understand why I’m buying a device with a GPS receiver and then I have to pay more for something that will actually make it work as expected. And second, and worse, it probably will not happen. Why? Because on the iPhone development SDK agreement, there’s a clause that explicitly forbiddens you from doing it: “Applications may not be designed or marketed for real time route guidance”. Period. (Waiting to be processed by Apple for copying that sentence from the SDK)

Fifth, it doesn’t work as a modem/router for a laptop. I need mobile internet access in my laptop. That comes with a monthly payment. But hey, if I have an iPhone, that means TWO monthly payments for the same service. Now wait a minute. I said “same service”! So why can’t I share it? Well… because the iPhone won’t do it. Any other phone can be used as a modem, via bluetooth, so that you can access the Internet from your laptop using the phone connection. Nokia. Sony. You name it. But hey, not Apple. So, as I don’t like to give away my money to the phone carriers for a stupid reason, iPhone is a no-go.

Sixth, the bluetooth implementation is totally crippled. It will only power your headset, and nothing else. No vCard sharing via bluetooth with nearby phones. And worse, no synching with your mac via any wireless means. Yes, that’s right. Remember using iSync with your Nokia or Sony or whatever phone? Forget it with the iphone. You have to carry the USB cable with you all the time. Which is actually a good thing, because battery life time seems to be not that great, so you’ll often need to pump in some juice to keep it going.

So, the iPhone, as a device, sucks. But it’s a good mobile platform, and platform means really great third party software to use. Or doesn’t it?

The app store

It’s 1984. Apple will introduce Macintosh. And what better way to do it than with the famous 1984 commercial, where IBM is pictured as the evil Big Brother and Apple as the liberating force that will provide everyone with their deserved freedom from the evil empire?

It’s 2008. Reality check. Apple is the Big Brother.

The app store seems to be a great ideia. An organized, controlled, easy to use place for users to go and buy the apps they want to use. But what does it mean for the developers?

Big Brother is what it means. Apple reserves the right to accept, or not, your application to be on selling on the App Store. Also, it imposes some very strict guidelines on what you can actually do, like the GPS example I stated above, and also VoIP and other stuff. Even worse, the App Store is the only way to publicly distribute applications for the iPhone, assuming you didn’t jailbreak it, and most people didn’t. So, Apple has the power to decide that you are out of business if they decide so. The only way to reach your customers is trough Apple.

In my opinion, this is not only ridiculous, but also a very dangerous precedent. If I buy an iPhone, it’s mine. I should be able to do whatever I want with it. And if I’m a developer, I should be able to reach my clients directly. It’s very dangerous to have someone saying what is OK to run on your phone and what’s not. Some claim it’s a security issue. After all, you don’t want your software to call people on foreign countries without your knowledge, because those calls will be billed on you. Bah. What about computers? Don’t we have really important information on them? Information that can compromise much more than just your phone bill? Why don’t we create a desktop App Store, to control everything you have on your Mac? It’s simply ridiculous. And what pisses me off about this is watching developers and users accepting this without a single complaint. What’s next? All the books you buy must be approved? All the movies you see must be “decent”? All the music you hear must be controlled? It’s ridiculous. And dangerous. It’s Apple totally forgetting about 1984, totally forgetting about it’s roots, and going totally Big Brother, totally enterprise-who-wants-to-make-money-no-matter-what. As someone who entered the Apple world in 1987, with the Mac PLUS, it’s really, really sad to see this.

The plans and the hype

This next subject depends, of course, where you are. I live in Portugal, and as I said, we have ridiculous data plans for the iPhone. Vodafone’s plans were all limited to 250 MB per month, and of course, they will charge the hell out of you for every extra bit. After some complaints, they bumped the limit on the most (and ridiculously) expensive plan to… 500 MB. Optimus’ plans are not better. It’s sad to compare this to other countries like Netherlands, where all the plans include unlimited data, and, depending on the plans, you can get your phone for 1 euro. The problem is that the carriers didn’t really understand what this product is about (or they pretend to not understand while they happily rip you off). The iPhone is a mobile platform. It depends on the Internet for most of it’s features. The fact that the iPhone is a phone, and allows you to make calls, is a minor detail. The iPhone depends on the Internet, so it’s ridiculous to sell data plans as if it would be just another phone with internet access. It’s a completely different product, and should be looked to by the carriers as what it is. Unfortunately, portuguese carriers didn’t go along with this vision, and are happily raping their clients.

To conclude, something that makes me really pissed off and sad is all the hype, and the way the iPhone was promoted here. In San Francisco, lines were formed near the stores, and you could see geeks, with their eyes shinning about the new stuff they would be able to do with this new platform. Here, lines and launch parties were constituted mostly by VIPs. Most didn’t even know what the iPhone was, they just wanted one because they have money and it’s cool to have the latest Apple gadget. Carriers wanted those people to be there because they are famous. Because, even being incredibly stupid and ignorant, they have big (sometimes artificial) half-naked boobs they show to the TV cameras resulting in more attention in the news reports. Because they think they are funny comedians, making jokes about knowing nothing about technology, being proud of their ignorance. It’s sad to see a new piece of technology being used as a glamour toy, a coolness factor, and not as a new device that will allow new and incredible stuff to be made. Oh well. It’s Portugal.

iPhone mania

Thursday, July 10th, 2008

iPhone iPhone iPhone iPhone. iPhone iPhone iPhone iPhone iPhone iPhone iPhone iPhone iPhone!

iPhone iPhone iPhone iPhone… iPhone iPhone iPhone iPhone. iPhone? iPhone iPhone iPhone iPhone iPhone iPhone. iPhone iPhone iPhone iPhone iPhone iPhone! iPhone iPhone iPhone iPhone :) iPhone iPhone.

iPhone iPhone iPhone. iPhone iPhone iPhone iPhone iPhone! iPhone iPhone? iPhone iPhone iPhone? iPhone? iPhone!

iPhone iPhone iPhone iPhone iPhone. iPhone iPhone iPhone iPhone iPhone iPhone iPhone iPhone iPhone iPhone iPhone iPhone iPhone iPhone iPhone iPhone iPhone iPhone iPhone iPhone iPhone iPhone iPhone iPhone iPhone iPhone iPhone iPhone iPhone iPhone iPhone. iPhone. iPhone iPhone iPhone.

iPhone.

Back from USA

Sunday, June 15th, 2008

Well, I’m back from another WOWODC and WWDC. I’m still really tired, but some quick notes:

  • As David LeBer already mentioned, Pascal did an amazing job organizing WOWODC all by himself. Great room (a bit cold on the first day ;) ), large windows and sunlight on the halls. Food (well… not that good, but after all, it’s USA!) and caffeine provided frequently. Very very nice. Suggestion for the next year: a bigger (and brighter) screen, and eventually plasma screens among the room to make it easy for people in the back to read the code.
  • I learned a lot about WO frameworks out there (like Wonder, Houdah and specially LEWOStuff that I did not know before). I met for the first time some very talented people, and of course, all the folks from the previous conferences. It’s great to be able to have technical discussions and know different views on the same problems from all those skilled and experienced people out there, face to face.
  • WWDC had some interesting news on many stuff. As you know, I cannot talk about the stuff under NDA, so I shall only say that some interesting stuff is being done on the WO side. Also, as you all know by now, the iPhone is now 3G, includes a GPS, the price was slashed, and will be available in many countries of the world. I just hope the service providers slash the data roaming prices, because that makes the iPhone useless when you go to foreign countries. Finally, Snow Leopard was announced, and, as already expected, the focus is not on new features, but on a big cleanup of the OS infrastructure. Not only this are great news for us, developers, but also shows some courage from Apple and a lot of respect for their users. They want to focus the next year on improving the quality of their OS, rather than packing it up with some new features just to win the race against the competition.
  • As a side note, the MacTech people was giving away some magazines for free to the people who were standing in line during the morning. I took the time to read most of it during my flight, and I really liked it. I was a MacTech subscriber in the past, but I cancelled it because, during my graduation, I didn’t have time to read it (it’s good to graduate on a place where you actually don’t have time to learn, isn’t it?). Maybe I’ll subscribe it again now.
  • Not related to the conferences themselves, we went to visit the bay area surroundings on Friday afternoon. We did the classic trip to the Apple and Google campuses, because we are all geeks, but we also went to the Stanford and Berkeley campuses. The Standford campus totally blow me away. You have to see it to believe it. From now on, I’ll laugh, really laugh, every time I hear a faculty from my university stating that we actually have a campus. The Berkeley campus did not impress me much. It’s more urban style, more crowded and dense. I prefer the Stanford way, with space, a huge amount of space, tons and tons of space, really. Almost made me want to return to the univ! :)

WWDC and WOWODC 2008

Thursday, June 5th, 2008

It’s that time of the year… packing up to leave tomorrow, as I will attend WOWODC and WWDC 2008 in San Francisco. See you there!

Accessing Mac virtual hosts from a Parallels VM

Sunday, March 30th, 2008

I finally moved to an Intel machine. Despite the dramatic speed improvement in everything Java-related, namely Eclipse, there’s another big advantage: being able to run IE on Windows using a virtual machine. Unfortunately, that’s something every web developer must do to ensure his or her application will work on the most used (and crappy) browser on earth.

I installed Parallels and created two virtual machines, one for IE 6 and another one for IE 7. This way I’m sure there are no weird problems between those two versions (having more than an IE version on Windows can only be accomplished by hacks, and hacks are bad). Also I can install Visual Web Developer Express Edition on each of the VMs, and use either IE 6 or 7 to debug.

My apps run inside virtual hosts on Mac OS X apache, under a fake DNS name. On Mac OS X it’s easy to add the DNS entry to the /etc/hosts file, under the 127.0.0.1 entry. This way, your DNS name will always point to your mac, and you’ll be able to reach your virtual host.

I wanted to do the same from inside Windows running on Parallels. An easy way would be to edit the Windows hosts file, adding the Mac OS X public IP to the file. But that will only work if the OS X IP doesn’t change. My Intel mac is an MBP, and I change the network I use often, so I needed a little more flexibility. So, this is the way I found to do this:

  1. Configure your VM to use Shared Networking. This wall, Parallels extensions installed on your Mac will create a NAT network where your virtual machine will be hooked into.

    Paralleles Configuration Screen
  2. Open Mac System Preferences, and look for the “Parallels NAT” network port. This is an interesting one, because it allows the Mac itself to be connected to the virtual NAT network, using an IP on the NAT subnet. Write down that IP: this will be the IP you’ll use to access the Mac virtual hosts from within the virtual machines.

    System Preferences
  3. Finally, edit Windows hosts file. This file is located on \WINDOWS\system32\drivers\etc\hosts. Add a line with the IP (in my case, 10.211.55.2) and the name of the virtual host, just like you do on the Mac.

    Windows hosts file

That’s it. Now you can access your Mac virtual hosts from Windows, whatever the Mac IP is. Ick, what’s a Windows screenshot doing in my blog!?

Migrating to Leopard Server

Sunday, March 23rd, 2008

This was it. I spent the easter weekend migrating GAEL’s Xserve to Leopard Server. It all went well, although some more or less serious issues poped up.

Our server is used mainly for hosting web content and applications (php, perl, and of course, WebObjects). It also handles some Subversion repositories and some other minor stuff.

I did the standard procedure I always do when migrating a machine to a new OS version: clone the hard drive to an external firewire disk, format the internal hard drive, install new OS and migrate data. I usually use migration assistant, but of course, this is a server, it’s a little more complicated than that.

While my memory is still fresh, here’s some notes about it, not necessarily by any specific order.

RAID Formatting

Our Xserve has two 80 GB hard drives configured in software RAID 1 (mirroring). As Apple sometimes does some tweaks and changes on the RAID software and drivers, I decided to destroy the RAID and create a new one. So I did: I booted from the Leopard Server DVD, destroyed the RAID and tried to make a new one. I had some problems with that, though. Disk Utility was not allowing me to create the new RAID. I don’t recall the error exactly, but it had something to do with not being able to mount a volume or RAID slice. I quit Disk Utility and launched it again, and then the RAID creation went fine. I just love to see those two blue leds blinking in sync!

Installation and System Updates

Installation itself went without any issues. Our Xserve has a graphics card, so it was like any regular desktop Mac, click click choose click and wait. The system installed correctly, rebooted, configuration assistants, answered all the questions, network working, etc. Perfect. Then, I went to grab all the system updates. I installed it this weekend, so I had a few updates waiting, namely the 10.5.2 combo update. Then something weird happened - after installing all the available updates, the machine rebooted 3 times in a row instead of just one. I know some updates that came out lately require 2 reboots in a row, but I never had seen 3. When the server finally came to life, I manually rebooted it again 2 or 3 times more, just to see if it was booting OK. Apparently, everything is fine. I checked the logs, and they were inconclusive. So, does anyone know if 3 reboots in a row is normal for all the updates that came out so far for a G5 Xserve running Leopard?

SSH

This is a fast one, but… sshd comes with PermitRootLogin defaulting to “yes”. Oh come on, guys!

User Migration

This is one of the most serious issues that I find with Mac OS X Server migration. I had seen this when migrating from Panther Server to Tiger Server, and it’s still a problem. The thing is: you cannot migrate passwords. You can use Workgroup Manager to export all the user information… except passwords. That means all the user passwords will have to be reset on the new server. Of course, I don’t expect the real passwords to be exported - specially because they are hashed, so it’s impossible to recover them. But the hash itself could be exported and imported again.

This presents a very serious issue to system administrators and users. Of course, if you have thousands of users, you should use multiple LDAP servers dedicated to the authentication services, and you can clone them at will, making sure that you never loose information and the service never stops. But when you have about 30 users like we do, that is overkill. Even so, it’s a real pain in the ass to reset all those passwords, because some users are actually not in our office. They are external users, either from the other university campus (although that’s not too bad, I actually live closer to that campus that the one I work in, so I can drive by and take care of that stuff), or, worse, from people in some companies that are working remotely with us.

I believe migrations like this should be transparent to the user, and this little detail make them very very opaque.

64 bits hell

Having a full 64 bits OS running on a 64 bits machine can only be a good thing, right? Well… maybe not.

I’m a little crazy and my organizational skills might be very well defined by the word “chaos”, but I’m not crazy enough to do this in the space of two days without having tested all this stuff first and document the important details. So, before trashing our G5 Xserve, I grabbed an old PowerMac G4, installed Leopard Server and all the stuff that really needs to work. The most experienced of you should be smiling by now. Although it seems that the only important difference between both CPUs for the matters we are discussing is just speed, there’s a really important one: 32 bits VS 64 bits. The G5 is a full 64 bits CPU, and the G4 is 32 bits. Up to Tiger, this is not a problem at all, because most of the OS was also running in 32 bits. This included most services, like DBs and Apache. On Leopard, everything (or close to that) is compiled to four different architectures: PowerPC 32 and 64 bits, and Intel 32 and 64 bits. We’ll come back to this in a minute.

Mac OS X Server is bundled with MySQL, PHP and Apache, but not with PostgreSQL. As I prefer PostgreSQL to MySQL by far, I tend to use PostgreSQL with all the applications I can, including my own WebObjects applications. So, I compiled and installed PostgreSQL on the server. As I also need PHP applications to access PostgreSQL databases, I had to download PHP source code and recompile it with PostgreSQL support (you gotta love a language where you have to recompile the whole damn thing to add support to a DB…). But, to compile PHP with support to MySQL (and PostgreSQL) I need to have the MySQL headers and dynamic libraries. Well, Mac OS X Server is bundled with MySQL binaries, but not the headers or libraries. As there were no binaries available for PowerPC 10.5 on the MySQL page, I also had to grab the source and recompile all this stuff.

This is where problems started. I recompiled MySQL, and put it working after some struggle (I really hate MySQL). Then I recompiled PHP. Installed it, added the LoadModule directive to the apache config file, and restarted apache. Bum. Explosions. Apache would not start. It said that the PHP module was compiled for the wrong architecture. I started to thing, WTF, are you telling me that my Xserve just compiled PHP… for Intel? Why did this work on the test G4 box? Well, what other architecture could it be? :P I started googling for the problem and I got it: apache is compiled for all the four architectures I referred above, and it always runs with the most appropriate one for the machine. In the Xserve case, it uses the PowerPC 64 binaries. The problem is that PHP had been compiled for 32 bits only. Ok, no problem. Go to PHP dir, make clean, poke around with the environment variables, recompile the thing for 64 bits. Bum. More explosions. Guess what, MySQL was NOT compiled for 64 bits! Ok ok, one more level deep in the stack, go to MySQL directory, blablabla, recompile and… BUM! Yet another explosion. Now this one was more complicated. Apparently some of the libraries on the MySQL source code package were not being compiled for 64 bits. So, no 64 bits MySQL means no 64 bits PHP that means no runnable PHP with 64 bits apache that means falling back to Apple’s branded PHP that means… no PostgreSQL.

From what I saw on the Net, convincing MySQL to compile on 64 bits was not a road I wanted to go into. Also, one of the pages I found about the “wrong architecture” problem when starting Apache actually suggested to go in the opposite direction: grab Apache source code and recompile it in 32 bits. Using the mention configure command (./configure –enable-layout=Darwin –enable-mods-shared=all) I compiled the exactly same Apache version that Apple bundles with Leopard Server, and installed it over the Apple branded one. That made it all work, now on 32 bits. Of course, if you follow this trick, please keep in mind that this may break in future system updates. If some Apple system update replaces apache, it will not start unless you recompile it again for 32 bits only, or remove the PHP module.

This 64 bits mess is actually a very nasty problem, and makes me think what I’m actually gaining in all this. And the answer is: zero. My server has one GB of RAM, and will probably never have more than 4. If, for some reason, we actually need to boost the memory so far, it certainly won’t be because of Apache. It gets me thinking about actually how many people will actually need apache to run in 64 bits mode. If it’s more that 1% or 2% of the Xserve users, I’ll be very amazed. And what do I loose? A lot. Not all the open source projects compile easily in 64 bits mode (I know MySQL that comes with Mac OS X Server is compiled for 64 bits, but for some reason the needed fixes for that are not in the public MySQL source code tree), Apache may stop working at all in the next system update, and I had a lot of extra work. Maybe Apple should provide an easy way to switch this kind of stuff between 32 and 64 bits mode at will. Having only one OS version to all the architectures is interesting, but solving the problems that it creates is not.

Wrapping up

Everything is working now, after an entire weekend spent behind many terminal windows. Unfortunately, I have to say that my opinion about Mac OS X Server is not the best one. I have been working lately with FreeBSD. My experience with FreeBSD is way, way less than the experience I have with Mac OS X, so there are probably many downsides in FreeBSD I had not yet to deal with. That being said, I think Mac OS X Server is a very easy to use OS, as long as you keep using the tools Apple provided. As soon as you need different tools, specially the ones that tinker with Apache, you’ll start regretting liking computers in the first place. And surprisingly, you start to find that it’s actually easier to do it in a FreeBSD server. Every software I installed so far in FreeBSD (including WebObjects) was installed in a very easy and straightforward, painless way. Just browse the ports tree, make install clean and there it is. No crazy problems, everything is made to work with everything. And the default configurations are usually safer than Apple’s.

It makes sense: although FreeBSD guys don’t do beautiful GUIs and assistants, they work hard to make sure the system Works. All of it, including all the ports. And most important, not just it works, but it works together. If I had to use a word to define FreeBSD, I would pick “consistency” without hesitation. Even WebObjects, which does not have an “official” port on the FreeBSD port tree actually installs easier in FreeBSD than in OS X (due to the hard work of Quinton Dolan that created a FreeBSD port of WO). And face it: probably all the software you need exist in the port tree. It’s HUGE. And if it doesn’t, you can always install it using the classic UNIX way.

The Apple way is different. Apple picks a very small range of software, compiles and packages it in a very easy to use OS. It’s really easy, way more than FreeBSD in many ways. The problems appear when you conclude that the bundled software is not enough, and you want to install your own. And when that happens, you are completely on your own. You’ll start fighting Apple sometimes weird configurations and file system structure, you may run in binary architecture incompatibilities like I did, and so on. And you’ll probably need to do this, because what comes bundled with OS X Server is probably far from enough to get the job done.

drawImage performance on Leopard

Wednesday, February 27th, 2008

A not very fast but handy way to downscale images in a WebObjects application is using Java 2D APIs, with code like this:


BufferedImage reducedImage = new BufferedImage(newX, newY, BufferedImage.TYPE_INT_RGB);
Graphics2D g = reducedImage.createGraphics();
g.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BICUBIC);
g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_SPEED);

g.drawImage(originalImage, 0, 0, newX, newY, 0, 0, originalImage.getWidth(), originalImage.getHeight(), null);
g.dispose();

Although not blazing fast, this is enough for many applications. I could reduce a 7 Mega-Pixels image to something like 250 pixels wide in about one second, or less, in my PowerBook G4. But this was in Tiger.

In Leopard, as some of you may have noticed (and if you have applications deployed on Leopard Server, be aware) this is incredibly slow. When I say slow, I say five minutes, or even more, with the CPU being used at 100% during that time.

There are two reasons that lead to this. The first (which is not a problem in itself, but it’s a cause of the problem): Apple switched from Quartz to Sun2D graphics engine as the default one for Java applications on Leopard. So, all your image manipulation is being done using the Sun pipeline now. This would not be a problem, except for the second reason: the Apple JVM implementation has a bug that is slowing Sun’s pipeline drawImage method to a crawl. Actually, that was not the real reason. I testes this on FreeBSD (using Diablo JDK) and the speed was similar to Leopard’s. Sun2D is REALLY slow, to the point of being useless. I’m now using ImageMagick.

The only solution for now is forcing the application to use Quartz engine. You can do that using the command line option -Dapple.awt.graphics.UseQuartz=true. And, of course, file a bug on this!