Building a personal MAA website: Difference between revisions

From BoyWiki
Eskimo (talk | contribs)
m link to parked page erased
Eskimo (talk | contribs)
I posted a link to the archived page directly instead of having the user search for the URL in archive.org
Line 198: Line 198:
Please keep in mind that this tutorial is  written for the novice at web design who wishes to create their own website,  and is written by an amateur himself.  Rewrites are certainly welcome.
Please keep in mind that this tutorial is  written for the novice at web design who wishes to create their own website,  and is written by an amateur himself.  Rewrites are certainly welcome.


SOURCE: Archive.org archived copy of http://www.pedfoundation.org/workspaces.html">
SOURCE: Archive.org archived copy of https://web.archive.org/web/20051029004327/http://www.pedfoundation.org/workspaces.html
This page was last modified 18 July 2005.  All text is available under the terms of the http://www.pedfoundation.org/Miscellaneous/gnu_license_agreement.html
This page was last modified 18 July 2005.  All text is available under the terms of the GNU Free Documentation License  See Copyrights for details.  Your use of this site constitutes agreement to our  
GNU Free Documentation License  See http://www.pedfoundation.org/copyright.html Copyrights  
for details.  Your use of this site constitutes agreement to our http://www.pedfoundation.org/Miscellaneous/privacy_policy.html
Terms of Use</a>.&nbsp; Please also review our http://www.pedfoundation.org/Miscellaneous/privacy_policy.html Privacy Policy


BOYWIKI EDITOR'S NOTE: Not all the links in the original article are good. Some pages from this site were ''not'' archived.
BOYWIKI EDITOR'S NOTE: Not all the links in the original article are good. Some pages from this site were ''not'' archived.


{{stub}}
{{stub}}

Revision as of 13:14, 1 November 2015

Building a Personal MAA Website

This brief tutorial on designing and publishing a personal website is intended for an individual who has not done so previously and is not highly knowledgeable of the process.  This tutorial's intention is to lower the barrier of entry to on-line publishing for minor attracted individual's and contribute to an increase in the total number and level of quality of minor attracted community websites.

INTRODUCTION

The essence of a web page is a request that the user's client (his web browser) transmits to the server that the page resides on.  The protocol of this request is called HTTP and it contains specific pieces of information. 

Of concern with respect to security is that it carries the website URL that the browser had loaded last before visiting a new site (this was designed to give webmasters an idea of where the traffic to their site is coming from).  It also contains a number which uniquely identifies the requesting client (web browser).  This is the "IP" address and is masked if the client is approaching the web server via a proxy.

If you are running Microsoft Windows XP Professional, you can download for free and install the IIS Web Server on your personal machine.  I recommend you do so to facilitate a development environment for your website.  If you are running Linux you are probably a more sophisticated user than this tutorial is directed towards.

I assume the reader has a concept of what they would like to create in terms of general content for their website.  As such the next step is to secure a web domain.  Please first consider the following questions:

1.  Do you intend to abide by the "customary and usual" FAQs of on-line MAA community resources?  If you choose not to do so, you should prominently advise such on your index page (the first page someone arrives at on your site).  There is a well-developed set of rules that have been established by practical experience in terms of what is and what is not acceptable to maintain a legal site in the US, Canada, Europe, UK, and Australia. 

2.  Is your content bandwidth-intensive?  Discussing your plans with other knowledgeable people in the minor attracted community can probably provide an idea of what your hosting needs will be.

The minor attracted community has a long history of difficulty in finding website hosts who value our freedom of expression.  You might consider registering your own domain rather than having it hosted as a subdomain by someone else.  Be careful in the information you register the domain with; it will be publicly accessible and should not be your address or phone number unless you so desire.

FIRST STEPS

You have registered a domain or found someone to host your site as a subdomain (and if finances or anonymity concerns preclude you from doing that, please contact pedfoundation.org for help).  You have a logon to your web space on a host.  You may have web-based tools to manage your website.  You likely have access to e-mail tech support to solve host-specific problems in getting your website up and running.

Your first step is to acquire an FTP client and learn to use it.  It allows you to create and delete file directories on your web host, and to upload and download files between your computer and the web host.  Your design work takes place on your computer and the final result is published for testing.  Your web host should have instructions for configuring the FTP client to establish a connect with your site.  I have used AceFTP (shareware) and SmartFTP (freeware) with success.

