Saturday, January 15, 2011

about chips

Let's start with the fundamentals -What is a memory chip?A memory chip is an electronic part which is used by a computer, any type of computer, to store a program or data. The difference between a program and data is that a program is a sequence of instructions which tell the computer what to do. Data is information which the computer references as it runs it's program. In the memory chip the program and data information appear to be identical as they are both stored as a series of 1's and 0's.
There are two basic types of memory chips. These are volatile and non-volatile. A volatile memory part will lose its contents (it forgets) when power is removed. A non-volatile memory chip will not lose its contents when power is removed. An EPROM is a non-volatile memory chip.

What is an EPROM?
(pronounced "E"-"PROM" where the "E" is long like "EASY")The term EPROM stands for "E"rasable "P"rogrammable "R"ead "O"nly "M"emory.Let's examine each term. Erasable means that the chip can be erased and reused. An EPROM is erased in a device called an EPROM eraser. The eraser is a high intensity ultraviolet light source in a box. We will talk more about erasing eproms later. Programmable means that the EPROM can be programmed with a program, data or both. Read Only Memory means that the computer which is connected to the EPROM can only get information from the chip. It cannot put information into the chip; thus the term read only. In short, the EPROM is a memory part which will not forget its program or data when power is removed. It must be programmed by a special programming product called an EPROM or DEVICE programmer. Once the EPROM is programmed it cannot be changed until it is erased in an EPROM eraser and then reprogrammed in a programmer. The computer cannot store data in an EPROM because the EPROM is a READ ONLY memory part.

How is the EPROM organized inside?
The EPROM, like any memory chip, is designed to store individual bits of information. The bit is the smallest element used in a computer and can have the value of 0 or 1. This is called binary because the bit can have two states, either 0 or 1. Groups of bits are called by different terms. Sixteen (16) bits together is called a WORD. Eight (8) bits together is called a BYTE. Four (4) bits together is called a NIBBLE. Obviously a single bit can only represent two states, therefore it will take multiple bits used together to represent items such as letters and numbers. The most common grouping of bits is the byte. Since there are 8 bits and each can be a 1 or 0, there are 256 possible combinations of 1's and 0's which can be arranged from the 8 bit grouping.
The typical EPROM is organized as a sequence of bytes (8 bit groups). Each byte resides at a specific location in the EPROM called an ADDRESS. The first address in the EPROM is address 0. The last address in the EPROM is determined by the EPROM storage capacity. The EPROM in the photo is a 27C010. It has a storage capacity of 128K (1FFFF hex) bytes. When a computer (microprocessor) accesses the EPROM, it provides an ADDRESS to the chip and then reads the BYTE from that address. If the BYTE is an instruction, the computer decodes the 1's and 0's in the byte and performs the operation the instruction specifies. This is how the EPROM stores a program. The computer sequentially addresses each byte in the EPROM to get the instructions which allow the computer to do its job. The illustration above shows eight addresses and corresponding data. The data values are shown in BINARY (left) and HEX (right). HEX is a more compact form of presenting binary numbers. HEX numbers are described later in this page.
EPROM ORGANIZATION
ADDRESS 0 01001000 (48)
ADDRESS 1 00000010 (02)
ADDRESS 2 11000110 (C6)
ADDRESS 3 11100000 (E0)
ADDRESS 4 11110001 (F1)
ADDRESS 5 00011111 (1F)
ADDRESS 6 10011001 (99)
ADDRESS 7 00000000 (00)

What does the part number mean?
The EPROM part number normally indicates the total number of bits of storage in thousands. For example, a 27256 EPROM has 256,000 bits of storage. If you divide 256,000 by 8 (number of bits in a byte) you get 32,000 or 32K (K is an abbreviation for kilo or thousand). Please note that not all EPROM part numbers represent the number of bits. For example the 27C040 stores 4 million bits or 512K bytes of data.
What is EPROM speed?The speed specification for an EPROM is actually a specification for access time. The access time is the time it takes the EPROM to deliver the data from the requested address to the computer. The access time is specified in nanoseconds (billionths of a second). The access time is usually found following the part number. Example: M5M27C64A-25 is a 27C64 EPROM with a 250 nanosecond access time. The access time is normally found after the dash (-) which seperates the part number from the access time. When you replace an EPROM or any memory device, you may substitute a part of equal or faster speed but not one of slower speed. Example: You can replace a 27C64A-25 with a 27C64A-20 but not with a 27C64A-30. The data can be available from the EPROM before it is needed however if the computer attempts to take the data before it is there, the product the computer is in will not work.
Figuring out the part number on your chip
EPROMs and most other memory parts conform to a standard pin configuration and operate in an identical manner. This allows parts from any manufacturer to be used interchangably. The key is to figure out the part number on your device. Usually the part number is printed directly on the top of the part. What you are looking for is the core part number. This is the industry standard number for the part. The typical EPROM is a 27 series device. EPROMS compose about 80% of the programmable memory device market. Regardless of who manufactured the part, the part number should have 27XXX or 27CXXXX printed somewhere on the device. This number may have a prefix or suffix associated with it. An example would be the HITACHI 2716 EPROM. The part number on the chip is HN42716G. Note where the 2716 appears (HN42716G). An identical part made by National Semiconductor is numbered as NMC27C16Q-35 where a part manufactured by Intel is D2716-1. Don't get confused by a date code. A date code is printed on the chip to indicate when it was manufactured. A date code is the year of manufacture followed by the week. An example would be 8925. This indicates that the part was manufactured in the 25th week of 1989. Although a date code is not easily confused for a 27XXX chip, it can be for other types of memory parts which are not 27XXX devices.

