Trendi.com is a site aimed at the young and the hip who want to let their friends and acquaintances know the latest things they have discovered on the Internet. This demonstration version of the site was built using AJAX techniques to make the user experience as immediate as possible. Feel free to sign up for an account, and see how the various parts of the site interact.
The back end of this application is a fairly complex MySQL database. The biggest challenge was to design a way to display the most popular items, and to keep that list up to date, given that any user anywhere could cast a vote (up or down) on any item. "Popular", in the owner's mind, meant "the most votes in the last hour". If I had not been careful, I could have overloaded the MySQL daemon fairly easily. The query that is used to populate the item list, though, is crafted to change very infrequently, so that we can take advantage of the cacheing of query results that is built into MySQL. This reduces the offered load on the daemon, so that it can support a considerably higher query rate.
This Chemistry Adjustment Calculator is a part of a larger website. My assignment was to create a page that would allow the user (a swimming pool maintenance person) to type in the readings from a water-quality test kit along with the pool dimensions and obtain the proper amounts of various chemicals to dump into the pool to correct any non-ideal readings.
The calculations are all done in JavaScript without any reference to the web server from which the page came. All the input boxes are checked for illegal input, and use class switching to indicate that an entry is not acceptable. At considerable effort, I have managed to suppress "form submission" as a consequence of the user hitting the ENTER key; in this case, such a submission would result in a form refresh (with consequent loss of values already typed in).
To increase usability, I have added a feature to this page to create some "memory" via local cookies, to carry over from one page visit to the next the pool volume, and the selections made for chemicals used to adjust each of the readings. That way, the operator only has to choose an item from the select boxes when he starts using a new chemical (or goes to another pool).
Bookkeeping Application. This project is a multi-currency bookkeeping application designed for a small graphic design company. It makes extensive use of AJAX techniques to give the appearance of a desktop application that is available from any web browser. The only operation that causes a page reload is the file upload feature on the transaction detail screen. Everything else is handled through AJAX transactions in the background. This demonstration version is publicly available for examination; the actual site is installed behind a firewall at the customer's site. If you would like to log in (at any of three levels: guest, poster, or admin), feel free to do so. The instructions are on the login page; I have intentionally disabled any actual changes to the database. Instead of actually making a change, the site will tell you what it would have done, if it had been an actual working version.
Bi-Optic.com is a site representing a small company. Its owner is an intelligent and hard-working guy who does not have time to learn all about HTML, but still wants to maintain his own catalog of equipment for sale. I have built this site so that he can create, edit, and delete catalog entries with minimal attention to HTML and immediate feedback on the look of his entries. The maintenance pages are protected by password and HTTPS, and allow the owner to upload photos of his equipment as part of the entry composition process.
Craftsman Homeworks is a home remodeling business. This site is a display-only site, used during each project to communicate with vendors and with potential buyers of the properties.