|| Learning Python,
Ascher, 2004, ISBN 0596002815, O'Reilly.
The first edition was published in 1999 and was subsequently updated to
the 2.2 version of Python in 2004. I
highly recommend this book as the first book on Python you should
get. Its a very
readable language reference, with lots of short examples. It
chapters on some of the more advanced topics and some of the
Slashdot has a review of the new version.
Even if you have a copy of the original edition I think you should get a copy of the new edition, it has a lot of new material, as well, some of the general sections have been significantly improved.
Even if you are an experienced C++ programmer you'll benefit from reading this when you start coding Python as Python's object system and language have may built-in capabilities that C++ lacks (so you will be unaware of and probably will not even think to look for).
Speaking with Canon, I found the following:
Of course, every image is different, but in Canon's testing, the company used the ISO Standard #5 image to estimate inktank usage. (This image provides a fair and accurate ratio of colors to approximate the average digital photograph.) Here are the results, according to Canon:
Cyan: 1100 pages
Magenta: 790 pages
Yellow: 540 pages
Photo Cyan: 380 pages
Photo Magenta: 280 pages
Red: 2300 pages
Green: 2300 pages
The new red and green tanks, obviously, are used far less often than the others because they're primarily used for accent work. They're the last tanks you'd have to replace.
I purchased the i9900 about 6 weeks ago to replace my S9000. The S9000 is no slouch and a top rated printer from 2 years ago but i9900 is much better. I now shoot with a Canon 10D and Canon L lenses even though I have thousands of transparencies to scan on a Canon FS4000US film scanner. The 10D was purchased just prior to a trip to Rome where I shot about 1000 images.
I just finished assembling 170 of the best Rome images into an album using Canon PhotoRecord software that comes with most Canon digital products. I printed the album on both Epson dual-sided matte paper and Pictorico dual-sided semi-gloss paper. The results are amazing. Both papers work extremely well with the i9900 although they each have their own subtle tinting difference. This can be corrected easily with color adjustment through the printer driver. Printing the entire album on the dualsided 8.5 x 11 stock (68 pages total) used no more than half of some of the ink cartridges and almost none of the red and green. People who have viewed the album are stunned and amazed with the quality and can't believe it came from an inkjet printer. The color punch and tone is incredible and the level of detail and resolution equals or exceeds wet chemistry printing. If you want to see dots you'll need at least a 4X loupe and there is absolutely no banding.
It is a mistake to not consider this printer because of the limited selection of Canon papers. Epson papers work extremely well on the Canon printers as do Pictorico, Mitsubishi and Konica. These are the only papers I've had the opportunity to try.
Needless to say, I am very happy I bought this printer.
2005 Solar Car Challenge  
If you are using Windows XP or Vista this might not be a problem with your code, it appears that some UI designer (who's brain was obviously too big and has a full head of hair) at Microsoft decided that the keyboard focus indicator was too distracting and ordered it turned off by default. But to make life more confusing the focus box will get drawn when signs of keyboard activity are sensed (such as when you press an ALT key or perhaps the left or right arrow keys - but NOT the TAB key). Then, just to make matters even worse, the Vista team rearranged the way this option is hidden in the Windows preferences system, so even if you found the instructions on how to re-enable this behavior under XP you'll never find the control for it under Vista - this article has a good guide to where to find the setting under both Vista and XP. In short for Vista you need to:
Of course the cancer scanning that is currently carried out on all patients on their regular doctors visits is running about 100% false negatives right now... That is to say practically everyone who visits a doctor for an annual medical leaves his office with a false feeling that they are healthy (i.e. cancer free). 
I encountered the "busy drive" bug while checking to see if any of my Seagate drives might be affected. Quite ironic, you shutdown the system to check the serial numbers and drive labels; and then, when you power up the system again one of the drives is no longer responding to the BIOS. Seagate now has a few online tools that you can use to find out if you need new firmware - the best is to get the drive's serial number and enter it. If your drive is one that is known to be at risk they will send you to a page from which you can download a small ISO image that you can burn to CD and then boot from to flash the drive.
Seagate's firmware upgrade procedure is described here, if you have an X86 PC which can boot from CD then it is pretty simple to flash the drives (just detach all your other drives first to be on the safe side).
I was able to unbrick my drive that had entered the busy state by following this procedure. If you just unscrew the screw near the drive power connector a few turns, then you can slide some insulating material (say the corner of a business card) between the connector and the controller board quite easily. I used one of these RS-232 to TTL level shifters (here from www.robotcraft.ca) and used a pair of AA batteries to power it at 3 volts. For the connector to the RX/TX pins I used a piece of cable from an old computer case, one of the two pin headers that is used to connect the front panel (lights or switches) to the motherboard. This had the correct pin spacing but was slightly too thick to insert into the drive's socket, so I used sand paper to thin it down a bit. Once I had found a serial cable (which I have not used for many years) I was able to connect the drive to the computer and verify that it did have the "busy error" symptoms (the drive will keep sending, about once a minute, a string like "LED:000000CC FAddr:0025BF67" to the terminal). At this point things worked up to issuing the "Z" command to spin down the drive. For me as soon as I issued that command the drive would enter the busy error state. The command sequence looked like:
F3 T>/2 F3 2>Z LED:000000CC FAddr:0025BF67 LED:000000CC FAddr:0025BF67In the end I reviewed the various drive commands (a list is listed here) and noted that the "Z" command was also available at other "levels", so I gave level 8 a try and this worked. The output from my command session looked like:
F3 T>/8 F3 8>Z Spin Down Complete Elapsed Time 0.161 msecs F3 8> F3 8>U Spin Up Complete Elapsed Time 9.250 secs F3 8>/1 F3 1>N1 F3 1>/T F3 T> F3 T>i4,1,22 F3 T>m0,2,2,,,,,22 Max Wr Retries = 00, Max Rd Retries = 00, Max ECC T-Level = 14, Max Certify Rewr ite Retries = 00C8 User Partition Format 5% complete, Zone 00, Pass 00, LBA 00004339, ErrCode 000 User Partition Format 5% complete, Zone 00, Pass 00, LBA 00008DED, ErrCode 000 00080, Elapsed Time 0 mins 10 secs User Partition Format Successful - Elapsed Time 0 mins 10 secs F3 T>After I had done this I was able to remove the drive, test it and confirm that it was working fine. I then did a firmware update which took it from SD15 to SD1A.
And one more thing, my drives were "made in China" so this problem was not just with the drives from Thailand. 
(5*365)*(5*365)/(4*(4-1)*7) = 39650 daysor about 108 years before you had 2 drives die within the 1 week replacement window and lost your data. Alternatively you might use each drive as a simple redundant copy of some data, so if you have 3 drives you put the same data on each, then once a month you check each to see if it is still fine (perhaps you put more data on it at that time as well), then using the same conservative 5 year MTBF you would have:
(5*365)**3/(3*(3-1)*(3-2)*(31)**2) = 1,054,178 daysor 2888 years before you had all three drives die within the same 1 month window and lost your data. So it looks like just putting your important data on two or three external hard drives which you periodically test and refresh should be safe enough, and the more copies you have then safer you will be. Of course, with multiple copies you can place some of them in off site storage which will help protect against fire, theft, flood and other catastrophes.