Erasing an EPROM and the windowThe information (bits) stored in the EPROM are stored as an electrical charge on a transistor in the EPROM. There is one transistor for each bit of storage. The programming process forces the charge on the transistor where it remains trapped until the part is erased. A charged (programmed transistor) holds the bit value of 0 where an erased (unprogrammed transistor) holds the bit value of 1. Once a transistor in the EPROM is programmed, the only way to remove the trapped charge is to expose the entire chip to high intensity ultraviolet light using an EPROM ERASER. If you look at a standard EPROM you will see that it has a clear window in the center of the part. The purpose of this window is to allow the ultraviolet light to reach the transistors which compose the EPROM memory array and dissipate the electrons trapped on the transistors.
Usually an EPROM, once it has been programmed, will have a cover or sticker placed over the window. You cannot erase an EPROM or change its contents by removing this cover and exposing it to normal room light. Even in direct sunlight it would take two weeks of constant exposure to alter the chip. You cannot erase an EPROM with a black light or tanning bed, it is best to use an eraser manufactured to erase EPROMs and other programmable devices.
EPROMs in plastic packagesA very expensive part of the EPROM is the ceramic package with the quartz window. All manufacturers provide their EPROM products in plastic packages without windows. These are called OPT (One Time Programmable) devices simply because there is no window to erase the part. There is nothing to prevent an OTP device from being read and the contents placed into another EPROM. OTP devices are standard EPROMs which can only be programmed and used once. The part number is usually something such as P27CXXX where the "P" indicates a plastic case.

What is the difference between a 27 and a 27C part?The 27XXX EPROMs use the first memory cell technology. The technology process is called NMOS. NMOS stands for "N-channel" "Metal" "Oxide" "Semiconductor". The next generation technology is called CMOS, thus the letter "C" in the part number. CMOS stands for "Complimentary" "Metal" "Oxide" "Semiconductor". CMOS parts use much less power than NMOS parts, however all other aspects of the devices are identical. You can substitute a CMOS for an NMOS part with no problems, however since an NMOS part consumes more power, it is not advisable to put an NMOS part in place of a CMOS. This is especially true in battery powered equipment.
Different package types
There are several package types into which memory parts or microcontrollers are found. The traditional package, which has been shown throughout this page, is called a DIP. DIP stands for "Dual" "Inline" "Package". It is so called because it has two rows of pins which insert into a socket or holes in the circuit board. The primary advantage of this package is that it is easily removed and installed by humans. In reality, the actual memory chip is much smaller than the package into which it is placed. DIP packages can be of any size between 8 and 42 pins. Typical EPROMs are normally found in 24, 28 or 32 pin packages depending on device storage capacity. There are 16 bit EPROMs which are found in 40 pin packages. The 40 pin package is used because the data is read 16 bits at a time and thus requires more physical pins to connect to the processor.
In order to conserve space there are several package styles which have become common. One is the PLCC. PLCC stands for "Plastic" "Leaded" "Chip" "Carrier". A PLCC package is physically smaller than a DIP and has leads on all four sides. The most common size for EPROMs is 32 pins, although smaller and larger PLCC packages are not uncommon. PLCC packages have the primary advantage of size. With electronic products becoming increasingly small, designers use PLCC parts for surface-mount or space limited designs. There are sockets available for PLCC parts, however they require a special tool to remove the device. If the PLCC part is soldered directly to the board, the part must be desoldered before it can be read. A special adapter is required to use a PLCC part with a device programmer. The adapter performs the conversion from the PLCC package to a traditional DIP base.
A second space conserving package style is the SOIC or PSOP. SOIC stands for "Small" "Outline" "Integrated" "Circuit". PSOP stands for "Plastic" "Small" "Outline" "Package". SOIC/PSOP devices have leads on only two sides and as such are similar to a DIP although much smaller. SOIC/PSOP packages may also be installed in a socket, although they are usually soldered directly to the circuit board. The device shown in the photo is a 29F100T flash memory part. A special clam-shell style adapter is required to support SOIC/PSOP devices which insures proper lead alignment and connection.
One of the smallest package styles available is the TSOP. TSOP stands for "Thin" "Small" "Outline" "Package". These devices are always soldered to the board and are also found in FLASH MEMORY CARDS and other space critical applications. A special adapter is required to support these devices. The adapter socket has tiny retractable contacts which mate with each fine-pitch device lead.

