is akin to stepping backward in time--to the time of centralized mainframes and dumb terminals some would include the emerging cloud computing model in this analysisarguably in part throwback to older computing models whichever way we stepoffloading and distributing processing to client machines at least partially avoids this processing bottleneck other approaches so what' the best way to build applications for the internet--as client-side programs that talk to the net or as server-side programs that live and breathe on the netnaturallythere is no one answer to that questionsince it depends upon each application' unique constraints moreoverthere are more possible answers to it than have been disclosed so far although the client and server programming models do imply tradeoffsmany of the common web and cgi drawbacks already have common proposed solutions for exampleclient-side solutions clientand server-side programs can be mixed in many ways for instanceapplet programs live on server but are downloaded to and run as client-side programs with access to rich gui libraries other technologiessuch as embedding javascript or python directly in html codealso support client-side execution and richer gui possibilities such scripts live in html on the server but run on the client when downloaded and access browser components through an exposed object model to customize pages the dynamic html (dhtmlextensions provide yet another client-side scripting option for changing web pages after they have been constructed and the newly emerging ajax model offers additional ways to add interactivity and responsiveness to web pagesand is at the heart of the ria model noted ahead all of these client-side technologies add extra complexities all their ownbut they ease some of the limitations imposed by straight html state retention solutions we discussed general state retention options in detail in the prior and we will study full-scale database systems for python in some web application servers ( zopenaturally support state retention between pages by providing concurrently accessible object databases some of these systems have an explicit underlying database component ( oracle and mysql)others may use flat files or python persistent shelves with appropriate locking in additionobject relational mappers (ormssuch as sqlobject allow relational databases to be processed as python classes scripts can also pass state information around in hidden form fields and generated url parametersas done in pymailcgior they can store it on the client machine itself using the standard cookie protocol as we learned in cookies are the pymailcgi server