I love Amazon.
I was helping my aunt put her bookstore online. She has a used paperback store with tens of thousands of books in stock. She's been doing it for over 25 years, and the technology hasn't changed since Day 1. Literally, she's still using the same old cash register as the day she started.
A few years ago, I suggested putting it online, and/or selling some of her overstock through eBay. I'd say Amazon, but they rape vendors on the fees. To demonstrate what I was trying to explain, I put together a warm friendly front end that would pull the book details from Amazon. It was the best source I could find for any arbitrary ISBN.
Well, 3+ years later, she gave me the go ahead to start clearing out the back room. Great, I can start doing the inventory, and listing items. Great went to not so great. I picked up a cheap barcode scanner, and scanned the first book. I got an error back from Amazon. My API key was still valid, but they now require the requests to be signed. Digging around a little, this happened in August of 2009. I do receive emails from them, but I never saw anything regarding this. Apparently they gave their developer network 3 months to implement the signing.
Their signing isn't quite as easy as it seems it should be. Their documentation is now focused on their cloud computing platform. The rest is sparse at best. Most of the references I found talked about how to do it before the signing, which I already mastered. I finally found someone who had posted a function that would sign the request. That took a few hours and a lot of Google searches to accomplish. What a way to support legacy apps. I found plenty of references where other folks had modules written for their software that broke on the day of the changeover. If this had been a production application, it would have been a real headache. Come on, don't change the functionality of the API without clear explanation of how to fix it.
Now it's up and back running. I'm adding the rest of the required functionality. I could have spent the weekend adding functionality, rather than chasing down a solution to fix what they broke.