I recently discovered a MacBidouille review (English translation here) of the P910i from a few weeks ago. The nice thing about this review is that it is Mac-specific. I mentioned the P910 back in July.
Igor asked me to compile his latest version today - I had a look at my previous write-up on the process, but I needn't have worried - it installed without a hitch.
Macslash reported today that Nokia have finally released their Nokia Collector software for OS X. The software is described as Nokia 7280 Phone Support but apparently will work with any phone that supports the Bluetooth OBEX File Transfer profile. However it won't work with Series 60 phones due to their strange OBEX implementation. No mention of UIQ phones, but I was unable to get my P800 (original firmware) to be recognised by the software.
The old Hitachi HTDK170 suddenly stopped working recently. For once a device of mine failed just before the guarantee ran out, rather than just after! Argos were very good about replacing it - it only took a few minutes and what's more they gave me an improved version - the HTDK185!! Not only does the new player have a built-in Freeview decoder, I discovered today that it recognises miniDVDs! In fact it was the same miniDVD that failed to play on the old HTDK170. The new player even put up a graphic saying 'miniDVD' when I inserted the disc.
How cool is this? With the white paint on the front rim of my PowerBook starting to chip away, I'm tempted to give it a try (if I wasn't so scared of cocking it up!)
Not a single other forum I've ever visited does it, so why does Apple? A whole host of troubleshooting information is being deleted for no reason at all. I can't even count the number of times I've been directed to the Apple discussion boards for a solution to some problem or other, only to find that the thread is too old and has been deleted.