In our discussion earlier of the client's web browser sending a HTTP request (GET) to your web server for a specific file (for example, your "home page" is usually called index.html), the web server will then return a HTTP message to the client.  The body of this message is the "web page", or the HTML code that the client's web browser will parse and display.

HTML CODE

You should familiarize yourself with HTML code and practice formatting documents with it. It does not display consistently across platforms, and that is one of the challenges of web design.  You should load all of the major web browsers on your machine (netscape, internet explorer, opera, mozilla, lynx, etc.) and look at your work in a variety of them, and at different windows sizes (i.e. maximized and as a smaller window).

The first group of html tags to become familiar with handle formatting text.  Tags take the format of <command>, and whatever the tag specifies continues until the browser reaches a closing tag like </command>. <b>text </b> bolds the text in between

<i>text </i> italicizes the text in between

<u>text </u> underlines the text in between

<font></font> Allows specifying the font, size, and color (i.e. <font color=#FFFFFF>)

Colors are specified in six digit hex codes.  There are good color pickers available as websites on the internet.  You simply click on the color and it gives you the hex.

<h1></h1> through <h6></h6>:  Using the header tags increases the font size of the text in between.  The header tag works in relation to the default text size for the client's browser.

There are similar formatting HTML tags for superscript, subscript, strike-through, setting a block of text off <blockquote>, paragraph formatting, line breaks <br>, and more.  You should research these and practice hand-writing html code.  You can do so in Notepad or in Word (making sure you Save As a plain text file).  Save it with an .HTML file extension and load it through the OPEN a FILE feature of a browser.

The next group of HTML tags to familiarize yourself with control display of lists.  There are tags for ordered lists (i.e. numbered items) and for unordered lists (i.e. offset with a bullet).  You can control the numbering scheme or the bullet employed.  Numbering is automatic and generated by the client's browser.  An example is:

<ol><li>one

<li>two</ol>

Produces:

1.  one

2.  two

Web browsers collapse space characters so you cannot depend on using your space bar to format a list.  You can safely assume that most web browsers will collapse multiple spaces to a single space.  There is a "trick" to doing it but it can have undesirable results.  I use it frequently in tables (discussed below) though it is considered poor design.  You can also use the &nbsp entity (not between < or >) to get multiple spaces.

Images are embedded in your web page via the <img src=www.yourdomain.yourpicture> tag.  When the browser parses the web page from the server, it sends additional HTTP (GET) commands for each of these imagine requests it encounters.  The <img> tag allows a number of attribute to be set, including the size to the display picture in the browser in pixels.

Hyperlinks can be attached to any object in your website including text, images, or objects such as Flash objects.  The html tag is the anchor, and the href attribute is specified with a URL to load when the anchor is triggered.  For example, <a href=www.pedfoundation.org>My Web Site</a>

It is good practice to look at the size of your picture in pixels and specify this in the attributes of the <img> tag.  If you do the browser then knows how much space to set aside and can finish positioning everything from the html page in the browser window.  If you don't, you get the effect of everything moving around when a picture finally loads.  Also, it is a good practice to specify a relevant name for the picture in the alt text attribute of the <img> tag.  It gives the search engines something to index and increase the relevancy of your page.  Also many people surf with images turned off or with text-only browsers (particularly vision-impaired individuals) and your alternate text is their only connection to what the image is.

The "trick" I mention to attempt to format a list without the <ul> or <ol> tags is to have a one pixel x one pixel transparent .gif image (.jpg doesn't allow transparency), and to specify its size attributes on loading.  For example, if you wanted to indent a sentence, you could place the <img src=images/spacer.gif> tag at the beginning of the sentence and use the width attribute to stretch the single pixel image out <img src=images/spacer.gif width=25>.  This is very handy in tables. 

Our next short topic is HTML tags related to the document.  A web browser recognizes the start of an web page by encountering the <html> tag, and recognizes the end of the web page by the </html> tag.

Typically immediately following the <html> tag are various meta tags that aren't necessarily relevant to your project.  If you use a what-you-see-is-what-you-get web editor such as Frontpage, it will (you can control this by the defaults) throw in the program that generated it, the user who generated it, and the time and date.  The important meta tag is <meta content="your keywords"> .  You should list all relevant keywords related to your web page in this meta tag.  Search indexes weight it in determining relevancy although it is not a strong factor.

The <body></body> tag identifies the content of your page.  You can specify as attributes of this tag background colors, the text that appears in the title bar of the browser, images to tile for the background (make sure the web graphics you find for this are "tiling", or seamless when placed side by side), and more.

SCRIPTING

You may encounter script following the <html> as well.  You can recognize it by the <script></script> set of html tags.  It will specify the scripting language, such as javascript.  This is code that is executed in the client's browser after the html document is loaded and parsed.  It can do any number of things; play music, provide roll-over and special graphic effects by flipping two images in the same spot, or even provide an online game on the client's computer. 

You do not have to be a programmer to use scripting.  Most people have vbscript turned off because of serious security problems with that language.  Search around the web for javascript apps you like; in most cases it is merely a matter of cutting and pasting the code into your html, and following the instructions provided with the code to customize it for your app.  Bear in mind that you shouldn't create a situation where the only way to do something is through your script, because many people turn it off for security reasons.  If your navigation system depends on javascript roll-overs (as the pedfoundation.org homepage does), for example, you should provide text hyperlinks at the bottom.

Scripting can appear anywhere in the html document.  It is sometimes placed at the bottom so that it executes after the rest of the page is parsed.

POSITIONING ELEMENTS

One topic is also the most problematic, how to position the various elements of your web page in the client's browser.  You do not know what size your client's browser is and you can make no assumptions about it, aside from perhaps a minimum that you feel a reasonable person won't shrink it down past.  640 x 480 pixels is perhaps a reasonable minimum to design for.  Someone looking at a site in a smaller browser window may get scroll bars.

When the client's browser parses your html page, it will arrange things in default orders.  For example, if you send a series of pictures (with no attempt to position them), the 640 x 480 sized browser window might tile the pictures one across and put each new successive one under the last.  Eventually a scroll bar will appear.  The 800 x 600 sized browser window might have room to display the pictures side by side for two of them before making a line break.  In this case the pictures would be tabled in two columns.  The browser does the best that it can.

There are three options for positioning elements on your web page (outside of the text-formatting specific tags mentioned earlier). 

The first is using the positioning feature of Cascading Style Sheets.  This is the preferred approach, and has somewhat of a learning curve to employ.  Not using the CSS approach, however, might garner you criticism from experienced web designers.

The second is using javascript to position elements, which should probably not be your approach.  Your website will fail terribly if the client has javascript turned off and it takes some work to learn the scripting language.

The third , and perhaps easiest to master, option for positioning items are tables.  It will take some time to get them to do what you want them to do in a variety of situations.  You can nest tables within tables and this is very convenient. 

In my opinion a beginning web designer should secure one of the web design packages and use it to learn tables.  I am partial to FrontPage as it comes standard with Office XP.  These applications will allow you to create tables in a WYSIWYG fashion, and then flip to looking at the html tags generating them.  I find it rare that the wysiwyg interface generates what I need without me working directly on the html, but it helps me keep track of everything particularly with multiple nested tables.  There are attributes set for cells, for rows, for columns, and for the whole table.  Some of these are positioning, borders, and the widths and heights in either percent of pixels.  Those size attributes will account for most of your struggle with getting a table to display your website content as you envision it.

We have now had a very brief overview of text formatting html tags, the structural tags such as <body>, scripting, and tables.  I encourage you to research and practice, with an emphasis on practice, of each of these topics.

GRAPHICS

And the graphics discussion is very simple.  If you are an artist, you likely use a vector-based graphics program such as Coreldraw.  These programs are useful for generating the raw graphics you will use on the web.  Web design doesn't require artistic talent however.  There are huge numbers of free graphic elements available on the internet.  Search Google for "free web graphics". 

As a web designer you will need a bit-mapped graphics program.  Paintbrush is a simple and inadequate example.  I prefer Photoshop; the GIMP (a GNU freeware application) has much of the same functionality of Photoshop.  Both programs allow a great deal of freedom in manipulating images and creating cool effects.  Both programs have functionality to optimize an image for the web, or compressing it as small as possible without losing quality.  Both programs allow you to design your graphics in layers and then flatten the layers out.  For example one layer might have a background of a woods and another layer the image of a person.  You can move the person around on that layer without disrupting the background.  You can apply filters for chiseled edges, pointillist artistic effect, etc.

I prefer Photoshop, even thought it is an expensive application, for these reasons.  First, it handles text much better than GIMP.  It is very difficult for me to get the text effects I am seeking in GIMP.  Second, Photoshop has a slice feature that allows you to cut a picture up before you save it in its final format (Photoshop's native format is .psd, and GIMP's is .pcx - both are layered graphic files and usually quite large).  After slicing in Photoshop you can optimize the file compression and format for each of the slices.

When saving in the .gif format, you can choose the number of colors (2-256).  The more colors, the larger the file.  Gif results in the smallest file sizes for images with fairly solid colors such as a blue sky or a logo.  Jpeg formats are best in smallest size and quality for photographic-types of images with many colors. 

So photoshop's slice feature allows you to customize a large image into the fastest-loading image possible, and it spits out the html table code to reassemble the image seamlessly.  It is a great time-saver.  There are many useful capabilities of the different image formats you should investigate, including interlacing (where the whole picture is initially blurry and sharpens as more data is loaded) and animated .gifs (where several files are layered on top of each other, compressed into one file, and give the effect of flipping through index cards).

CONTENT

So now you have a web domain and server with a login, an FTP client to upload files, a web page editor such as Frontpage, Hot Metal Pro, or the free open-source application Nvu, and a graphic-manipulation program such as GIMP or Photoshop.

This is a good point to take a break from the practical considerations of software and skills to build a website and work on developing the site itself.

My first suggestion is that you write a mission statement and a business plan for your website.  Both are for your personal use and can be very brief.  They are merely to clarify what you want to achieve and who your target audience is.

And then begin developing the content, before designing the website.  The fanciest site in the world won't draw visitors if it lacks useful and interesting content for the site's intended constituency.

I suggest using the format I have used (i.e. a word document) and completely laying out all of the content for your website.  Content includes text, links, and graphic images which support your goals for your website.  Do it all in Microsoft word or a similar text editor to avoid the temptation of twiddling with your site design.

Remember:  Content is what counts.

DESIGN CONCEPTS

So now with content in hand and tools to build your site, you are ready to put it all together.  The site map for your domain should be clear to you.  You don't have to get it perfect on the first shot, and if you struggle hard on getting something to work, put it down and write us.  We will try and match you with help. 

My suggestion is that you surf for the free web template packages available on the net and put your first site together by customizing one of these that comes close to your vision.  You will become very familiar with web design by doing so and be in a good position to design your own site from scratch later on. 

Something to consider in your design is whether it will be an "Ice" design or a "Liquid" design.  "Ice" designs are typified by tables of specified width (because of setting attributes or images loaded in them) that cause scroll bars to appear when the web browser window is pulled smaller than some set width.  Liquid designs usually set the table width attributes as a percentage of the window rather than a fixed width in pixels, and scale with the browser when it is resized.  There are advantages and downfalls to each, and it is worthwhile researching the design philosophies behind both.

MULTIMEDIA AND EXTENSIONS

Video and audio can be provided on a website either via a hyperlink to the multimedia file (and depending on the client's computer to have appropriate software to play the multimedia, such as RealPlayer, Apple Quicktime, or Windows Media Player), or by embedding a player in the web page via code.  I suggest relying on the client to play multimedia files unless you are familiar with coding or have access to someone who can help. 

Background music for your website can be provided in a very low-bandwidth manner by having your html pull a midi file from your server.  MIDI is a language describing different instrument and notes rather than encoding the whole sound spectrum such as a .wav or .rm file does.  It is usually interpreted by a midi driver on your client's computer and played on their soundcard.  It has significant limitations, particularly in terms of voice.  You should provide a means for the client to turn it off (a toggle switch on your web page) as they may be listening to other music or prefer silence and find the feature irritating.

There are many add-ins you can incorporate into your website.  Macromedia Flash allows creation of sophisticated animations with audio effects.  It can also be used to develop slide-show types of presentations.  There are a number of such plug-ins and the software associated with generating the particular type of media.

There are many special effects that various browser companies have developed as "extensions" to the standard html tags for their own browsers.  Some are good enough that many browser companies have implemented them.  Microsoft's IE has the most impressive range of such effects.  This is why many sites are labeled "Best if viewed in IE 4.0 or better".  Such effects include having the title text scroll across the top of the browser.  If the page is looked at in a browser that doesn't support the tag extension (such as Firefox), the title is static and appears normally.  Web sites built with the extended tags and various plug-ins are sometimes referred to as "DHTML", or dynamic html.

WEB SERVER ISSUES

We have discussed using javascripting for client-side functionality, such as different images appearing when the mouse rolls over them.  There is a great deal of additional functionality available depending on your web host.

Web servers are generally UNIX servers (often built on the Apache web server) or Microsoft servers (built on Internet Information Server, or IIS).  Both have advantages and disadvantages.  It is probably cheaper and you will likely have better support in the community if you choose a UNIX server. 

If you are using Frontpage, that application has a wonderful means to simplify managing your website.  Although at the outset it may be hard to imagine that management being a big headache, as your site and the number of links grows it becomes difficult to keep track of everything.  If you are hand-coding your html, there are many situations that require changing links in a large number of pages and the by-hand method is laborious.  Frontpage will allow you to delete a page from your site, for example, and it will automagically (with prompting) remove the links from all affected pages.

In Frontpage instead of using FTP, you can also use that application's "Publish" feature.  It will republish your whole website and maintains records to know which files have changed and need pushed to the server.  Microsoft IIS web servers support Frontpage natively; most web hosts have installed "Frontpage Extensions" on their Apache UNIX web servers to allow the same functionality.  It eases management of a website a great deal.  There are third-party website management applications available as well.

Just as you can execute script on the client's web browser, or client-side, you can execute script on your web server if your host package includes it.  The disadvantage of client-side scripting is that you have no way of knowing whether they have scripting turned on or off to get the effect you are seeking.  You can add text and html tags between a <noscript> </noscript> tag to specify what happens if your script doesn't run, but your functionality is limited.

There are fundamental differences between server-side scripting for UNIX servers and Microsoft/IIS servers.  If your web host has enabled server-side includes (SSI, or server scripting) for your account, there are a large number of free applications available on the internet with detailed instructions for deploying them.  Such scripts are executed on the server and return their results to the client web browser in standard html, transmitted via the http protocol.  Server-side scripts can execute either from a request from the client web browser (such as in response to a button being pushed) or automatically when a page is requested from the server.

An example of a server-side script executed in response to a request from the client web browser involves an image map.  This is, for example, a map of the country which is intended to pull up a different web page depending on what region is clicked on with the mouse.  This functionality can be built into the html code via client-side scripting, but if the client web browser has javascript turned off (as many do), it is useless.  A solution is to transmit the pixel coordinate of the image that the cursor clicked on back to the server, and let the server determine what State was intended and return that information to the client web browser so that it can load the appropriate page.  There are easy-to-use and free code snippets to do this.

On Microsoft IIS servers, server-side scripting is usually VBscript (although it can be java or C++), and on Apache servers it is typically javascript, C, or Perl. 

Other common SSI applications include odometer-style page-hit counters, guest books, feedback forms, etc.

Sometimes it is desirable to push an html file to a client web browser that is customized based on unique characteristics of that client.  Web pages in general lack what is called "persistency".  If someone is on your home page, and clicks on a link to another page in your web site, the requested page has no information about that client other than their IP address and the page they came from.  This has a number of implications for the client's experience on your website and the value of the logs generated for your domain.

Persistency is sometimes desired, for example, if your site has a "shopping cart" system where people buy things on various pages.  This is a poor example but conveys the idea.  One way to do this is described below under server side scripting.  Another is through the use of cookies.  Cookies are small text strings stored on a client web browser and can only be accessed by the domain that set them.  They can either time-out and be deleted by the browser quickly (after they leave your site) or stored indefinitely.  They can be used in the shopping cart example by maintaining a file on the server of what's in the cart, indexed to the text value stored in the cookie.  Many people are paranoid of them and have them turned off severely limiting their usefulness.

On the topic of logs, your server will generate a log which you may or may not have access to (depending on the nature of your web hosting account).  Typically "free" hosts will only give you the total disk space you are using and the total bandwidth your site has consumed in a given period of time.  Premium or unrestricted accounts will give you control of your own logs.  Such accounts may include sophisticated web-based analysis tools for your logs which are important.  There are also third party tools that you can download your logs to your computer and run the analysis on. 

While most people in our community will approach your site via proxies, some will not, and it is fair on your part to establish an account which will allow you to periodically erase the logs from your site (and thus the ip addresses of visitors).  If your site is even moderately successful you will have more data than you can make sense of in the raw form.  In my case, I twice peaked at 100,000 unique ip address hits (which is not the same as total hits - total hits could be one person bouncing your site for days on end).  Those followed my domain addressed being announced on Rick Robert's KFMB program and then an Indianapolis evening news segment which clearly showed my domain address. 

Web site statistics software will rank the most popular referrers for you so you can see where your traffic is coming from, and provide data on how people interact with your site so that you can see what's popular and what's not.  You can also estimate your audience by looking at time breakdowns and making some assumptions (middle-of-the-night hits are typically European).  You should publish on your site your policy for purging your logs and if you are not well known in the community consider enlisting someone to verify that you are doing as you say.

In addition to allowing a client web browser to call server-side scripting, both the Apache and the IIS platforms allow a method to execute script upon receiving the client web browser's request for a page, and have that script generate the html returned.  HTTP files generated in this manner typically have extensions of .php (for UNIX servers) or .asp (for IIS servers). 

When the .php or .asp file is requested from the server by a client web browser, the server parses the script code in the beginning of the html file and executes it on the server.  The html file itself may have nothing but structural headers (i.e. <html>, <body>) and the .php or .asp script.  This is a very powerful technology.  It allows maintaining persistency for a user between web pages on your site as you can append a variable (or "session id") to the end of the url returned to the browser.  For example, a dynamically-generated (not to be confused with DHTML mentioned earlier) web page might return with the url "www.pedfoundation.org/index.php?AX1B3.

Thus the next http GET request from that client web browser will pass that variable back to the web server.  This is the method used by software that password restricts access to portions of a website or powers most online shopping carts.  It avoids the problems of cookies such as the client having them turned off.

The .asp and .php technologies are used by bulletin board systems, chat servers, content delivered from database queries, etc.

You can receive and / or transmit RSS newsfeeds from your website.  MSNBC provides a free feed (as do many others) if you credit them.  It can be used to fill a table cell with the day's news headlines or many other items.  Transmitting RSS newsfeeds is more involved and worth investigating within our community.  There is an opportunity to feed into major newsfeeds and have them carry our content.

STYLE SHEETS AND OTHER TECHNOLOGIES

Cascading style sheets are useful for managing the "look and feel" of a website.  They are separate html documents with specific formatting instructions linked to variable names.  Then, throughout the website, the designer can use the variable name as an attribute rather than spelling out the specific attributes each time you use the tag, such as the color and size attributes of the font tag.  In this fashion simply changing the color in the style sheet changes it throughout your website.  It is worth researching elsewhere on this topic.

XML, or eXtensible Markup Language, is an acronym you may encounter.  It is a standard developed in response to the fact that while HTML indicates how the content should be rendered, it says nothing about the content itself.  This poses a problem for search engines and functions in determining what is relevant on a web page.  XML tags are user-defined and appear similar to HTML tags.  Some typical applications are html documents which pull and XML data feed and format it according to the document's tags.  The document is then highly searchable.  It is probably not a relevant technology to your personal website. 

SEARCH ENGINE OPTIMIZATION

It is important to understand how search engines rank your website and to optimize your website to appear high in search results for the relevant keywords you are designing around.  You should freely link to others who maintain pro-MAA websites in accordance with common FAQs (and are thus legal).  Links should have a describe text name rather than just the site name for the search index's benefit.  You should request as many people to link to you as possible as well.  Also, never provide a direct link to our enemies websites.  You only serve to boost their ranking by doing that.

Please contact the pedfoundation for any assistance you require in building a personal website.  We hope to see thousands of new sites all cross-linked within the next couple of years.  I encourage you to do your part in building our community.

Please keep in mind that this tutorial is written for the novice at web design who wishes to create their own website, and is written by an amateur himself.  Rewrites are certainly welcome.

SOURCE: Archive.org archived copy of https://web.archive.org/web/20051029004327/http://www.pedfoundation.org/workspaces.html This page was last modified 18 July 2005.  All text is available under the terms of the GNU Free Documentation License See Copyrights for details.  Your use of this site constitutes agreement to our

BOYWIKI EDITOR'S NOTE: Not all the links in the original article are good. Some pages from this site were not archived.