OTHER TYPES OF PROGRAMMABLE MEMORY DEVICES
FLASH EPROMSFlash EPROMs are the most recent type of EPROM memory part. These parts are always in plastic cases because the erasing of the part is done electrically without the need to expose the internal chip to ultraviolet light. The erase function is performed by the EPROM programmer and requires less time than a UV EPROM to be erased in an eraser. They erase in a "FLASH", and thus the name. Flash memory parts cannot be substituted for a standard UV erasable part because the minimum number of pins on a typical flash part is 32. The smallest flash device is a 28F256 which is equal in storage capacity to a 27256 UV EPROM. Note the part number 28FXXX is a FLASH device designated by the "F" in the part number.
EEPROMSEEPROMs are memory parts which use the same technology as an EPROM, however each bit of storage has extra transistors to allow the bit to be individually erased. The term EEPROM means "Electrically" "Erasable" "Programmable" "Read Only Memory". Unlike Flash devices, these memory parts can have individual bytes changed without the need to erase the entire part. The way this works is that the memory chip itself performs an erase on a single byte before programming the byte with the new data. The erase and program of a single byte can take as long as 10 milliseconds. This delay prevents an EEPROM from replacing a normal RAM part. An example of a EEPROM is a 28C64. Note that the number 28 is used both for EEPROMs and FLASH devices. The "C" in the 28C64 part number means it is made with CMOS technology. EEPROMs are more costly than EPROMs because they have more transistors. EEPROMs are normally used for data storage in a product since they can be "written to" by the computer.
SERIAL EEPROMSA serial EEPROM is created with the same technology used in larger parallel EEPROMs. The difference is that a serial EEPROM typically has only 8 pins on the package. This is because the address and data are sent to and from the chip one bit at a time using two or three wires. In order for the computer to read and write the serial EEPROM it must actually send commands, data and address information via a predefined communication protocol. This takes more time and is more complex than dealing with a larger EEPROM, however the cost and size savings make these parts very popular where the amount of information which must be stored is small. Popular serial EEPROM part numbers include the 93C46 and 24C04 although there are many others.
Serial EEPROMs are also found in surface mount packages called SOIC. SOIC stands for "Small" "Outline" "Integrated" "Circuit". These packages are very small and are always soldered directly to a circuit board. Under many circumstances it is possible to connect to these parts "in-circuit" and successfully read and program information.
NVRAMSAn NVRAM is a standard RAM (RAM stands for Random Access Memory) which is used for general operation in computers. The NV stands for non-volatile. The RAM would normally lose its contents when power is removed, however the NVRAM is manufactured with a built in battery which keeps power applied to the memory after power has been removed from the product. The primary advantage of an NVRAM is speed. Since the part operates as a normal high-speed memory part while power is applied, there is no delay when data is written into the device. There are also memory parts which are called NVRAMs however they do not have an internal battery. They maintain there contents by transferring the data from the RAM memory array into a duplicate EEPROM memory array. When power is removed, the EEPROM memory retains the data. When power is restored, the RAM memory is refreshed to its original state from the EEPROM array. Example parts of the battery based NVRAM is the Dallas Semiconductor DS1220(photo) or DS1225. An example of the EEPROM based NVRAM is the X22C10 and X22C12 from Xicor.
BIPOLAR PROMSA BIPOLAR PROM is a memory chip which typically contains a small amount of data, however the access time is very fast. These memory chips store the bits of data by blowing small fuses inside the memory device. Once they are programmed they cannot be changed. The term BIPOLAR reflects the transistor technology used in the manufacturing process. PROM means "Programmable" "Read Only Memory". Programming a BIPOLAR PROM requires a high voltage, high current pulse to blow the fuse. These parts are found in many products and were a favorite in the United States Space Program because the data, once programmed, is immune to changes caused by radiation.
MICROCONTROLLERSA microcontroller is a complete computer on a chip. This includes the central processing unit (CPU), the memory (EPROM or FLASH EPROM) and the I/O (input/output). Microcontrollers are usually found in products which perform a single function such as microwave ovens, computer printers, automatic sprinkler controllers, etc. A microcontroller, although much more complex than a standard memory part, still has internal EPROM/FLASH EPROM as its program memory. A microcontroller normally has 40 or more pins since the input and output operations occur directly from the chip. Some microcontrollers, like the PIC family from Microchip and others, have fewer I/O pins and are therefore fabricated in smaller packages. Since the microcontroller has internal memory, it is this memory area that you may read and program using a device programmer. In the past, most microcontrollers used internal EPROM for their program code and data, however now all new parts incorporate FLASH memory.
Microcontrollers with FLASH memory are excellent if you are interested in development since it takes much less time to erase and reprogram a flash based part than one with UV EPROM. Some examples of 40 pin FLASH microcontrollers are the ATMEL 89C51, 89S51 and 89C52. Examples of 18 and 20 pin FLASH microcontrollers are the Microchip PIC16F84 and ATMEL 89C4051.


