My thoughts on Web Development

    When I developed my first web based application, a problem tracking system back in the early 90's I used a combination of tools; notepad for developing the HTML pages, Visual Basic and CGI for developing the application interface which included dynamic html and an interface to an SQL database. I could see that this kind of development could become the "wave of the future". What I did not realize was the extent it would. Today Web developers have many  different development options and tools that it can become overwhelming. The development direction an organization takes will determine not only how it is presented to it's clients, the internet community, in whole the world, but also the time, budget, and resources required to build this presence.

Thin and Thick Clients

    So today we have thin and thin client applications developed using a variety of tools including Dynamic HTML, XML, SOAP, AJAX, JAVA, ASP.NET, Web Services, and many others.

    Thin clients are applications which run within web browsers such as IE, Firefox, or Opera. These applications can utilize JAVA Applets, VBScript, JavaScript, HTML, and XML for presentation to the client. I have developed thin client sites for non-profit, for profit and personal individuals and organizations. In the mid to late 90's I operated an ecommerce website which specialized in selling self improvement tools. I sold this site, which at the time as known as www.selfimprovement.com in the late 90's.

Thick clients are applications which run on a desktop with connection to a server. Currently I am developing thick client web applications in JAVA utilizing the BEA and Jacada Development Environments.

So what are the Pros and Cons of each of these client types?
Obviously this list is not inclusive and will be updated as required.

Thin Client

Thick Client

Pros

Cons

Pros

Cons

No client software traditionally less richness than thick  clients More Features than thin Client May Require client software
Accessible from Internet difficult to write code for all browser types/ Fewer Problems with communication Could be OS Specific
Extremely flexible   better look and feel than a Web Interface DLLs' on clients desktop
Easy to Deploy     deployment depends on complexity of application
Multiple clients (PC, Mac, PDA)     maintenance and change management costs depend on complexity of application
centralize DLLs' on web server     May require connection to a specialized server
Low maintenance and change management costs      
       

Content Management Systems

    Today, the website which we develop to represent our organization is usually the first place clients go to learn about our business and what we have to offer. This makes the CMS or Content Management System we use extremely important. Not only does the information have to available but it must be accurate and easy to find. It it is not then potential clients will find somewhere the information is. That somewhere is usually a competitor. Many CMS systems are available and most of them do an excellent job dispensing the information. A great article on the top ten mistakes when selecting a CMS can be found here.

    In the past I developed a content management system which allowed System Support Engineers to the find information they required to resolve customer problems. This system was very simple but also very effective. An engineer could search the complete system for specific keywords or they could browse through the directory structure. When new information needed to be added an engineer could just drag and drop the information (word doc, spreadsheet, notepad, images, etc) into one of the content management directories (or create a new one if needed). The document would be automatically indexed and be available on the system within seconds. This was all done using the Microsoft Windows Indexing System and a very simple ASP page. There was no need to buy any expensive software to complete this project.

Content Distribution Network

    A content distribution network or CDS allows information to be distributed in an efficient and organized manner by networking  a group of systems which are in
multiple locations and utilize multiple backbones. Information can be replicated on multiple servers. Peer to Peer networks are an excellent example of a CDS. They allow users to users to locate and obtain information without having to know exactly where it is.

    By distributing the information to multiple servers (as in a peer to peer environment) in various locations you can control bandwidth, keep information available during peek times, and make a users browser experience faster.

    If you go to http://www.gregbaker.com and click the software tab you can see how I have utilized a very simple CDS by making some software applications available to users. Since this software is in a published state when I update the software on the website the users are notified of the update the next time they run the software.