In order to reduce the number of wires I have to connect to my laptop I recently picked up an Airport Express. Setting it up to stream iTunes music to the stereo and print wirelessly to a USB printer were relatively painless, so I had high hopes for the device's third function - acting as a wireless internet router. However since the Airport Express only accepts ethernet network connections (the USB port is solely for printers), I needed to replace the free USB ADSL modem that comes with the BT Broadband service with a 'proper' ethernet ADSL modem. Based on nothing more than a solitary post by one guy reporting success with it in conjunction with an Airport Express (on some forgotten discussion forum otherwise I'd link it) I ordered the D-Link DSL-300T modem.
Easy setup
Once the modem arrived I simply attached it to BT's ADSL microfilter using the supplied RJ-45 cable and to the Airport Express unit using the supplied ethernet cable. The modem's lights flashed a few times and the Airport Express's light went green. Apparently the Airport Express's primary function is the internet connection, because the light will flash an angry orange forever unless the unit is connected to the internet, even if you only bought it to stream music and print wirelessly. Once it was hooked up the Airport Express Setup program launched itself and led me through the extremely simple setup process. As soon as that was done I fired up Safari and to my delight I had wireless internet access.
Teething problems
However, as is so often the case, spending a short while exploring my new capabilities quickly showed one major flaw. I could not access this website! After some research it began to make sense. What used to be 'my' IP address was now the Airport Express's IP address, while the Airport Express was using DHCP to distribute private IPs to the client computer (my mac). After doing some research an Apple KnowledgeBase article entitled AirPort 4.0 Help: Can I use a web server on my network? finally shed some light on the subject. Since I don't have a static IP the first solution was ruled out, but the article contains a reference to achieving the same result by using what Apple calls port mapping (and what the rest of the world calls port forwarding).
This should work
I then found another Apple KnowledgeBase article AirPort 4.0 Help: Assigning IP addresses to devices on your AirPort network. This seemed to address my exact problem, so I fired up the Airport Admin Utility, chose to configure the Airport Express, and clicked on the Port Mapping tab. Here I mapped public port 80 to the private IP 10.0.1.201 port 80. I then opened the System preferences Network panel where I modified the Airport connection's TCP/IP settings to 'Manual' IPv4 configuration, IP Address 10.0.1.201, subnet mask 255.255.255.0, router 10.0.1.1, and the appropriate DNS servers for my ISP. None of this is very complicated, and it SHOULD work. But it didn't. I could still access the internet, but I couldn't access this website.
The clouds part?
After more research, and browsing through assorted forums, I finally discovered this post in the MacOSXHints forums. This looked like a working solution! Not only did the poster have the exact same modem as me, he was trying to do the same thing!
Maybe not
However, there's still something wrong. It took me a few minutes to figure where in the modem's web-based configuration controls I could set the modem to act as a bridge, but once I had it set I set the Airport Express to log in using PPPoE. Apparently if I can get the Airport Express to login then port mapping will work. However when I fire it all up I get an endless 'Looking for PPPoE hosts' message scrolling in the menubar! Annoying.
Temporary solution
While I think about it (never admit defeat!) I've switched to using the 'Enable Default Host' option in the Base Station Options (located under the Airport tab in the configuration page of Airport Admin Utility). By setting the empty field to 201 (so the IP address is 10.0.1.201) you are limited to only having one Mac accessible from the internet, but that's what I had with the old non-wireless connection anyway. It simply would have been nice to get the port mapping to work in the event of any further computers being added to the network.
I noticed in my RSS feed today this CultOfMac entry about Shepmaster's 'Ripping a DVD' tutorial. CultOfMac have also posted a rebuttal by one Alexander Malov.
The cause of this misunderstanding is a misuse of terms. 'Ripping' a DVD is merely copying a DVD to your harddisk - something you cannot do via drag and drop due to the CSS encryption on the DVD. As well as decrypting CSS, a good ripper should also remove any Macrovision protection and DVD region coding. Modern rippers like YadeX and MacTheRipper can also remove the more recent RCE protection. If you live in Europe, you also have to worry about the newly implemented ArccOS protection system. As far as I know, the only ripper able to defeat ArccOS is the next version of MacTheRipper, which is due Real Soon Now™.
What Shepmaster's tutorial is describing is ripping a DVD, followed by re-encoding the very large (usually 5 to 8 gigabytes) ripped DVD's mpeg2 video and (usually) ac3 audio streams into a much smaller 3ivX video and AAC audio file. This final file isn't playable on a normal DVD player, and is usually sized (by controlling the bitrate of the 3ivX) to fit onto 1 or 2 CD-Rs. On a 667MHz G4 I would expect this process to take anywhere from 12 to 24 hours.
What Alexander Malov's rebuttal is describing is ripping a DVD, followed by transcoding the mpeg2 video stream into another, lower bitrate, mpeg2 stream (small enough to fit onto a single layer 4.7 gigabyte DVD-R), and burning it onto DVD-R with Toast. This final disc is playable on a normal DVD player. On a 667MHz G4 I would expect this entire process to take about 2 hours.
Also worth noting is Alexander Malov's final comment suggesting DVDBackup. I simply cannot agree with this. MacTheRipper and YadeX are both well-supported, full featured, modern rippers. 0sex (that's a zero) is a slightly obsolete ripper but useful for its imaging functions. DVDBackup is irrelevant these days. All the other rippers can do everything DVDBackup does, but DVDBackup cannot remove RCE or ArccOS and has reported problems on OS X 10.3. I've personally experienced this problem, but to be fair it seems to only affect people who did upgrade installs of Panther.
But I digress ... the basic issue here is that Shepmaster's tutorial, despite being extremely thorough, has a misleading title. The tutorial itself is superb but strictly not for beginners. I can also personally verify that this particular tutorial has been on his website for at least several months, probably closer to a year.
This site has recently started to attract spammers, extolling the virtues of viagra, cialis, and large penises in general. Since the Movable Type interface is relatively slow, deleting these spams has become a bit of a pain.
There are several methods of defence, ranging from simply removing the 'post message' button and forcing everyone to preview, to installing Jay Allen's MT-Blacklist, or a script which disables comments after a set period of time. Elise Bauer of the Learning Movable Type blog has an extensive description of the various approaches.
The best solution for minimal admin-interaction (i.e. the best solution for lazy folks like yours truly) appears to be James Seng's MT-Captcha, an MT plugin which adds a graphical security code which the commenter has to read and type in (thus defeating the automated spam bots). Apparently captcha stands for "Completely Automated Public Turing test to tell Computers and Humans Apart."
Fink hell
Unfortunately, in order to draw the images, MT-Captcha requires that you install the perl module gd. I had previously downloaded and attempted to install this using these instructions but got lost in a maze of dependencies and fink hell. However today I stumbled across a promisingly-titled document How To Install gd version 1.8.4 on Mac OSX on DarwinPorts!
However, this meant I had to install darwinports ...
Next up, DarwinPorts
I set about following the site's instructions:
% cd ~
% mkdir darwinports
% cvs -d :pserver:anonymous@anoncvs.opendarwin.org:/Volumes/src/cvs/od login
% cvs -d :pserver:anonymous@anoncvs.opendarwin.org:/Volumes/src/cvs/od co -P darwinports
% cd ~/darwinports/base
% ./configure
% make
% sudo make install
Unfortunately I hit a problem almost immediately. The second cvs command left me with this error:
cvs checkout: in directory darwinports:
cvs checkout: cannot open CVS/Entries for reading: No such file or directory
cvs [checkout aborted]: cannot write: No such file or directory
After a few minutes of Googling I discovered that this error was likely the result of already having a directory called darwinports (i.e. there is an mistake in the instructions). I removed the directory and tried the second cvs command again, and hey presto! Screenfuls of stuff scrolling past as darwinports downloads! This lasted several minutes on my half megabit ADSL.
Eventually it finished and I moved onto the next step. After switching directories as instructed I entered ./configure. Cue lots more scrolling, only to come to a premature end with this message:
Please install the X11 SDK packages from the Xcode Developer Tools CD
configure: error: Broken X11 install. No X11 headers
And then X11
Argh! I thought I had already installed XCode 1.1 back when I was getting tintin++ to work. Apparently I didn't install the X11 part of XCode. Popping in the XCode 1.1 CD confirmed that it was missing. A lengthy 35 minute install later (the last 1% of which took 15 minutes), I was back to the Terminal to try and configure darwinports again. This time ./configure went smoothly, and make and sudo make install both completed without incident.
Finally, gd
Now to install gd! Referring back to the How To Install gd version 1.8.4 on Mac OSX document, the first instruction was to type sudo port install gd. Naturally this didn't work (does any unix software work first time?) - 'port' was not recognised. Adding export PATH=$PATH:/opt/local/bin to my ~/.profile file fixed the problem. After a 5 minutes or so I ended up with a screen like this:
$ sudo port install gd
---> Fetching jpeg
---> Attempting to fetch jpegsrc.v6b.tar.gz from http://www.ijg.org/files
---> Verifying checksum(s) for jpeg
---> Extracting jpeg
---> Applying patches to jpeg
---> Configuring jpeg
---> Building jpeg with target all
---> Staging jpeg into destroot
---> Installing jpeg 6b_0
---> Activating jpeg 6b_0
---> Fetching libpng
---> Attempting to fetch libpng-1.2.6.tar.bz2 from http://voxel.dl.sourceforge.net/libpng
---> Verifying checksum(s) for libpng
---> Extracting libpng
---> Configuring libpng
---> Building libpng with target all
---> Staging libpng into destroot
---> Installing libpng 1.2.6_0
---> Activating libpng 1.2.6_0
---> Fetching gd
---> Attempting to fetch gd-1.8.4.tar.gz from http://www.boutell.com/gd/http/
---> Verifying checksum(s) for gd
---> Extracting gd
---> Applying patches to gd
---> Configuring gd
---> Building gd with target all
---> Staging gd into destroot
---> Installing gd 1.8.4_3
---> Activating gd 1.8.4_3
And that's it! gd is now installed.
Now onto MT-Captcha...
The instructions for installing MT-Captcha itself are quite simple. All you have to do is insert some code into your MT templates. However after making the necessary changes and rebuilding I got lots of these errors:
MT::App::Comments=HASH(0x815db34) print() on closed filehandle OUTFILE at lib/MT/SCode.pm line 5
This turned out to be incorrect permissions on my MT-Catchpa temporary folder. Setting the owner of that folder to www (UID 70) cured the rebuilding errors. However, my security code was still not appearing! According to James Seng if your image doesn't appear it is always related to your gd install. After much frustration I finally realised that my install was missing GD.pm! Seeing as how I know absolutely nothing about perl, I failed to appreciate that gd and GD.pm are two different things, and we need to install both.
Not just gd, GD.pm too
So, after some more googling, I found that GD.pm (version 2.17) can be found here. After downloading and expanding it, perl Makefile.PL resulted in hundreds of error messages:
GD.xs: In function `newDynamicCtx':
GD.xs:440: error: structure has no member named `gd_free'
GD.xs: In function `gd_cloneDim':
GD.xs:460: error: structure has no member named `alpha'
GD.xs:460: error: structure has no member named `alpha'
GD.xs:466: error: structure has no member named `thick'
GD.xs:466: error: structure has no member named `thick'
GD.xs: In function `XS_GD__Image_newFromPngData':
GD.xs:595: error: structure has no member named `gd_free'
GD.xs: In function `XS_GD__Image_newFromGdData':
GD.xs:614: error: structure has no member named `gd_free'
GD.xs: In function `XS_GD__Image_newFromGd2Data':
GD.xs:631: error: structure has no member named `gd_free'
GD.xs: In function `XS_GD__Image_newFromJpegData':
GD.xs:651: error: structure has no member named `gd_free'
GD.xs: In function `XS_GD__Image_newFromWBMPData':
GD.xs:676: error: structure has no member named `gd_free'
GD.xs: In function `XS_GD__Image_copyRotate90':
GD.xs:1189: error: invalid lvalue in assignment
GD.xs:1189: error: invalid lvalue in assignment
GD.xs: In function `XS_GD__Image_copyRotate180':
GD.xs:1210: error: invalid lvalue in assignment
GD.xs:1210: error: invalid lvalue in assignment
GD.xs: In function `XS_GD__Image_copyRotate270':
GD.xs:1231: error: invalid lvalue in assignment
GD.xs:1231: error: invalid lvalue in assignment
GD.xs: In function `XS_GD__Image_copyFlipHorizontal':
GD.xs:1252: error: invalid lvalue in assignment
GD.xs:1252: error: invalid lvalue in assignment
GD.xs: In function `XS_GD__Image_copyFlipVertical':
GD.xs:1273: error: invalid lvalue in assignment
GD.xs:1273: error: invalid lvalue in assignment
GD.xs: In function `XS_GD__Image_copyTranspose':
GD.xs:1294: error: invalid lvalue in assignment
GD.xs:1294: error: invalid lvalue in assignment
GD.xs: In function `XS_GD__Image_copyReverseTranspose':
GD.xs:1315: error: invalid lvalue in assignment
GD.xs:1315: error: invalid lvalue in assignment
GD.xs: In function `XS_GD__Image_rotate180':
GD.xs:1335: error: invalid lvalue in assignment
GD.xs:1335: error: invalid lvalue in assignment
GD.xs:1336: error: invalid lvalue in assignment
GD.xs:1336: error: invalid lvalue in assignment
GD.xs: In function `XS_GD__Image_flipHorizontal':
GD.xs:1353: error: invalid lvalue in assignment
GD.xs:1353: error: invalid lvalue in assignment
GD.xs:1354: error: invalid lvalue in assignment
GD.xs:1354: error: invalid lvalue in assignment
GD.xs: In function `XS_GD__Image_flipVertical':
GD.xs:1371: error: invalid lvalue in assignment
GD.xs:1371: error: invalid lvalue in assignment
GD.xs:1372: error: invalid lvalue in assignment
GD.xs:1372: error: invalid lvalue in assignment
GD.xs: In function `XS_GD__Image_stringFT':
GD.xs:2085: error: `gdFTStringExtra' undeclared (first use in this function)
GD.xs:2085: error: (Each undeclared identifier is reported only once
GD.xs:2085: error: for each function it appears in.)
GD.xs:2085: error: parse error before "strex"
GD.xs:2104: error: `strex' undeclared (first use in this function)
GD.xs:2108: error: `gdFTEX_LINESPACE' undeclared (first use in this function)
GD.xs:2112: error: `gdFTEX_CHARMAP' undeclared (first use in this function)
GD.xs:2114: error: `gdFTEX_Unicode' undeclared (first use in this function)
GD.xs:2116: error: `gdFTEX_Shift_JIS' undeclared (first use in this function)
GD.xs:2118: error: `gdFTEX_Big5' undeclared (first use in this function)
GD.xs:2140: warning: assignment makes pointer from integer without a cast
GD.xs: In function `XS_GD__Image_stringFTCircle':
GD.xs:2188: warning: assignment makes pointer from integer without a cast
GD.xs: In function `XS_GD__Font_DESTROY':
GD.xs:2353: warning: comparison between pointer and integer
GD.xs:2354: warning: comparison between pointer and integer
GD.xs:2355: warning: comparison between pointer and integer
GD.xs:2356: warning: comparison between pointer and integer
GD.xs:2357: warning: comparison between pointer and integer
GD.xs: In function `XS_GD__Font_Small':
GD.xs:2369: warning: assignment makes pointer from integer without a cast
GD.xs: In function `XS_GD__Font_Large':
GD.xs:2380: warning: assignment makes pointer from integer without a cast
GD.xs: In function `XS_GD__Font_Giant':
GD.xs:2391: warning: assignment makes pointer from integer without a cast
GD.xs: In function `XS_GD__Font_MediumBold':
GD.xs:2402: warning: assignment makes pointer from integer without a cast
GD.xs: In function `XS_GD__Font_Tiny':
GD.xs:2413: warning: assignment makes pointer from integer without a cast
make: *** [GD.o] Error 1
Reverting to GD.pm 1.33
This error totally stumped me. There's a thread here which discuses it along with a possible fix, but it might as well be Greek as far as I'm concerned! Finally I read a note here, which suggested that reverting to GD.pm version 1.33 would work on OS X. After a quick download of the older version, I was once again installing GD.pm as per the ReadMe file. This time, despite hundreds of make test errors, make install worked perfectly! A quick rebuild of the site and - wow, stop the presses! I virtually jumped out of my chair as the sweet sight of a graphical security code greeted my eyes!
PS: for perl idiots like myself, here is a useful command to see if GD is working:
perl -e "use GD"
If there are no errors then GD is working.
Back to reality
Alas, despite the appearance of my security numbers, all was not rosy. After turning off comment approval and posting a few test comments, it became rapidly apparent that the security code was not being checked at all. Any comment was accepted, no matter what number was input into the security code field! Back to the drawing board...
Finally, success!
After flailing around for a couple more hours, and reading every one of the 500 comments on the MT-Captcha page, I've finally figured it out. There is a typo in the ReadMe!!! Growl. The key passage is this:
+++++++++++++++++++++++++++++++++++
INSTALLATION MT 3.x
+++++++++++++++++++++++++++++++++++From: http://www.setcomputing.com/blog/archives/computing/2004-September/incorporating_mtsecu.html
Follow Step 1 to 5 as above and then...
But this is wrong, wrong, wrong. What it should say is:
+++++++++++++++++++++++++++++++++++
INSTALLATION MT 3.x
+++++++++++++++++++++++++++++++++++From: http://www.setcomputing.com/blog/archives/computing/2004-September/incorporating_mtsecu.html
Follow Step 1 to 7 as above and then...
Once I completed steps 6 and 7 from the MT 2.x instructions (editing Comments.pm and the templates), the security code check FINALLY started working. I'm on cloud nine! :-)
In the course of researching Movable Type anti-spam techniques, I came across a Bayesian filter plugin by James Seng. It looks promising, but after reading this entry at Al-Muhajabah's MT Tips blog, I've decided to hold off. Apparently you need something like 1000 comments before it 'learns' enough to be useful. I have about 100 comments, so maybe I'll try it in a couple of years
I've been attempting to install Jay Allen's MT-Blacklist in order to help deal with comment spam. However, despite widespread acclaim I found this software quite badly documented and hard to install. The help forums were notably unhelpful - they are full of people requesting help and little to nothing in the way of answers. That said, this is free software and I suppose one can't expect too much.
After precisely following instructions and installing the software (including installing Storable.pm) I ended up with an error when I tried to load mt-bl-config.cgi ("Use of uninitialized value in concatenation (.) or string at /Library/WebServer/CGI-Executables/extlib/File/Spec/Unix.pm line 78."). According to Jay Allen this is a "superfluous perl warning". Whatever it is, MT-Blacklist simply doesn't work. No matter what I click, it takes me to a login page which doesn't allow any logins. Using my Movable Type login and password merely causes the page to reload. Interestingly, using any other login information results in a red box saying 'Invalid Login'. So obviously I am using the correct password information, there's just something broken in MT-Blacklist.
One of the suggestions in the help forums (in reply to someone else's problem) was to simply reinstall MT-Blacklist. I wasted a couple of hours and did so, only to get to the loading stage (running mt-bl-config.cgi) be greeted by a message to the effect that there were pre-existing MT-Blacklist entries in the MySQL database which needed to be removed. After spending a fruitless hour searching for an idiot's guide on command-line commands to drop tables from a MySQL database, I ended up installing phpMyAdmin following these instructions. After that ordeal trying to load phpMyAdmin resulted in this error: " The configuration file now needs a secret passphrase (blowfish_secret).". A quick google led me to this page where I found the solution. Finally, something that worked! Like so much other unix software, this whole ordeal has been a case of 'one step forward, two steps back.'
Unfortunately, after removing the old MySQL tables and reloading MT-Blacklist, I'm getting the exact same problem as before - no matter what I click I get taken to a non-responsive login page. As you can imagine, this is intensely annoying :-) If anyone has a clue, I'd love to hear from them!
I noticed on an entry on MrBarret.com mentioning Dan Frakes' list of great OS X apps from his latest book. I've only been browsing through the list for a short while but I've already found a few great apps I'd never heard of before.
I heard about this over at John Gruber's excellent Daring Fireball site - the True Story of Audion is a truly wonderful piece of Mac storytelling. I don't think I've ever felt so equally moved and delighted by what is essentially an article on the history of some computer software.
I noticed the creatively-titled Polyphonic Converter listed on Macshareware.net today - it's for converting midi files into polyphonic ringtones for modern phones. The good thing about this is that there are thousands of midi files freely available all over the web.
For the last couple of weeks Butler has been acting strangely. The launcher functionality is unaffected, but whenever I try to access the preferences they zoom off to the bottom left of the screen leaving only the titlebar visible. If I move the window back into view it I only see a portion of the window, and the window is not resizable, so the hidden items are totally inaccessible.
This seems to be a bug of some sort in Butler itself. The user guide discusses the problem here. The fix works, but only for a few days, then the problem reappears. It's sufficiently annoying that I am considering switching back to QuickSilver or LaunchBar.
While prowling around for iSight related goodies, I found this somewhat frivolous but in-depth article at MacDevCenter. It covers pretty much everything you would (and a lot you wouldn't) expect to do with an iSight. A lot of great stuff, but for me the highlight was iChat Streaming Icon, which among other things can turn your buddy icon (as it appears to your buddies) into a video of yourself! It's tiny and slow, but it's live! No more need to set an 'away from keyboard' message, they can see from your icon that you're not sitting in front of your Mac!
In an attempt to have video conferences with family back in Hong Kong I bought an iSight last week. The device has received almost universal approval and as expected my early tests were all positive. I am looking into the actual video conferencing software, but in the meantime the iSight's one major flaw has been poor performance in low light situations. For whatever reason, there is no way to control any of the iSight's settings from within iChat or OS X itself so there is not much you can do about it apart from turn on more lights. Kensington's SightLight is marketed as a cure for this, but a much better solution is to install the $8 iGlasses. This amazing app provides a wide range of controls for the iSight, from exposure to white balance. The results are astonishing - the sample screenshots on the product webpage are not exaggerations!
While I was in Hong Kong last week I picked up one of these great little gadgets for about £2.50. It's a retractable cable which lets you recharge your P800 from a USB port on your laptop. I'm finding it very useful so far! Not only is it great when actually on the move, but simply having a second charger around the house is very useful (my phone charger lives near the front door so I don't forget my phone on the way out, but sometimes I need the phone at my Mac but it's low on power).
While we're on the subject of Airport Express, Macworld had an article today about the Keyspan Express Remote. The setup consists of an infrared remote control and a receiver. The receiver plugs into the USB port of an Airport Express or the iTunes computer whilst the remote lets you control iTunes (and other media applications).
Well, my new Airport Express arrived yesterday. There are plenty of reviews around, so I'm not going to reinvent the wheel. The plan is to (eventually) set up wireless internet access for my laptop, but I'm still waiting for my ethernet ADSL modem to arrive (to replace the USB one that comes with BT's broadband service).
All I've used the Airport Express for so far is AirTunes. Again, this has been covered extensively elsewhere, so all I'm going to say is "Wow." This is one of those gadgets that make even non-geeks sit up and pay attention.
As well as setting up the Airport Express and AirTunes, I've been attempting to attach an old USB Lexmark Z52 printer to the Airport Express unit. This printer works when plugged directly into my Mac. However when I try to print wirelessly to it the print job spools to 100% and then stops itself. Opening the print queue shows my print job has stopped itself with a message which reads "Printer: Jobs Stopped".
Despite some extensive searching, I couldn't find the solution. I tried reinstalling the Lexmark drivers from Panther disc 2, a tedious job, but to no avail. This discussion describes my exact symptoms, but the given solution didn't improve my situation at all. After spending a couple of frustrating hours reading the Apple discussion forums, I stumbled across this page which lists Airport Express compatible printers, and the Z52 is not listed as being compatible. However I couldn't be sure since the Lexmark page on Airport compatibility has been down for the last several hours. To be honest, it's a relief to find out. At least I know how to fix the problem now! (The Z52 was a hand-me-down, and virtually not worth using in any case due to the extortionate cost of ink cartridges).
Edit: while typing up this entry, I attempted to print this page in order to double-check the exact wording of the print queue error. The printer name had a small exclamation mark next to it so I clicked 'Printers' and 'Rendezvous' and choose the Lexmark Z52 again. This created a new printer, and lo and behold, the damn page printed out! This is almost too annoying for words - I must have deleted and recreated the printer a dozen times using this exact same method without result, and now the damn thing decides to start working for no apparent reason. It's good to know it works, but I will still be replacing the printer shortly - it's too big and the ink costs almost 20 times as much as Canon cartridges.
Nokia recently announced this new phone. It looks very slick and improves on several of the flaws of the P800, notably the P800's lowly VGA camera and its distinctly average phone-related features (poor microphone, no profiles). Hopefully the 7710 will have the same great reception that my old Nokias all had (the P800's signal reception is noticeably worse). The Register has a write-up.