WHAT IS HEX?
HEX is short for hexidecimal. Hexidecimal is base 16. Where humans are used to the decimal system (base 10) with numbers 0 through 9, hex has the digits 0,1,2,3,4,5,6,7,8,9,A,B,C D,E, and F. Although this may appear confusing, the reason HEX was chosen is that it provides a simple way to represent 4 binary bits as a single digit. EXAMPLE: Binary 0000 = HEX 0 or binary 0101 = HEX 5 or binary 1100 = HEX C. The table below shows binary numbers and their hexadecimal equivalents.
BINARY HEX
0000 0
0001 1
0010 2
0011 3
0100 4
0101 5
0110 6
0111 7
1000 8
1001 9
1010 A
1011 B
1100 C
1101 D
1110 E
1111 F
From the above table you can see that if you wish to represent the binary number 1110010100110010 you can write it as E532 hex. This is why hex has become the defacto standard to represent and display binary data; it allows humans to represent large groups of binary data in a compact form.

Friday, January 14, 2011

VIRUSES

Virus is a small computer program that is designed to give someone control over your computer. Viruses usually attach itself to other programs. For example if the program is infected with the virus and you run it. It most likely will reproduce itself to other programs or make your system unstable.
Viruses can be distributed by emails as attachment. Once you click on the email it will infect your computer and send itself out to all your contacts in email address book.
A worm is a special software that scans computer networks for specific security holes. Once if finds them it infects computer and replicates itself.
Trojan horses are computer programs that pretend to be something else. For example you click on mp3 song but instead of listening to the song your computer crashes.
Spyware is similar to malware it a small software designed to collect user data without him / her knowing it.
Malware short for malicious software. Malware is a any type of software that is designed to work against you. Such as viruses, worms, spyware, trojan horse. A lot of times malware will give you pop up window telling you your computer in infected and to go to certain website and make a payment for bogus antivirus software.
If you experience any of the above it is a good idea to update your antivirus software or if you don't have one seek help online. There are a lot of very reputable remote computer places than can repair your computer remotely without any down time.

Thursday, January 13, 2011

GET TO KNOW YOUR SOFTWARE TERMS.

