This essay does not describe an existing computer program, just one that should exist. This essay is about a suggested student project in Java programming. This essay gives a rough overview of how it might work. I have no source, object, specifications, file layouts or anything else useful to implementing this project. Everything I have prepared to help you is right here.
This project outline is not like the artificial, tidy little problems you are spoon-fed in school, when all the facts you need are included, nothing extraneous is mentioned, the answer is fully specified, along with hints to nudge you toward a single expected canonical solution. This project is much more like the real world of messy problems where it is up to you to fully the define the end point, or a series of ever more difficult versions of this project and research the information yourself to solve them.
Everything I have to say to help you with this project is written below. I am not prepared to help you implement it; or give you any additional materials. I have too many other projects of my own.
Though I am a programmer by profession, I don’t do people’s homework for them. That just robs them of an education.
You have my full permission to implement this project in any way you please and to keep all the profits from your endeavour.
Please do not email me about this project without reading the disclaimer above.This is one of the amanuensis projects. The intent of this Applet is to allow you to automatically specify and keep up to date several sources for a book you mention in a web page. If you buy a book I recommend via a link to Amazon on my website, I will get a 15% commission. If you buy something else I will get 5%.
However, Amazon is not necessarily the best place for you to buy the book. If you look in the Java & Internet Glossary under Book Stores you will find a list of quite a few online book stores. One may have the book more cheaply. One may be located closer to you. You may have a special discount arrangement with one. Another may be able to deliver it more quickly. You may have had a particularly bad or good experience with some store. Some stores may not accept the credit cards you use.
On my side, I may make even more lucrative arrangements with other bookstores, that carry a smaller selection of books. I don’t have the time to keep track of which bookstores carry which books and which stores have the best prices on each book. I don’t know from day to day which is the best place to buy each book. Further, there is no best place. It depends on too many factors. It would be better if clicking gave you a choice of vendors, like this:
|recommend book⇒Handbook to Higher Consciousness|
|by||Ken Keyes Jr.||978-0-9600688-8-3||paperback|
|birth||1921-01-19 died:1995-12-20 at age:74||978-0-9600688-9-0||hardcover|
|Ken’s classic. This is by far his best selling book. You can read part of it online.|
|Greyed out stores probably do not have the item in stock. Try looking for it with a bookfinder.|
I hope it is coming clear ideally what this Applet does. You click on the book and it shows you just the bookstores that carry the book, their price (including shipping, duty and taxes), delivery time, sorted in descending order either by price or estimated delivery time. It also tells you how fresh/reliable the information is (perhaps using icons) for each bookstore. It may further automatically filter out stores that don’t handle one of your available cards, or use icons to show which ones are accepted.
I have already done a crude version of this that just builds links to three bookstores without checking prices or availability.
Instead of embedding a reference to Amazon in my HTML (Hypertext Markup Language), I would embed a reference to the comparison shopper Applet/servlet, along with the book’s ISBN (International Standard Book Number) as a parameter.
The scheme would let you go visit any of the book stores and then do your shopping and browsing there directly. The Applet’s job is simply to direct the people to the most promising online bookstores for each book.
If you want to get even more clever, you can hook into the search engines of the various stores to determine the ISBN when the user does not know that, then use the ISBN to go comparison shopping.
Your little engine can work given any ISBN. It need not be one you have on file. The comparison shopper on the server goes out looking while the customer waits. It might even provide estimated prices and availability when it can’t get through right away to all the bookstores.
After you have all this working, you might do a thin client version as well, that does not require an Applet. It works by generating pure HTML at the server.
You can write a very simple version of this program that just directs the user to a generated page that takes you to several bookstores. A CGI (Common Gateway Interface) Java Servlet generates HTML code. This is valuable even without the comparison shopper feature because:
Most commonly you would offer to share the proceeds of the referral fees with anyone who puts the Applet up on their site. That way people who use your Applet need not sign up themselves with 50+ bookstores as affiliates. They use your accounts and you track internally to figure out where various referral fees came from. They get one quarterly cheque from you, if the amount is above some minimum. Be aware that bookstores won’t necessarily provide you with detailed, timely accurate statements. The statements won’t track which site generated the sale either. Reconciliation is a major headache.
Here is an example valid ISBN 0201479508. Here is how you ensure that it is valid.
You need a very simple database of book information, possibly a Hashtable, BTree or SQL (Standard Query Language) lookup by ISBN. This database is kept on the server. You can access it via JDBC (Java Data Base Connectivity), CGI or a servlet talking HTTP (Hypertext Transfer Protocol) or raw sockets. At night the server goes shopping, getting fresh prices on the most popular items first, making sure to hop from store to store so as not to put an undue load on any one store. Eventually there may be a protocol for stores to notify you of price or availability changes so you don’t need to pester them with nightly polls.
You want to avoid polling any more frequently than absolutely necessary to remain on good terms with the book stores. Reduce polling frequency if the store does not carry the book. Reduce polling frequency if the price has not changed in a long time. Reduce the polling frequency if no other books at the store have recently changed prices. Reduce polling frequency if the book is not popular.
The hardest part of this project is gathering the price information in many formats from many stores. The interfaces you are dealing with were designed for humans, not computers. They may change at any time. Before you get heavily into that, prototype the idea with fake or hand calculated data. Smooth the rough edges off your user interface, simulate the delays and see if the idea is acceptably quick and whether end users love or hate it. It may be a licence to print money or a black hole for it. Perhaps some bookstores offer computer friendly price and availability lookup interfaces.
The book cover *.gifs/jpgs could be automatically plucked from bookstores, cached on a central server, cached on the local server, cached on local hard disk or cached in the browser. A simpler version would just look on the local server for the GIF (Graphic Interchange Format) and provide a dummy one if none were available, e.g. just giving the title of the book in large type, on a coloured background.
Because it is so little work to recommend a book, people might be much more willing to add such links. They are easier to set up than a traditional link, which requires custom gobbledegook like this:
<!-- macro Insert cited/9780960068883.html Book -->You could use such an Applet to raise money for your favourite charity. All you need do is provide for a variable *.jpg to be displayed that explains how the generated revenue is spent.
I use a crude version of this amanuensis right now to generate the links on the CMP (Canadian Mind Products) site. You are welcome to the source code. I will release it as a shareware product once I add the following features:
Since I wrote up this project many book pricers have sprung up and faded away. See the list. None of them have been willing to share the proceeds with people who link to them which gives no incentive to link to them.
You also need a way to bulk refresh any generated HTML by extracting the variable data and rerunning the generator. See the HTML macros project Which could be used to generate or regenerate complex HTML.
This page is posted
Optional Replicator mirror
Your face IP:[188.8.131.52]
You are visitor number|