1:algorithmAn algorithm is a set of instructions, sometimes called a procedure or a function, that is used to perform a certain task. This can be a simple process, such as adding two numbers together, or a complex function, such as adding effects to an image. For example, in order to sharpen a digital photo, the algorithm would need to process each pixel in the image and determine which ones to change and how much to change them in order to make the image look sharper.
Most computer programmers spend a large percentage of their time creating algorithms. (The rest of their time is spent debugging the algorithms that don't work properly.) The goal is to create efficient algorithms that do not waste more computer resources (such as RAM and CPU time) than necessary. This can be difficult, because an algorithm that performs well on one set of data may perform poorly on other data.
As you might guess, poorly written algorithms can cause programs to run slowly and even crash. Therefore, software updates are often introduced, touting "improved stability and performance." While this sounds impressive, it also means that the algorithms in the previous versions of the software were not written as well as the could have been.
2:APIStands for "Application Program Interface," though it is sometimes referred to as an "Application Programming Interface." An API is a set of commands, functions, and protocols which programmers can use when building software for a specific operating system. The API allows programmers to use predefined functions to interact with the operating system, instead of writing them from scratch.
All computer operating systems, such as Windows, Unix, and the Mac OS, provide an application program interface for programmers. APIs are also used by video game consoles and other hardware devices that can run software programs. While the API makes the programmer's job easier, it also benefits the end user, since it ensures all programs using the same API will have a similar user interface.
3:COMPILERA compiler is a software program that compiles program source code files into an executable program. It is included as part of the integrated development environment IDE with most programming software packages.The compiler takes source code files that are written in a high-level language, such as C, BASIC, or Java, and compiles the code into a low-level language, such as machine code or assembly code. This code is created for a specific processor type, such as and Intel Pentium or PowerPC. The program can then be recognized by the processor and run from the operating system. After a compiler compiles source code files into a program, the program cannot be modified. Therefore, any changes must be made in the source code and the program must be recompiled. Fortunately, most modern compilers can detect what changes were made and only need to recompile the modified files, which saves programmers a lot of time. This can help reduce programmers' 100 hour work weeks before project deadlines to around 90 or so.

Sunday, January 9, 2011

you probably would want to get your knowledge on some terms and definations on technology sturff and what a like so lets start with few internet terms.
1:404 errorA 404 error is a common website error message that indicates a webpage cannot be found. It may be produced when a user clicks an outdated (or "broken") link or when a URL is typed incorrectly in a Web browser's address field. Some websites display custom 404 error pages, which may look similar to other pages on the site. Other websites simply display the Web server's default error message text, which typically begins with "Not Found." Regardless of the appearance, a 404 error means the server is up and running, but the webpage or path to the webpage is not valid.
So why call it a "404 error" instead of simply a "Missing Webpage Error?" The reason is that 404 is an error code produced by the Web server when it cannot find a webpage. This error code is recognized by search engines, which helps prevent search engine crawlers from indexing bad URLs. 404 errors can also be read by Web scripts and website monitoring tools, which can help webmasters locate and fix broken links.
Whether you like it or not, much of the Web is run by advertising. Just like television or radio, websites can offer free content by generating revenue from advertising. While you may get tired of Web ads from time to time, most people would agree that seeing a few advertisements here and there is better than paying a usage fee for each website
2:banner adPerhaps the most prolific form of Web advertising is the banner ad. It is a long, rectangular image that can be placed just about anywhere on a Web page. Most banner ads are 468 pixels wide by 60 pixels high (468x60). They may contain text, images, or sometimes those annoying animations that make it hard to focus on the page's content. Regardless of the type of banner ad, when a user clicks the advertisement, he or she is redirected to the advertiser's website.
3:cookieIt seems like everyone who tries to explain what a cookie is just has to make a joke out of it (because of the name), so I'm not even going to bother. In computer terminology, a cookie is data sent to your computer by a Web server that records your actions on a certain Web site. It's a lot like a preference file for a typical computer program. When you visit the site after being sent the cookie, the site will load certain pages according to the information stored in the cookie
For example, some sites can remember information like your user name and password, so you don't have to re-enter it each time you visit the site. Cookies are what allow you to have personalized web sites like "My Excite" or "My Yahoo," where you can customize what is displayed on the page. While cookies have many benefits, some people don't like to have their information recorded by Web sites that they visit. For this reason, most Web browsers have an option to accept or deny cookies. Personally, I like cookies -- I think they taste great too.
4:firewallThe term "firewall" originally referred to fireproof walls that were designed to prevent the spread of fire from one room or building to the next. They were typically made of brick, steel, or another type of inflammable material that would effectively limit the spread of the fire. In the IT world, firewalls do not involve any fire or pyrotechnics, but they serve a similar purpose. A computer firewall limits the data that can pass through it and protects a networked server or client machine from damage by unauthorized users
Firewalls can be either hardware or software-based. A router is a good example of a hardware device that has a built-in firewall. Most routers can be configured to limit traffic from certain IP addresses or block requests based on other criteria. Software programs that monitor and restrict external access to a computer or network can also serve as firewalls. A network firewall only allows authorized traffic from the Internet to flow in and out of the network.
5:sitemapsA site map, sometimes written "sitemap," is an overview of the pages within a website. Site maps of smaller sites may include every page of the website, while site maps of larger sites often only include pages for major categories and subcategories of the website. While site maps can be organized in a variety of ways, most use an outline form, with pages arranged by topic. This gives visitors a good overall picture of how the site is organized and clearly defines all the resources the website has to offer
6:DNSStands for "Domain Name System." The primary purpose of DNS is to keep Web surfers sane. Without DNS, we would have to remember the IP address of every site we wanted to visit, instead of just the domain name. Can you imagine having to remember "17.254.3.183" instead of just "apple.com"? While I have some Computer Science friends who might prefer this, most people have an easier time remembering simple names.
7:broadbandThis refers to high-speed data transmission in which a single cable can carry a large amount of data at once. The most common types of Internet broadband connections are cable modems (which use the same connection as cable TV) and DSL modems (which use your existing phone line). Because of its multiple channel capacity, broadband has started to replace baseband, the single-channel technology originally used in most computer networks. So now when you see companies like AT&T and SBC pushing those fancy "broadband" ads in your face, you'll at least know what they are talking about.
8:BitTorrentBitTorrent is a peer-to-peer (P2P) file sharing protocol designed to reduce the bandwidth required to transfer files. It does this by distributing file transfers across multiple systems, thereby lessening the average bandwidth used by each computer. For example, if a user begins downloading a movie file, the BitTorrent system will locate multiple computers with the same file and begin downloading the file from several computers at once. Since most ISPs offer much faster download speeds than upload speeds, downloading from multiple computers can significantly increase the file transfer rate.In order to use the BitTorrent protocol, you need a BitTorrent client, which is a software program that accesses the BitTorrent network. The client program allows you to search for files and begin downloading torrents, which are in-progress downloads. Most BitTorrent clients allow you to resume torrents that have been paused or stopped. This can be especially helpful when downloading large files.

Saturday, January 8, 2011

how to sync your phone to your computer

Your first question might actually be, why would I want to connect my bluetooth phone to my computer? It is a great way to transfer photos, mp3's and other files from your mobile phone to your computer without the purchase of cables that only work with one phone or expensive software for a specific phone.
How do I connect my bluetooth phone with my computer? First you need to turn your phones visibility on. Most phones you do this by going into the menu, settings and they should be an option for "connections." Bluetooth will or should be under your connects, like I said this is for most phones. You need to first make sure your bluetooth is turned on. Next you need to turn on your bluetooth's visability.
As far as your computer goes. You either need a laptop/tower with bluetooth build in or a bluetooth USB adapter. You can generally get a bluetooth USB adapter for less than $30, and these are very useful and can be used with multiple phones, which is great about bluetooth.
After you have your bluetooth USB installed on your computer, then you need to sync them together. The easiest way that I have found to do this is to do it from the phone. Under your bluetooth settings under your phone, they should be an option to search for new devices or to pair it. Once your perform the search it should find your computer. Select to pair it with your computer. It will ask you for the passcode on the phone it should be "0000" that is four zeros. You should get a pop up from the system tray on a windows machine asking if you want to pair your bluetooth with this device. You need to tell it yes and it will ass for the passcode, which again is four zeros "0000." You should then be ready to use your bluetooth enabled phone with your computer.
You can find more tech and mobile phone info at Viral Electronics. Including Blackberry's, iPhones and other hot mobile phones.

Friday, January 7, 2011

How do I host my own website at home?

You can host your own website at home, and I'll tell you exactly how! But it might not save you much money, and it definitely won't save you time. So give it serious thought before you proceed... unless your goal is simply to learn about the technology and have fun!
The best reason to host your website at home is to learn how it all works. For more information about the pros and cons, see should I host my own website?
Warning: running a server of any kind at home is a security risk. Security problems are sometimes found in server software, and these can be exploited to gain access to or damage your files. Your computer must be kept absolutely up to date with Windows Update or the equivalent for your operating system if you intend to run a web server on it. If you choose to run Apache instead of Internet Information Server, you'll need to keep your version of Apache absolutely up to date too. This doesn't eliminate the risk -- it only minimizes it. You run a server at home entirely at your own risk. If you do choose to run a server at home, I recommend finding an old PC on the curb and setting it up as your home server, reducing the danger to your own computer.
Procedures for other operating systems are similar, and most of these steps actually involve your router, so this article should still be helpful to non-Windows users.
Here are the steps to follow to set up a website hosted entirely on your own Windows PC. First I'll present the general steps, then I'll break down the details for you:
1. Make sure you have cable modem, DSL or another high-speed connection. A dialup telephone modem is NOT good enough.
2. Get a DNS hostname for your home Internet connection.
3. Get a static local IP address for your computer within your home network.
4. Configure your router to correctly forward connections on port 80 (the HTTP port) to your web server. Even if you think you don't have a router, you probably do— many popular cable and DSL modems include wifi or wired Ethernet jacks for multiple computers, which means they contain a built-in router. If your ISP blocks port 80, choose an alternative port number and forward that (or get a better ISP that welcomes websites at home, like Speakeasy.Net).
5. Configure Windows Firewall to allow your web server to communicate on port 80.
6. Get Apache, a free, high-quality web server program. If you have Windows XP Professional, you also have the option of Microsoft Internet Information Server (IIS), which comes standard with Windows XP Professional. But that option only allows you to host one site. I recommend Apache.
7. Test your web server from your own computer.
8. Replace the default home page with your own web page. Now the site is your own!
9. Test your web server from a computer that is NOT on your home network to make sure you followed all of the steps correctly.

"I followed all the steps and I get my router's login page instead of my home page!"

You are trying to access your website by name from behind your router (from one of your own PCs). With some consumer-grade routers, this does not work because the router automatically assumes any web connection to itself from inside your network is an attempt to log into the router's configuration interface. It's a pain, but this fail-safe mechanism does prevent you from locking yourself out of your router's web interface. So test from outside your own home network or have a friend do that for you. If you can access your home-hosted website from someone else's computer, then you don't have a problem. If you want to access your site from a computer behind your router, you'll have to access it at its static local IP address instead of by name.
And that's it! Now I'll present detailed information about each step.
Step One: Broadband
Get cable modem (from the cable company) or DSL (from the phone company and various other companies). If you can't do that, you'll have to host your website in some other way. Your computer must have a fast connection to grapple with video and audio files anyway. You don't necessarily have to go with your phone company's DSL offering. Check out broadbandreports.com for independent reviews of cable modem and DSL companies. Upload speed, not download speed, is the most important feature for hosting websites at home.

"How fast will my home-based website be?"

The main limitation will be your upload speed (uplink speed). Most DSL or cable modem connections have an upload speed between 128kbps (128,000 bits per second) and 384kbps (384,000 bits per second). So how long does it take to load your home page? Add up the size of your home page (in bytes), the sizes of all of the images on that page, and the size of any Flash movies (.swf files) or CSS style sheets (.css files) referenced by that page. Now multiply by 8 and you'll know how many bits make up your home page. Divide that by your upload speed and you'll have a rough idea how long it takes to load your home page under ideal conditions. There will also be latency delays slowing things down, and multiple users will of course slow things down and make it take longer. There is no fixed limit on the number of users who can access your home-based website at the same time - things just slow down.
For more information, see my article how fast is my website?
Step Two: Dynamic or Static DNS
Other people can't talk to your website if they don't know the address... and if you have a typical cable modem or DSL connection, your address changes often. You can solve this problem by using a dynamic DNS service. Even if your IP address doesn't change, you still need someone to host a DNS server for you, unless you are willing to put up with giving users a URL that begins with a string of numbers. This is a common requirement both for hosting websites at home and for hosting torrents, so I've written a separate article explaining how to get a hostname for your computer at home.
Step Three: A Static Local IP Address
If you have a router... and you do, if you have WiFi (wireless access) or more than one computer... then your computer receives a new local address on your home network, or Intranet, every time it is powered on. But to forward web browser connections to your computer, you need an unchanging address to forward those connections to. This is also a shared requirement both for hosting websites at home and for hosting torrents, so I've written a separate article explaining how to give your computer a static local IP address.
Step Four: Forwarding Port 80
If you don't have a router (and you know by now, if you have been following these steps...) then you can skip this step and move on to the next. If you have WiFi, or more than one computer, you definitely have a router and must not skip this step.
Now that you have chosen a static local IP for your computer, you're ready to configure the router to forward web traffic to your computer.
Again, this step is needed both for web hosting at home and for BitTorrent hosting. So, once again, there is a separate article explaining how to forward ports from the Internet to your computer via your router. Just follow the steps in that article to forward port 80.
Step Five: Allowing Web Traffic Through The Firewall
More firewall issues? Didn't we already do this? Only in part. Yes, your router serves as a firewall, but your computer also has a built-in firewall. You'll need to configure that firewall to allow traffic through on port 80 to reach your web server software. This step is also common to both web hosting and torrent hosting... so check out my article explaining how to allow traffic on specific ports through your computer's firewall.
Step Six: Get Apache Or Internet Information Server

Mac and Linux users: you already have Apache! MacOS X users should read Kevin Hemenway's great article on onlamp.com. Linux users: install the Apache packages and look in /var/www/html or a similar location for your website folder.
Apache is the most popular web server in the world, with nearly 70% of all websites running Apache as of January 2006, according to the netcraft web server survey. Why is it so popular? Because it's free, open-source, high-quality software. And you can run it on your Windows box at home! If you have Windows XP Professional, you can also run Microsoft Internet Information Server. It comes free in the box... but only with XP Professional (and high-end server versions of Windows). If you have XP Home, or an older version of Windows, go with Apache - and consider upgrading to at least XP Home for better network performance.
I'll cover Apache first. Then I'll look at Internet Information Server, which is also excellent and is available if you have Windows XP Professional or a high-end server version of Windows. It will only host one site per computer on XP Professional, though.
Windows 98 and Me users can use Microsoft's "Personal Web Server." However, this software went away with the release of XP Home, and it's not a popular choice. Since you can run Apache for free - the world's most popular web server, for businesses and individuals alike - I don't recommend suffering with PWS.
Apache Quick-Start Guide
Although Apache was born in the Unix/Linux world, it runs great on Windows too. In general, the newer your Windows, the easier it is to install Apache. Those with older versions of Windows, even Windows 95, can still run Apache but will have to jump through a few extra hoops. For complete information, check out the Apache Foundation's Microsoft Windows Apache installation tutorial. Since that article is a little old, you'll just have to bear in mind that instructions for Windows NT or 2000 also apply to Windows XP.
The following quick-start guide applies to Windows XP, but users of older versions of Windows can run Apache too... if they follow the extra steps spelled out in the Apache Foundation's Using Apache with Microsoft Windows tutorial to prepare their older computers to handle modern software installation and networking.
Upgrading to Windows XP Service Pack 2
Microsoft has fixed problems in Windows XP that create issues for Apache. Use Windows Update to upgrade your Windows XP system to service pack 2. You have probably already done this. If not, you need to do it in any case to fix many important security problems that have nothing to do with Apache!
Not sure if you have service pack 2? Do this: click on "Start," right-click on "My Computer," select "Properties" and look at the information presented under "System." You should see "Service Pack 2." If not, visit Microsoft's Windows Update site, using Interet Explorer, not Firefox... just this once! The Windows Update site uses special Active X controls to update your computer. Normally I don't encourage the use of Active X, but for upgrading Microsoft's own operating system from Microsoft's own website using Microsoft's own browser, it's OK!
Downloading Apache
Visit the Apache HTTP Server Project home page. In the column at left, locate "Download!" and click on "from a mirror." The download page will appear. Scroll down until you locate the link to download the "Win32 Binary (MSI Installer)" distribution of Apache, not the "Win32 Source." That's raw source code for programmers - probably not what you want!
Click on the link for the "Win32 Binary (MSI Installer)" and wait for your browser to save the file to disk.
Installing Apache
Once the download is complete, you're ready to install the software. Double-click on the file you just downloaded on your desktop (for Firefox) or in your downloads folder (for Internet Explorer) to launch the installation program. The "Installation Wizard" window will appear.
First you'll see the "Welcome to the Installation Wizard" page. Click "Next" to continue.
Next, you'll see the Apache license agreement. The Apache license allows you to share the software freely, including the source code. Select "I accept the terms in the license agreement" and click "Next."
The "Read This First" page appears. Currently this page doesn't offer much specific information for Windows users of Apache. Click "Next."
The "Server Information" page should now appear. Be sure to enter the correct information:
1. For "Network Domain," if you registered a hostname such as myname.is-a-geek.com with DynDNS, enter is-a-geek.com.
2. For "Server Name," enter your full hostname, such as myname.is-a-geek.com.
3. For "Administrator's Email Address," enter a real email address for you that actually works. Users will see this when things go wrong. Bear in mind that spammers might discover this address, so use an address that is already publicly known if possible.
4. For "Install Apache HTTP Server 2.0 programs and shortcuts for..." select "for All Users, on Port 80, as a Service." This ensures that the software is always running, no matter who is sitting down at your computer. And a website that is not always running is not very useful! So pick this option and click "Next."
The "Setup Type" page appears next. Select "Typical" and click "Next" to move on.
You'll see the "Destination Folder" page. By default, Apache installs in the folder C:\Program Files\Apache Group, creating a sub-folder called C:\Program Files\Apache Group\htdocs to keep your web pages in. These are good choices, so click "Next." Don't click "Change..." unless you know exactly what you're doing.
Finally, the "Ready to Install the Program" page appears. Click "Install" to kick off the installation process. The Apache server software will be copied into place and the Apache service will start up in the background. Along the way, a few Windows Command Prompt windows will flash up briefly. This is normal and you should let these windows do their thing and go away on their own!
If you do receive error messages, the most frequent cause is that Internet Information Server or another web server is already installed and "listening" on port 80, the standard HTTP port. Disable the other web server software and reinstall Apache.
The "Installation Wizard Completed" page should appear. Congratulations, you have a web server! Click on "Finish" to complete the process.
Internet Information Server Quick-Start Guide
You need either Apache or Internet Information Server (IIS). You do not want both.
Microsoft's Internet Information Server is a solid choice, and it is included free with Windows XP Professional. If you don't have XP Professional, or one of the server-oriented versions of Windows like Windows Server 2003, then IIS is not an option for you. Installing Internet Information Server
1. Make sure you have Windows XP Professional! Click "Start," then right-click "My Computer." Choose "Properties" from the menu that appears. The "General" tab will appear. Under "System:" you should see "Microsoft Windows XP Professional." If you see Windows XP Home, Windows ME, Windows 98 or Windows 95, you will not be able to use IIS. Follow the Apache Quick-Start Guide instead.
2. We're ready to install the IIS software. Select "Start," then "Control Panel," then "Add/Remove Programs." Select "Add/Remove Windows Components" from the left-hand column.
A list of available Windows features appears. Check the box for "Internet Information Services (IIS)" and click "Next." If prompted, insert your Windows XP installation CD.
That's all it takes! Installing IIS is very simple because it is a standard component of Windows XP Professional.
Step Seven: Test Your Website From Your Own Computer
Is the website working? Let's find out! The first test is to access your site from your own computer. On the same computer that is running the web server software, access the URL http://localhost/. You should see an example home page provided with your Apache or IIS web server software. If not, review the appropriate quick start guide above and figure out which step you skipped! If you received errors during installation, you need to resolve them before your website will work.
Step Eight: Make Your Own Home Page
You have a web server, but right now the "content" on the site is just the default home page that came with the server software. Time to fix that!
All you have to do is move your own web pages to the appropriate folder. If you followed the Apache quick-start guide, your web pages belong in this folder:
C:\Program Files\Apache Group\htdocs
If you followed the IIS quick-start guide, your web pages belong here:
C:\Inetpub\wwwroot
First, remove the files that are already in those folders. It's not smart to leave "default" files lying around. What if a security problem was found with one of these common files? Then your website would be vulnerable.
Next, copy your own web pages and images into the folder. The "home page" of your site should be called index.html (not index.htm). Both Apache and IIS are smart enough to know that when a user visits http://yourname.is-a-geek.com/, they should act as if the user asked for http://yourname.is-a-geek.com/index.html and do the right thing.
For more information about making web pages and graphics, see how do I set up a website?
Step Nine: Test Your Website From The Outside World
We did a lot of work here to give our computer a hostname on the Internet and forward web traffic through the router and firewall. Did we do it right? Only one way to be sure! Access your website from a computer that is not on your home Internet connection, or have a friend try it. For example, if you registered the name myname.is-a-geek.com with DynDNS, your website's address is http://myname.is-a-geek.com/. Try that address from a computer outside your home and see what happens!
If it works... great! If not, you probably made a mistake in dynamic DNS, port forwarding, firewall configuration or local static IP configuration.

"I followed all the steps and I get my router's login page instead of my home page!"

You are probably trying to access your website by name from behind your router (from one of your own PCs). With many routers, this does not work because the router automatically assumes any web connection to itself from inside your network is an attempt to log into the router's configuration interface. Test from outside your own network or have a friend do that for you. If you can access your home-hosted website from someone else's computer, you don't have a problem. If you want to access your site from a computer behind your router, you'll have to access it at its static local IP address instead of by name. Another possible cause of this problem: you may have turned on your router's "remote router access" feature by mistake. People turn this on by accident because they think it has something to do with hosting a website at home. It doesn't. Turn it off, it is dangerous! You don't want other people accessing your router and changing configuration settings.
Congratulations! You have your own website on the Internet, hosted entirely in your own home. Just remember: your computer must remain on, and connected to the Internet, all the time. Without a web server, there's no website. That's why, if you choose to host at home, I recommend picking up an older computer off the curb, dusting it off, popping in at least 128MB of RAM and firing it up as a web server. Your own PC doesn't wear out, and if security problems are found in the web server, they are more likely to be confined to the less important computer.