<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8136767800267856096</id><updated>2011-07-07T20:15:10.145-07:00</updated><category term='How Java Works'/><category term='How Google Works'/><category term='How Hackers Work'/><category term='How Parallel Ports Work'/><category term='How Spyware Works'/><category term='How Routers Work'/><category term='How small can CPUs get?'/><category term='How Xbox Live Works'/><category term='How Bluetooth Surveillance Works'/><category term='How iPods Work'/><category term='What is Linux and why is it so popular?'/><category term='How WiFi Detectors Work'/><category term='Top 5 Technology Trends at CES 2009'/><category term='How Boolean Logic Works'/><category term='Search Engine War Still Very Much On'/><category term='How Web Operating Systems Work'/><category term='How Web Servers Work'/><category term='How does JavaScript work and how can I build simple calculators with it?'/><category term='How Windows Vista Works'/><category term='How C Programming Works'/><category term='How Microprocessors Work'/><category term='How Operating Systems Work'/><category term='How Virtual Memory Works'/><category term='What does open source mean?'/><category term='How Fabric Displays Work'/><title type='text'>My digital garage</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://mydigital-garage.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8136767800267856096/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://mydigital-garage.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>pr</name><uri>http://www.blogger.com/profile/14669252739241534019</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>26</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8136767800267856096.post-7812368380016885509</id><published>2009-09-03T12:32:00.000-07:00</published><updated>2009-09-03T12:36:15.577-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='How Google Works'/><title type='text'>How Google Works</title><content type='html'>&lt;!-- dtl_id=46685 //--&gt;       &lt;div style="float: right; width: 400px; text-align: center; padding-bottom: 3px;"&gt;&lt;a href="http://computer.howstuffworks.com/googleplex-pictures.htm"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://computer.howstuffworks.com/googleplex-pictures.htm"&gt;&lt;img class="article" src="http://static.howstuffworks.com/gif/google-11.jpg" alt="People using Google" width="400" height="209" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;Torsten Silz/AFP/&lt;a href="http://howstuffworks.com/framed.htm?parent=google.htm&amp;amp;url=http://www.gettyimages.com/Home.aspx"&gt;Getty Images&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size:85%;"&gt;Fair-goers use laptops at Google's stand at the Frankfurt Book Fair on Oct. 8, 2006. Take a look inside Google.&lt;/span&gt;&lt;/strong&gt;&lt;span class="caption"&gt; &lt;/span&gt;&lt;/div&gt;&lt;p&gt;What began as a project helmed by Larry Page and Sergey Brin, two students in Stanford University's Ph.D. program, is now one of the most influential companies on the World Wide Web: &lt;strong&gt;Google&lt;/strong&gt;. At first, the students' goal was to make an efficient &lt;a href="http://computer.howstuffworks.com/search-engine.htm"&gt;search engine&lt;/a&gt; that gave users relevant links in response to search requests. While that's still Google's core purpose today, the company now provides services ranging from &lt;a href="http://communication.howstuffworks.com/email.htm"&gt;e-mail&lt;/a&gt; and document storage to productivity software and mobile phone operating systems. In less than a decade, Google evolved from a two-man enterprise to a multibillion-dollar corporation.&lt;br /&gt;&lt;br /&gt;Today, Google's popularity continues to grow. In 2007, the company surpassed Microsoft as the most visited site on the Web [source: &lt;a href="http://howstuffworks.com/framed.htm?parent=google.htm&amp;amp;url=http://www.sfgate.com/cgi-bin/article.cgi?file=/c/a/2007/04/25/MNGELPF0DR1.DTL&amp;amp;type=tech"&gt;Kopytoff&lt;/a&gt;]. The company's influence on the Web is undeniable. Practically every webmaster wants his or her site listed high on Google's &lt;strong&gt;search engine results pages&lt;/strong&gt; (&lt;strong&gt;SERPs&lt;/strong&gt;), because it almost always translates into more traffic on the corresponding Web site. Google has also acquired other Internet companies, ranging from &lt;a href="http://computer.howstuffworks.com/blog.htm"&gt;blogging&lt;/a&gt; services to the video-sharing site &lt;a href="http://computer.howstuffworks.com/youtube.htm"&gt;YouTube&lt;/a&gt;. For a while, the company's search technology even powered rival companies' search engines -- Yahoo! relied on Google searches for nearly four years until developing its own search engine technologies in 2004 [sources: &lt;a href="http://howstuffworks.com/framed.htm?parent=google.htm&amp;amp;url=http://www.google.com/press/pressrel/pressrelease25.html"&gt;Google&lt;/a&gt;; &lt;a href="http://howstuffworks.com/framed.htm?parent=google.htm&amp;amp;url=http://www.news.com/2100-1024_3-5160710.html"&gt;Hu and Olsen&lt;/a&gt;].&lt;/p&gt;­   &lt;table class="sideBoxLeft"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="titleGray"&gt;More About Google&lt;br /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://computer.howstuffworks.com/googleplex.htm"&gt;Googleplex&lt;br /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://computer.howstuffworks.com/google-algorithm.htm"&gt;Google Algorithm&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://computer.howstuffworks.com/google-tool.htm"&gt;10 Google Tools&lt;br /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://dsc.discovery.com/technology/wide-angle/cool-tech-jobs.html"&gt;Discovery.com: Cool Tech Jobs &lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;­Google's influence isn't limited to just the Web. In 2007, company executives announced their intention to enter the FCC's auction of the wireless spectrum in the 700 megahertz (MHz) band. That part of the &lt;a href="http://computer.howstuffworks.com/wireless-network.htm"&gt;wireless&lt;/a&gt; spectrum previously belonged to analog &lt;a href="http://electronics.howstuffworks.com/tv.htm"&gt;television&lt;/a&gt; broadcasters. Google representatives said the company entered the auction to foster competition within the wireless service industry. Google supported an open technology approach to wireless service in which consumers could use any device with any provider rather than face limited choices determined by the provider and its preferred vendors. In order to participate in the auction, Google had to prove it was ready to meet the reserve price for the spectrum: $4.6 billion. Ultimately, Google didn't win the auction. But the company still achieved its main goal -- Verizon, which won the bid, must follow the open technology approach Google wanted.&lt;br /&gt;&lt;/p&gt;&lt;table class="sideBoxRight"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="titleBlue"&gt;How Many Zeros?&lt;br /&gt;&lt;/div&gt;&lt;div class="body"&gt;&lt;span style="font-family:arial,helvetica;"&gt;&lt;span style="font-size:-1;"&gt;Google's name is a variation of the word "&lt;strong&gt;googol&lt;/strong&gt;," which is a mathematical term for a one followed by 100 zeros. Page and Brin felt the name helped illustrate Google's monumental mission: Organizing billions of bytes of data found on the Web.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;­In this article, we'll learn about the backbone of Google's business: its search engine. We'll also look at the other services Google offers to both average users and to commercial businesses. Then we'll take a quick peek at some of the tools Google has developed over the years. We'll also learn more about the equipment Google uses to keep its massive operation running. Finally, we'll take a closer look at Google the company.&lt;/p&gt;              &lt;h1 class="articlePageTitle"&gt;The Google Search Engine&lt;/h1&gt;  &lt;!-- dtl_id=46687 //--&gt;          &lt;table class="sideBoxRight"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="titleBlue"&gt;Does Whatever a Spider Can&lt;br /&gt;&lt;/div&gt;&lt;div class="body"&gt;&lt;span style="font-family:arial,helvetica;"&gt;&lt;span style="font-size:-1;"&gt;A search engine spider does the search engine's grunt work: It scans Web pages and creates indexes of keywords. Once a spider has visited, scanned and categorized a page, it follows links from that page to other sites. The spider will continue to crawl from one site to the next, which means the search engine's index becomes more comprehensive and robust. To learn more about these programs, read &lt;a href="http://computer.howstuffworks.com/search-engine.htm"&gt;How Search Engines Work&lt;/a&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;­Google's search engine is a powerful tool. Without search engines like Google, it would be practically impossible to find the information you need when you browse the Web. Like all search engines, Google uses a special &lt;strong&gt;&lt;a href="http://computer.howstuffworks.com/question717.htm"&gt;algorithm&lt;/a&gt;&lt;/strong&gt; to generate search results. While Google shares general facts about its algorithm, the specifics are a company secret. This helps Google remain competitive with other search engines on the Web and reduces the chance of someone finding out how to abuse the system.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;­Google uses automated programs called &lt;strong&gt;spiders&lt;/strong&gt; or &lt;strong&gt;crawlers&lt;/strong&gt;, just like most search engines. Also like other search engines, Google has a large index of &lt;strong&gt;keywords&lt;/strong&gt; and where those words can be found. What sets Google apart is how it ranks search results, which in turn determines the order Google displays results on its search engine results page (SERP). Google uses a trademarked algorithm called &lt;strong&gt;PageRank&lt;/strong&gt;, which assigns each Web page a relevancy score.&lt;/p&gt;&lt;p&gt;A Web page's PageRank depends on a few factors:&lt;/p&gt;   &lt;ul style="margin-top: 0in;" type="disc"&gt;&lt;li&gt;&lt;strong&gt;The frequency and location of keywords within the Web page&lt;/strong&gt;: If the keyword only appears once within the body of a page, it will receive a low score for that keyword. &lt;/li&gt;&lt;li&gt;&lt;strong&gt;How long the Web page has existed&lt;/strong&gt;: People create new Web pages every day, and not all of them stick around for long. Google places more value on pages with an established history. &lt;/li&gt;&lt;li&gt;&lt;strong&gt;The number of other Web pages that link to the page in question&lt;/strong&gt;: Google looks at how many Web pages link to a particular site to determine its relevance. &lt;/li&gt;&lt;/ul&gt;   &lt;p&gt;Out of these three factors, the third is the most important. It's easier to understand it with an example. Let's look at a search for the terms "&lt;a href="http://entertainment.howstuffworks.com/planet-earth.htm"&gt;Planet Earth&lt;/a&gt;." &lt;/p&gt;  &lt;p&gt;  &lt;/p&gt;&lt;center&gt;  &lt;script type="text/javascript"&gt;&lt;!--  inject_code("&lt;object width="\" height="\" codebase="\" version="4,0,2,0\" classid="\"&gt;   &lt;param value="\" name="\"&gt;   &lt;param value="\" name="\"&gt;   &lt;embed width="\" height="\" type="\" pluginspage="\" version="ShockwaveFlash\" quality="\" src="\"&gt;&lt;/embed&gt;      &lt;/object&gt;"); //--&gt; &lt;/script&gt;&lt;object codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=4,0,2,0" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="450" height="500"&gt;   &lt;param value="http://static.howstuffworks.com/flash/google-algorithm.swf" name="movie"&gt;   &lt;param value="high" name="quality"&gt;   &lt;embed type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_ Version=ShockwaveFlash" quality="high" src="http://static.howstuffworks.com/flash/google-algorithm.swf" width="450" height="500"&gt;&lt;/embed&gt;      &lt;/object&gt; &lt;noscript&gt;  &lt;span style="font-weight:bold;font-size:85%;"&gt;   Your browser does not support JavaScript or it is disabled.  &lt;/span&gt; &lt;/noscript&gt;    &lt;/center&gt;  &lt;p&gt;   &lt;/p&gt;&lt;p&gt;As more Web pages link to Discovery's Planet Earth page, the Discovery page's rank increases. When Discovery's page ranks higher than other pages, it shows up at the top of the Google search results page. &lt;/p&gt;   &lt;p&gt;Because Google looks at links to a Web page as a vote, it's not easy to cheat the system. The best way to make sure your Web page is high up on Google's search results is to provide great content so that people will link back to your page. The more links your page gets, the higher its PageRank score will be. If you attract the attention of sites with a high PageRank score, your score will grow faster.&lt;/p&gt;&lt;table class="sideBoxRight"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="titleBlue"&gt;Hitting the Links&lt;br /&gt;&lt;/div&gt;&lt;div class="body"&gt;&lt;span style="font-family:arial,helvetica;"&gt;&lt;span style="font-size:-1;"&gt;Google uses lots of tricks to prevent people from cheating the system to get higher placement on SERPs. For example, as a Web page adds links to more sites, its voting power decreases. A Web page that has a high PageRank with lots of outgoing links can have less influence than a lower-ranked page with only one or two outgoing links.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;Google initiated an experiment with its search engine in 2008. For the first time, Google is allowing a group of beta testers to change the ranking order of search results. In this experiment, beta testers can promote or demote search results and tailor their search experience so that it's more personally relevant. Google executives say there's no guarantee that the company will ever implement this feature into the search engine globally.­&lt;/p&gt;Google offers many different kinds of services in addition to chat.&lt;h1 class="articlePageTitle"&gt;Google Services&lt;/h1&gt;  &lt;!-- dtl_id=46689 //--&gt;    &lt;table class="sideBoxRight"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="titleBlue"&gt;Google on the Go&lt;br /&gt;&lt;/div&gt;&lt;div class="body"&gt;&lt;span style="font-family:arial,helvetica;"&gt;&lt;span style="font-size:-1;"&gt;You can perform a Google search with any short message service (&lt;a href="http://communication.howstuffworks.com/sms.htm"&gt;SMS&lt;/a&gt;) compatible &lt;a href="http://electronics.howstuffworks.com/cell-phone.htm"&gt;cell phone&lt;/a&gt;, even if you can't access the Web with your phone. Simply text your query to 466453 (which spells GOOGLE on a phone pad). Google will send a response back within a couple of seconds.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;­As Google has grown, the company has added several new services for its users. Some of the services are designed to help make Web searches more efficient and relevant, while others seem to have little in common with &lt;a href="http://computer.howstuffworks.com/search-engine.htm"&gt;search engines&lt;/a&gt;. With many of its services, Google has entered into direct competition with other companies.&lt;/p&gt;   &lt;p&gt;Google's specialized searches are an extension of its normal search engine protocol. With specialized searches, you can narrow your search to specific resources. You can enter keywords into Google and search for:&lt;/p&gt;   &lt;ul style="margin-top: 0in;" type="disc"&gt;&lt;li&gt;Images related to your keywords &lt;/li&gt;&lt;li&gt;Maps &lt;/li&gt;&lt;li&gt;News articles or footage &lt;/li&gt;&lt;li&gt;Products or services you can purchase online &lt;/li&gt;&lt;li&gt;&lt;a href="http://computer.howstuffworks.com/blog.htm"&gt;Blog&lt;/a&gt; entries containing the keywords you've chosen &lt;/li&gt;&lt;li&gt;Content in books &lt;/li&gt;&lt;li&gt;Videos &lt;/li&gt;&lt;li&gt;Scholarly papers &lt;/li&gt;&lt;/ul&gt;   &lt;p&gt;For these searches, Google has created specialized indexes that only contain relevant sources. For example, if you search for the term "&lt;a href="http://entertainment.howstuffworks.com/planet-earth.htm"&gt;Planet Earth&lt;/a&gt;" in the news category, the results will include only news articles that contain those keywords. The results will look very different from Google's normal SERP.­&lt;br /&gt;&lt;br /&gt;In the last few years, Google has unveiled services that don't relate to search engines upon first glance. For example, Google's Gmail is a free Web-based &lt;a href="http://communication.howstuffworks.com/email.htm"&gt;e-mail&lt;/a&gt; program. When the service first launched, Google limited the number of users who could create accounts. The first group of users could invite a limited number of people to join the service, and so Gmail invitations became a commodity. Today, anyone can sign up for a free Gmail account. &lt;/p&gt;   &lt;p&gt;     &lt;/p&gt;&lt;table width="400" align="center" cellpadding="3" cellspacing="0"&gt;       &lt;tbody&gt;         &lt;tr&gt;           &lt;td&gt;&lt;center&gt;&lt;img src="http://static.howstuffworks.com/gif/google-13.jpg" alt="Gmail" width="400" border="0" height="221" /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;Google's Gmail is now available to all users, but it was once a limited commodity.&lt;/strong&gt;&lt;br /&gt;&lt;/span&gt;&lt;/center&gt;&lt;/td&gt;         &lt;/tr&gt;       &lt;/tbody&gt;     &lt;/table&gt;      &lt;p&gt;&lt;br /&gt;Gmail organizes e-mails into &lt;strong&gt;conversations&lt;/strong&gt;. This means that when you send an e-mail to someone and he or she replies, both e-mails are grouped together as a thread in your inbox. This makes it easier to follow the flow of an e-mail exchange. If you reply to your friend's response, Google will attach your message to the bottom of the thread. It's easy to navigate through the e-mail program and follow specific conversations.&lt;/p&gt;   &lt;table class="sideBoxRight"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="titleBlue"&gt;Advanced Searches&lt;br /&gt;&lt;/div&gt;&lt;div class="body"&gt;&lt;span style="font-family:arial,helvetica;"&gt;&lt;span style="font-size:-1;"&gt;With an advanced search, you can use Google to retrieve the most relevant results for your keywords. You can search for documents written in a specific language or saved in a particular file format like .pdf or .rtf. You can tell Google where to look for the keywords, such as in page titles or headers. Google even allows you to limit searches to a single &lt;a href="http://computer.howstuffworks.com/dns.htm"&gt;domain name&lt;/a&gt;. Try typing in "site:howstuffworks.com 'cloud computing'" in the Google search bar to see how it works. Each choice you make tells Google which index to use when returning your search results.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;Another free service from Google is &lt;strong&gt;Google Docs&lt;/strong&gt;, a storage database and collaborative productivity software suite. It includes word processing, spreadsheet and presentation programs. Creating a Docs account is free and allows you to store up to 5,000 documents and images online. Each document can be up to 500 kilobytes, and each embedded image can be up to 2 megabytes. You can share documents on Google Docs, which allows your friends to view and make changes to documents. You can also store all of your documents on Google's servers and access them wherever there's an Internet connection.&lt;/p&gt;&lt;p&gt;              &lt;/p&gt;&lt;h1 class="articlePageTitle"&gt;Google Tools&lt;/h1&gt;  &lt;!-- dtl_id=46691 //--&gt;    &lt;p&gt;Google offers a popular tool called &lt;strong&gt;Google Maps&lt;/strong&gt;, an online mapping service similar to &lt;a href="http://computer.howstuffworks.com/mapquest.htm"&gt;MapQuest&lt;/a&gt;. Google uses map sources from companies like NAVTEQ and TeleAtlas, as well as &lt;a href="http://science.howstuffworks.com/satellite.htm"&gt;satellite&lt;/a&gt; data from DigitalGlobe and MDA Federal, to create interactive &lt;a href="http://science.howstuffworks.com/map.htm"&gt;maps&lt;/a&gt;. You can use Google maps to view an address' location or get driving directions to a particular destination. &lt;/p&gt;   &lt;p&gt;     &lt;/p&gt;&lt;table width="400" align="center" cellpadding="3" cellspacing="0"&gt;       &lt;tbody&gt;         &lt;tr&gt;           &lt;td&gt;&lt;center&gt;&lt;img src="http://static.howstuffworks.com/gif/google-14.jpg" alt="Google Earth" width="400" border="0" height="300" /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;Image ©&lt;a href="http://howstuffworks.com/framed.htm?parent=google.htm&amp;amp;url=http://earth.google.com/"&gt;Google Earth&lt;/a&gt; mapping service/NASA/TerraMetrics 2007&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;strong&gt;&lt;span style="font-size:85%;"&gt;The Google Earth application&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;/span&gt;&lt;/center&gt;&lt;/td&gt;         &lt;/tr&gt;       &lt;/tbody&gt;     &lt;/table&gt;      &lt;p&gt;&lt;br /&gt;Google Maps has several view modes. The &lt;strong&gt;map view&lt;/strong&gt; is a basic road map, &lt;strong&gt;satellite view&lt;/strong&gt; overlays a road map on top of satellite photos of the region, &lt;strong&gt;terrain view&lt;/strong&gt; creates a topographic map with a road map overlay, and the &lt;strong&gt;traffic view&lt;/strong&gt; uses red, yellow and green to indicate congested major roadways in the area. &lt;strong&gt;Street view&lt;/strong&gt; mode is available in several U.S. cities. Selecting street view in such locations as Orlando, Fla., gives you the option to view photos taken from street level. You can navigate through the city by clicking on arrows in the photographs, and you can rotate your view 360 degrees. &lt;/p&gt;      &lt;table class="sideBoxRight"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="titleBlue"&gt;Smile, You're on Street View!&lt;br /&gt;&lt;/div&gt;&lt;div class="body"&gt;&lt;span style="font-family:arial,helvetica;"&gt;&lt;span style="font-size:-1;"&gt;Some people feel that Google's street view function is a violation of privacy. For example, homeowners who were behind in their yard work became worried that anyone viewing pictures of their home through Google would see a messy house, making it harder to sell the property in the future. Several individuals and communities have filed lawsuits against Google, demanding that the company remove images of certain areas from street view.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;Google Maps can also integrate business information. You can use Google Maps like a &lt;a href="http://computer.howstuffworks.com/search-engine.htm"&gt;search engine&lt;/a&gt; to find a business, such as "HowStuffWorks, &lt;a href="http://travel.howstuffworks.com/atlanta-city-guide.htm"&gt;Atlanta&lt;/a&gt;, Ga.," which will show you our office's location. You can also search for general businesses. If you're in the mood to eat &lt;a href="http://recipes.howstuffworks.com/sushi.htm"&gt;sushi&lt;/a&gt; in &lt;a href="http://travel.howstuffworks.com/san-francisco-city-guide.htm"&gt;San Francisco&lt;/a&gt;, Calif., you can type "sushi, San Francisco," and with a click of the Search button, Google Maps will display a map of the city with several sushi restaurants tagged.&lt;/p&gt;   &lt;p&gt;A product related to Google Maps is &lt;strong&gt;Google Earth&lt;/strong&gt;, an interactive digital globe. It uses the same satellite images licensed for Google Maps, but you must download the application and install it on your computer to access all of its functions. Google Earth requires an Internet connection to be fully functional, though you can still view locations on the globe even if you aren't connected. A scaled-back, Web-based version is also available -- you can even embed it in existing Web sites. To learn more about this program, read "&lt;a href="http://computer.howstuffworks.com/google-earth.htm"&gt;How Google Earth Works&lt;/a&gt;."&lt;/p&gt;   &lt;p&gt;The &lt;strong&gt;Google Toolbar&lt;/strong&gt; is another handy add-on available for &lt;a href="http://computer.howstuffworks.com/firefox.htm"&gt;Firefox&lt;/a&gt; or Internet Explorer users. The toolbar has customizable buttons. Each button maps to a particular function, which can include anything from viewing a &lt;a href="http://computer.howstuffworks.com/web-page.htm"&gt;Web site's&lt;/a&gt; PageRank to translating a word from one language to another. &lt;/p&gt;   &lt;p&gt;     &lt;/p&gt;&lt;table width="400" align="center" cellpadding="3" cellspacing="0"&gt;       &lt;tbody&gt;         &lt;tr&gt;           &lt;td&gt;&lt;center&gt;&lt;img src="http://static.howstuffworks.com/gif/google-15.jpg" alt="Google Desktop" width="400" border="0" height="288" /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;The Google Desktop application&lt;/strong&gt;&lt;br /&gt;&lt;/span&gt;&lt;/center&gt;&lt;/td&gt;         &lt;/tr&gt;       &lt;/tbody&gt;     &lt;/table&gt;      &lt;p&gt;&lt;strong&gt;&lt;br /&gt;Google Desktop&lt;/strong&gt; is another application you can download for free. This program lets you search your computer the way you would search the Internet using the Google search engine. You can also choose to download &lt;strong&gt;Google Gadgets&lt;/strong&gt;, computer programs that integrate seamlessly into your desktop. Each gadget does something different. Gadgets include clocks, calendars, news feeds and weather reports. &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8136767800267856096-7812368380016885509?l=mydigital-garage.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mydigital-garage.blogspot.com/feeds/7812368380016885509/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mydigital-garage.blogspot.com/2009/09/how-google-works.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8136767800267856096/posts/default/7812368380016885509'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8136767800267856096/posts/default/7812368380016885509'/><link rel='alternate' type='text/html' href='http://mydigital-garage.blogspot.com/2009/09/how-google-works.html' title='How Google Works'/><author><name>pr</name><uri>http://www.blogger.com/profile/14669252739241534019</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8136767800267856096.post-2183530599654067566</id><published>2009-09-03T12:30:00.000-07:00</published><updated>2009-09-03T12:32:28.387-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Search Engine War Still Very Much On'/><title type='text'>Search Engine War Still Very Much On</title><content type='html'>&lt;p&gt;Just the other day, &lt;a href="http://blogs.howstuffworks.com/2009/08/12/google-caffeine-wakes-me-up/" target="_blank"&gt;Jonathan Strickland wrote&lt;/a&gt; about Google’s Caffeine, and if you missed it, the American search giant is trying to redefine the way it crawls the Web, indexes pages and ranks search results. As Jonathan pointed out, some think that Caffeine is a response to Microsoft Bing, but even as fast as &lt;a href="http://computer.howstuffworks.com/google.htm"&gt;Google&lt;/a&gt; moves, it still couldn’t rush a brand new search system to market that quickly. I mean, it was no secret that Microsoft was working to replace Live Search, but similarities between the two systems are likely to be fairly coincidental, unless there was some serious leaking of proprietary information going on.&lt;/p&gt; &lt;p&gt;But why would Google have been working on a new way to rank pages in search? Google’s lead may seem commanding — 65 percent to a combined 28 percent for Yahoo and Microsoft, as The New York Times’ Miguel Helft pointed out — but that’s not the whole story. &lt;a href="http://bits.blogs.nytimes.com/2009/08/14/measuring-the-gap-between-google-and-rivals/" target="_blank"&gt;Helft wrote&lt;/a&gt; that ComScore, an organization that tracks online behavior, ranks searcher penetration for Google at 84 percent, to Microsoft/Yahoo’s combined 73 percent. Basically, this says that people use more than one search engine when they work, and apparently people use Google, Yahoo and Microsoft together.&lt;/p&gt; &lt;p&gt;Why bother? It matters. You get different results depending on which you use. &lt;a href="http://blogs.zdnet.com/microsoft/?p=3699" target="_blank"&gt;Mary Jo Foley at ZDNet&lt;/a&gt; wrote about a comparison made by Search Engine Land between Caffeine with regular Google. Video and news results ranked in the middle and lower on the page with the Caffeinated search, when they lurked near the top on the current Google search results page. And on Bing? Foley compared Caffeine to Bing and found that &lt;a href="http://computer.howstuffworks.com/microsoft.htm"&gt;Microsoft&lt;/a&gt;’s new decision engine didn’t put any news or blog results at all on the front page. Images and videos ranked near the top. It’s a completely different experience altogether.&lt;/p&gt; &lt;p&gt;Now that I’ve had the opportunity to try Bing, I like it. I also like other search engines and use metasearch engines that aggregate search results from many engines. It’s good to mix things up a bit. I think the winner of the search engine wars is you, because you get to reap the benefits of their competition to be the best.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8136767800267856096-2183530599654067566?l=mydigital-garage.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mydigital-garage.blogspot.com/feeds/2183530599654067566/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mydigital-garage.blogspot.com/2009/09/search-engine-war-still-very-much-on.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8136767800267856096/posts/default/2183530599654067566'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8136767800267856096/posts/default/2183530599654067566'/><link rel='alternate' type='text/html' href='http://mydigital-garage.blogspot.com/2009/09/search-engine-war-still-very-much-on.html' title='Search Engine War Still Very Much On'/><author><name>pr</name><uri>http://www.blogger.com/profile/14669252739241534019</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8136767800267856096.post-1829407061922793125</id><published>2009-08-05T02:58:00.000-07:00</published><updated>2009-08-05T03:11:10.641-07:00</updated><title type='text'>How eBay Works</title><content type='html'>&lt;img alt="ebay logo" src="http://static.howstuffworks.com/gif/ebay-ch.jpg" height="200" width="200" /&gt;&lt;br /&gt;&lt;br /&gt;In 2004, a South Florida woman listed a partially eaten grilled cheese sandwich on eBay. The sandwich sold to the highest bidder for $28,000. She believed, and showed in the auction's photos, that the sandwich had the image of the Virgin Mary in one of its slices of &lt;a href="http://computer.howstuffworks.com/bread.htm"&gt;bread&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;EBay is a global phenomenon -- the world's largest garage sale, online shopping center, car dealer and auction site with 147 million registered users in 30 countries as of March 2005. You can find everything from encyclopedias to olives to snow boots to stereos to &lt;a href="http://computer.howstuffworks.com/airplane.htm"&gt;airplanes&lt;/a&gt; for sale. And if you stumble on it before the eBay overseers do, you might even find a &lt;a href="http://computer.howstuffworks.com/kidney.htm"&gt;human kidney&lt;/a&gt; or a virtual date.&lt;br /&gt;&lt;br /&gt;In this article, we'll find out how you can buy and sell items on eBay, examine how the bidding process works, look at ways you can protect yourself from auction fraud and take a look at the business and technology of the largest auction site in the world.&lt;br /&gt;&lt;br /&gt;&lt;h1 class="articlePageTitle"&gt;eBay Basics&lt;/h1&gt;  &lt;!-- dtl_id=45858 //--&gt;     &lt;p&gt; EBay is, first and foremost, an online auction site. You can browse through categories like Antiques, Boats, Clothing &amp;amp; Accessories, Computers &amp;amp; Networking, Jewelry &amp;amp; Watches and Video Games. When you see something you like, you click on the auction title and view the details, including pictures, descriptions, payment options and shipping information. If you have a pretty good idea of what you're looking for, you can search for it using simple keywords, such as "Apple iPod," or using more advanced search criteria that helps narrow the results, such as keywords to exclude, item location, price range and accepted payment methods. &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;table align="center" border="0" cellpadding="3" cellspacing="0" width="400"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td&gt; &lt;center&gt;&lt;img src="http://static.howstuffworks.com/gif/ebay-ipod.jpg" /&gt;&lt;br /&gt;&lt;span style="font-size:-1;"&gt;&lt;strong&gt;Search results for keyword "Apple iPod"&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;/center&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;&lt;br /&gt;If you place a bid on an item, you enter a contractual agreement to buy it if you win the auction. All auctions have minimum starting bids, and some have a reserve price -- a secret minimum amount the seller is willing to accept for the item. If the bidding doesn't reach the reserve price, the seller doesn't have to part with the item. In addition to auctions, you can find tons of fixed-price items on eBay that make shopping there just like shopping at any other online marketplace. You see what you like, you buy it, you pay for it and you wait for it to arrive at your door. There are also auction listings that give you the option to "Buy it Now" for a price that's typically higher than the auction's start price. If you choose to buy the item for the "Buy it Now" price instead of bidding on it, the auction ends instantly and the item is yours. &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;table align="center" border="0" cellpadding="3" cellspacing="0" width="400"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td&gt; &lt;center&gt;&lt;img src="http://static.howstuffworks.com/gif/ebay-auction-bin.jpg" /&gt;&lt;br /&gt;&lt;span style="font-size:-1;"&gt;&lt;strong&gt;In this auction, the Starting Price is $8.99,&lt;br /&gt;and the Buy it Now price is $9.99.&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;/center&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;&lt;br /&gt;You can pay for an item on eBay using a variety of methods, including money order, cashier's check, cash, personal check and electronic payment services like PayPal and BidPay. It's up to each seller to decide which payment methods he'll accept. PayPal is the easiest way to buy something on eBay, because eBay owns PayPal. The PayPal payment process is already built into any auction listing on eBay. &lt;/p&gt;&lt;p&gt;Just as you can buy almost anything on eBay, you can sell almost anything, too. Using a simple listing process, you can put all of the junk in your basement up for sale to the highest bidder. Lots of people sell their old laptop once they've upgraded, the clothing their kids have grown out of or the brand new couch they bought on final sale without realizing it wouldn't fit in their den. Some people even make a business of eBay by opening their own "eBay store." When you sell an item on eBay, you pay listing fees and turn over a percentage of the final sale price to eBay. &lt;/p&gt;&lt;p&gt;Once you register (for free) with eBay, you can access all of your eBay buying and selling activities in a single location called "My eBay."&lt;br /&gt;&lt;/p&gt;&lt;h1 class="articlePageTitle"&gt;eBay Infrastructure&lt;/h1&gt;&lt;br /&gt;&lt;p&gt;A series of service disruptions in 1999 caused real problems for eBay's business. Over the course of three days, overloaded servers intermittently shut down, meaning users couldn't check auctions, place bids or complete transactions during that period. Buyers, sellers and eBay were very unhappy, and a complete restructuring of eBay's technological architecture followed. &lt;/p&gt;&lt;p&gt;In 1999, eBay was one massive database server and a few separate systems running the search function. In 2005, eBay is about &lt;strong&gt;200 database servers&lt;/strong&gt; and &lt;strong&gt;20 search servers&lt;/strong&gt;. &lt;/p&gt;  &lt;p&gt;The architecture is a type of &lt;strong&gt;grid computing&lt;/strong&gt; that allows for both error correction and growth. With the exception of the search function, everything about eBay can actually run on approximately 50 servers -- &lt;a href="http://computer.howstuffworks.com/web-server.htm"&gt;Web servers&lt;/a&gt;, application servers and data-storage systems. Each server has between six and 12 &lt;a href="http://computer.howstuffworks.com/microprocessor.htm"&gt;microprocessors&lt;/a&gt;. These 50 or so servers run separately, but they talk to each other, so everybody knows if there is a problem somewhere. EBay can simply add servers to the grid as the need arises. &lt;/p&gt;  &lt;p&gt;  &lt;/p&gt;&lt;table align="center" cellpadding="3" cellspacing="0" width="400"&gt;  &lt;tbody&gt;  &lt;tr&gt;  &lt;td&gt;&lt;span style="font-family:arial,helvetica;"&gt;&lt;center&gt;&lt;img src="http://static.howstuffworks.com/gif/ebay-2.jpg" /&gt;&lt;br /&gt;&lt;/center&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;While the majority of the site can run on 50 servers, eBay has four times that. The 200 servers are housed in sets of 50 in four locations, all in the United States. When you're using eBay, you may be talking to any one of those locations at any time -- they all store the same data. If one of the systems crashes, there are three others to pick up the slack. &lt;/p&gt;  &lt;p&gt;When you're on the eBay Web site and you click on a listing for a Persian rug, your computer talks to Web servers, which talk to application servers, which pull data from storage servers so you can find out what the latest bid price is and how much time is left in the auction. eBay has &lt;strong&gt;local partners&lt;/strong&gt; in many countries who deliver eBay's static data to cut down on download time, and there are &lt;strong&gt;monitoring systems&lt;/strong&gt; in 45 cities around the world that constantly scan for problems in the network. &lt;/p&gt;  &lt;p&gt;This infrastructure lets millions of people search for, buy and sell items simultaneously. On the user end, it all works seamlessly. Let's try it out.&lt;br /&gt;&lt;/p&gt;&lt;h1 class="articlePageTitle"&gt;Using eBay: Browsing for Items&lt;/h1&gt;  &lt;!-- dtl_id=45862 //--&gt;     &lt;p&gt;   The best way to learn how to use eBay is to dive right in. What do you feel like looking for today? A &lt;a href="http://computer.howstuffworks.com/surround-sound.htm"&gt;surround-sound system&lt;/a&gt;? A mink stole? HowStuffWorks could use a Homer Simpson Pez dispenser. Let's look for one. &lt;/p&gt;&lt;p&gt; There are two ways to go about finding a Homer Simpson Pez dispenser. We can browse, or we can search. Let's start by browsing -- it's the slower, more round-about method, but it's a good way to get a feel for eBay's category system. The most popular categories are listed right on the eBay homepage, on the left side. &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;table align="center" cellpadding="3" cellspacing="0" width="400"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:arial,helvetica;"&gt; &lt;/span&gt;&lt;center&gt; &lt;span style="font-family:arial,helvetica;"&gt;&lt;img src="http://static.howstuffworks.com/gif/ebay-categories.jpg" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/center&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;&lt;br /&gt;Pez dispensers are typically considered collector items, so the Collectibles category is a good place to start browsing. If we click on the Collectibles link on the homepage, we end up at a page listing all of the Collectibles &lt;strong&gt;subcategories&lt;/strong&gt;. &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;table align="center" border="0" cellpadding="3" cellspacing="0" width="400"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td&gt; &lt;center&gt;&lt;img src="http://static.howstuffworks.com/gif/ebay-collectibles.jpg" /&gt;&lt;br /&gt;&lt;/center&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;&lt;br /&gt;At the very bottom of the page, you can see that there's actually a subcategory called Pez, Keychains, Promo Glasses, and within that subcategory is another subcategory called Pez. &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;table align="center" border="0" cellpadding="3" cellspacing="0" width="400"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td&gt; &lt;center&gt;&lt;img src="http://static.howstuffworks.com/gif/ebay-collectibles-pez.jpg" /&gt;&lt;br /&gt;&lt;/center&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;&lt;br /&gt;That seems like a good fit. Clicking on "Pez" brings us to an auction-level page: &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;table align="center" cellpadding="3" cellspacing="0" width="400"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:arial,helvetica;"&gt; &lt;/span&gt;&lt;center&gt; &lt;span style="font-family:arial,helvetica;"&gt;&lt;img src="http://static.howstuffworks.com/gif/ebay-pez.jpg" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/center&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;&lt;br /&gt;On this page, you can see that: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;There are 3,355 listings in the Pez category. &lt;/li&gt;&lt;li&gt;The listings are currently sorted by time, with the newest auctions first. &lt;/li&gt;&lt;li&gt;We can search within Pez listings. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Since we're looking specifically for a Homer Simpson Pez dispenser, "Homer Simpson" is a good term to use to narrow the results. If we enter "Homer Simpson" in the search box directly above the listing, it's only going to search the Pez subcategory, not all of eBay (although you can search all of eBay using a dropdown menu in the category field). Here's what comes up: &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;table align="center" cellpadding="3" cellspacing="0" width="400"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:arial,helvetica;"&gt; &lt;/span&gt;&lt;center&gt; &lt;span style="font-family:arial,helvetica;"&gt;&lt;img src="http://static.howstuffworks.com/gif/ebay-pez-homer-title.jpg" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/center&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;&lt;br /&gt;Thirteen items isn't bad, but we might be able to find more. When you enter a search term and there are fewer results than you'd like, the first thing to do is go back up to the search field and check the box for "Search title &lt;strong&gt;and&lt;/strong&gt; description." The first search we did checked only the auction &lt;em&gt;titles&lt;/em&gt; for the term "Homer Simpson." Searching only titles is a good way to narrow your results if you know exactly what you're looking for and what most people call it -- for example, if you're looking for a &lt;a href="http://computer.howstuffworks.com/gps.htm"&gt;GPS receiver&lt;/a&gt;, it's a pretty safe bet that anyone selling one would put "GPS" in the title. On the other hand, someone selling a Homer Simpson Pez dispenser might not put "Homer Simpson" in the title -- she might put "Simpsons" or only "Homer." So now we're going to search entire auction descriptions, which typically returns more results: &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;table align="center" cellpadding="3" cellspacing="0" width="400"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:arial,helvetica;"&gt; &lt;/span&gt;&lt;center&gt; &lt;span style="font-family:arial,helvetica;"&gt;&lt;img src="http://static.howstuffworks.com/gif/ebay-pez-homer-all.jpg" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/center&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;We now have 23 listings to look through. But there is a much faster way to get to the place we've ended up at. If you're just looking for a bargain on some type of collectible, browsing is the way to go; but if you're looking for something specific, the eBay search function is the quickest way to it.&lt;br /&gt;&lt;br /&gt;&lt;h1 class="articlePageTitle"&gt;Using eBay: Searching for Items&lt;/h1&gt;  &lt;!-- dtl_id=45864 //--&gt;        At the top of the eBay homepage, there's a search box where we can enter what we're looking for. &lt;p&gt; &lt;/p&gt;&lt;table align="center" border="0" cellpadding="3" cellspacing="0" width="400"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td&gt; &lt;center&gt;&lt;img src="http://static.howstuffworks.com/gif/ebay-search.jpg" /&gt;&lt;br /&gt;&lt;/center&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;&lt;br /&gt;Here's what comes up in our simple keyword search: &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;table align="center" border="0" cellpadding="3" cellspacing="0" width="400"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td&gt; &lt;center&gt;&lt;img src="http://static.howstuffworks.com/gif/ebay-search-homer.jpg" /&gt;&lt;br /&gt;&lt;span style="font-size:-1;"&gt;&lt;strong&gt;Our simple keyword search delivered nine matches.&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;/center&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;&lt;br /&gt;When you do a simple search, the auction results page also tells you which categories your results are in. You'll notice that there are matches for Homer Simpson Pez dispensers in other places besides the Pez category. So when we search both titles and descriptions, we end up with 25 results -- more than we did when we were browsing. &lt;/p&gt;&lt;p&gt;There's a listing about halfway down the page for a full set of Simpsons Pez dispensers, including Homer, with a starting price of just 99 cents. &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;table align="center" border="0" cellpadding="3" cellspacing="0" width="400"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td&gt; &lt;center&gt;&lt;img src="http://static.howstuffworks.com/gif/ebay-search-listing.jpg" /&gt;&lt;br /&gt;&lt;/center&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;&lt;br /&gt;That seems like a good deal. Here's the top of the auction page, where you'll find the basic auction stats: &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;table align="center" cellpadding="3" cellspacing="0" width="400"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:arial,helvetica;"&gt; &lt;/span&gt;&lt;center&gt; &lt;span style="font-family:arial,helvetica;"&gt;&lt;img src="http://static.howstuffworks.com/gif/ebay-search-auction.jpg" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/center&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;&lt;br /&gt;The &lt;strong&gt;starting price&lt;/strong&gt; is low, the &lt;strong&gt;shipping price&lt;/strong&gt; is reasonable, and the seller has 99.6% &lt;strong&gt;positive feedback&lt;/strong&gt;. Always check the shipping price, as some sellers mislead buyers by selling the item for cheap and then making up the difference by severely overcharging for shipping, and always check the seller feedback. The feedback is how you know if you can trust the seller (and your feedback is how the seller knows he can trust you). We'll talk more about feedback in the next section, but for now, we just need to know that 99.6% positive feedback is a good sign. &lt;/p&gt;&lt;p&gt; Since we're interested in this auction, we'll click on "&lt;strong&gt;Watch this item in My eBay&lt;/strong&gt;" (top right of the auction page) so we can get back to it easily.&lt;/p&gt;&lt;h1 class="articlePageTitle"&gt;Using eBay: Buying Items&lt;/h1&gt;  &lt;!-- dtl_id=45866 //--&gt; &lt;p&gt; To look for an item, you don't need to register -- you can browse, search and watch items (up to 10) as a guest. You can't bid or buy as a guest, though. So the next step is to register with eBay &lt;a href="https://scgi.ebay.com/ws/eBayISAPI.dll?RegisterEnterInfo&amp;amp;siteid=0&amp;amp;co_partnerid=2&amp;amp;UsingSSL=1"&gt;here&lt;/a&gt;. It's quick and free. &lt;/p&gt;&lt;p&gt; Now we can place a bid on the set of Simpsons Pez dispensers. If we click on the link in our watch list, we end up back at the auction page. There are four main sections to any auction page: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Title/Overview&lt;/strong&gt; - This is where you see the basic information, like auction title, price, shipping price, seller information and how many bids have been placed so far. &lt;/li&gt;&lt;/ul&gt; &lt;p&gt; &lt;/p&gt;&lt;table align="center" border="0" cellpadding="3" cellspacing="0" width="400"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td&gt; &lt;center&gt;&lt;img src="http://static.howstuffworks.com/gif/ebay-auction-1.jpg" /&gt;&lt;br /&gt;&lt;/center&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Description&lt;/strong&gt; - This is where the seller provides details about the item. &lt;/li&gt;&lt;/ul&gt; &lt;p&gt; &lt;/p&gt;&lt;table align="center" border="0" cellpadding="3" cellspacing="0" width="400"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td&gt; &lt;center&gt;&lt;img src="http://static.howstuffworks.com/gif/ebay-auction-2.jpg" /&gt;&lt;br /&gt;&lt;/center&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Shipping, payment and return policy&lt;/strong&gt; - This is where you can find full shipping information, any details the seller wants a bidder to know about making payment (including which methods are accepted) and what the seller's return policy is. &lt;/li&gt;&lt;/ul&gt; &lt;p&gt; &lt;/p&gt;&lt;table align="center" border="0" cellpadding="3" cellspacing="0" width="400"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td&gt; &lt;center&gt;&lt;img src="http://static.howstuffworks.com/gif/ebay-auction-3.jpg" /&gt;&lt;br /&gt;&lt;/center&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Bidding&lt;/strong&gt; - This is where you place a bid on the item. &lt;/li&gt;&lt;/ul&gt; &lt;p&gt; &lt;/p&gt;&lt;table align="center" border="0" cellpadding="3" cellspacing="0" width="400"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td&gt; &lt;center&gt;&lt;img src="http://static.howstuffworks.com/gif/ebay-auction-4.jpg" /&gt;&lt;br /&gt;&lt;/center&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;&lt;br /&gt;eBay's bidding process works like this: You enter the maximum amount you are willing to pay for the item, and eBay bids incrementally on your behalf until the bidding reaches the maximum amount you entered. So if we decide we are willing to pay $2.00 for this set of Pez dispensers, we enter $2.00 in the bid slot. &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;table align="center" border="0" cellpadding="3" cellspacing="0" width="400"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td&gt; &lt;center&gt;&lt;img src="http://static.howstuffworks.com/gif/ebay-bid.jpg" /&gt;&lt;br /&gt;&lt;/center&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;&lt;br /&gt;When we click "Place bid," the next screen is a confirmation screen where we can see the bid price and commit to it. Once we place and confirm our bid, here's what the auction page looks like: &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;table align="center" border="0" cellpadding="3" cellspacing="0" width="400"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td&gt; &lt;center&gt;&lt;img src="http://static.howstuffworks.com/gif/ebay-high-bid.jpg" /&gt;&lt;br /&gt;&lt;span style="font-size:-1;"&gt;&lt;strong&gt;We are now the current high bidder.&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;/center&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;&lt;br /&gt;The top portion of the page with the blue background is for our eyes only -- no one else can see what our maximum bid is. Why is the current price $0.99 and not $2.00? It's because when you're the first bidder, no matter what you enter as your maximum price, your first bid is always the starting price. If someone bids against us, eBay will bid on our behalf up to $2.00 in $0.05 increments (low-price auctions use very small increments, while high price auctions use larger increments). So if another user comes along and enters $1.25 as his maximum, eBay will bid $1.31 on our behalf, and we'll still be winning. But if another user places a maximum bid of $2.01, we've been outbid (and eBay will send us an &lt;a href="http://computer.howstuffworks.com/email.htm"&gt;e-mail&lt;/a&gt; to this effect in case we're not watching the auction). At this point, if we still want these Pez dispensers, we have to enter a new maximum bid. &lt;/p&gt;&lt;p&gt;This is where eBay's bidding process doesn't work exactly like it's supposed to -- and starts to get exciting. If every bidder truly entered the maximum he was willing to pay, auctions would end with little fanfare. The person who entered the highest maximum bid would quietly win. But humans being human, the actual maximum amount they're willing to pay is usually "a tiny bit more than what everyone who's bidding against me is willing to pay." If we still want our Pez dispensers, we'll enter a new maximum bid of, say, $3.00; and as long as the other bidder's maximum amount is less than $3.00, we'll be winning the auction again. Our coup might be temporary, though, because if the other bidder wants these Pez dispensers as much as we do, he's going to bid again until he outbids our maximum. And now we have a bidding war. &lt;/p&gt;&lt;p&gt; &lt;strong&gt;Bidding wars&lt;/strong&gt; are a rush -- and they're sometimes very expensive. If this war continues for the three days until the auction ends, we could end up paying a hundred bucks for these Pez dispensers. It happens. The adrenaline takes over and people start bidding to win -- not necessarily to win a few Pez dispensers, just to WIN. For this reason, most of the bidding happens in the last two minutes of an auction. People wait to place a bid until an auction is about to close -- this way, they can catch other bidders off guard, and hopefully no one will get the chance to outbid them. The last 10 seconds of a bidding war often becomes a battle of bandwidth. Someone using a &lt;a href="http://computer.howstuffworks.com/modem.htm"&gt;dial-up connection&lt;/a&gt; will never be able to place a winning bid in 10 seconds. Someone using a &lt;a href="http://computer.howstuffworks.com/cable-modem.htm"&gt;cable modem&lt;/a&gt; can place a winning bid in two seconds. &lt;/p&gt;&lt;p&gt; There is at least one reason why someone would place a bid very early in the auction: to remove a "Buy it Now" option. Remember that when an auction item also has a "Buy it Now" option, if someone decides to "Buy it Now" the auction is over. But the opposite is also true: As soon as someone bids on the item, the "Buy it Now" option disappears. If someone comes across an item she wants but she's not willing to pay the "Buy it Now" price, she'll enter the minimum starting bid just so another user doesn't come along and buy it out from under her. &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8136767800267856096-1829407061922793125?l=mydigital-garage.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mydigital-garage.blogspot.com/feeds/1829407061922793125/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mydigital-garage.blogspot.com/2009/08/how-ebay-works.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8136767800267856096/posts/default/1829407061922793125'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8136767800267856096/posts/default/1829407061922793125'/><link rel='alternate' type='text/html' href='http://mydigital-garage.blogspot.com/2009/08/how-ebay-works.html' title='How eBay Works'/><author><name>pr</name><uri>http://www.blogger.com/profile/14669252739241534019</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8136767800267856096.post-3910963449929081452</id><published>2009-02-28T08:01:00.000-08:00</published><updated>2009-02-28T08:16:19.385-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='How Microprocessors Work'/><title type='text'>How Microprocessors Work</title><content type='html'>The computer you are using to read this page uses a &lt;strong&gt;microprocessor&lt;/strong&gt; to do its work. The microprocessor is the heart of any normal computer, whether it is a &lt;a href="http://computer.howstuffworks.com/pc.htm"&gt;desktop machine&lt;/a&gt;, a &lt;a href="http://computer.howstuffworks.com/web-server.htm"&gt;server&lt;/a&gt; or a &lt;a href="http://computer.howstuffworks.com/laptop.htm"&gt;laptop&lt;/a&gt;. The microprocessor you are using might be a Pentium, a K6, a PowerPC, a Sparc or any of the many other brands and types of microprocessors, but they all do approximately the same thing in approximately the same way.    &lt;p&gt;A microprocessor -- also known as a &lt;strong&gt;CPU&lt;/strong&gt; or central processing unit -- is a complete computation engine that is fabricated on a single chip. The first microprocessor was the Intel 4004, introduced in 1971. The 4004 was not very powerful -- all it could do was add and subtract, and it could only do that 4 &lt;a href="http://computer.howstuffworks.com/bytes.htm"&gt;bits&lt;/a&gt; at a time. But it was amazing that everything was on one chip. Prior to the 4004, engineers built computers either from collections of chips or from discrete components (&lt;a href="http://computer.howstuffworks.com/diode2.htm"&gt;transistors&lt;/a&gt; wired one at a time). The 4004 powered one of the first portable electronic calculators&lt;/p&gt;   &lt;p&gt;     &lt;/p&gt;&lt;table class="sideBoxLeft"&gt;       &lt;tbody&gt;         &lt;tr&gt;           &lt;td&gt;                          &lt;ul&gt;&lt;li&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;           &lt;/td&gt;         &lt;/tr&gt;       &lt;/tbody&gt;     &lt;/table&gt;      ­ If you have ever wondered what the microprocessor in your computer is doing, or if you have ever wondered about the differences between types of microprocessors, then read on. In this article, you will learn how fairly simple digital logic techniques allow a computer to do its job, whether its playing a game or spell checking a document!&lt;br /&gt;&lt;br /&gt;&lt;h1 class="articlePageTitle"&gt;Microprocessor Progression: Intel&lt;/h1&gt;  &lt;!-- dtl_id=7570 //--&gt;  &lt;table align="right" cellpadding="3" cellspacing="0" width="150"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:arial,helvetica;"&gt; &lt;center&gt;&lt;a href="http://computer.howstuffworks.com/enlarge-image.htm?terms=microprocessors&amp;amp;page=0"&gt;&lt;img alt="Intel 8080" src="http://static.howstuffworks.com/gif/microprocessor-8080-micro.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;!-- &lt;span style="font-size:-2;"&gt;Photo courtesy&lt;/span&gt;&lt;br /&gt;--&gt; &lt;span style="font-size:-1;"&gt;&lt;strong&gt;The Intel 8080 was the first microprocessor in a home computer.&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;/center&gt; &lt;/span&gt; &lt;/td&gt;&lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; The first microprocessor to make it into a home computer was the Intel 8080, a complete 8-bit computer on one chip, introduced in 1974. The first microprocessor to make a real splash in the market was the Intel 8088, introduced in 1979 and incorporated into the IBM PC (which first appeared around 1982). If you are familiar with the PC market and its history, you know that the PC market moved from the 8088 to the 80286 to the 80386 to the 80486 to the Pentium to the Pentium II to the Pentium III to the Pentium 4. All of these microprocessors are made by Intel and all of them are improvements on the basic design of the 8088. The Pentium 4 can execute any piece of code that ran on the original 8088, but it does it about 5,000 times faster! &lt;p&gt;The following table helps you to understand the differences between the different processors that Intel has introduced over the years. &lt;/p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_apr7HBF_hu4/Salhvnp5z1I/AAAAAAAAAPo/Ht17DkCP-mc/s1600-h/1111111111.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 290px; height: 320px;" src="http://3.bp.blogspot.com/_apr7HBF_hu4/Salhvnp5z1I/AAAAAAAAAPo/Ht17DkCP-mc/s320/1111111111.png" alt="" id="BLOGGER_PHOTO_ID_5307881106559323986" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;on about this table: &lt;ul&gt;&lt;table align="center" bg border="1" cellpadding="3" cellspacing="0" width="400" style="color:#eef4f6;"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:arial,helvetica;"&gt; &lt;span style="font-size:+1;color:#000099;"&gt;&lt;center&gt;What's a Chip?&lt;/center&gt;&lt;/span&gt; &lt;span style="font-size:-1;"&gt;A &lt;strong&gt;chip&lt;/strong&gt; is also called an &lt;strong&gt;integrated circuit&lt;/strong&gt;. Generally it is a small, thin piece of &lt;a href="http://computer.howstuffworks.com/diode1.htm"&gt;silicon&lt;/a&gt; onto which the &lt;a href="http://computer.howstuffworks.com/diode2.htm"&gt;transistors&lt;/a&gt; making up the microprocessor have been etched. A chip might be as large as an inch on a side and can contain tens of millions of transistors. Simpler processors might consist of a few thousand transistors etched onto a chip just a few millimeters square.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt; &lt;/td&gt;&lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;&lt;p&gt; &lt;/p&gt;&lt;li&gt;The &lt;strong&gt;date&lt;/strong&gt; is the year that the processor was first introduced. Many processors are re-introduced at higher clock speeds for many years after the original release date. &lt;/li&gt;&lt;li&gt;&lt;strong&gt;Transistors&lt;/strong&gt; is the number of transistors on the chip. You can see that the number of transistors on a single chip has risen steadily over the years. &lt;/li&gt;&lt;li&gt;&lt;strong&gt;Microns&lt;/strong&gt; is the width, in microns, of the smallest wire on the chip. For comparison, a human hair is 100 microns thick. As the feature size on the chip goes down, the number of transistors rises. &lt;/li&gt;&lt;li&gt;&lt;strong&gt;Clock speed&lt;/strong&gt; is the maximum rate that the chip can be clocked at. Clock speed will make more sense in the next section. &lt;/li&gt;&lt;li&gt;&lt;strong&gt;Data Width&lt;/strong&gt; is the width of the ALU. An 8-bit ALU can add/subtract/multiply/etc. two 8-bit numbers, while a 32-bit ALU can manipulate 32-bit numbers. An 8-bit ALU would have to execute four instructions to add two 32-bit numbers, while a 32-bit ALU can do it in one instruction. In many cases, the external data bus is the same width as the ALU, but not always. The 8088 had a 16-bit ALU and an 8-bit bus, while the modern Pentiums fetch data 64 bits at a time for their 32-bit ALUs. &lt;/li&gt;&lt;li&gt;&lt;strong&gt;MIPS&lt;/strong&gt; stands for "millions of instructions per second" and is a rough measure of the performance of a CPU. Modern CPUs can do so many different things that MIPS ratings lose a lot of their meaning, but you can get a general sense of the relative power of the CPUs from this column. &lt;/li&gt;&lt;/ul&gt;From this table you can see that, in general, there is a relationship between clock speed and MIPS. The maximum clock speed is a function of the manufacturing process and delays within the chip. There is also a relationship between the number of transistors and MIPS. For example, the 8088 clocked at 5 MHz but only executed at 0.33 MIPS (about one instruction per 15 clock cycles). Modern processors can often execute at a rate of two instructions per clock cycle.&lt;br /&gt;&lt;br /&gt;&lt;h1 class="articlePageTitle"&gt;Microprocessor Logic&lt;/h1&gt;  &lt;!-- dtl_id=7572 //--&gt; &lt;table align="right" cellpadding="3" cellspacing="0" width="200"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:arial,helvetica;"&gt; &lt;center&gt;&lt;img src="http://static.howstuffworks.com/gif/microprocessor-p4-alone.jpg" /&gt;&lt;br /&gt;&lt;span style="font-size:-2;"&gt;Photo courtesy &lt;a href="http://www.howstuffworks.com/framed.htm?parent=microprocessor.htm&amp;amp;url=http://www.intel.com"&gt;Intel Corporation&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:-1;"&gt;&lt;b&gt;Intel Pentium 4 processor&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;/center&gt; &lt;/span&gt; &lt;/td&gt;&lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; To understand how a microprocessor works, it is helpful to look inside and learn about the logic used to create one. In the process you can also learn about &lt;b&gt;assembly language&lt;/b&gt; -- the native language of a microprocessor -- and many of the things that engineers can do to boost the speed of a processor. &lt;p&gt; A microprocessor executes a collection of machine instructions that tell the processor what to do. Based on the instructions, a microprocessor does three basic things: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Using its ALU (Arithmetic/Logic Unit), a microprocessor can perform mathematical operations like addition, subtraction, multiplication and division. Modern microprocessors contain complete floating point processors that can perform extremely sophisticated operations on large floating point numbers. &lt;/li&gt;&lt;li&gt;A microprocessor can move data from one &lt;a href="http://www.howstuffworks.com/computer-memory.htm"&gt;memory&lt;/a&gt; location to another. &lt;/li&gt;&lt;li&gt;A microprocessor can make decisions and jump to a new set of instructions based on those decisions. &lt;/li&gt;&lt;/ul&gt;There may be very sophisticated things that a microprocessor does, but those are its three basic activities. The following diagram shows an extremely simple microprocessor capable of doing those three things: &lt;p&gt; &lt;/p&gt;&lt;table align="center" cellpadding="3" cellspacing="0" width="420"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td&gt; &lt;center&gt;&lt;img src="http://static.howstuffworks.com/gif/microprocessor1.gif" /&gt;&lt;br /&gt;&lt;/center&gt; &lt;/td&gt;&lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;p&gt; This is about as simple as a microprocessor gets. This microprocessor has: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;An &lt;b&gt;address bus&lt;/b&gt; (that may be 8, 16 or 32 bits wide) that sends an address to memory &lt;/li&gt;&lt;li&gt;A &lt;b&gt;data bus&lt;/b&gt; (that may be 8, 16 or 32 bits wide) that can send data to memory or receive data from memory &lt;/li&gt;&lt;li&gt;An &lt;b&gt;RD&lt;/b&gt; (read) and &lt;b&gt;WR&lt;/b&gt; (write) line to tell the memory whether it wants to set or get the addressed location &lt;/li&gt;&lt;li&gt;A &lt;b&gt;clock line&lt;/b&gt; that lets a clock pulse sequence the processor &lt;/li&gt;&lt;li&gt;A &lt;b&gt;reset line&lt;/b&gt; that resets the program counter to zero (or whatever) and restarts execution &lt;/li&gt;&lt;/ul&gt; Let's assume that both the address and data buses are 8 bits wide in this example. &lt;p&gt; Here are the components of this simple microprocessor: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Registers A, B and C are simply latches made out of flip-flops. (See the section on "edge-triggered latches" in &lt;a href="http://www.howstuffworks.com/boolean.htm"&gt;How Boolean Logic Works&lt;/a&gt; for details.) &lt;/li&gt;&lt;li&gt;The address latch is just like registers A, B and C. &lt;/li&gt;&lt;li&gt;The program counter is a latch with the extra ability to increment by 1 when told to do so, and also to reset to zero when told to do so. &lt;/li&gt;&lt;li&gt;The ALU could be as simple as an 8-bit adder (see the section on adders in &lt;a href="http://www.howstuffworks.com/boolean.htm"&gt;How Boolean Logic Works&lt;/a&gt; for details), or it might be able to add, subtract, multiply and divide 8-bit values. Let's assume the latter here. &lt;/li&gt;&lt;li&gt;The test register is a special latch that can hold values from comparisons performed in the ALU. An ALU can normally compare two numbers and determine if they are equal, if one is greater than the other, etc. The test register can also normally hold a carry bit from the last stage of the adder. It stores these values in flip-flops and then the instruction decoder can use the values to make decisions. &lt;/li&gt;&lt;li&gt;There are six boxes marked "3-State" in the diagram. These are &lt;b&gt;tri-state buffers&lt;/b&gt;. A tri-state buffer can pass a 1, a 0 or it can essentially disconnect its output (imagine a switch that totally disconnects the output line from the wire that the output is heading toward). A tri-state buffer allows multiple outputs to connect to a wire, but only one of them to actually drive a 1 or a 0 onto the line. &lt;/li&gt;&lt;li&gt;The instruction register and instruction decoder are responsible for controlling all of the other components. &lt;/li&gt;&lt;/ul&gt; &lt;table align="right" bg border="1" cellpadding="3" cellspacing="0" width="200" style="color:#eef4f6;"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:arial,helvetica;"&gt; &lt;span style="font-size:+1;color:#000099;"&gt;&lt;center&gt;Helpful Articles&lt;/center&gt;&lt;/span&gt; &lt;span style="font-size:-1;"&gt;If you are new to digital logic, you may find the following articles helpful in understanding this section: &lt;/span&gt;&lt;/span&gt;&lt;p&gt; &lt;/p&gt;&lt;span style="font-family:arial,helvetica;"&gt;&lt;span style="font-size:-1;"&gt;&lt;li&gt;&lt;a href="http://www.howstuffworks.com/bytes.htm"&gt;How Bytes and Bits Work&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://www.howstuffworks.com/boolean.htm"&gt;How Boolean Logic Works&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://www.howstuffworks.com/digital-electronics.htm"&gt;How Electronic Gates Work&lt;/a&gt; &lt;/li&gt;&lt;/span&gt;&lt;/span&gt; &lt;/td&gt;&lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; Although they are not shown in this diagram, there would be control lines from the instruction decoder that would: &lt;ul&gt;&lt;li&gt;Tell the A register to latch the value currently on the data bus &lt;/li&gt;&lt;li&gt;Tell the B register to latch the value currently on the data bus &lt;/li&gt;&lt;li&gt;Tell the C register to latch the value currently output by the ALU &lt;/li&gt;&lt;li&gt;Tell the program counter register to latch the value currently on the data bus &lt;/li&gt;&lt;li&gt;Tell the address register to latch the value currently on the data bus &lt;/li&gt;&lt;li&gt;Tell the instruction register to latch the value currently on the data bus &lt;/li&gt;&lt;li&gt;Tell the program counter to increment &lt;/li&gt;&lt;li&gt;Tell the program counter to reset to zero &lt;/li&gt;&lt;li&gt;Activate any of the six tri-state buffers (six separate lines) &lt;/li&gt;&lt;li&gt;Tell the ALU what operation to perform &lt;/li&gt;&lt;li&gt;Tell the test register to latch the ALU's test bits &lt;/li&gt;&lt;li&gt;Activate the RD line &lt;/li&gt;&lt;li&gt;Activate the WR line &lt;/li&gt;&lt;/ul&gt;Coming into the instruction decoder are the bits from the test register and the clock line, as well as the bits from the instruction register.&lt;br /&gt;&lt;br /&gt;&lt;h1 class="articlePageTitle"&gt;Microprocessor Memory&lt;/h1&gt;  &lt;!-- dtl_id=7574 //--&gt; The previous section talked about the address and data buses, as well as the RD and WR lines. These buses and lines connect either to RAM or ROM -- generally both. In our sample microprocessor, we have an address bus 8 bits wide and a data bus 8 bits wide. That means that the microprocessor can address (2&lt;sup&gt;&lt;span style="font-size:-2;"&gt;8&lt;/span&gt;&lt;/sup&gt;) 256 bytes of memory, and it can read or write 8 bits of the memory at a time. Let's assume that this simple microprocessor has 128 bytes of ROM starting at address 0 and 128 bytes of RAM starting at address 128. &lt;p&gt; &lt;/p&gt;&lt;table align="center" cellpadding="3" cellspacing="0" width="400"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:arial,helvetica;"&gt; &lt;center&gt;&lt;img src="http://static.howstuffworks.com/gif/microprocessor-rom.jpg" /&gt;&lt;br /&gt;&lt;!-- &lt;span style="font-size:-2;"&gt;Photo courtesy&lt;/span&gt;&lt;br /&gt;--&gt; &lt;span style="font-size:-1;"&gt;&lt;b&gt;ROM chip&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;/center&gt; &lt;/span&gt; &lt;/td&gt;&lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;p&gt; &lt;a href="http://www.howstuffworks.com/rom.htm"&gt;ROM&lt;/a&gt; stands for read-only memory. A ROM chip is programmed with a permanent collection of pre-set bytes. The address bus tells the ROM chip which byte to get and place on the data bus. When the RD line changes state, the ROM chip presents the selected byte onto the data bus. &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;table align="right" cellpadding="3" cellspacing="0" width="200"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:arial,helvetica;"&gt; &lt;center&gt;&lt;img src="http://static.howstuffworks.com/gif/microprocessor-ram.jpg" /&gt;&lt;br /&gt;&lt;!-- &lt;span style="font-size:-2;"&gt;Photo courtesy&lt;/span&gt;&lt;br /&gt;--&gt; &lt;span style="font-size:-1;"&gt;&lt;b&gt;RAM chip&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;/center&gt; &lt;/span&gt; &lt;/td&gt;&lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;a href="http://www.howstuffworks.com/ram.htm"&gt;RAM&lt;/a&gt; stands for random-access memory. RAM contains bytes of information, and the microprocessor can read or write to those bytes depending on whether the RD or WR line is signaled. One problem with today's RAM chips is that they forget everything once the &lt;a href="http://www.howstuffworks.com/power-supply.htm"&gt;power&lt;/a&gt; goes off. That is why the computer needs ROM. &lt;p&gt; By the way, nearly all computers contain some amount of ROM (it is possible to create a simple computer that contains no RAM -- many &lt;a href="http://www.howstuffworks.com/microcontroller.htm"&gt;microcontrollers&lt;/a&gt; do this by placing a handful of RAM bytes on the processor chip itself -- but generally impossible to create one that contains no ROM). On a &lt;a href="http://www.howstuffworks.com/pc.htm"&gt;PC&lt;/a&gt;, the ROM is called the &lt;a href="http://www.howstuffworks.com/bios.htm"&gt;BIOS&lt;/a&gt; (Basic Input/Output System). When the microprocessor starts, it begins executing instructions it finds in the BIOS. The BIOS instructions do things like test the hardware in the machine, and then it goes to the hard disk to fetch the &lt;b&gt;boot sector&lt;/b&gt; (see &lt;a href="http://www.howstuffworks.com/hard-disk.htm"&gt;How Hard Disks Work&lt;/a&gt; for details). This boot sector is another small program, and the BIOS stores it in RAM after reading it off the disk. The microprocessor then begins executing the boot sector's instructions from RAM. The boot sector program will tell the microprocessor to fetch something else from the hard disk into RAM, which the microprocessor then executes, and so on. This is how the microprocessor loads and executes the entire &lt;a href="http://www.howstuffworks.com/operating-system.htm"&gt;operating system&lt;/a&gt;.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;              &lt;h1 class="articlePageTitle"&gt;Microprocessor Instructions&lt;/h1&gt;  &lt;!-- dtl_id=7576 //--&gt; Even the incredibly simple microprocessor shown in the previous example will have a fairly large set of instructions that it can perform. The collection of instructions is implemented as bit patterns, each one of which has a different meaning when loaded into the instruction register. Humans are not particularly good at remembering bit patterns, so a set of short words are defined to represent the different bit patterns. This collection of words is called the &lt;b&gt;assembly language&lt;/b&gt; of the processor. An &lt;b&gt;assembler&lt;/b&gt; can translate the words into their bit patterns very easily, and then the output of the assembler is placed in memory for the microprocessor to execute. &lt;p&gt; Here's the set of assembly language instructions that the designer might create for the simple microprocessor in our example: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;LOADA mem&lt;/b&gt; - Load register A from memory address &lt;/li&gt;&lt;li&gt;&lt;b&gt;LOADB mem&lt;/b&gt; - Load register B from memory address &lt;/li&gt;&lt;li&gt;&lt;b&gt;CONB con&lt;/b&gt; - Load a constant value into register B &lt;/li&gt;&lt;li&gt;&lt;b&gt;SAVEB mem&lt;/b&gt; - Save register B to memory address &lt;/li&gt;&lt;li&gt;&lt;b&gt;SAVEC mem&lt;/b&gt; - Save register C to memory address &lt;/li&gt;&lt;li&gt;&lt;b&gt;ADD&lt;/b&gt; - Add A and B and store the result in C &lt;/li&gt;&lt;li&gt;&lt;b&gt;SUB&lt;/b&gt; - Subtract A and B and store the result in C &lt;/li&gt;&lt;li&gt;&lt;b&gt;MUL&lt;/b&gt; - Multiply A and B and store the result in C &lt;/li&gt;&lt;li&gt;&lt;b&gt;DIV&lt;/b&gt; - Divide A and B and store the result in C &lt;/li&gt;&lt;li&gt;&lt;b&gt;COM&lt;/b&gt; - Compare A and B and store the result in test &lt;/li&gt;&lt;li&gt;&lt;b&gt;JUMP addr&lt;/b&gt; - Jump to an address &lt;/li&gt;&lt;li&gt;&lt;b&gt;JEQ addr&lt;/b&gt; - Jump, if equal, to address &lt;/li&gt;&lt;li&gt;&lt;b&gt;JNEQ&lt;/b&gt; addr - Jump, if not equal, to address &lt;/li&gt;&lt;li&gt;&lt;b&gt;JG addr&lt;/b&gt; - Jump, if greater than, to address &lt;/li&gt;&lt;li&gt;&lt;b&gt;JGE addr&lt;/b&gt; - Jump, if greater than or equal, to address &lt;/li&gt;&lt;li&gt;&lt;b&gt;JL addr&lt;/b&gt; - Jump, if less than, to address &lt;/li&gt;&lt;li&gt;&lt;b&gt;JLE addr&lt;/b&gt; - Jump, if less than or equal, to address &lt;/li&gt;&lt;li&gt;&lt;b&gt;STOP&lt;/b&gt; - Stop execution &lt;/li&gt;&lt;/ul&gt; If you have read &lt;a href="http://www.howstuffworks.com/c.htm"&gt;How C Programming Works&lt;/a&gt;, then you know that this simple piece of C code will calculate the factorial of 5 (where the factorial of 5 = 5! = 5 * 4 * 3 * 2 * 1 = 120): &lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;span style="color:blue;"&gt; &lt;pre&gt;a=1;&lt;br /&gt;f=1;&lt;br /&gt;while (a &lt;= 5)&lt;br /&gt;{&lt;br /&gt;   f = f * a;&lt;br /&gt;   a = a + 1;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt; &lt;/span&gt;&lt;/ul&gt; &lt;p&gt; At the end of the program's execution, the variable &lt;b&gt;f&lt;/b&gt; contains the factorial of 5. &lt;/p&gt;&lt;p&gt; &lt;b&gt; Assembly Language&lt;/b&gt;&lt;br /&gt;A &lt;b&gt;C compiler&lt;/b&gt; translates this C code into assembly language. Assuming that RAM starts at address 128 in this processor, and ROM (which contains the assembly language program) starts at address 0, then for our simple microprocessor the assembly language might look like this: &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;span style="color:blue;"&gt; &lt;pre&gt;// Assume a is at address 128&lt;br /&gt;// Assume F is at address 129&lt;br /&gt;0   CONB 1      // a=1;&lt;br /&gt;1   SAVEB 128&lt;br /&gt;2   CONB 1      // f=1;&lt;br /&gt;3   SAVEB 129&lt;br /&gt;4   LOADA 128   // if a &gt; 5 the jump to 17&lt;br /&gt;5   CONB 5&lt;br /&gt;6   COM&lt;br /&gt;7   JG 17&lt;br /&gt;8   LOADA 129   // f=f*a;&lt;br /&gt;9   LOADB 128&lt;br /&gt;10  MUL&lt;br /&gt;11  SAVEC 129&lt;br /&gt;12  LOADA 128   // a=a+1;&lt;br /&gt;13  CONB 1&lt;br /&gt;14  ADD&lt;br /&gt;15  SAVEC 128&lt;br /&gt;16  JUMP 4       // loop back to if&lt;br /&gt;17  STOP&lt;br /&gt;&lt;/pre&gt; &lt;/span&gt;&lt;/ul&gt; &lt;p&gt; &lt;b&gt;ROM&lt;/b&gt;&lt;br /&gt;So now the question is, "How do all of these instructions look in ROM?" Each of these assembly language instructions must be represented by a binary number. For the sake of simplicity, let's assume each assembly language instruction is given a unique number, like this: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;LOADA - 1 &lt;/li&gt;&lt;li&gt;LOADB - 2 &lt;/li&gt;&lt;li&gt;CONB - 3 &lt;/li&gt;&lt;li&gt;SAVEB - 4 &lt;/li&gt;&lt;li&gt;SAVEC mem - 5 &lt;/li&gt;&lt;li&gt;ADD - 6 &lt;/li&gt;&lt;li&gt;SUB - 7 &lt;/li&gt;&lt;li&gt;MUL - 8 &lt;/li&gt;&lt;li&gt;DIV - 9 &lt;/li&gt;&lt;li&gt;COM - 10 &lt;/li&gt;&lt;li&gt;JUMP addr - 11 &lt;/li&gt;&lt;li&gt;JEQ addr - 12 &lt;/li&gt;&lt;li&gt;JNEQ addr - 13 &lt;/li&gt;&lt;li&gt;JG addr - 14 &lt;/li&gt;&lt;li&gt;JGE addr - 15 &lt;/li&gt;&lt;li&gt;JL addr - 16 &lt;/li&gt;&lt;li&gt;JLE addr - 17 &lt;/li&gt;&lt;li&gt;STOP - 18 &lt;/li&gt;&lt;/ul&gt; The numbers are known as &lt;b&gt;opcodes&lt;/b&gt;. In ROM, our little program would look like this: &lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;span style="color:blue;"&gt; &lt;pre&gt;// Assume a is at address 128&lt;br /&gt;// Assume F is at address 129&lt;br /&gt;Addr opcode/value&lt;br /&gt;0    3             // CONB 1&lt;br /&gt;1    1&lt;br /&gt;2    4             // SAVEB 128&lt;br /&gt;3    128&lt;br /&gt;4    3             // CONB 1&lt;br /&gt;5    1&lt;br /&gt;6    4             // SAVEB 129&lt;br /&gt;7    129&lt;br /&gt;8    1             // LOADA 128&lt;br /&gt;9    128&lt;br /&gt;10   3             // CONB 5&lt;br /&gt;11   5&lt;br /&gt;12   10            // COM&lt;br /&gt;13   14            // JG 17&lt;br /&gt;14   31&lt;br /&gt;15   1             // LOADA 129&lt;br /&gt;16   129&lt;br /&gt;17   2             // LOADB 128&lt;br /&gt;18   128&lt;br /&gt;19   8             // MUL&lt;br /&gt;20   5             // SAVEC 129&lt;br /&gt;21   129&lt;br /&gt;22   1             // LOADA 128&lt;br /&gt;23   128&lt;br /&gt;24   3             // CONB 1&lt;br /&gt;25   1&lt;br /&gt;26   6             // ADD&lt;br /&gt;27   5             // SAVEC 128&lt;br /&gt;28   128&lt;br /&gt;29   11            // JUMP 4&lt;br /&gt;30   8&lt;br /&gt;31   18            // STOP&lt;br /&gt;&lt;/pre&gt; &lt;/span&gt;&lt;/ul&gt; &lt;p&gt; You can see that seven lines of C code became 18 lines of assembly language, and that became 32 bytes in ROM. &lt;/p&gt;&lt;p&gt; &lt;b&gt;Decoding&lt;/b&gt;&lt;br /&gt;The instruction decoder needs to turn each of the opcodes into a set of signals that drive the different components inside the microprocessor. Let's take the ADD instruction as an example and look at what it needs to do: &lt;/p&gt;&lt;ol&gt;&lt;li&gt;During the first clock cycle, we need to actually load the instruction. Therefore the instruction decoder needs to: &lt;ul type="disc"&gt;&lt;li&gt;activate the tri-state buffer for the program counter &lt;/li&gt;&lt;li&gt;activate the RD line &lt;/li&gt;&lt;li&gt;activate the data-in tri-state buffer &lt;/li&gt;&lt;li&gt;latch the instruction into the instruction register &lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;li&gt;During the second clock cycle, the ADD instruction is decoded. It needs to do very little: &lt;ul type="disc"&gt;&lt;li&gt;set the operation of the ALU to addition &lt;/li&gt;&lt;li&gt;latch the output of the ALU into the C register &lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;li&gt;During the third clock cycle, the program counter is incremented (in theory this could be overlapped into the second clock cycle). &lt;/li&gt;&lt;/ol&gt;Every instruction can be broken down as a set of sequenced operations like these that manipulate the components of the microprocessor in the proper order. Some instructions, like this ADD instruction, might take two or three clock cycles. Others might take five or six clock cycles.&lt;br /&gt;&lt;br /&gt;              &lt;h1 class="articlePageTitle"&gt;Microprocessor Performance and Trends&lt;/h1&gt;  &lt;!-- dtl_id=7578 //--&gt; The number of &lt;b&gt;transistors&lt;/b&gt; available has a huge effect on the performance of a processor. As seen earlier, a typical instruction in a processor like an 8088 took 15 clock cycles to execute. Because of the design of the multiplier, it took approximately 80 cycles just to do one 16-bit multiplication on the 8088. With more transistors, much more powerful multipliers capable of single-cycle speeds become possible. &lt;p&gt; More transistors also allow for a technology called &lt;b&gt;pipelining&lt;/b&gt;. In a pipelined architecture, instruction execution overlaps. So even though it might take five clock cycles to execute each instruction, there can be five instructions in various stages of execution simultaneously. That way it looks like one instruction completes every clock cycle. &lt;/p&gt;&lt;p&gt;Many modern processors have multiple instruction decoders, each with its own pipeline. This allows for multiple instruction streams, which means that more than one instruction can complete during each clock cycle. This technique can be quite complex to implement, so it takes lots of transistors. &lt;/p&gt;&lt;p&gt; &lt;b&gt;Trends&lt;/b&gt;&lt;br /&gt;The trend in processor design has primarily been toward full 32-bit ALUs with fast floating point processors built in and pipelined execution with multiple instruction streams. The newest thing in processor design is 64-bit ALUs, and people are expected to have these processors in their home PCs in the next decade. There has also been a tendency toward special instructions (like the MMX instructions) that make certain operations particularly efficient, and the addition of hardware &lt;a href="http://www.howstuffworks.com/virtual-memory.htm"&gt;virtual memory&lt;/a&gt; support and L1 &lt;a href="http://www.howstuffworks.com/cache.htm"&gt;caching&lt;/a&gt; on the processor chip. All of these trends push up the transistor count, leading to the multi-million transistor powerhouses available today. These processors can execute about one billion instructions per second!&lt;br /&gt;&lt;/p&gt;&lt;h1 class="articlePageTitle"&gt;64-bit Microprocessors&lt;/h1&gt;  &lt;!-- dtl_id=30798 //--&gt; Sixty-four-bit processors have been with us since 1992, and in the 21st century they have started to become mainstream. Both Intel and AMD have introduced 64-bit chips, and the Mac G5 sports a 64-bit processor. Sixty-four-bit processors have 64-bit ALUs, 64-bit registers, 64-bit buses and so on. &lt;p&gt; &lt;/p&gt;&lt;table align="center" cellpadding="3" cellspacing="0" width="430"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:arial,helvetica;"&gt;  &lt;center&gt;&lt;img src="http://static.howstuffworks.com/gif/microprocessor-athlon-64.jpg" /&gt;&lt;br /&gt;&lt;span style="font-size:-2;"&gt;Photo courtesy &lt;a href="http://www.howstuffworks.com/framed.htm?parent=microprocessor.htm&amp;amp;url=http://www.amd.com/us-en/" target="_blank&amp;quot;"&gt;AMD&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;/center&gt; &lt;/span&gt; &lt;/td&gt;&lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;p&gt; One reason why the world needs 64-bit processors is because of their &lt;b&gt;enlarged address spaces&lt;/b&gt;. Thirty-two-bit chips are often constrained to a maximum of 2 &lt;a href="http://www.howstuffworks.com/bytes4.htm"&gt;GB&lt;/a&gt; or 4 GB of &lt;a href="http://www.howstuffworks.com/ram.htm"&gt;RAM access&lt;/a&gt;. That sounds like a lot, given that most home computers currently use only 256 MB to 512 MB of RAM. However, a 4-GB limit can be a severe problem for &lt;a href="http://www.howstuffworks.com/web-server.htm"&gt;server&lt;/a&gt; machines and machines running large databases. And even &lt;a href="http://www.howstuffworks.com/pc.htm"&gt;home machines&lt;/a&gt; will start bumping up against the 2 GB or 4 GB limit pretty soon if current trends continue. A 64-bit chip has none of these constraints because a 64-bit RAM address space is essentially infinite for the foreseeable future -- 2^64 bytes of RAM is something on the order of a billion gigabytes of RAM. &lt;/p&gt;&lt;p&gt; With a 64-bit address bus and wide, high-speed data buses on the &lt;a href="http://www.howstuffworks.com/motherboard.htm"&gt;motherboard&lt;/a&gt;, 64-bit machines also offer faster I/O (input/output) speeds to things like &lt;a href="http://www.howstuffworks.com/hard-disk.htm"&gt;hard disk drives&lt;/a&gt; and &lt;a href="http://www.howstuffworks.com/graphics-card.htm"&gt;video cards&lt;/a&gt;. These features can greatly increase system performance. &lt;/p&gt;&lt;p&gt;Servers can definitely benefit from 64 bits, but what about normal users? Beyond the RAM solution, it is not clear that a 64-bit chip offers "normal users" any real, tangible benefits at the moment. They can process data (very complex data features lots of real numbers) faster. People doing &lt;a href="http://www.howstuffworks.com/video-editing.htm"&gt;video editing&lt;/a&gt; and people doing photographic editing on very large images benefit from this kind of computing power. High-end games will also benefit, once they are re-coded to take advantage of 64-bit features. But the average user who is reading &lt;a href="http://www.howstuffworks.com/email.htm"&gt;e-mail&lt;/a&gt;, browsing the Web and editing Word documents is not really using the processor in that way.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8136767800267856096-3910963449929081452?l=mydigital-garage.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mydigital-garage.blogspot.com/feeds/3910963449929081452/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mydigital-garage.blogspot.com/2009/02/how-microprocessors-work.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8136767800267856096/posts/default/3910963449929081452'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8136767800267856096/posts/default/3910963449929081452'/><link rel='alternate' type='text/html' href='http://mydigital-garage.blogspot.com/2009/02/how-microprocessors-work.html' title='How Microprocessors Work'/><author><name>PRITAM</name><uri>http://www.blogger.com/profile/02799170102757192497</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_apr7HBF_hu4/SMgQ-hsQcMI/AAAAAAAAAII/hu8eIXG9oAw/S220/1212120.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_apr7HBF_hu4/Salhvnp5z1I/AAAAAAAAAPo/Ht17DkCP-mc/s72-c/1111111111.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8136767800267856096.post-7753928915485723755</id><published>2009-02-28T07:54:00.000-08:00</published><updated>2009-02-28T08:00:12.285-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='How WiFi Detectors Work'/><title type='text'>How WiFi Detectors Work</title><content type='html'>&lt;p&gt;Hotspot: This trendy term has taken the Internet-addicted population by storm. If you're not very tech-savvy and aren't familiar with it, take a look when you stroll by cafes and restaurants or the next time you go to the airport. You'll probably see signs letting people know that the location is a &lt;strong&gt;WiFi hotspot&lt;/strong&gt;. You'll also probably notice several preoccupied people with noses buried in their laptops. A WiFi hotspot is simply a place where you can access wireless Internet. In the past few years, WiFi access has seeped into more and more places and facilities.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;WiFi access has become so prevalent that it's turned many people into laptop-toting, Internet hunters on the prowl for a signal everywhere they travel. When they reach a place that fits the typical characteristics -- sells books or coffee and has tables or comfy chairs -- they can pretty safely expect to find a WiFi signal. But now that many buildings, college campuses and other kinds of facilities are adopting WiFi, the hunt for a signal is getting more interesting.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;table class="sideBoxLeft"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="titleGray"&gt;More Travel Gadgets&lt;br /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://electronics.howstuffworks.com/gadgets/travel/icache.htm"&gt;iCache&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://electronics.howstuffworks.com/gadgets/travel/satellite-internet-receivers.htm"&gt;Satellite Internet Receivers&lt;br /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://electronics.howstuffworks.com/gadgets/travel/gps.htm"&gt;GPS Receivers&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;­Unlike coffee shops that want to attract more customers, other facilities may not make it very obvious if they have a WiFi signal. In this way, the search has become more challenging. There's nothing more frustrating than taking o­ut and booting up your laptop only to find that there's no signal. You'll have to pack up all your stuff, move on and try again. Some poor souls desperate for a signal will wander aimlessly with their laptops open waiting for a sign of wireless life.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;After all this rigmarole, you've wasted time, patience and precious laptop battery power. Fortunately, however, there's an alternative. Certain devices have emerged that will help relieve the wandering wireless syndrome: &lt;strong&gt;WiFi detectors&lt;/strong&gt;. Next, we'll explore the technology behind these useful travel gadgets.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h1 class="articlePageTitle"&gt;Mechanics of WiFi Detectors&lt;/h1&gt;  &lt;!-- dtl_id=717935 //--&gt;  &lt;div style="float: right; width: 300px; text-align: center; padding-bottom: 3px;"&gt;&lt;img src="http://static.howstuffworks.com/gif/wifi-detectors-2.jpg" alt="mechanics of wifi detectors" width="300" height="300" /&gt;&lt;br /&gt;&lt;span class="credit"&gt;©&lt;a href="http://howstuffworks.com/framed.htm?parent=gadgets/travel/wifi-detectors.htm&amp;amp;url=http://istockphoto.com/index.php"&gt;iStockPhoto&lt;/a&gt;/sambrogio&lt;/span&gt;&lt;br /&gt;&lt;span class="caption"&gt;This wireless router emits a signal that a WiFi detector is tuned to pick up. &lt;/span&gt;&lt;/div&gt;&lt;p&gt;A wireless signal can travel only so far. Specifically, a typic­al signal can extend as far as 1,000 feet (304.8 meters) in an unobstructed, open area and about 300 feet (91.44 meters) in a closed area that has obstructions [source: &lt;a href="http://howstuffworks.com/framed.htm?parent=wifi-detectors.htm&amp;amp;url=http://www.freepatentsonline.com/20050176420.pdf"&gt;Graves&lt;/a&gt;]. Because the signals themselves are invisible and the &lt;strong&gt;access points&lt;/strong&gt; (routers) that emit them are usually hidden, a WiFi detector can be a handy tool. WiFi detectors are basically just gadgets that can quickly and easily tell you whether you're around a WiFi signal.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;Before we can understand the mechanics of WiFi detectors, let's take a quick look at wireless Internet. Although wireless Internet travels in waves similar to radio waves, it travels on very different frequencies. It actually travels on frequencies significantly higher than those of other common devices, such as cell phones. These frequencies that carry wireless Internet fall into the ranges of 2.4 GHz or 5 GHz, depending on the standard used.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;In order to standardize the wireless Internet process, a group called the &lt;strong&gt;Institute of Electrical and Electronics Engineers&lt;/strong&gt; (&lt;strong&gt;IEEE&lt;/strong&gt;) has specified &lt;strong&gt;802.11&lt;/strong&gt; as the group of networking standards it uses. Such standards specify how data travels through the waves. Different letter-signifiers further specify the set of standards. Some common ones are 802.11b and 802.11g, both of which use the 2.4-GHz band. Within the 2.4-GHz band, you have specific &lt;strong&gt;channels&lt;/strong&gt;. In the United States, wireless Internet has 11 available channels on the 2.4-GHz band (other countries may have fewer or as many as 14).&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;table class="sideBoxRight"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="titleBlue"&gt;Why WiFi?&lt;br /&gt;&lt;/div&gt;&lt;div class="body"&gt;The name "WiFi" doesn't really stand for anything. Rather, it's a play on the term "hi-fi," which stands for high fidelity, an audio term for music recordings that faithfully recreate the sound of original performances.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;The detector's job is to pick up on the waves with frequencies meant for transmitting wireless Internet. To accomplish this task, the antenna must be designed to receive the right kind of signals. Much like the antenna on your car radio is tuned to pick up on a specific range of frequencies (and not, say, frequencies that carry police communications), the antenna on a WiFi detector is tuned to pick up only on the specific band that carries wireless Internet. If you examine the specifics of detectors, many will list that they're meant for picking up 802.11b and 802.11g networks.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;Antennas alone, however, wouldn't make very useful travel gadgets. A detector must have some sort of interface for alerting you when it does pick up on the right signals. Many will also gauge just how strong the signal is and convey that to you. In addition, many modern WiFi detectors also come with processers that allow them to demodulate (or process) the data to give you some valuable information before you decide to set up camp with your laptop.&lt;/p&gt;&lt;div class="articleBody"&gt;  &lt;h1 class="articlePageTitle"&gt;Using WiFi Detectors&lt;/h1&gt;  &lt;!-- dtl_id=717937 //--&gt;  &lt;p&gt; &lt;/p&gt;  &lt;div style="float: right; width: 300px; text-align: center; padding-bottom: 3px;"&gt;&lt;img alt="using wifi detectors" src="http://static.howstuffworks.com/gif/wifi-detectors-3.jpg" width="300" height="300" /&gt;&lt;br /&gt;&lt;span class="credit"&gt;Image courtesy &lt;a href="http://howstuffworks.com/framed.htm?parent=gadgets/travel/wifi-detectors.htm&amp;amp;url=http://targus.com/"&gt;Targus&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="caption"&gt;Some WiFi detectors are small and light enough to use on a keychain.&lt;/span&gt;&lt;/div&gt;&lt;p&gt;As we mentioned, all WiFi detectors have interfaces that somehow inform you if a wireless signal is present. Apart from this basic function, however, all detectors are different. Manufacturers have come up with many methods for conveying the information to the user, and some of these gadgets are able to provide more information than others. &lt;/p&gt;&lt;p&gt; &lt;/p&gt;  &lt;p&gt;Many use LED lights, for instance. These typically light up in a scale fashion, where a single light indicates a weak signal, and more light up in sequence as the signal gets stronger. More advanced detectors use an LCD screen to display some useful information. Not only will it tell you the degree of signal strength, but perhaps also the &lt;strong&gt;SSID&lt;/strong&gt; (&lt;strong&gt;Service Set Identifier&lt;/strong&gt;), which is basically the name of the network. This would alert you to whether the wireless signal it's picking up is coming from your own home network or the neighbor's.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;Detectors might also list the operating channel on which the network is working. This is helpful for reducing interference. It turns out that multiple networks working within the same proximity in the 2.4-GHz band can cause interference for each other. If you remember from the previous page, the 2.4-GHz band has 11 available channels in the United States. Interference can be reduced by spreading WiFi networks farther apart across the channel numbers. Thus, if your detector informs you that your neighbor's network is using channel 6, tune your router to channel 1 or 11.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;When using WiFi detectors, remember that they run on batteries (usually AAA), so don't leave them on when you're not using them. Many include an indicator of battery that lets you know if it's in need of a replacement soon. Some actually have different settings that allow you to control the battery consumption or let you plug into your computer's USB port to charge [source: &lt;a href="http://howstuffworks.com/framed.htm?parent=wifi-detectors.htm&amp;amp;url=http://www.computerpoweruser.com/editorial/article.asp?article=articles%2Farchive%2Fc0801%2F11a01%2F11a01.asp"&gt;Dickey&lt;/a&gt;].&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;table class="sideBoxRight"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="titleBlue"&gt;Sending Fashion Signals&lt;br /&gt;&lt;/div&gt;&lt;div class="body"&gt;One of the most interesting applications for this Internet-hunting technology has to be the WiFi-detecting T-shirt. This shirt has light-up features that depict the strength of nearby 802.11b and 802.11g networks [source: &lt;a href="http://howstuffworks.com/framed.htm?parent=wifi-detectors.htm&amp;amp;url=http://www.thinkgeek.com/tshirts-apparel/interactive/991e/"&gt;ThinkGeek&lt;/a&gt;].&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;­Another helpful feature is that some detectors can tell you if the signal is &lt;strong&gt;encrypted&lt;/strong&gt; (secured). If it's encrypted, you'll need a password to use it. Unfortunately, some people who travel around looking for unencrypted wireless signals might use this feature against you. When you leave your network unencrypted, freeloaders might snoop into your Internet activities or perform illegal downloads (such as music sharing). Authorities looking for the perpetrators could trace these downloads to your network, and you could get wrapped up in legal frustrations even if they can't ultimately pin the fault on you. So, it's important to keep your wireless network secure and encrypted with password protection.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;Overall, when you travel with a laptop, a WiFi detector can be one of the handiest travel gadgets to bring with you. You can even get a small keychain version to ensure you never leave home without it.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8136767800267856096-7753928915485723755?l=mydigital-garage.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mydigital-garage.blogspot.com/feeds/7753928915485723755/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mydigital-garage.blogspot.com/2009/02/how-wifi-detectors-work.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8136767800267856096/posts/default/7753928915485723755'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8136767800267856096/posts/default/7753928915485723755'/><link rel='alternate' type='text/html' href='http://mydigital-garage.blogspot.com/2009/02/how-wifi-detectors-work.html' title='How WiFi Detectors Work'/><author><name>PRITAM</name><uri>http://www.blogger.com/profile/02799170102757192497</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_apr7HBF_hu4/SMgQ-hsQcMI/AAAAAAAAAII/hu8eIXG9oAw/S220/1212120.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8136767800267856096.post-5076793952659007269</id><published>2009-02-06T08:55:00.000-08:00</published><updated>2009-02-06T09:02:43.794-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='How Web Servers Work'/><title type='text'>How Web Servers Work </title><content type='html'>&lt;p&gt;Have you ever wondered about the mechanisms that delivered this page to you? Chances are you are sitting at a &lt;a href="http://computer.howstuffworks.com/pc.htm"&gt;computer&lt;/a&gt; right now, viewing this page in a browser. So, when you clicked on the link for this page, or typed in its URL (&lt;strong&gt;uniform resource locator&lt;/strong&gt;), what happened behind the scenes to bring this page onto your &lt;a href="http://computer.howstuffworks.com/monitor.htm"&gt;screen&lt;/a&gt;?      &lt;/p&gt;   &lt;table class="sideBoxLeft"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span&gt;&lt;span style="font-family:arial,helvetica;"&gt;&lt;a href="http://computer.howstuffworks.com/enlarge-image.htm?terms=Web+Server&amp;amp;page=0&amp;amp;gallery=1"&gt;&lt;img src="http://static.howstuffworks.com/gif/web-server-intro.jpg" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;If you've ever been curious about the process, or have ever wanted to know some of the specific mechanisms that allow you to surf the Internet, then read on. In this article, you will learn how Web servers bring pages into your home, school or office. Let's get started!&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h1 class="articlePageTitle"&gt;The Basic Process&lt;/h1&gt; 	&lt;!-- dtl_id=9933 //--&gt; &lt;div class="sideBarRight"&gt;&lt;div class="title" align="center"&gt;Quiz Corner&lt;br /&gt;&lt;/div&gt;&lt;div class="body"&gt;How much you know about web servers and what they do? Test your knowledge with our &lt;a href="http://computer.howstuffworks.com/web-server-quiz.htm"&gt;&lt;span style="text-decoration: underline;"&gt;&lt;span style="font-weight: bold;"&gt;Web Server&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;strong&gt;&lt;a target="_blank"&gt; Quiz&lt;/a&gt;&lt;/strong&gt;!&lt;/div&gt;&lt;/div&gt;&lt;p&gt; Let's say that you are sitting at your computer, surfing the Web, and you get a call from a friend who says, "I just read a great article! Type in this URL and check it out. It's at http://www.howstuffworks.com/web-server.htm." So you type that URL into your browser and press return. And magically, no matter where in the world that URL lives, the page pops up on your screen. &lt;/p&gt;&lt;p&gt; At the most basic level possible, the following diagram shows the steps that brought that page to your screen: &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;table width="400" align="center" cellpadding="3" cellspacing="0"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:arial,helvetica;"&gt; &lt;center&gt;&lt;img src="http://static.howstuffworks.com/gif/webserver-basic-sm.gif" /&gt;&lt;br /&gt;&lt;/center&gt;&lt;/span&gt; &lt;/td&gt;&lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;p&gt; Your browser formed a connection to a Web server, requested a page and received it.&lt;br /&gt;&lt;/p&gt;&lt;h1 class="articlePageTitle"&gt;Behind the Scenes&lt;/h1&gt; 	&lt;!-- dtl_id=9935 //--&gt; If you want to get into a bit more detail on the process of getting a Web page onto your computer screen, here are the basic steps that occurred behind the scenes: &lt;ul&gt;&lt;li&gt;The browser broke the URL into three parts: &lt;ol&gt;&lt;li&gt;The protocol ("http") &lt;/li&gt;&lt;li&gt;The server name ("www.howstuffworks.com") &lt;/li&gt;&lt;li&gt;The file name ("web-server.htm") &lt;/li&gt;&lt;/ol&gt; &lt;p&gt; &lt;/p&gt;&lt;/li&gt;&lt;li&gt;The browser communicated with a &lt;a href="http://www.howstuffworks.com/dns.htm"&gt;name server&lt;/a&gt; to translate the server name "www.howstuffworks.com" into an &lt;b&gt;IP Address&lt;/b&gt;, which it uses to connect to the server machine. &lt;p&gt; &lt;/p&gt;&lt;/li&gt;&lt;li&gt;The browser then formed a connection to the server at that IP address on port 80. (We'll discuss ports later in this article.) &lt;p&gt; &lt;/p&gt;&lt;/li&gt;&lt;li&gt;Following the HTTP protocol, the browser sent a GET request to the server, asking for the file "http://www.howstuffworks.com/web-server.htm." (Note that &lt;b&gt;cookies&lt;/b&gt; may be sent from browser to server with the GET request -- see &lt;a href="http://www.howstuffworks.com/cookie.htm"&gt;How Internet Cookies Work&lt;/a&gt; for details.) &lt;p&gt; &lt;/p&gt;&lt;/li&gt;&lt;li&gt;The server then sent the &lt;a href="http://www.howstuffworks.com/web-page.htm"&gt;HTML text&lt;/a&gt; for the Web page to the browser. (&lt;a href="http://www.howstuffworks.com/cookie.htm"&gt;Cookies&lt;/a&gt; may also be sent from server to browser in the header for the page.) &lt;p&gt; &lt;/p&gt;&lt;/li&gt;&lt;li&gt;The browser read the &lt;a href="http://www.howstuffworks.com/web-page.htm"&gt;HTML tags&lt;/a&gt; and formatted the page onto your screen. &lt;/li&gt;&lt;/ul&gt; If you've never explored this process before, that's a lot of new vocabulary. To understand this whole process in detail, you need to learn about IP addresses, ports, protocols... The following sections will lead you through a complete explanation.&lt;br /&gt;&lt;br /&gt;&lt;h1 class="articlePageTitle"&gt;The Internet&lt;/h1&gt; 	&lt;!-- dtl_id=9937 //--&gt;  So what is "the Internet"? The Internet is a gigantic collection of millions of computers, all linked together on a &lt;b&gt;computer network&lt;/b&gt;. The network allows all of the computers to communicate with one another. A home computer may be linked to the Internet using a &lt;a href="http://www.howstuffworks.com/modem.htm"&gt;phone-line modem&lt;/a&gt;, &lt;a href="http://www.howstuffworks.com/dsl.htm"&gt;DSL&lt;/a&gt; or &lt;a href="http://www.howstuffworks.com/cable-modem.htm"&gt;cable modem&lt;/a&gt; that talks to an Internet service provider (&lt;b&gt;ISP&lt;/b&gt;). A computer in a business or university will usually have a network interface card (&lt;b&gt;NIC&lt;/b&gt;) that directly connects it to a &lt;a href="http://www.howstuffworks.com/lan-switch.htm"&gt;local area network&lt;/a&gt; (&lt;b&gt;LAN&lt;/b&gt;) inside the business. The business can then connect its LAN to an ISP using a high-speed phone line like a &lt;b&gt;T1 line&lt;/b&gt;. A &lt;a href="http://www.howstuffworks.com/question372.htm"&gt;T1 line&lt;/a&gt; can handle approximately 1.5 million bits per second, while a normal phone line using a modem can typically handle 30,000 to 50,000 bits per second. &lt;p&gt; ISPs then connect to larger ISPs, and the largest ISPs maintain &lt;a href="http://www.howstuffworks.com/fiber-optic.htm"&gt;fiber-optic&lt;/a&gt; "backbones" for an entire nation or region. Backbones around the world are connected through fiber-optic lines, undersea cables or &lt;a href="http://www.howstuffworks.com/satellite.htm"&gt;satellite&lt;/a&gt; links (see &lt;a href="http://www.howstuffworks.com/framed.htm?parent=web-server.htm&amp;amp;url=http://www.geog.ucl.ac.uk/casa/martin/atlas/isp_maps.html"&gt;An Atlas of Cyberspaces&lt;/a&gt; for some interesting backbone maps). In this way, every computer on the Internet is connected to every other computer on the Internet. &lt;/p&gt;&lt;p&gt; &lt;/p&gt; &lt;span style="font-family:arial,helvetica;"&gt; &lt;center&gt;&lt;img src="http://static.howstuffworks.com/gif/webserver-backbone-sm.gif" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h1 class="articlePageTitle"&gt;Clients and Servers&lt;/h1&gt; 	&lt;!-- dtl_id=9939 //--&gt; In general, all of the machines on the Internet can be categorized as two types: servers and clients. Those machines that provide services (like Web servers or FTP servers) to other machines are &lt;b&gt;servers&lt;/b&gt;. And the machines that are used to connect to those services are &lt;b&gt;clients&lt;/b&gt;. When you connect to Yahoo! at www.yahoo.com to read a page, Yahoo! is providing a machine (probably a cluster of very large machines), for use on the Internet, to service your request. Yahoo! is providing a server. Your machine, on the other hand, is probably providing no services to anyone else on the Internet. Therefore, it is a user machine, also known as a client. It is possible and common for a machine to be both a server and a client, but for our purposes here you can think of most machines as one or the other. &lt;p&gt;A server machine may provide one or more services on the Internet. For example, a server machine might have software running on it that allows it to act as a Web server, an &lt;a href="http://www.howstuffworks.com/email.htm"&gt;e-mail&lt;/a&gt; server and an &lt;a href="http://www.howstuffworks.com/framed.htm?parent=web-server.htm&amp;amp;url=http://www.webopedia.com/TERM/F/FTP.html"&gt;FTP&lt;/a&gt; server. Clients that come to a server machine do so with a specific intent, so clients direct their requests to a specific software server running on the overall server machine. For example, if you are running a Web browser on your machine, it will most likely want to talk to the Web server on the server machine. Your &lt;a href="http://www.howstuffworks.com/framed.htm?parent=web-server.htm&amp;amp;url=http://www.webopedia.com/TERM/T/Telnet.html"&gt;Telnet&lt;/a&gt; application will want to talk to the Telnet server, your e-mail application will talk to the e-mail server, and so on...&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;/center&gt;&lt;/span&gt;&lt;h1 class="articlePageTitle"&gt;IP Addresses&lt;/h1&gt; 	&lt;!-- dtl_id=9941 //--&gt;  To keep all of these machines straight, each machine on the Internet is assigned a unique address called an &lt;b&gt;IP address&lt;/b&gt;. IP stands for &lt;b&gt;Internet protocol&lt;/b&gt;, and these addresses are &lt;a href="http://www.howstuffworks.com/bytes.htm"&gt;32-bit numbers&lt;/a&gt;, normally expressed as four "octets" in a "dotted decimal number." A typical IP address looks like this: &lt;p&gt; &lt;span style="color:blue;"&gt; &lt;pre&gt;          216.27.61.137&lt;br /&gt;&lt;/pre&gt; &lt;/span&gt; &lt;/p&gt;&lt;p&gt; The four numbers in an IP address are called &lt;b&gt;octets&lt;/b&gt; because they can have values between 0 and 255, which is 2&lt;sup&gt;&lt;span style="font-size:-2;"&gt;8&lt;/span&gt;&lt;/sup&gt; possibilities per octet. &lt;/p&gt;&lt;p&gt; Every machine on the Internet has a unique IP address. A server has a static IP address that does not change very often. A home machine that is dialing up through a modem often has an IP address that is assigned by the ISP when the machine dials in. That IP address is unique for that session -- it may be different the next time the machine dials in. This way, an ISP only needs one IP address for each modem it supports, rather than for each customer. &lt;/p&gt;&lt;p&gt;If you are working on a Windows machine, you can view a lot of the Internet information for your machine, including your current IP address and hostname, with the command &lt;b&gt;WINIPCFG.EXE&lt;/b&gt; (IPCONFIG.EXE for Windows 2000/XP). On a UNIX machine, type &lt;b&gt;nslookup&lt;/b&gt; at the command prompt, along with a machine name, like www.howstuffworks.com -- e.g. "nslookup www.howstuffworks.com" -- to display the IP address of the machine, and you can use the command &lt;b&gt;hostname&lt;/b&gt; to learn the name of your machine. (For more information on IP addresses, see &lt;a href="http://www.howstuffworks.com/framed.htm?parent=web-server.htm&amp;amp;url=http://www.iana.org"&gt;IANA&lt;/a&gt;.) &lt;/p&gt; As far as the Internet's machines are concerned, an IP address is all you need to talk to a server. For example, in your browser, you can type the URL &lt;b&gt;http://209.116.69.66&lt;/b&gt; and arrive at the machine that contains the Web server for HowStuffWorks. On some servers, the IP address alone is not sufficient, but on most large servers it is --&lt;br /&gt;&lt;br /&gt;&lt;h1 class="articlePageTitle"&gt;Domain Names&lt;/h1&gt; 	&lt;!-- dtl_id=9943 //--&gt; Because most people have trouble remembering the strings of numbers that make up IP addresses, and because IP addresses sometimes need to change, all servers on the Internet also have human-readable names, called &lt;strong&gt;domain names&lt;/strong&gt;. For example, &lt;a href="http://www.howstuffworks.com/"&gt;www.howstuffworks.com&lt;/a&gt; is a permanent, human-readable name. It is easier for most of us to remember www.howstuffworks.com than it is to remember 209.116.69.66. &lt;p&gt; The name www.howstuffworks.com actually has three parts: &lt;/p&gt;&lt;ol&gt;&lt;li&gt;The host name ("www") &lt;/li&gt;&lt;li&gt;The domain name ("howstuffworks") &lt;/li&gt;&lt;li&gt;The top-level domain name ("com") &lt;/li&gt;&lt;/ol&gt; &lt;strong&gt;Domain names&lt;/strong&gt; within the ".com" domain are managed by the registrar called &lt;a href="http://computer.howstuffworks.com/framed.htm?parent=web-server.htm&amp;amp;url=http://www.networksolutions.com"&gt;VeriSign&lt;/a&gt;. VeriSign also manages ".net" domain names. Other registrars (like RegistryPro, NeuLevel and Public Interest Registry) manage the other domains (like .pro, .biz and .org). VeriSign creates the top-level domain names and guarantees that all names within a top-level domain are unique. VeriSign also maintains contact information for each site and runs the "whois" database. The host name is created by the company hosting the domain. "www" is a very common host name, but many places now either omit it or replace it with a different host name that indicates a specific area of the site. For example, in &lt;a href="http://computer.howstuffworks.com/framed.htm?parent=web-server.htm&amp;amp;url=http://encarta.msn.com"&gt;encarta.msn.com&lt;/a&gt;, the domain name for Microsoft's Encarta encyclopedia, "encarta" is designated as the host name instead of "www."&lt;br /&gt;&lt;br /&gt;												 	&lt;h1 class="articlePageTitle"&gt;Name Servers&lt;/h1&gt; 	&lt;!-- dtl_id=9945 //--&gt;  &lt;table width="200" align="right" bg border="1" cellpadding="3" cellspacing="0" style="color:lightyellow;"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:arial,helvetica;"&gt; &lt;span style="font-size:+1;color:#000099;"&gt;&lt;center&gt;The whois Command&lt;/center&gt;&lt;/span&gt; &lt;span style="font-size:-1;"&gt;On a UNIX machine, you can use the &lt;b&gt;whois&lt;/b&gt; command to look up information about a domain name. You can do the same thing using the &lt;a href="http://www.howstuffworks.com/framed.htm?parent=web-server.htm&amp;amp;url=http://www.networksolutions.com/cgi-bin/whois/whois"&gt;whois form at VeriSign&lt;/a&gt;. If you type in a domain name, like "howstuffworks.com," it will return to you the registration information for that domain, including its IP address.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; A set of servers called &lt;a href="http://www.howstuffworks.com/dns.htm"&gt;domain name servers&lt;/a&gt; (DNS) maps the human-readable names to the IP addresses. These servers are simple databases that map names to IP addresses, and they are distributed all over the Internet. Most individual companies, ISPs and universities maintain small name servers to map host names to IP addresses. There are also central name servers that use data supplied by VeriSign to map domain names to IP addresses. &lt;p&gt;If you type the URL "http://www.howstuffworks.com/web-server.htm" into your browser, your browser extracts the name "www.howstuffworks.com," passes it to a domain name server, and the domain name server returns the correct IP address for www.howstuffworks.com. A number of name servers may be involved to get the right IP address. For example, in the case of www.howstuffworks.com, the name server for the "com" top-level domain will know the IP address for the name server that knows host names, and a separate query to that name server, operated by the HowStuffWorks ISP, may deliver the actual IP address for the HowStuffWorks server machine. &lt;/p&gt;&lt;p&gt; On a UNIX machine, you can access the same service using the &lt;b&gt;nslookup&lt;/b&gt; command. Simply type a name like "www.howstuffworks.com" into the command line, and the command will query the name servers and deliver the corresponding IP address to you. &lt;/p&gt;&lt;p&gt; So here it is: The Internet is made up of millions of machines, each with a unique IP address. Many of these machines are &lt;b&gt;server machines&lt;/b&gt;, meaning that they provide services to other machines on the Internet. You have heard of many of these servers: e-mail servers, Web servers, FTP servers, Gopher servers and Telnet servers, to name a few. All of these are provided by server machines.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h1 class="articlePageTitle"&gt;Ports&lt;/h1&gt; 	&lt;!-- dtl_id=9947 //--&gt;  Any server machine makes its services available to the Internet using numbered &lt;b&gt;ports&lt;/b&gt;, one for each service that is available on the server. For example, if a server machine is running a Web server and an FTP server, the Web server would typically be available on port 80, and the FTP server would be available on port 21. Clients connect to a service at a specific IP address and on a specific port. &lt;p&gt; Each of the most well-known services is available at a well-known port number. Here are some common port numbers: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;echo 7 &lt;/li&gt;&lt;li&gt;daytime 13 &lt;/li&gt;&lt;li&gt;qotd 17 (Quote of the Day) &lt;/li&gt;&lt;li&gt;ftp 21 &lt;/li&gt;&lt;li&gt;telnet 23 &lt;/li&gt;&lt;li&gt;smtp 25 (Simple Mail Transfer, meaning e-mail) &lt;/li&gt;&lt;li&gt;time 37 &lt;/li&gt;&lt;li&gt;nameserver 53 &lt;/li&gt;&lt;li&gt;nicname 43 (Who Is) &lt;/li&gt;&lt;li&gt;gopher 70 &lt;/li&gt;&lt;li&gt;finger 79 &lt;/li&gt;&lt;li&gt;WWW 80 &lt;/li&gt;&lt;/ul&gt; If the server machine accepts connections on a port from the outside world, and if a &lt;a href="http://www.howstuffworks.com/firewall.htm"&gt;firewall&lt;/a&gt; is not protecting the port, you can connect to the port from anywhere on the Internet and use the service. Note that there is nothing that forces, for example, a Web server to be on port 80. If you were to set up your own machine and load Web server software on it, you could put the Web server on port 918, or any other unused port, if you wanted to. Then, if your machine were known as xxx.yyy.com, someone on the Internet could connect to your server with the URL &lt;b&gt;http://xxx.yyy.com:918&lt;/b&gt;. The ":918" explicitly specifies the port number, and would have to be included for someone to reach your server. When no port is specified, the browser simply assumes that the server is using the well-known port 80.&lt;br /&gt;&lt;br /&gt;&lt;h1 class="articlePageTitle"&gt;Protocols&lt;/h1&gt; 	&lt;!-- dtl_id=9949 //--&gt;  Once a client has connected to a service on a particular port, it accesses the service using a specific protocol. The &lt;b&gt;protocol&lt;/b&gt; is the pre-defined way that someone who wants to use a service talks with that service. The "someone" could be a person, but more often it is a computer program like a Web browser. Protocols are often text, and simply describe how the client and server will have their conversation. &lt;p&gt; Perhaps the simplest protocol is the &lt;b&gt;daytime protocol&lt;/b&gt;. If you connect to port 13 on a machine that supports a daytime server, the server will send you its impression of the current date and time and then close the connection. The protocol is, "If you connect to me, I will send you the date and time and then disconnect." Most UNIX machines support this server. If you would like to try it out, you can connect to one with the Telnet application. In UNIX, the session would look like this: &lt;/p&gt;&lt;p&gt; &lt;span style="color:blue;"&gt; &lt;pre&gt;%telnet web67.ntx.net 13&lt;br /&gt;Trying 216.27.61.137...&lt;br /&gt;Connected to web67.ntx.net.&lt;br /&gt;Escape character is '^]'.&lt;br /&gt;Sun Oct 25 08:34:06 1998&lt;br /&gt;Connection closed by foreign host.&lt;br /&gt;&lt;/pre&gt; &lt;/span&gt; &lt;/p&gt;&lt;p&gt; On a Windows machine, you can access this server by typing "telnet web67.ntx.net 13" at the MSDOS prompt. &lt;/p&gt;&lt;p&gt;In this example, web67.ntx.net is the server's UNIX machine, and 13 is the port number for the daytime service. The Telnet application connects to port 13 (telnet naturally connects to port 23, but you can direct it to connect to any port), then the server sends the date and time and disconnects. Most versions of Telnet allow you to specify a port number, so you can try this using whatever version of Telnet you have available on your machine. &lt;/p&gt;&lt;p&gt;Most protocols are more involved than daytime and are specified in Request for Comment (RFC) documents that are publicly available (see &lt;a href="http://www.howstuffworks.com/framed.htm?parent=web-server.htm&amp;amp;url=http://sunsite.auc.dk/RFC/"&gt;http://sunsite.auc.dk/RFC/&lt;/a&gt; for a nice archive of all RFCs). Every Web server on the Internet conforms to the HTTP protocol, summarized nicely in &lt;a href="http://www.w3.org/Protocols/HTTP/AsImplemented.html"&gt;The Original HTTP as defined in 1991&lt;/a&gt;. The most basic form of the protocol understood by an HTTP server involves just one command: GET. If you connect to a server that understands the HTTP protocol and tell it to "GET filename," the server will respond by sending you the contents of the named file and then disconnecting. Here's a typical session: &lt;/p&gt;&lt;p&gt; &lt;span style="color:blue;"&gt; &lt;pre&gt;%telnet www.howstuffworks.com 80&lt;br /&gt;Trying 216.27.61.137...&lt;br /&gt;Connected to howstuffworks.com.&lt;br /&gt;Escape character is '^]'.&lt;br /&gt;GET http://www.howstuffworks.com/&lt;br /&gt;&lt;html&gt;&lt;br /&gt;&lt;head&gt;&lt;br /&gt;&lt;title&gt;Welcome to How Stuff Works&lt;/title&gt;&lt;br /&gt; ...&lt;br /&gt;&lt;/body&gt;&lt;br /&gt;&lt;/html&gt;&lt;br /&gt;Connection closed by foreign host.&lt;br /&gt;&lt;/pre&gt; &lt;/span&gt; &lt;/p&gt;In the original HTTP protocol, all you would have sent was the actual filename, such as "/" or "/web-server.htm." The protocol was later modified to handle the sending of the complete URL. This has allowed companies that host &lt;b&gt;virtual domains&lt;/b&gt;, where many domains live on a single machine, to use one IP address for all of the domains they host. It turns out that hundreds of domains are hosted on 209.116.69.66 --&lt;br /&gt;&lt;br /&gt;&lt;div class="articleBody"&gt; 	&lt;h1 class="articlePageTitle"&gt;Putting It All Together&lt;/h1&gt; 	&lt;!-- dtl_id=33694 //--&gt; Now you know a tremendous amount about the Internet. You know that when you type a URL into a browser, the following steps occur: &lt;ul&gt;&lt;li&gt;The browser breaks the URL into three parts: &lt;ol&gt;&lt;li&gt;The protocol ("http") &lt;/li&gt;&lt;li&gt;The server name ("www.howstuffworks.com") &lt;/li&gt;&lt;li&gt;The file name ("web-server.htm") &lt;/li&gt;&lt;/ol&gt; &lt;p&gt; &lt;/p&gt;&lt;/li&gt;&lt;li&gt;The browser communicates with a &lt;a href="http://computer.howstuffworks.com/dns.htm"&gt;name server&lt;/a&gt; to translate the server name, "www.howstuffworks.com," into an &lt;strong&gt;IP address&lt;/strong&gt;, which it uses to connect to that server machine. &lt;p&gt; &lt;/p&gt;&lt;/li&gt;&lt;li&gt;The browser then forms a connection to the Web server at that IP address on port 80. &lt;p&gt; &lt;/p&gt;&lt;/li&gt;&lt;li&gt;Following the HTTP protocol, the browser sends a GET request to the server, asking for the file "http://www.howstuffworks.com/web-server.htm." (Note that &lt;strong&gt;cookies&lt;/strong&gt; may be sent from browser to server with the GET request -- see &lt;a href="http://computer.howstuffworks.com/cookie.htm"&gt;How Internet Cookies Work&lt;/a&gt; for details.) &lt;p&gt; &lt;/p&gt;&lt;/li&gt;&lt;li&gt;The server sends the &lt;a href="http://computer.howstuffworks.com/web-page.htm"&gt;HTML text&lt;/a&gt; for the Web page to the browser. (Cookies may also be sent from server to browser in the header for the page.) &lt;p&gt; &lt;/p&gt;&lt;/li&gt;&lt;li&gt;The browser reads the HTML tags and formats the page onto your screen. &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;  &lt;/p&gt;&lt;p&gt; &lt;!-- Page Break --&gt; &lt;/p&gt;&lt;/div&gt; 						&lt;!--DEV NOTE: this div ensures that the entire article body --&gt; 						&lt;!--DEV NOTE: is displayed before ending the container box --&gt; 						&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8136767800267856096-5076793952659007269?l=mydigital-garage.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mydigital-garage.blogspot.com/feeds/5076793952659007269/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mydigital-garage.blogspot.com/2009/02/how-web-servers-work.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8136767800267856096/posts/default/5076793952659007269'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8136767800267856096/posts/default/5076793952659007269'/><link rel='alternate' type='text/html' href='http://mydigital-garage.blogspot.com/2009/02/how-web-servers-work.html' title='How Web Servers Work '/><author><name>PRITAM</name><uri>http://www.blogger.com/profile/02799170102757192497</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_apr7HBF_hu4/SMgQ-hsQcMI/AAAAAAAAAII/hu8eIXG9oAw/S220/1212120.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8136767800267856096.post-1874686977996792788</id><published>2009-02-06T08:38:00.000-08:00</published><updated>2009-02-06T08:42:34.348-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Top 5 Technology Trends at CES 2009'/><title type='text'>Top 5 Technology Trends at CES 2009</title><content type='html'>Every year in Las Vegas, Nev., hundreds of electronics manufacturers, retail store buyers and members of the press descend upon the Las Vegas Convention Center and surrounding hotels for the Consumer Electronics Show (CES). The convention is essentially an enormous commercial -- it allows manufacturers to advertise products that will soon come to market. Companies can also unveil conceptual devices that may still be a few years away from mass production. The 2009 CES was no exception. &lt;p&gt; &lt;/p&gt;  &lt;p&gt;There's always a wide spectrum of exhibitors at the show. On one end, you have small companies that may offer only one or two products. These companies tend to occupy small booths crammed together in a corner of the showroom floor. On the other end of the spectrum are the big companies like Sony, Panasonic and &lt;a href="http://computer.howstuffworks.com/microsoft.htm"&gt;Microsoft&lt;/a&gt;. These corporations use CES to showcase dozens or even hundreds of products. Their booths may have private rooms, multiple levels and even a professionally-lit stage.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;               &lt;/p&gt;          &lt;!-- dtl_id=715883 //--&gt;  &lt;p&gt; &lt;/p&gt;  &lt;img alt="CES 2009" src="http://static.howstuffworks.com/gif/5-technology-trends-ces-2009-1.jpg" class="article" width="400" height="300" /&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;You might think that the relatively tiny exhibitors have little in common with their gargantuan counterparts. The truth is that certain themes and trends stretch across the entire show, uniting some of the largest and smallest exhibitors in a common philosophy. The themes you see at CES can give you an idea of what to expect from technology companies over the course of the year. In past years, themes like portability and the rise of &lt;a href="http://electronics.howstuffworks.com/mp3-player.htm"&gt;MP3&lt;/a&gt; devices were prevalent. What were the themes of CES 2009? In no particular order, we'll look at the top 5 themes.&lt;/p&gt;&lt;h1 class="articlePageTitle"&gt;5: Technology for Kids&lt;/h1&gt;  &lt;!-- dtl_id=715903 //--&gt;  &lt;p&gt; &lt;/p&gt;  &lt;div style="float: right; width: 400px; text-align: center; padding-bottom: 3px;"&gt;&lt;img src="http://static.howstuffworks.com/gif/5-technology-trends-ces-2009-2.jpg" alt="Mind Flex" width="400" height="300" /&gt;&lt;br /&gt;&lt;span class="credit"&gt;© &lt;a href="http://howstuffworks.com/framed.htm?parent=5-technology-trends-at-ces-2009.htm&amp;amp;url=http://www.mattel.com"&gt;Mattel&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="caption"&gt;The Mind Flex game was just one tech toy designed for kids on display at CES.&lt;/span&gt;&lt;/div&gt;&lt;p&gt;CES 2009 devoted a sec­tion of the showroom floor to technology designed with children in mind. The Consumer Electronics Association (CEA), which is the organization that produces CES, named this special area the Kids@Play Summit. There were two main components of the summit: the space on the CES show floor where exhibitors could display their products and a series of conferences about the ways children use technology. &lt;/p&gt;&lt;p&gt; &lt;/p&gt;  &lt;p&gt;The products ranged from educational devices to toys and games. One of the most popular items at the summit was the Mind Flex game from Mattel. The game consists of a circular playing surface that has a small air vent aimed straight up and several obstacles mounted on a rotating track. To play the game, you place a &lt;a href="http://science.howstuffworks.com/plastic.htm"&gt;plastic&lt;/a&gt; ball on the vent and try to maneuver the ball through the obstacles as they rotate in place. But there's a catch -- you control the ball using a device you wear on your head. Mattel claims the device measures your brainwaves and you control the ball's height by concentrating or relaxing.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;The conferences at the Kids@Play Summit covered topics like education, &lt;a href="http://computer.howstuffworks.com/internet-start.htm"&gt;Internet&lt;/a&gt; safety and defining what it means to play within the digital landscape. Attendees had the opportunity to discuss issues with experts and corporate executives as well as get a sneak peek at toys that would soon hit the market.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h1 class="articlePageTitle"&gt;4: Technology for the Elderly&lt;/h1&gt;  &lt;!-- dtl_id=715905 //--&gt;  &lt;p&gt; &lt;/p&gt;  &lt;div style="float: right; width: 200px; text-align: center; padding-bottom: 3px;"&gt;&lt;img alt="Clarity phone" src="http://static.howstuffworks.com/gif/5-technology-trends-ces-2009-3.jpg" width="200" height="300" /&gt;&lt;br /&gt;&lt;span class="credit"&gt;© &lt;a href="http://howstuffworks.com/framed.htm?parent=5-technology-trends-at-ces-2009.htm&amp;amp;url=http://www.amazon.com"&gt;Amazon.com&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="caption"&gt;The Clarity phone from Plantronics was designed with senior citizens in mind.&lt;/span&gt;&lt;/div&gt;&lt;p&gt;Just a stone's throw away from the Kids@Play Summit was the Silvers Summit. But while Kids@Play focused on technology for children, the Silvers Summit concentrated on technology designed to make the lives of senior citizens easier. &lt;/p&gt;&lt;p&gt; &lt;/p&gt;  &lt;p&gt;Developing technology for senior citizens requires a special approach. Rather than cram as many features into the technology as possible, manufacturers concentrate on making features simple and easy to use. While a young person may want a &lt;a href="http://computer.howstuffworks.com/pc.htm"&gt;PC&lt;/a&gt; that can edit audio and video or play the latest video games, a senior citizen simply may want a machine that lets them check &lt;a href="http://communication.howstuffworks.com/email.htm"&gt;e-mail&lt;/a&gt; or browse the Web.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;Marketing electronics to the elderly also requires a different approach. Traditionally, older people represent a very low percentage of the electronics consumer market. Some manufacturers are skirting this issue by marketing devices designed for the elderly to younger generations. The message is that technology can help children stay in touch with parents and grandparents. The devices help seniors maintain a sense of independence while at the same time reducing their sense of isolation.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;Conferences at the Silvers Summit included discussions about technology designed to boost brain fitness in the elderly, general product design concerns and the impact of technology upon the physical health of an aging population.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="articleBody"&gt;  &lt;h1 class="articlePageTitle"&gt;3: Green Technology&lt;/h1&gt;  &lt;!-- dtl_id=715907 //--&gt;  &lt;div style="float: right; width: 400px; text-align: center; padding-bottom: 3px;"&gt;&lt;img alt="Schwinn Tailwind" src="http://static.howstuffworks.com/gif/5-technology-trends-ces-2009-4.jpg" class="article" width="400" height="300" /&gt;&lt;br /&gt;&lt;span class="credit"&gt;© &lt;a href="http://howstuffworks.com/framed.htm?parent=5-technology-trends-at-ces-2009.htm&amp;amp;url=http://www.schwinn.com"&gt;Schwinn&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="caption"&gt;Schwinn brought its electric bicycle called the Tailwind to CES 2009.&lt;/span&gt;&lt;/div&gt;&lt;p&gt;One of the biggest themes at CES in 2009 involved the environment. CES dedicated a small section of show floor space specifically for green technology companies. Exhibitors within this space included several &lt;a href="http://science.howstuffworks.com/solar-cell.htm"&gt;solar&lt;/a&gt; panel companies, a few wind power device manufacturers and many devices that limit or eliminate &lt;a href="http://electronics.howstuffworks.com/vampire-power.htm"&gt;vampire power&lt;/a&gt; problems. But the exhibitors within the green technology area were only a small part of the overall story.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;Most of the big companies at CES had a section within the main display area set aside for green technology. Some companies featured their eco-friendly devices prominently in the booth. Others grouped their green tech in a corner off to one side. And some of the companies seemed to be engaging in a little &lt;a href="http://money.howstuffworks.com/greenwashing.htm"&gt;greenwashing&lt;/a&gt;. &lt;strong&gt;Greenwashing&lt;/strong&gt; is an attempt to come across as environmentally conscious even though the actual product or manufacturing process isn't eco-friendly.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;It's clear that the concept of adopting an ecologically-friendly lifestyle has taken root in the market. As a result, many companies are devoting time and resources to this effort. Some are diligent as they develop and produce electronics that leave a minimal impact upon the environment. It seems that the consumer will be left with the task to determine which products really are green and which are not.&lt;/p&gt; &lt;/div&gt;        &lt;!--DEV NOTE: this div ensures that the entire article body --&gt;        &lt;!--DEV NOTE: is displayed before ending the container box --&gt;&lt;br /&gt;&lt;div class="articleBody"&gt;  &lt;h1 class="articlePageTitle"&gt;2: Convergence&lt;/h1&gt;  &lt;!-- dtl_id=715909 //--&gt;   &lt;div style="float: right; width: 400px; text-align: center; padding-bottom: 3px;"&gt;&lt;img alt="Panasonic Viera Cast" src="http://static.howstuffworks.com/gif/5-technology-trends-ces-2009-5.jpg" width="400" height="300" /&gt;&lt;br /&gt;&lt;span class="credit"&gt;© &lt;a href="http://howstuffworks.com/framed.htm?parent=5-technology-trends-at-ces-2009.htm&amp;amp;url=http://www.panasonic.com"&gt;Panasonic&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="caption"&gt;Panasonic's Internet televisions featuring Viera Cast are an example of televisions converging with computers.&lt;/span&gt;&lt;/div&gt;  &lt;p&gt;&lt;strong&gt;Convergence &lt;/strong&gt;has a special meaning in the field of technology. It refers to the trend of different technologies evolving to fill the same function. This usually involves two different approaches to meet the same set of consumer needs. Ultimately, convergence might mean these two different technologies will merge into one.&lt;/p&gt;­  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;For example, &lt;a href="http://communication.howstuffworks.com/smartphone.htm"&gt;smartphones&lt;/a&gt; are becoming increasingly powerful. The latest smartphones on the market have &lt;a href="http://computer.howstuffworks.com/wireless-network.htm"&gt;WiFi&lt;/a&gt; capability, a GPS receiver, a powerful operating system (OS) and a library of applications ranging from music players to productivity software. Meanwhile, portable computers are shrinking. The introduction of netbooks -- generally defined as computers with a 10-inch (25.4 centimeters) or smaller screen and limited processing capability -- took CES 2009 by storm. The result was convergence: Phones looked more like computers and computers looked more like phones.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;Phones and computers weren't the only devices that seemed to be on a collision course. Practically every &lt;a href="http://electronics.howstuffworks.com/tv.htm"&gt;television&lt;/a&gt; manufacturer at CES had an interactive TV on display. These televisions paired native processing capabilities with the power of the Internet. Many used &lt;strong&gt;widgets&lt;/strong&gt; -- small programs dedicated to simple tasks like displaying weather reports. Others, like Microsoft's MediaRoom technology, blurred the lines between watching television and accessing the Internet.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;Perhaps the best example of convergence at CES 2009 was the LG GD910 watch phone. The watch phone featured a simple three-button interface, Bluetooth capability and 3G compatibility. The watch phone received a lot of buzz during CES 2009 -- the sleek design and simple interface impressed many people.&lt;/p&gt; &lt;/div&gt;        &lt;!--DEV NOTE: this div ensures that the entire article body --&gt;        &lt;!--DEV NOTE: is displayed before ending the container box --&gt;                      &lt;hr class="top-10-hr"&gt;&lt;br /&gt;&lt;div class="articleBody"&gt;  &lt;h1 class="articlePageTitle"&gt;1: 3-D Displays&lt;/h1&gt;  &lt;!-- dtl_id=715911 //--&gt;  &lt;p&gt; &lt;/p&gt;  &lt;div style="float: right; width: 400px; text-align: center; padding-bottom: 3px;"&gt;&lt;img alt="3-D Theater " src="http://static.howstuffworks.com/gif/5-technology-trends-ces-2009-6.jpg" class="article" width="400" height="300" /&gt;&lt;br /&gt;&lt;span class="credit"&gt;© &lt;a href="http://howstuffworks.com/framed.htm?parent=5-technology-trends-at-ces-2009.htm&amp;amp;url=http://www.apimages.com"&gt;AP&lt;/a&gt;/Paul Sakuma&lt;/span&gt;&lt;br /&gt;&lt;span class="caption"&gt;The 3D High-definition Plasma Television from Panasonic is an example of 3-D technology at CES 2009.&lt;/span&gt;&lt;/div&gt;&lt;p&gt;Perhaps the most prevalent trend at CES 2009 was the emphasis on 3-D technology. Nvidia, which produces graphics cards for &lt;a href="http://computer.howstuffworks.com/10-types-of-computers.htm"&gt;computers&lt;/a&gt;, entranced booth visitors with a GeForce 3-D demo that featured clips from films like "Star Wars: A New Hope." The booth also featured a 3-D version of &lt;a href="http://electronics.howstuffworks.com/guitar-hero.htm"&gt;Guitar Hero&lt;/a&gt;, which inspired many CES attendees to let their inner rock star out as wicked guitar solos scrolled toward them.  &lt;/p&gt;&lt;p&gt; &lt;/p&gt;  &lt;p&gt;Nvidia's system uses &lt;strong&gt;active&lt;/strong&gt; 3-D, which means the GeForce glasses actively work to produce the three-dimensional effect. Each lens has a shutter that opens and closes at a rate of 60 times per second. The shuttering pattern combined with the image on the screen produces a stereoscopic effect. Most of the other 3-D technologies on display at CES used polarized lenses, which are &lt;strong&gt;passive&lt;/strong&gt;. Glasses with 3-D polarized lenses don't require power -- the 3-D technology resides in the television set or computer monitor. Nvidia's 3-D system is available now for around $199.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;While several companies showed off their 3-D displays, one deserves particular mention. Panasonic's high-definition &lt;a href="http://electronics.howstuffworks.com/plasma-display.htm"&gt;plasma&lt;/a&gt; 3-D display produced convincing three-dimensional images that were crisp and clear. The company showcased the technology using a series of video clips, including footage from the 2008 Summer Olympic Games in Beijing. Like­ Nvidia's product, Panasonic's 3-D home theater system used active 3-D glasses. The company has not announced when the system will hit the market or how much it might cost.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;The trends at CES reflect what manufacturers think is important in the minds of consumers. Did they get it right? We'll have to wait and see.&lt;/p&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8136767800267856096-1874686977996792788?l=mydigital-garage.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mydigital-garage.blogspot.com/feeds/1874686977996792788/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mydigital-garage.blogspot.com/2009/02/top-5-technology-trends-at-ces-2009.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8136767800267856096/posts/default/1874686977996792788'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8136767800267856096/posts/default/1874686977996792788'/><link rel='alternate' type='text/html' href='http://mydigital-garage.blogspot.com/2009/02/top-5-technology-trends-at-ces-2009.html' title='Top 5 Technology Trends at CES 2009'/><author><name>PRITAM</name><uri>http://www.blogger.com/profile/02799170102757192497</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_apr7HBF_hu4/SMgQ-hsQcMI/AAAAAAAAAII/hu8eIXG9oAw/S220/1212120.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8136767800267856096.post-3135821684935599715</id><published>2009-02-06T08:09:00.000-08:00</published><updated>2009-02-06T08:13:22.984-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='How Web Operating Systems Work'/><title type='text'>How Web Operating Systems Work</title><content type='html'>&lt;p&gt;As the &lt;a href="http://computer.howstuffworks.com/web-page.htm"&gt;Web&lt;/a&gt; evolves, people invent new words to describe its features and applications. Sometimes, a term gains widespread acceptance even if some people believe it's misleading or inaccurate. Such is the case with &lt;strong&gt;Web operating systems&lt;/strong&gt;.&lt;/p&gt;&lt;center&gt;&lt;div style="width: 400px; text-align: center; padding-bottom: 3px;"&gt;&lt;img alt="AstraNOS" src="http://static.howstuffworks.com/gif/web-operating-system-1.jpg" class="article" width="400" height="215" /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;2008 ©HowStuffWorks&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;The AstraNOS operating system login screen.&lt;/strong&gt;&lt;/span&gt;­&lt;br /&gt;&lt;/div&gt;&lt;/center&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt; &lt;/p&gt;  &lt;p&gt;An &lt;strong&gt;operating system (OS)&lt;/strong&gt; is a special kind of program that organizes and controls &lt;a href="http://computer.howstuffworks.com/pc.htm"&gt;computer&lt;/a&gt; hardware and software. &lt;a href="http://computer.howstuffworks.com/operating-system.htm"&gt;Operating systems&lt;/a&gt; interact directly with computer hardware and serve as a platform for other applications. Whether it's Windows, &lt;a href="http://computer.howstuffworks.com/question246.htm"&gt;Linux&lt;/a&gt;, Unix or Mac OS X, your computer depends on its OS to function.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;That's why some people object to the term Web OS. A Web OS is a &lt;strong&gt;user interface&lt;/strong&gt; (&lt;strong&gt;UI&lt;/strong&gt;) that allows people to access applications stored completely or in part on the Web. It might mimic the user interface of traditional computer operating systems like Windows, but it doesn't interact directly with the computer's hardware. The user must still have a traditional OS on his or her computer.&lt;/p&gt;&lt;table width="400" align="center" bg border="1" cellpadding="3" cellspacing="0" style="color:#eef4f6;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:arial,helvetica;"&gt;&lt;center&gt;&lt;span style="font-size:+1;color:#000099;"&gt;Name Calling&lt;br /&gt;&lt;/span&gt;&lt;/center&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;Some people use the term "WebOS" instead of Web OS, but there's a problem with that. WebOS is the name of a project that the University of California, Berkeley began in 1996. The project is dedicated to building wide area applications. It's not the same thing as a Web operating system. Other people object to using the words "operating system" at all and instead prefer to call such applications "Web Desktop" or "Webtop" software. That's because Web OSs tend to mimic traditional computer desktop applications.&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt; &lt;/p&gt;  &lt;p&gt;While there aren't many computer operating systems to choose from, the same can't be said of Web operating systems. There are dozens of Web operating systems available. Some of them offer a wide range of services, while others are still in development and only provide limited functionality. In some cases, there may be a single ambitious programmer behind the project. Other Web operating systems are the product of a large team effort. Some are free to download, and others charge a fee. Web operating systems can come in all shapes and sizes.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  What exactly do Web operating systems do?&lt;br /&gt;&lt;br /&gt;&lt;h1 class="articlePageTitle"&gt;What do Web operating systems do?&lt;/h1&gt;  &lt;!-- dtl_id=505455 //--&gt;  &lt;p&gt;Web operating systems are interfaces to &lt;strong&gt;distributed computing systems&lt;/strong&gt;, particularly &lt;a href="http://computer.howstuffworks.com/cloud-computing.htm"&gt;cloud&lt;/a&gt; or &lt;a href="http://computer.howstuffworks.com/utility-computing.htm"&gt;utility computing systems&lt;/a&gt;. In these systems, a company provides computer services to users through an &lt;a href="http://computer.howstuffworks.com/internet-infrastructure.htm"&gt;Internet&lt;/a&gt; connection. The provider runs a system of computers that include application servers and databases.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;With some systems, people access the applications using Web browsers like &lt;a href="http://computer.howstuffworks.com/firefox.htm"&gt;Firefox&lt;/a&gt; or &lt;a href="http://computer.howstuffworks.com/ie7.htm"&gt;Internet Explorer&lt;/a&gt;. With other systems, users must download a program that creates a system-specific &lt;strong&gt;client&lt;/strong&gt;. A client is software that accesses information or services from other software. In either case, users access programs that are stored not on their own computers, but on the Web.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;What sort of services do they provide? Web operating systems can give users access to practically any program they could run on a computer's desktop. Common applications include:&lt;/p&gt;  &lt;ul style="margin-top: 0in;" type="disc"&gt;&lt;li&gt;Calendars&lt;/li&gt;&lt;li&gt;&lt;a href="http://communication.howstuffworks.com/email.htm"&gt;E-mail&lt;/a&gt;&lt;/li&gt;&lt;li&gt;File management&lt;/li&gt;&lt;li&gt;Games&lt;/li&gt;&lt;li&gt;&lt;a href="http://communication.howstuffworks.com/instant-messaging.htm"&gt;Instant messaging&lt;/a&gt; programs&lt;/li&gt;&lt;li&gt;Photo, video and audio editing programs&lt;/li&gt;&lt;li&gt;&lt;a href="http://computer.howstuffworks.com/rss.htm"&gt;RSS&lt;/a&gt; readers&lt;/li&gt;&lt;li&gt;Spreadsheet programs&lt;/li&gt;&lt;li&gt;Word processing programs&lt;/li&gt;&lt;/ul&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;With traditional computer operating systems, you'd have to install applications to your own computer. The applications would exist on your computer's &lt;a href="http://computer.howstuffworks.com/hard-disk.htm"&gt;hard disk&lt;/a&gt; drive. They would run by accessing the processing power of your computer's central processing unit (CPU) by sending electronic requests to your computer's OS.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;Web operating systems can't replace your computer's native OS -- in fact, they depend on traditional computer operating systems to work. The user side of Web OS software, whether it's a Web browser or a system-specific client, runs on top of your computer's OS. But programmers design Web operating systems to look and act like a desktop OS. A Web OS might look a lot like a traditional OS, but it doesn't manage your computer's hardware or software.&lt;/p&gt;&lt;center&gt;&lt;div style="width: 400px; text-align: center; padding-bottom: 3px;"&gt;&lt;img alt="iGoogle" src="http://static.howstuffworks.com/gif/web-operating-system-2.jpg" class="article" width="400" height="216" /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;©2008 HowStuffWorks&lt;/span&gt;­&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;Portals like iGoogle aren't true operating systems, but they do pull information from other Web pages into a centralized site.&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;/center&gt;   &lt;p&gt; &lt;/p&gt;&lt;p&gt; &lt;/p&gt;  &lt;p&gt;A Web OS allows you to access applications stored not on your computer, but on the Web. The applications exist wholly or in part on Web servers within a particular provider network. When you save information in an application, you might not store it on your computer. Instead, you save the information to databases connected to the Internet. Some Web operating systems also give you the option to save information to your local hard disk drive.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;table width="400" align="center" bg border="1" cellpadding="3" cellspacing="0" style="color:#eef4f6;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:arial,helvetica;"&gt;&lt;center&gt;&lt;span style="font-size:+1;color:#000099;"&gt;Don't Call it a Portal&lt;br /&gt;&lt;/span&gt;&lt;/center&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;It's easy to confuse a Web OS with a &lt;strong&gt;portal&lt;/strong&gt;. Portals are Web pages that give users access to multiple applications and services. For example, iGoogle is a portal that allows users to customize a Web page with news feeds, e-mail, games and other applications. Portals offer users a chance to access multiple applications or data sources from a single site, but they don't try to emulate desktop computer operating systems.&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt; &lt;/p&gt;  &lt;p&gt;Because Web operating systems aren't tied to a specific computer or device, you can access Web applications and data from any device connected to the Internet. That is, you can do it as long as the device can run the Web operating software (whether that's a particular Web browser or client). This means that you can access the Web OS on one computer, create a document, save the work and then access it again later using a completely different machine. Web operating systems offer users the benefit of accessibility -- data isn't tied down to your computer.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  What makes a Web OS tick?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h1 class="articlePageTitle"&gt;The Technology of Web Operating Systems&lt;/h1&gt;  &lt;!-- dtl_id=505457 //--&gt;  &lt;p&gt;With so many different Web &lt;a href="http://computer.howstuffworks.com/operating-system.htm"&gt;operating systems&lt;/a&gt; either currently available or in development, it should come as no surprise that programmers use different approaches to achieve the same effect. While the goal of a Web OS is to provide an experience similar to using a desktop OS, there are no hard and fast rules for how to make that happen. The two most popular approaches rely on &lt;strong&gt;Flash&lt;/strong&gt; technologies or &lt;strong&gt;Asynchronous JavaScript and XML&lt;/strong&gt; (AJAX) technologies.&lt;/p&gt;&lt;table width="200" align="right" bg border="1" cellpadding="3" cellspacing="0" style="color:#eef4f6;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:arial,helvetica;"&gt;&lt;center&gt;&lt;span style="font-size:+1;color:#000099;"&gt;A Sample of Web Operating Systems&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;There are more than a dozen Web operating systems in various stages of completion. They include:&lt;/span&gt;&lt;div align="left"&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;AstraNOS&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;DestkopOnDemand&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;eyeOS&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;G.ho.st&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;goowy&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;YouOS&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/center&gt;&lt;/span&gt;  &lt;p style="margin-left: 39pt; text-indent: -0.25in;"&gt; &lt;!-- [endif] --&gt;&lt;/p&gt;    &lt;p style="margin-left: 39pt; text-indent: -0.25in;"&gt; &lt;!-- [endif] --&gt;&lt;/p&gt;  &lt;p style="margin-left: 39pt; text-indent: -0.25in;"&gt; &lt;!-- [endif] --&gt;&lt;/p&gt;  &lt;p style="margin-left: 39pt; text-indent: -0.25in;"&gt; &lt;!-- [endif] --&gt;&lt;/p&gt;  &lt;p style="margin-left: 39pt; text-indent: -0.25in;"&gt; &lt;!-- [endif] --&gt;&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt; &lt;/p&gt;Flash is a set of technologies that enable programmers to create interactive &lt;a href="http://computer.howstuffworks.com/web-page.htm"&gt;Web pages&lt;/a&gt;. It's a technology that uses &lt;strong&gt;vector graphics&lt;/strong&gt;. Vector graphics record image data as a collection of shapes and lines rather than individual &lt;strong&gt;pixels&lt;/strong&gt;, which allows computers to load Flash images and animation faster than pixel-based graphics.  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;Flash files stream over the &lt;a href="http://computer.howstuffworks.com/internet-infrastructure.htm"&gt;Internet&lt;/a&gt;, which means the end user accessing the file doesn't have to wait for the entire file to download to his or her computer before accessing parts of it. With Flash-based programs like &lt;a href="http://computer.howstuffworks.com/youtube.htm"&gt;YouTube&lt;/a&gt;'s video player, this means you can start watching a film clip without having to download it first.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;More than 98 percent of all computers connected to the Internet have a Flash player installed [source: &lt;a href="http://howstuffworks.com/framed.htm?parent=web-operating-system.htm&amp;amp;url=http://www.adobe.com/products/player_census/flashplayer/"&gt;Adobe&lt;/a&gt;]. That makes Flash an attractive approach for many programmers. They can create a Web OS knowing that the vast majority of computer users will be able to access it without having to download additional software.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;AJAX technologies rely on &lt;strong&gt;hypertext markup language&lt;/strong&gt; (&lt;strong&gt;HTML&lt;/strong&gt;), the &lt;strong&gt;JavaScript&lt;/strong&gt; programming language, &lt;strong&gt;Cascading Style Sheets&lt;/strong&gt; (&lt;strong&gt;CSS&lt;/strong&gt;) and &lt;strong&gt;eXtensible Markup Language&lt;/strong&gt; (&lt;strong&gt;XML&lt;/strong&gt;). It's a browser technology. The HTML language is a collection of markup tags programmers use on text files that tell Web browsers how to display the text file as a Web page. CSS is a tool that gives programmers more options when tweaking a Web site's appearance. Programmers can create a &lt;strong&gt;style sheet&lt;/strong&gt; with certain attributes such as font style and color, and then apply those styles across several Web pages at once. &lt;a href="http://computer.howstuffworks.com/question369.htm"&gt;JavaScript&lt;/a&gt; is a programming language that allows applications to send information back and forth between servers and browsers. XML is a markup language, which means programmers use it to describe the structure of information within a file and how it relates to other information.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;The "asynchronous" aspect of AJAX means that AJAX applications transfer data between &lt;a href="http://computer.howstuffworks.com/web-server.htm"&gt;servers&lt;/a&gt; and browsers in small bits of information as needed. The alternative is to send an entire Web page to the browser every time something changes, which would significantly slow down the user's experience. With sufficient skill and knowledge, a programmer can create an AJAX application with the same functions as a desktop application.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;Like Flash, most computers can run AJAX applications. That's because AJAX isn't a new programming language but rather a way to use established Web standards to create new applications. As long as an application programmer includes the right information in an application's code, it should run fine on any major Web browser. Some well known Web applications based on AJAX include Google Calendar and &lt;a href="http://communication.howstuffworks.com/gmail.htm"&gt;Gmail&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  Why would anyone want to use a Web OS?&lt;br /&gt;&lt;br /&gt;&lt;h1 class="articlePageTitle"&gt;Why Use a Web OS?&lt;/h1&gt;  &lt;!-- dtl_id=505459 //--&gt;  &lt;p&gt;Web &lt;a href="http://computer.howstuffworks.com/operating-system.htm"&gt;operating systems&lt;/a&gt; simplify a user's experience when accessing applications hosted on remote &lt;a href="http://computer.howstuffworks.com/web-server.htm"&gt;servers&lt;/a&gt;. Ideally, a Web OS behaves like a desktop OS. The more familiar and intuitive the system, the faster people will learn how to use it. When a person chooses to run a certain application, his or her &lt;a href="http://computer.howstuffworks.com/pc.htm"&gt;computer&lt;/a&gt; sends a request to the system's &lt;strong&gt;control node&lt;/strong&gt; -- a special server that acts as a system administrator. The control node interprets the request and connects the user's client to the appropriate application server or database. By offloading applications, storage and processing power to a remote network, users don't have to worry about upgrading computer systems every few years.&lt;/p&gt;&lt;center&gt;&lt;div style="width: 400px; text-align: center; padding-bottom: 3px;"&gt;&lt;img alt="YouOS" src="http://static.howstuffworks.com/gif/web-operating-system-3.jpg" class="article" width="400" height="213" /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;©2008 HowStuffWorks&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;YouOS is one of the more popular Web operating systems on the Internet.&lt;/strong&gt;&lt;/span&gt;­   &lt;/div&gt;&lt;/center&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt; &lt;/p&gt;  &lt;p&gt;For many people, that's the most attractive feature of Web operating systems. As long as their computers can run the browser or client software necessary to access the system, there's no need to upgrade. Some people become frustrated when they have to purchase new computers in order to run current software. With distributed computing, it's the provider's responsibility to provide application functionality. If the provider isn't able to meet user demands, users might look elsewhere for services.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;Web operating systems can also make it easier to share data between computers. Perhaps you own both a Mac computer and a PC. It can be challenging to share data between the two different computers. Even if you use file formats that are compatible with both Mac computers and PCs, you could end up with a copy of the same file on each machine. Changing one copy isn't reflected on the other computer's copy. Web operating systems provide an interface where you can use any computer to create, modify and access a single copy of a file saved on a remote database. As long as the Web OS you're using can cross platforms, meaning it works on both Macs and PCs, you'll be able to work on the file at any time using either of your computers.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;Likewise, Web operating systems can simplify collaborative projects. Many Web operating systems allow users to share files. Each user can work from the file saved to the system's native network. For many users, this is an attractive alternative to organizing multiple copies of the same file and then incorporating everyone's changes into a new version.&lt;/p&gt;&lt;table width="400" align="center" bg border="1" cellpadding="3" cellspacing="0" style="color:#eef4f6;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:arial,helvetica;"&gt;&lt;center&gt;&lt;span style="font-size:+1;color:#000099;"&gt;Why Not?&lt;br /&gt;&lt;/span&gt;&lt;/center&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;A common concern about Web operating systems is that they require users to trust a third party to keep potentially sensitive data secure. For many users, this is a leap of faith. Will the provider be able to fend off hackers? It's in the provider's best interests to employ advanced security measures to keep client data safe. As distributed computing systems become more popular, we'll likely see a battle between hackers and security specialists.&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt; &lt;/p&gt;  &lt;p&gt;Right now, Web operating systems aren't as robust as their desktop counterparts. But some people believe that Web operating systems provide just enough functionality to compete with more traditional desktop software suites. If Web OS providers can address issues like the functionality gap and data security concerns, we might see a dramatic shift in computer network systems.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8136767800267856096-3135821684935599715?l=mydigital-garage.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mydigital-garage.blogspot.com/feeds/3135821684935599715/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mydigital-garage.blogspot.com/2009/02/how-web-operating-systems-work.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8136767800267856096/posts/default/3135821684935599715'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8136767800267856096/posts/default/3135821684935599715'/><link rel='alternate' type='text/html' href='http://mydigital-garage.blogspot.com/2009/02/how-web-operating-systems-work.html' title='How Web Operating Systems Work'/><author><name>PRITAM</name><uri>http://www.blogger.com/profile/02799170102757192497</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_apr7HBF_hu4/SMgQ-hsQcMI/AAAAAAAAAII/hu8eIXG9oAw/S220/1212120.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8136767800267856096.post-2880905324125218872</id><published>2009-02-06T08:06:00.000-08:00</published><updated>2009-02-06T08:09:46.905-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='How small can CPUs get?'/><title type='text'>How small can CPUs get?</title><content type='html'>During the 20th century, inventors created devices that we regularly depend upon. Arguably, one of the most important inventions was the transistor. Developed in 1947 by engineers working for Bell Laboratories, the original purpose of the transistor was to amplify sound over phone lines. The transistor replaced an older technology -- vacuum tubes. The tubes weren't reliable, they were bulky and they generated a lot of heat, too.&lt;br /&gt;&lt;br /&gt;The first transistor was a point-contact transistor that measured half an inch (1.27 centimeters) in height. The transistor wasn't very powerful, but physicists recognized the potential of the device. Before long, physicists and engineers began to incorporate transistors into various electronic devices. And as time passed, they also learned how to make transistors smaller and more efficient.&lt;br /&gt;&lt;br /&gt;In 1958, engineers attached two transistors to a silicon crystal and created the world's first integrated circuit [source: Intel]. In turn, the integrated circuit paved the way to the development of the microprocessor. If you compare a computer to a human being, the microprocessor would be the brain. It makes calculations and processes data.&lt;br /&gt;&lt;br /&gt;By the 1960s, computer scientist (and Intel co-founder) Gordon Moore made an interesting observation. He noticed that every 12 months, engineers were able to double the number of transistors on a square inch piece of silicon. Like clockwork, engineers were finding ways to reduce the size of transistors. It's because of these small transistors that we have electronic devices like personal computers, smartphones and mp3 players. Without transistors, we would still be using vacuum tubes and mechanical switches to make calculations.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;­Since Moore's observation, the shrinking trend has continued. But it hasn't kept up with the pace Moore observed. These days, the number of transistors doubles every 24 months. But that raises an interesting question: How small can transistors -- and by extension, CPUs -- get? In 1947, a single transistor measured a little over one-hundredth of a meter high. Today, Intel produces microprocessors with transistors measuring only 45 nanometers wide. A nanometer is one-billionth of a meter!&lt;br /&gt;&lt;br /&gt;Intel and other microprocessor manufacturers are already working on the next generation of chips. These will use transistors measuring a mere 32 nanometers in width. But some physicists and engineers think we might be bumping up against some fundamental physical limits when it comes to transistor size.&lt;br /&gt;&lt;br /&gt;            &lt;div class="articleBody"&gt;  &lt;h1 class="articlePageTitle"&gt;Anatomy of a Transistor&lt;/h1&gt;  &lt;!-- dtl_id=713954 //--&gt;  &lt;p&gt; &lt;/p&gt;  &lt;div style="float: right; width: 200px; text-align: center; padding-bottom: 3px;"&gt;&lt;img class="article" src="http://static.howstuffworks.com/gif/small-cpu-2.jpg" alt="Xeon Processor" width="200" height="300" /&gt;&lt;br /&gt;&lt;span class="credit"&gt;Court Mast/Intel via &lt;a href="http://howstuffworks.com/framed.htm?parent=small-cpu.htm&amp;amp;url=http://www.gettyimages.com/Home.aspx"&gt;Getty Images&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="caption"&gt;Intel vice president Tom Kilroy holds a Dual-Core Xeon Processor 5100 at a press event in San Francisco.&lt;/span&gt;&lt;/div&gt;&lt;p&gt;Before we go into the physical limitations of transistors, it helps to know what a transistor is made of and what it actually does. Basically, a transistor is a switch made out of a special kind of matter. One way you can classify matter is by looking at how well it can conduct electricity. That divides matter into three categories: &lt;strong&gt;conductors&lt;/strong&gt;, &lt;strong&gt;insulators&lt;/strong&gt; and &lt;strong&gt;semiconductors&lt;/strong&gt;. A conductor is any type of material made of atoms with free spaces for electrons. An electric current can pass through conductive material -- metals tend to be good conductors. An insulator is matter composed of atoms that don't have any electron spaces available. As a result, &lt;a href="http://science.howstuffworks.com/electricity.htm"&gt;electricity&lt;/a&gt; can't flow through these materials. Ceramic or glass are good examples of insulators.  &lt;/p&gt;&lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://electronics.howstuffworks.com/diode.htm"&gt;Semiconductors&lt;/a&gt; are a bit different. They are composed of matter with atoms that have some space for electrons, but not enough to conduct electricity the way metals do. Silicon is such a material. Under some circumstances, silicon can act as a conductor. Under others, it acts as an insulator. By tweaking these circumstances, it's possible to control the flow of electrons. This simple concept is the foundation for the most advanced electronic devices in the world.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;Engineers discovered that by &lt;strong&gt;doping&lt;/strong&gt; -- introducing certain kinds of material -- into silicon, they could control its conductivity. They'd start with a base called a &lt;strong&gt;substrate&lt;/strong&gt; and dope it with either negatively-charged or positively-charged material. Negatively-charged material has an excess of electrons while positively charged material has an excess of &lt;strong&gt;holes&lt;/strong&gt; -- places where electrons could fit. In our example, we'll consider an &lt;strong&gt;n-type transistor&lt;/strong&gt;, which has a positively-charged substrate.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;&lt;p&gt; &lt;/p&gt;  &lt;table class="sideBoxRight"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="titleBlue"&gt;I'm Positive!&lt;br /&gt;&lt;/div&gt;&lt;div class="body"&gt;While we use an n-type transistor in our example, it's possible to build &lt;strong&gt;p-type transistors&lt;/strong&gt;. In that case, you'd dope the substrate with negatively-charged material and the terminals would carry a positive charge.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;­On this foundation are three terminals: a &lt;strong&gt;source&lt;/strong&gt;, a &lt;strong&gt;drain&lt;/strong&gt; and a &lt;strong&gt;gate&lt;/strong&gt;. The gate sits between the source and the drain. It acts as a door through which voltage can pass into the silicon, but not back out. The gate has a thin layer of insulator called an &lt;strong&gt;oxide layer&lt;/strong&gt; that prevents electrons from passing back through the terminal. In our example, the insulator is between the gate and the positively-charged substrate.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;The source and drain in our example are negatively-charged terminals. When you apply a positive voltage to the gate, it attracts the few free electrons in the positively-charged substrate to the gate's oxide layer. This creates an &lt;strong&gt;electron channel&lt;/strong&gt; between the source and drain terminals. If you then apply a positive voltage to the drain, electrons will flow from the source through the electron channel to the drain. If you remove the voltage from the gate, the electrons in the substrate are no longer attracted to the gate and the channel is broken. That means when you've got a charge to the gate, the transistor is switched to "on." When the voltage is gone, the transistor is "off."&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;Electronics interpret this switching as information in the form of bits and bytes. That's how your computer and other electronic devices process data. But because electronics depend on the movement of electrons to process information, they're subject to some special laws of physics. We'll take a closer look into them in the next section.&lt;/p&gt; &lt;/div&gt;&lt;br /&gt;&lt;h1 class="articlePageTitle"&gt;Transistors on the Nanoscale&lt;/h1&gt;  &lt;!-- dtl_id=713956 //--&gt;  &lt;p&gt;It seems like every year a journalist publishes an article that says transistors are as small as they'll ever get and Moore's Law is finished. Then engineers find innovative ways to create even smaller transistors and prove the journalist wrong. We've reached a point where many writers are gunshy when it comes to predicting the end of Moore's Law.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;&lt;p&gt; &lt;/p&gt;  &lt;table class="sideBoxRight"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="titleBlue"&gt;Small Packages&lt;br /&gt;&lt;/div&gt;&lt;div class="body"&gt;Intel's smallest microprocessor is the Atom, which measures 26 square millimeters and has 47 million transistors. Intel designed the Atom to work in mobile devices like smartphones [source: &lt;a href="http://howstuffworks.com/framed.htm?parent=small-cpu.htm&amp;amp;url=http://www.intel.com/technology/atom/index.htm"&gt;Intel&lt;/a&gt;].&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;But it's true that one day we'll hit the physical limits of how small traditional transistors can be. That's because once you hit the &lt;strong&gt;nanoscale&lt;/strong&gt;, you're dealing with the bizarre world of &lt;strong&gt;quantum mechanics&lt;/strong&gt;. In this world, matter and energy behave in ways that seem counterintuitive. Quantum physics is very different from classic physics -- you can't even observe something on the quantum scale without affecting its behavior.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;&lt;p&gt; &lt;/p&gt;  &lt;p&gt;One quantum effect is &lt;strong&gt;electron tunneling&lt;/strong&gt;. Electron tunneling is a bit like teleportation. When material is very thin -- the thickness of a single nanometer (about 10 atoms thick) -- electrons can tunnel right through it as if it weren't there at all. The electron doesn't actually make a hole through the material. Instead, the electron disappears from one side of the barrier and reappears on the other. Since gates are meant to control the flow of electrons, this is a problem. If electrons can pass through a gate under any set of circumstances, there's no way to control their flow. With leaky transistors, the flow of electrons can't be controlled, so the processor would be ineffective or not functional at all.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;div style="float: right; width: 400px; text-align: center; padding-bottom: 3px;"&gt;&lt;img src="http://static.howstuffworks.com/gif/small-cpu-3.jpg" alt="Pentium 4 processors" width="400" height="300" /&gt;&lt;br /&gt;&lt;span class="credit"&gt;Intel/Newsmakers via &lt;a href="http://howstuffworks.com/framed.htm?parent=small-cpu.htm&amp;amp;url=http://www.gettyimages.com/Home.aspx"&gt;Getty Images&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="caption"&gt;The Pentium 4 processor family.&lt;/span&gt;&lt;/div&gt;&lt;p&gt;With companies like Intel working on transistors that measure only 32 nanometers in width, it won't be long before the oxide layer becomes too thin to act as a gate for electrons ­using traditional transistors. While engineers have hit some obstacles during the race to shrink transistors in the past, they've always found some way to work around the problem and keep up with Moore's Law. But those days could end once we face a fundamental law of physics. &lt;/p&gt;&lt;p&gt; &lt;/p&gt;  &lt;p&gt;It's possible that engineers will discover a way to create an effective insulator even at a thickness of one nanometer. But even if they manage to do that, there's not much further they can go with transistors as we know them today. After all, beyond the nanoscale is the &lt;strong&gt;atomic scale&lt;/strong&gt;, where you're dealing with materials that are only a few &lt;a href="http://science.howstuffworks.com/atom.htm"&gt;atoms&lt;/a&gt; in size.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;This doesn't mean that transistors will go away. But it might mean that the advancements in &lt;a href="http://computer.howstuffworks.com/microprocessor.htm"&gt;microprocessor&lt;/a&gt; development will slow down and level off. Improvements in processing power may not continue to be exponential. But companies will likely find ways to improve microprocessor efficiency and performance, nonetheless.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;There's also the possibility that microprocessor manufacturers will find an alternative to transistors. And some are already looking into ways to harness the quantum effects of the nanoscale -- effectively turning nano-lemons into nano-lemonade.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;It seems like microprocessor manufacturers will only be able to keep Moore's Law going for a few more years. But if you look back at the predictions from decades ago, you'll see journalists making that same claim. Maybe engineers see these predictions as a personal challenge to find ways around seemingly insurmountable obstacles.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8136767800267856096-2880905324125218872?l=mydigital-garage.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mydigital-garage.blogspot.com/feeds/2880905324125218872/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mydigital-garage.blogspot.com/2009/02/how-small-can-cpus-get.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8136767800267856096/posts/default/2880905324125218872'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8136767800267856096/posts/default/2880905324125218872'/><link rel='alternate' type='text/html' href='http://mydigital-garage.blogspot.com/2009/02/how-small-can-cpus-get.html' title='How small can CPUs get?'/><author><name>PRITAM</name><uri>http://www.blogger.com/profile/02799170102757192497</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_apr7HBF_hu4/SMgQ-hsQcMI/AAAAAAAAAII/hu8eIXG9oAw/S220/1212120.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8136767800267856096.post-3065201500748534753</id><published>2009-02-02T06:13:00.000-08:00</published><updated>2009-02-02T06:18:07.563-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='How Routers Work'/><title type='text'>How Routers Work</title><content type='html'>The Internet is one of the 20th century's greatest communications developments. It allows people around the world to send e-mail to one another in a matter of seconds, and it lets you read, among other things, the articles on HowStuffWorks.com. We're all used to seeing the various parts of the Internet that come into our homes and offices -- the Web pages, e-mail messages and downloaded files that make the Internet a dynamic and valuable medium. But none of these parts would ever make it to your computer without a piece of the Internet that you've probably never seen. In fact, most people have never stood "face to machine" with the technology most responsible for allowing the Internet to exist at all: the router.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Photo courtesy Newstream.com&lt;br /&gt;Fujitsu GeoStream R980 industrial strength router&lt;br /&gt;&lt;br /&gt;Routers are specialized computers that send your messages and those of every other Internet user speeding to their destinations along thousands of pathways. In this article, we'll look at how these behind-the-scenes machines make the Internet work.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Keeping the Messages Moving&lt;br /&gt;&lt;br /&gt;When you send e-mail to a friend on the other side of the country, how does the message know to end up on your friend's computer, rather than on one of the millions of other computers in the world? Much of the work to get a message from one computer to another is done by routers, because they're the crucial devices that let messages flow between networks, rather than within networks.&lt;br /&gt;&lt;br /&gt;Let's look at what a very simple router might do. Imagine a small company that makes animated 3-D graphics for local television stations. There are 10 employees of the company, each with a computer. Four of the employees are animators, while the rest are in sales, accounting and management. The animators will need to send lots of very large files back and forth to one another as they work on projects. To do this, they'll use a network.&lt;br /&gt;&lt;br /&gt;When one animator sends a file to another, the very large file will use up most of the network's capacity, making the network run very slowly for other users. One of the reasons that a single intensive user can affect the entire network stems from the way that Ethernet works. Each information packet sent from a computer is seen by all the other computers on the local network. Each computer then examines the packet and decides whether it was meant for its address. This keeps the basic plan of the network simple, but has performance consequences as the size of the network or level of network activity increases. To keep the animators' work from interfering with that of the folks in the front office, the company sets up two separate networks, one for the animators and one for the rest of the company. A router links the two networks and connects both networks to the Internet.&lt;br /&gt;&lt;br /&gt;Directing Traffic&lt;br /&gt;&lt;br /&gt;The router is the only device that sees every message sent by any computer on either of the company's networks. When the animator in our example sends a huge file to another animator, the router looks at the recipient's address and keeps the traffic on the animator's network. When an animator, on the other hand, sends a message to the bookkeeper asking about an expense-account check, then the router sees the recipient's address and forwards the message between the two networks.&lt;br /&gt;One of the tools a router uses to decide where a packet should go is a configuration table. A configuration table is a collection of information, including:&lt;br /&gt;&lt;br /&gt;    * Information on which connections lead to particular groups of addresses&lt;br /&gt;    * Priorities for connections to be used&lt;br /&gt;    * Rules for handling both routine and special cases of traffic &lt;br /&gt;&lt;br /&gt;A configuration table can be as simple as a half-dozen lines in the smallest routers, but can grow to massive size and complexity in the very large routers that handle the bulk of Internet messages.&lt;br /&gt;&lt;br /&gt;A router, then, has two separate but related jobs:&lt;br /&gt;&lt;br /&gt;    * The router ensures that information doesn't go where it's not needed. This is crucial for keeping large volumes of data from clogging the connections of "innocent bystanders."&lt;br /&gt;    * The router makes sure that information does make it to the intended destination. &lt;br /&gt;&lt;br /&gt;In performing these two jobs, a router is extremely useful in dealing with two separate computer networks. It joins the two networks, passing information from one to the other and, in some cases, performing translations of various protocols between the two networks. It also protects the networks from one another, preventing the traffic on one from unnecessarily spilling over to the other. As the number of networks attached to one another grows, the configuration table for handling traffic among them grows, and the processing power of the router is increased. Regardless of how many networks are attached, though, the basic operation and function of the router remains the same. Since the Internet is one huge network made up of tens of thousands of smaller networks, its use of routers is an absolute necessity. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Transmitting Packets&lt;br /&gt;&lt;br /&gt;When you make a telephone call to someone on the other side of the country, the telephone system establishes a stable circuit between your telephone and the telephone you're calling. The circuit might involve a half dozen or more steps through copper cables, switches, fiber optics, microwaves and satellites, but those steps are established and remain constant for the duration of the call. This circuit approach means that the quality of the line between you and the person you're calling is consistent throughout the call, but a problem with any portion of the circuit -- maybe a tree falls across one of the lines used, or there's a power problem with a switch -- brings your call to an early and abrupt end. When you send an e-mail message with an attachment to the other side of the country, a very different process is used.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Internet data, whether in the form of a Web page, a downloaded file or an e-mail message, travels over a system known as a packet-switching network. In this system, the data in a message or file is broken up into packages about 1,500 bytes long. Each of these packages gets a wrapper that includes information on the sender's address, the receiver's address, the package's place in the entire message, and how the receiving computer can be sure that the package arrived intact. Each data package, called a packet, is then sent off to its destination via the best available route -- a route that might be taken by all the other packets in the message or by none of the other packets in the message. This might seem very complicated compared to the circuit approach used by the telephone system, but in a network designed for data there are two huge advantages to the packet-switching plan.&lt;br /&gt;&lt;br /&gt;    * The network can balance the load across various pieces of equipment on a millisecond-by-millisecond basis.&lt;br /&gt;    * If there is a problem with one piece of equipment in the network while a message is being transferred, packets can be routed around the problem, ensuring the delivery of the entire message. &lt;br /&gt;The Path of a Packet&lt;br /&gt;&lt;br /&gt;The routers that make up the main part of the Internet can reconfigure the paths that packets take because they look at the information surrounding the data packet, and they tell each other about line conditions, such as delays in receiving and sending data and traffic on various pieces of the network. Not all routers do so many jobs, however. Routers come in different sizes. For example:&lt;br /&gt;&lt;br /&gt;    * If you have enabled Internet connection sharing between two Windows 98-based computers, you're using one of the computers (the computer with the Internet connection) as a simple router. In this instance, the router does so little -- simply looking at data to see whether it's intended for one computer or the other -- that it can operate in the background of the system without significantly affecting the other programs you might be running.&lt;br /&gt;&lt;br /&gt;    * Slightly larger routers, the sort used to connect a small office network to the Internet, will do a bit more. These routers frequently enforce rules concerning security for the office network (trying to secure the network from certain attacks). They handle enough traffic that they're generally stand-alone devices rather than software running on a server.&lt;br /&gt;&lt;br /&gt;    * The largest routers, those used to handle data at the major traffic points on the Internet, handle millions of data packets every second and work to configure the network most efficiently. These routers are large stand-alone systems that have far more in common with supercomputers than with your office server.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8136767800267856096-3065201500748534753?l=mydigital-garage.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mydigital-garage.blogspot.com/feeds/3065201500748534753/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mydigital-garage.blogspot.com/2009/02/how-routers-work.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8136767800267856096/posts/default/3065201500748534753'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8136767800267856096/posts/default/3065201500748534753'/><link rel='alternate' type='text/html' href='http://mydigital-garage.blogspot.com/2009/02/how-routers-work.html' title='How Routers Work'/><author><name>PRITAM</name><uri>http://www.blogger.com/profile/02799170102757192497</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_apr7HBF_hu4/SMgQ-hsQcMI/AAAAAAAAAII/hu8eIXG9oAw/S220/1212120.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8136767800267856096.post-6017602449928923592</id><published>2009-02-02T06:11:00.000-08:00</published><updated>2009-02-02T06:13:38.403-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='How does JavaScript work and how can I build simple calculators with it?'/><title type='text'>How does JavaScript work and how can I build simple calculators with it?</title><content type='html'>&lt;p&gt;      JavaScript is what is called a &lt;strong&gt;Client-side Scripting Language&lt;/strong&gt;. That means that it is a &lt;strong&gt;computer programming language&lt;/strong&gt; that runs inside an Internet browser (a browser is also known as a Web &lt;strong&gt;client&lt;/strong&gt; because it connects to a Web &lt;strong&gt;server&lt;/strong&gt; to download pages).    &lt;/p&gt;&lt;p&gt;The way JavaScript works is interesting. Inside a normal Web page you place some JavaScript code (See &lt;a href="http://computer.howstuffworks.com/web-page.htm"&gt;How Web Pages Work&lt;/a&gt; for details on Web pages). When the browser loads the page, the browser has a built-in &lt;strong&gt;interpreter&lt;/strong&gt; that reads the JavaScript code it finds in the page and runs it. &lt;/p&gt;   &lt;p&gt;Web page designers use JavaScript in many different ways. One of the most common is to do field validation in a form. Many Web sites gather information from users in online forms, and JavaScript can help validate entries. For example, the programmer might validate that a person's age entered into a form falls between 1 and 120. &lt;/p&gt;   &lt;p&gt;Another way that web page designers use JavaScript is to create calculators. Here are several examples: &lt;/p&gt;   &lt;ul&gt;&lt;li&gt;&lt;a href="http://computer.howstuffworks.com/framed.htm?parent=question369.htm&amp;amp;url=http://www.arachnoid.com/lutusp/calculator.html"&gt;RPN calculator&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://computer.howstuffworks.com/framed.htm?parent=question369.htm&amp;amp;url=http://www.megaconverter.com/mega2/"&gt;MegaConverter&lt;/a&gt; - a big collection of calculators &lt;/li&gt;&lt;li&gt;&lt;a href="http://computer.howstuffworks.com/framed.htm?parent=question369.htm&amp;amp;url=http://www.bygpub.com/finance/calculators.htm"&gt;Personal Finance calculators&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt;To give you an example of an extremely simple JavaScript calculator, the HTML below shows you how to create a Fahrenheit to Celsius converter using JavaScript:&lt;br /&gt;       &lt;pre&gt;   &lt;br /&gt;&lt;br /&gt;   &lt;form&gt;&lt;strong&gt;Fahrenheit to Celsius Converter&lt;/strong&gt;&lt;br /&gt;&lt;span style="color:#008000;"&gt;Enter a temperature in degrees F:&lt;br /&gt;&lt;input maxlength="15" size="15" value="0" name="DegF"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;    &lt;br /&gt;     &lt;p&gt;&lt;br /&gt;&lt;span style="color:#008000;"&gt;Click this button to calculate the temperature&lt;br /&gt;in degrees C:&lt;br /&gt;&lt;input onclick="temp(this.form)" value="Calculate" name="calc" type="button"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;    &lt;br /&gt;     &lt;p&gt;&lt;br /&gt;&lt;span style="color:#008000;"&gt;Temperature in degrees C is:&lt;br /&gt;&lt;input readonly="readonly" size="15" name="DegC"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;   &lt;br /&gt;        &lt;br /&gt;  &lt;br /&gt;   &lt;/form&gt;&lt;br /&gt;  &lt;br /&gt;&lt;br /&gt; &lt;/pre&gt;   &lt;p&gt;If you have read &lt;a href="http://computer.howstuffworks.com/web-page.htm"&gt;How Web Pages Work&lt;/a&gt; and &lt;a href="http://computer.howstuffworks.com/cgi.htm"&gt;How CGI Scripts Work&lt;/a&gt;, then a good portion of this HTML will be familiar. This is the basic structure of any web page: &lt;/p&gt;   &lt;p&gt;&lt;span style="color:#008000;"&gt;&lt;span style="font-family:courier new,courier,monospace;"&gt;&lt;html&gt;&lt;br /&gt;&lt;head&gt;&lt;br /&gt;&lt;/head&gt;&lt;br /&gt;&lt;body&gt;&lt;br /&gt;&lt;/body&gt;&lt;br /&gt;&lt;/html&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p&gt;&lt;br /&gt;&lt;/p&gt;   &lt;p&gt;There is one piece of JavaScript code in the header that is the function to calculate the conversion from Fahrenheit to Celsius: &lt;/p&gt;   &lt;p&gt;&lt;span style="font-family:courier new,courier,monospace;"&gt;&lt;span style="color:#008000;"&gt;&lt;head&gt;&lt;br /&gt;&lt;script&gt;&lt;br /&gt;&lt;!-- hide this script from old browsers&lt;br /&gt;function temp(form)&lt;br /&gt;{&lt;br /&gt;  var f = parseFloat(form.DegF.value, 10);&lt;br /&gt;  var c = 0;&lt;br /&gt;  c = (f - 32.0) * 5.0 / 9.0;&lt;br /&gt;  form.DegC.value = c;&lt;br /&gt;}&lt;br /&gt;&lt;!-- done hiding from old &lt;span style="color:#008000;"&gt;browsers&lt;/span&gt; --&gt;&lt;br /&gt;&lt;/script&gt;&lt;br /&gt;&lt;/head&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p&gt;The function is called &lt;strong&gt;temp&lt;/strong&gt;. It contains JavaScript code to calculate a Celsius temperature. &lt;/p&gt;   &lt;p&gt;&lt;br /&gt;&lt;br /&gt;In the body of the page there is a typical form: &lt;/p&gt;   &lt;pre&gt;&lt;span style="color:#008000;"&gt;&lt;form&gt;&lt;br /&gt;&lt;h2&gt;Fahrenheit to Celsius Converter&lt;/h2&gt;&lt;br /&gt;Enter a temperature in degrees F:&lt;br /&gt;&lt;input name="DegF" value="0" maxlength="15" size="15"&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Click this button to calculate the temperature&lt;br /&gt;in degrees C:&lt;br /&gt;&lt;INPUT NAME="calc" VALUE="Calculate" TYPE=BUTTON&lt;br /&gt;onClick=temp(this.form)&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Temperature in degrees C is:&lt;br /&gt;&lt;input name="DegC" size="15"&gt;&lt;br /&gt;&lt;/form&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;   &lt;p&gt;&lt;br /&gt;This line is key: &lt;/p&gt;   &lt;pre&gt;&lt;span style="color:#008000;"&gt;&lt;INPUT NAME="calc" VALUE="Calculate" TYPE=BUTTON&lt;br /&gt;onClick=temp(this.form)&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;   &lt;p&gt;This is a normal button control. When the user clicks it, it calls the function in the head of the page because of the &lt;strong&gt;onClick&lt;/strong&gt; notation. &lt;/p&gt;   &lt;p&gt;As programming languages go, JavaScript is average difficulty. It is not especially hard to learn how to use it if you already understand programming, but if you are new to programming it is certainly not an easy language to start with. What you can do, however, is modify this sample code and expand it to create other calculators. &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8136767800267856096-6017602449928923592?l=mydigital-garage.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mydigital-garage.blogspot.com/feeds/6017602449928923592/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mydigital-garage.blogspot.com/2009/02/how-does-javascript-work-and-how-can-i.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8136767800267856096/posts/default/6017602449928923592'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8136767800267856096/posts/default/6017602449928923592'/><link rel='alternate' type='text/html' href='http://mydigital-garage.blogspot.com/2009/02/how-does-javascript-work-and-how-can-i.html' title='How does JavaScript work and how can I build simple calculators with it?'/><author><name>PRITAM</name><uri>http://www.blogger.com/profile/02799170102757192497</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_apr7HBF_hu4/SMgQ-hsQcMI/AAAAAAAAAII/hu8eIXG9oAw/S220/1212120.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8136767800267856096.post-2969752913218784691</id><published>2009-02-02T06:04:00.000-08:00</published><updated>2009-02-02T06:09:58.855-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='How Boolean Logic Works'/><title type='text'>How Boolean Logic Works</title><content type='html'>&lt;p&gt; Have you ever wondered how a computer can do something like balance a check book, or &lt;a href="http://computer.howstuffworks.com/chess.htm"&gt;play chess&lt;/a&gt;, or spell-check a document? These are things that, just a few decades ago, only humans could do. Now computers do them with apparent ease. How can a "chip" made up of silicon and wires do something that seems like it requires human thought? &lt;/p&gt;&lt;table class="sideBoxLeft"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;If you want to understand the answer to this question down at the very core, the first thing you need to understand is something called &lt;strong&gt;Boolean logic&lt;/strong&gt;. Boolean logic, originally developed by George Boole in the mid 1800s, allows quite a few unexpected things to be mapped into &lt;a href="http://computer.howstuffworks.com/bytes.htm"&gt;bits and bytes&lt;/a&gt;. The great thing about Boolean logic is that, once you get the hang of things, Boolean logic (or at least the parts you need in order to understand the operations of computers) is outrageously simple. In this article,we will first discuss simple logic "gates," and then see how to combine them into something useful.&lt;br /&gt;&lt;/p&gt;&lt;h1 class="articlePageTitle"&gt;Simple Gates&lt;/h1&gt;  &lt;!-- dtl_id=6434 //--&gt; &lt;p&gt; There are three, five or seven simple gates that you need to learn about, depending on how you want to count them (you will see why in a moment). With these simple gates you can build combinations that will implement any digital ­component you can imagine. These gates are going to seem a little dry here, and incredibly simple, but we will see some interesting combinations in the following sections that will make them a lot more inspiring. If you have not done so already, reading &lt;a href="http://computer.howstuffworks.com/bytes.htm"&gt;How Bits and Bytes Work&lt;/a&gt; would be helpful before proceeding. &lt;/p&gt;&lt;p&gt; The simplest possible gate is called an "inverter," or a &lt;strong&gt;NOT gate&lt;/strong&gt;. It takes one bit as input and produces as output its opposite. The table below shows a logic table for the NOT gate and the normal symbol for it in circuit diagrams: &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;center&gt; &lt;table&gt; &lt;tbody&gt;&lt;tr&gt; &lt;td colspan="3"&gt; &lt;center&gt;&lt;span style="color:#000099;"&gt;&lt;strong&gt;NOT Gate&lt;/strong&gt;&lt;/span&gt;&lt;/center&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt; &lt;table width="50"&gt; &lt;tbody&gt;&lt;tr&gt; &lt;td&gt; &lt;strong&gt;A&lt;/strong&gt; &lt;/td&gt; &lt;td&gt; &lt;strong&gt;Q&lt;/strong&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt; 0 &lt;/td&gt; &lt;td&gt; 1 &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt; 1 &lt;/td&gt; &lt;td&gt; 0 &lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;/td&gt; &lt;td&gt; &lt;img src="http://static.howstuffworks.com/gif/bool-not.gif" /&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;/center&gt; &lt;p&gt;&lt;br /&gt;You can see in this figure that the NOT gate has one input called &lt;strong&gt;A&lt;/strong&gt; and one output called &lt;strong&gt;Q&lt;/strong&gt; ("Q" is used for the output because if you used "O," you would easily confuse it with zero). The table shows how the gate behaves. When you apply a 0 to A, Q produces a 1. When you apply a 1 to A, Q produces a 0. Simple. &lt;/p&gt;&lt;p&gt; The &lt;strong&gt;AND gate&lt;/strong&gt; performs a logical "and" operation on two inputs, A and B: &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;center&gt; &lt;table&gt; &lt;tbody&gt;&lt;tr&gt; &lt;td colspan="4"&gt; &lt;center&gt;&lt;span style="color:#000099;"&gt;&lt;strong&gt;AND Gate&lt;/strong&gt;&lt;/span&gt;&lt;/center&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;  &lt;table width="80"&gt; &lt;tbody&gt;&lt;tr&gt; &lt;td&gt; &lt;strong&gt;A&lt;/strong&gt; &lt;/td&gt; &lt;td&gt; &lt;strong&gt;B&lt;/strong&gt; &lt;/td&gt; &lt;td&gt; &lt;strong&gt;Q&lt;/strong&gt; &lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt; 0 &lt;/td&gt; &lt;td&gt; 0 &lt;/td&gt; &lt;td&gt; 0 &lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt; 0 &lt;/td&gt; &lt;td&gt; 1 &lt;/td&gt; &lt;td&gt; 0 &lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt; 1 &lt;/td&gt; &lt;td&gt; 0 &lt;/td&gt; &lt;td&gt; 0 &lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt; 1 &lt;/td&gt; &lt;td&gt; 1 &lt;/td&gt; &lt;td&gt; 1 &lt;/td&gt; &lt;/tr&gt;  &lt;/tbody&gt;&lt;/table&gt;  &lt;/td&gt; &lt;td&gt; &lt;img src="http://static.howstuffworks.com/gif/bool-and.gif" /&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;/center&gt; &lt;p&gt;&lt;br /&gt; The idea behind an AND gate is, "If A &lt;strong&gt;AND&lt;/strong&gt; B are both 1, then Q should be 1." You can see that behavior in the logic table for the gate. You read this table row by row, like this: &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;table width="350" align="center"&gt; &lt;tbody&gt;&lt;tr&gt; &lt;td colspan="4"&gt; &lt;center&gt;&lt;span style="color:#000099;"&gt;&lt;strong&gt;AND Gate&lt;/strong&gt;&lt;/span&gt;&lt;/center&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt;&lt;td align="center"&gt; &lt;table&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td&gt; &lt;strong&gt;A&lt;/strong&gt; &lt;/td&gt; &lt;td&gt; &lt;strong&gt;B&lt;/strong&gt; &lt;/td&gt; &lt;td&gt; &lt;strong&gt;Q&lt;/strong&gt; &lt;/td&gt; &lt;td&gt;&lt;br /&gt;&lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt; 0 &lt;/td&gt; &lt;td&gt; 0 &lt;/td&gt; &lt;td&gt; 0 &lt;/td&gt; &lt;td&gt; &lt;em&gt;&lt;span style="color:blue;"&gt;If A is 0 AND B is 0, Q is 0.&lt;/span&gt;&lt;/em&gt; &lt;/td&gt;&lt;/tr&gt;  &lt;tr&gt; &lt;td&gt; 0 &lt;/td&gt; &lt;td&gt; 1 &lt;/td&gt; &lt;td&gt; 0 &lt;/td&gt; &lt;td&gt; &lt;em&gt;&lt;span style="color:blue;"&gt;If A is 0 AND B is 1, Q is 0.&lt;/span&gt;&lt;/em&gt; &lt;/td&gt;&lt;/tr&gt;  &lt;tr&gt; &lt;td&gt; 1 &lt;/td&gt; &lt;td&gt; 0 &lt;/td&gt; &lt;td&gt; 0 &lt;/td&gt; &lt;td&gt; &lt;em&gt;&lt;span style="color:blue;"&gt;If A is 1 AND B is 0, Q is 0.&lt;/span&gt;&lt;/em&gt; &lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt; 1 &lt;/td&gt; &lt;td&gt; 1 &lt;/td&gt; &lt;td&gt; 1 &lt;/td&gt; &lt;td&gt; &lt;em&gt;&lt;span style="color:blue;"&gt;If A is 1 AND B is 1, Q is 1.&lt;/span&gt;&lt;/em&gt; &lt;/td&gt;&lt;/tr&gt;  &lt;/tbody&gt;&lt;/table&gt;  &lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&lt;br /&gt;The next gate is an &lt;strong&gt;OR gate&lt;/strong&gt;. Its basic idea is, "If A is 1 &lt;strong&gt;OR&lt;/strong&gt; B is 1 (or both are 1), then Q is 1."  &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;center&gt; &lt;table&gt; &lt;tbody&gt;&lt;tr&gt; &lt;td colspan="4"&gt; &lt;center&gt;&lt;span style="color:#000099;"&gt;&lt;strong&gt;OR Gate&lt;/strong&gt;&lt;/span&gt;&lt;/center&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;  &lt;table width="80"&gt; &lt;tbody&gt;&lt;tr&gt; &lt;td&gt; &lt;strong&gt;A&lt;/strong&gt; &lt;/td&gt; &lt;td&gt; &lt;strong&gt;B&lt;/strong&gt; &lt;/td&gt; &lt;td&gt; &lt;strong&gt;Q&lt;/strong&gt; &lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt; 0 &lt;/td&gt; &lt;td&gt; 0 &lt;/td&gt; &lt;td&gt; 0 &lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt; 0 &lt;/td&gt; &lt;td&gt; 1 &lt;/td&gt; &lt;td&gt; 1 &lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt; 1 &lt;/td&gt; &lt;td&gt; 0 &lt;/td&gt; &lt;td&gt; 1 &lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt; 1 &lt;/td&gt; &lt;td&gt; 1 &lt;/td&gt; &lt;td&gt; 1 &lt;/td&gt; &lt;/tr&gt;  &lt;/tbody&gt;&lt;/table&gt;  &lt;/td&gt; &lt;td&gt; &lt;img src="http://static.howstuffworks.com/gif/bool-or.gif" /&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;/center&gt; &lt;p&gt;&lt;br /&gt;Those are the three basic gates (that's one way to count them). It is quite common to recognize two others as well: the &lt;strong&gt;NAND&lt;/strong&gt; and the &lt;strong&gt;NOR&lt;/strong&gt; gate. These two gates are simply combinations of an AND or an OR gate with a NOT gate. If you include these two gates, then the count rises to five. Here's the basic operation of NAND and NOR gates -- you can see they are simply inversions of AND and OR gates: &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;center&gt; &lt;table&gt; &lt;tbody&gt;&lt;tr&gt; &lt;td colspan="4"&gt; &lt;center&gt;&lt;span style="color:#000099;"&gt;&lt;strong&gt;NOR Gate&lt;/strong&gt;&lt;/span&gt;&lt;/center&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;  &lt;table width="80"&gt; &lt;tbody&gt;&lt;tr&gt; &lt;td&gt; &lt;strong&gt;A&lt;/strong&gt; &lt;/td&gt; &lt;td&gt; &lt;strong&gt;B&lt;/strong&gt; &lt;/td&gt; &lt;td&gt; &lt;strong&gt;Q&lt;/strong&gt; &lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt; 0 &lt;/td&gt; &lt;td&gt; 0 &lt;/td&gt; &lt;td&gt; 1 &lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt; 0 &lt;/td&gt; &lt;td&gt; 1 &lt;/td&gt; &lt;td&gt; 0 &lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt; 1 &lt;/td&gt; &lt;td&gt; 0 &lt;/td&gt; &lt;td&gt; 0 &lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt; 1 &lt;/td&gt; &lt;td&gt; 1 &lt;/td&gt; &lt;td&gt; 0 &lt;/td&gt; &lt;/tr&gt;  &lt;/tbody&gt;&lt;/table&gt;  &lt;/td&gt; &lt;td&gt; &lt;img src="http://static.howstuffworks.com/gif/bool-nor.gif" /&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;/center&gt; &lt;p&gt;  &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;center&gt; &lt;table&gt; &lt;tbody&gt;&lt;tr&gt; &lt;td colspan="4"&gt; &lt;center&gt;&lt;span style="color:#000099;"&gt;&lt;strong&gt;NAND Gate&lt;/strong&gt;&lt;/span&gt;&lt;/center&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;  &lt;table width="80"&gt; &lt;tbody&gt;&lt;tr&gt; &lt;td&gt; &lt;strong&gt;A&lt;/strong&gt; &lt;/td&gt; &lt;td&gt; &lt;strong&gt;B&lt;/strong&gt; &lt;/td&gt; &lt;td&gt; &lt;strong&gt;Q&lt;/strong&gt; &lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt; 0 &lt;/td&gt; &lt;td&gt; 0 &lt;/td&gt; &lt;td&gt; 1 &lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt; 0 &lt;/td&gt; &lt;td&gt; 1 &lt;/td&gt; &lt;td&gt; 1 &lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt; 1 &lt;/td&gt; &lt;td&gt; 0 &lt;/td&gt; &lt;td&gt; 1 &lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt; 1 &lt;/td&gt; &lt;td&gt; 1 &lt;/td&gt; &lt;td&gt; 0 &lt;/td&gt; &lt;/tr&gt;  &lt;/tbody&gt;&lt;/table&gt;  &lt;/td&gt; &lt;td&gt; &lt;img src="http://static.howstuffworks.com/gif/bool-nand.gif" /&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;/center&gt; &lt;p&gt;&lt;br /&gt;The final two gates that are sometimes added to the list are the &lt;strong&gt;XOR&lt;/strong&gt; and &lt;strong&gt;XNOR&lt;/strong&gt; gates, also known as "exclusive or" and "exclusive nor" gates, respectively. Here are their tables: &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;center&gt; &lt;table&gt; &lt;tbody&gt;&lt;tr&gt; &lt;td colspan="4"&gt; &lt;center&gt;&lt;span style="color:#000099;"&gt;&lt;strong&gt;XOR Gate&lt;/strong&gt;&lt;/span&gt;&lt;/center&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;  &lt;table width="80"&gt; &lt;tbody&gt;&lt;tr&gt; &lt;td&gt; &lt;strong&gt;A&lt;/strong&gt; &lt;/td&gt; &lt;td&gt; &lt;strong&gt;B&lt;/strong&gt; &lt;/td&gt; &lt;td&gt; &lt;strong&gt;Q&lt;/strong&gt; &lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt; 0 &lt;/td&gt; &lt;td&gt; 0 &lt;/td&gt; &lt;td&gt; 0 &lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt; 0 &lt;/td&gt; &lt;td&gt; 1 &lt;/td&gt; &lt;td&gt; 1 &lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt; 1 &lt;/td&gt; &lt;td&gt; 0 &lt;/td&gt; &lt;td&gt; 1 &lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt; 1 &lt;/td&gt; &lt;td&gt; 1 &lt;/td&gt; &lt;td&gt; 0 &lt;/td&gt; &lt;/tr&gt;  &lt;/tbody&gt;&lt;/table&gt;  &lt;/td&gt; &lt;td&gt; &lt;img src="http://static.howstuffworks.com/gif/bool-xor.gif" /&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;/center&gt; &lt;p&gt;  &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;center&gt; &lt;table&gt; &lt;tbody&gt;&lt;tr&gt; &lt;td colspan="4"&gt; &lt;center&gt;&lt;span style="color:#000099;"&gt;&lt;strong&gt;XNOR Gate&lt;/strong&gt;&lt;/span&gt;&lt;/center&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt; &lt;table width="80"&gt; &lt;tbody&gt;&lt;tr&gt; &lt;td&gt; &lt;strong&gt;A&lt;/strong&gt; &lt;/td&gt; &lt;td&gt; &lt;strong&gt;B&lt;/strong&gt; &lt;/td&gt; &lt;td&gt; &lt;strong&gt;Q&lt;/strong&gt; &lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt; 0 &lt;/td&gt; &lt;td&gt; 0 &lt;/td&gt; &lt;td&gt; 1 &lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt; 0 &lt;/td&gt; &lt;td&gt; 1 &lt;/td&gt; &lt;td&gt; 0 &lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td&gt; 1 &lt;/td&gt; &lt;td&gt; 0 &lt;/td&gt; &lt;td&gt; 0 &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt; 1 &lt;/td&gt; &lt;td&gt; 1 &lt;/td&gt; &lt;td&gt; 1 &lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;/td&gt; &lt;td&gt; &lt;img src="http://static.howstuffworks.com/gif/bool-xnor.gif" /&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;/center&gt; &lt;p&gt;&lt;br /&gt;The idea behind an XOR gate is, "If either A &lt;strong&gt;OR&lt;/strong&gt; B is 1, but &lt;strong&gt;NOT&lt;/strong&gt; both, Q is 1." The reason why XOR might not be included in a list of gates is because you can implement it easily using the original three gates listed. Here is one implementation: &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;center&gt; &lt;img src="http://static.howstuffworks.com/gif/bool-xor-detail.gif" /&gt; &lt;/center&gt; &lt;p&gt;&lt;br /&gt;If you try all four different patterns for A and B and trace them through the circuit, you will find that Q behaves like an XOR gate. Since there is a well-understood symbol for XOR gates, it is generally easier to think of XOR as a "standard gate" and use it in the same way as AND and OR in circuit diagrams.&lt;br /&gt;&lt;/p&gt;&lt;div class="articleBody"&gt;  &lt;h1 class="articlePageTitle"&gt;Simple Adders&lt;/h1&gt;  &lt;!-- dtl_id=6436 //--&gt; &lt;p&gt; In the article on &lt;a href="http://computer.howstuffworks.com/bytes.htm"&gt;bits and bytes&lt;/a&gt;, you learned about &lt;strong&gt;binary addition&lt;/strong&gt;. In this section, you will learn how you can create a circuit capable of binary addition using the gates described in the previous section. &lt;/p&gt;&lt;p&gt; Let's start with a &lt;strong&gt;single-bit adder&lt;/strong&gt;. Let's say that you have a project where you need to add single bits together and get the answer. The way you would start designing a circuit for that is to first look at all of the logical combinations. You might do that by looking at the following four sums: &lt;/p&gt;&lt;p&gt; &lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;/p&gt;&lt;table width="200" cellpadding="3"&gt; &lt;tbody&gt;&lt;tr&gt; &lt;td align="right"&gt;&lt;span style="font-family:arial,helvetica;color:blue;"&gt;0&lt;/span&gt;&lt;/td&gt; &lt;td align="right"&gt;&lt;span style="font-family:arial,helvetica;color:blue;"&gt;0&lt;/span&gt;&lt;/td&gt; &lt;td align="right"&gt;&lt;span style="font-family:arial,helvetica;color:blue;"&gt;1&lt;/span&gt;&lt;/td&gt; &lt;td align="right"&gt;&lt;span style="font-family:arial,helvetica;color:blue;"&gt;1&lt;/span&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td align="right"&gt;&lt;u&gt;&lt;span style="font-family:arial,helvetica;color:blue;"&gt;+ 0&lt;/span&gt;&lt;/u&gt;&lt;/td&gt; &lt;td align="right"&gt;&lt;u&gt;&lt;span style="font-family:arial,helvetica;color:blue;"&gt;+ 1&lt;/span&gt;&lt;/u&gt;&lt;/td&gt; &lt;td align="right"&gt;&lt;u&gt;&lt;span style="font-family:arial,helvetica;color:blue;"&gt;+ 0&lt;/span&gt;&lt;/u&gt;&lt;/td&gt; &lt;td align="right"&gt;&lt;u&gt;&lt;span style="font-family:arial,helvetica;color:blue;"&gt;+ 1&lt;/span&gt;&lt;/u&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td align="right"&gt;&lt;span style="font-family:arial,helvetica;color:blue;"&gt;0&lt;/span&gt;&lt;/td&gt; &lt;td align="right"&gt;&lt;span style="font-family:arial,helvetica;color:blue;"&gt;1&lt;/span&gt;&lt;/td&gt; &lt;td align="right"&gt;&lt;span style="font-family:arial,helvetica;color:blue;"&gt;1&lt;/span&gt;&lt;/td&gt; &lt;td align="right"&gt;&lt;span style="font-family:arial,helvetica;color:blue;"&gt;10&lt;/span&gt;&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;&lt;br /&gt;That looks fine until you get to 1 + 1. In that case, you have that pesky &lt;strong&gt;carry bit&lt;/strong&gt; to worry about. If you don't care about carrying (because this is, after all, a 1-bit addition problem), then you can see that you can solve this problem with an XOR gate. But if you do care, then you might rewrite your equations to always include &lt;strong&gt;2 bits of output&lt;/strong&gt;, like this: &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;table width="200" cellpadding="3"&gt; &lt;tbody&gt;&lt;tr&gt; &lt;td align="right"&gt;&lt;span style="font-family:arial,helvetica;color:blue;"&gt;0&lt;/span&gt;&lt;/td&gt; &lt;td align="right"&gt;&lt;span style="font-family:arial,helvetica;color:blue;"&gt;0&lt;/span&gt;&lt;/td&gt; &lt;td align="right"&gt;&lt;span style="font-family:arial,helvetica;color:blue;"&gt;1&lt;/span&gt;&lt;/td&gt; &lt;td align="right"&gt;&lt;span style="font-family:arial,helvetica;color:blue;"&gt;1&lt;/span&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td align="right"&gt;&lt;u&gt;&lt;span style="font-family:arial,helvetica;color:blue;"&gt;+ 0&lt;/span&gt;&lt;/u&gt;&lt;/td&gt; &lt;td align="right"&gt;&lt;u&gt;&lt;span style="font-family:arial,helvetica;color:blue;"&gt;+ 1&lt;/span&gt;&lt;/u&gt;&lt;/td&gt; &lt;td align="right"&gt;&lt;u&gt;&lt;span style="font-family:arial,helvetica;color:blue;"&gt;+ 0&lt;/span&gt;&lt;/u&gt;&lt;/td&gt; &lt;td align="right"&gt;&lt;u&gt;&lt;span style="font-family:arial,helvetica;color:blue;"&gt;+ 1&lt;/span&gt;&lt;/u&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td align="right"&gt;&lt;span style="font-family:arial,helvetica;color:blue;"&gt;00&lt;/span&gt;&lt;/td&gt; &lt;td align="right"&gt;&lt;span style="font-family:arial,helvetica;color:blue;"&gt;01&lt;/span&gt;&lt;/td&gt; &lt;td align="right"&gt;&lt;span style="font-family:arial,helvetica;color:blue;"&gt;01&lt;/span&gt;&lt;/td&gt; &lt;td align="right"&gt;&lt;span style="font-family:arial,helvetica;color:blue;"&gt;10&lt;/span&gt;&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;&lt;br /&gt;From these equations you can form the logic table: &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;center&gt; &lt;table align="center"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td colspan="4"&gt; &lt;center&gt;&lt;span style="color:#000099;"&gt;&lt;strong&gt;1-bit Adder with Carry-Out&lt;/strong&gt;&lt;/span&gt;&lt;/center&gt; &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td&gt; &lt;table width="140" align="center"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td width="35" align="center"&gt; &lt;strong&gt;A&lt;/strong&gt; &lt;/td&gt;&lt;td width="35" align="center"&gt; &lt;strong&gt;B&lt;/strong&gt; &lt;/td&gt;&lt;td width="35" align="center"&gt; &lt;strong&gt;Q&lt;/strong&gt; &lt;/td&gt;&lt;td width="35" align="center"&gt; &lt;strong&gt;CO&lt;/strong&gt; &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td align="center"&gt; 0 &lt;/td&gt;&lt;td align="center"&gt; 0 &lt;/td&gt;&lt;td align="center"&gt; 0 &lt;/td&gt;&lt;td align="center"&gt; 0 &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td align="center"&gt; 0 &lt;/td&gt;&lt;td align="center"&gt; 1 &lt;/td&gt;&lt;td align="center"&gt; 1 &lt;/td&gt;&lt;td align="center"&gt; 0 &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td align="center"&gt; 1 &lt;/td&gt;&lt;td align="center"&gt; 0 &lt;/td&gt;&lt;td align="center"&gt; 1 &lt;/td&gt;&lt;td align="center"&gt; 0 &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td align="center"&gt; 1 &lt;/td&gt;&lt;td align="center"&gt; 1 &lt;/td&gt;&lt;td align="center"&gt; 0 &lt;/td&gt;&lt;td align="center"&gt; 1 &lt;/td&gt;&lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;/td&gt;&lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;/center&gt; &lt;p&gt;&lt;br /&gt;By looking at this table you can see that you can implement Q with an XOR gate and CO (carry-out) with an AND gate. Simple. &lt;/p&gt;&lt;p&gt; What if you want to add two 8-bit bytes together? This becomes slightly harder. The easiest solution is to modularize the problem into &lt;strong&gt;reusable components&lt;/strong&gt; and then replicate components. In this case, we need to create only one component: a &lt;strong&gt;full binary adder&lt;/strong&gt;. &lt;/p&gt;&lt;p&gt; The difference between a full adder and the previous adder we looked at is that a full adder accepts an A and a B input plus a &lt;strong&gt;carry-in&lt;/strong&gt; (CI) input. Once we have a full adder, then we can string eight of them together to create a byte-wide adder and cascade the carry bit from one adder to the next. &lt;/p&gt;In the next section, we'll look at how a full adder is implemented into a circuit.&lt;br /&gt;&lt;p&gt;  &lt;/p&gt;&lt;p&gt; &lt;!-- Page Break --&gt;&lt;/p&gt;&lt;/div&gt;       &lt;!--DEV NOTE: this div ensures that the entire article body --&gt;       &lt;!--DEV NOTE: is displayed before ending the container box --&gt;&lt;br /&gt;&lt;div class="articleBody"&gt;  &lt;h1 class="articlePageTitle"&gt;Full Adders&lt;/h1&gt;  &lt;!-- dtl_id=6438 //--&gt;  &lt;p&gt; The logic table for a full adder is slightly more complicated than the tables we have used before, because now we have &lt;strong&gt;3 input bits&lt;/strong&gt;. It looks like this: &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;center&gt; &lt;table&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td colspan="5"&gt; &lt;center&gt;&lt;span style="color:#000099;"&gt;&lt;strong&gt;One-bit Full Adder with Carry-In and Carry-Out&lt;/strong&gt;&lt;/span&gt;&lt;/center&gt; &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt; &lt;table width="150" align="center"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td width="30" align="center"&gt; &lt;strong&gt;CI&lt;/strong&gt; &lt;/td&gt;&lt;td width="30" align="center"&gt; &lt;strong&gt;A&lt;/strong&gt; &lt;/td&gt;&lt;td width="30" align="center"&gt; &lt;strong&gt;B&lt;/strong&gt; &lt;/td&gt;&lt;td width="30" align="center"&gt; &lt;strong&gt;Q&lt;/strong&gt; &lt;/td&gt;&lt;td width="30" align="center"&gt; &lt;strong&gt;CO&lt;/strong&gt; &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td align="center"&gt; 0 &lt;/td&gt;&lt;td align="center"&gt; 0 &lt;/td&gt;&lt;td align="center"&gt; 0 &lt;/td&gt;&lt;td align="center"&gt; 0 &lt;/td&gt;&lt;td align="center"&gt; 0 &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td align="center"&gt; 0 &lt;/td&gt;&lt;td align="center"&gt; 0 &lt;/td&gt;&lt;td align="center"&gt; 1 &lt;/td&gt;&lt;td align="center"&gt; 1 &lt;/td&gt;&lt;td align="center"&gt; 0 &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td align="center"&gt; 0 &lt;/td&gt;&lt;td align="center"&gt; 1 &lt;/td&gt;&lt;td align="center"&gt; 0 &lt;/td&gt;&lt;td align="center"&gt; 1 &lt;/td&gt;&lt;td align="center"&gt; 0 &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td align="center"&gt; 0 &lt;/td&gt;&lt;td align="center"&gt; 1 &lt;/td&gt;&lt;td align="center"&gt; 1 &lt;/td&gt;&lt;td align="center"&gt; 0 &lt;/td&gt;&lt;td align="center"&gt; 1 &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td align="center"&gt; 1 &lt;/td&gt;&lt;td align="center"&gt; 0 &lt;/td&gt;&lt;td align="center"&gt; 0 &lt;/td&gt;&lt;td align="center"&gt; 1 &lt;/td&gt;&lt;td align="center"&gt; 0 &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td align="center"&gt; 1 &lt;/td&gt;&lt;td align="center"&gt; 0 &lt;/td&gt;&lt;td align="center"&gt; 1 &lt;/td&gt;&lt;td align="center"&gt; 0 &lt;/td&gt;&lt;td align="center"&gt; 1 &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td align="center"&gt; 1 &lt;/td&gt;&lt;td align="center"&gt; 1 &lt;/td&gt;&lt;td align="center"&gt; 0 &lt;/td&gt;&lt;td align="center"&gt; 0 &lt;/td&gt;&lt;td align="center"&gt; 1 &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td align="center"&gt; 1 &lt;/td&gt;&lt;td align="center"&gt; 1 &lt;/td&gt;&lt;td align="center"&gt; 1 &lt;/td&gt;&lt;td align="center"&gt; 1 &lt;/td&gt;&lt;td align="center"&gt; 1 &lt;/td&gt;&lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;/td&gt;&lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;/center&gt; &lt;p&gt;&lt;br /&gt;There are many different ways that you might implement this table. I am going to present one method here that has the benefit of being easy to understand. If you look at the Q bit, you can see that the top 4 bits are behaving like an XOR gate with respect to A and B, while the bottom 4 bits are behaving like an XNOR gate with respect to A and B. Similarly, the top 4 bits of CO are behaving like an AND gate with respect to A and B, and the bottom 4 bits behave like an OR gate. Taking those facts, the following circuit implements a full adder: &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;center&gt; &lt;img src="http://static.howstuffworks.com/gif/bool-full-adder.gif" /&gt; &lt;/center&gt; &lt;p&gt;&lt;br /&gt;This definitely is not the most efficient way to implement a full adder, but it is extremely easy to understand and trace through the logic using this method. If you are so inclined, see what you can do to implement this logic with fewer gates. &lt;/p&gt;&lt;p&gt;Now we have a piece of functionality called a "full adder." What a computer engineer then does is "black-box" it so that he or she can stop worrying about the details of the component. A &lt;strong&gt;black box&lt;/strong&gt; for a full adder would look like this: &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;center&gt; &lt;img src="http://static.howstuffworks.com/gif/bool-full-adder-bb.gif" /&gt; &lt;/center&gt; &lt;p&gt;&lt;br /&gt;With that black box, it is now easy to draw a &lt;strong&gt;4-bit full adder&lt;/strong&gt;: &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;center&gt; &lt;img src="http://static.howstuffworks.com/gif/bool-8-bit-add.gif" /&gt; &lt;/center&gt; &lt;p&gt;&lt;br /&gt;In this diagram the carry-out from each bit feeds directly into the carry-in of the next bit over. A 0 is hard-wired into the initial carry-in bit. If you input two 4-bit numbers on the A and B lines, you will get the 4-bit sum out on the Q lines, plus 1 additional bit for the final carry-out. You can see that this chain can extend as far as you like, through 8, 16 or 32 bits if desired. &lt;/p&gt;&lt;p&gt; The 4-bit adder we just created is called a &lt;strong&gt;ripple-carry&lt;/strong&gt; adder. It gets that name because the carry bits "ripple" from one adder to the next. This implementation has the advantage of simplicity but the disadvantage of speed problems. In a real circuit, gates take time to switch states (the time is on the order of nanoseconds, but in high-speed computers nanoseconds matter). So 32-bit or 64-bit ripple-carry adders might take 100 to 200 nanoseconds to settle into their final sum because of carry ripple. For this reason, engineers have created more advanced adders called &lt;strong&gt;carry-lookahead&lt;/strong&gt; adders. The number of gates required to implement carry-lookahead is large, but the settling time for the adder is much better.&lt;br /&gt;&lt;/p&gt;&lt;h1 class="articlePageTitle"&gt;Flip Flops&lt;/h1&gt;  &lt;!-- dtl_id=6440 //--&gt; &lt;p&gt;   One of the more interesting things that you can do with Boolean gates is to create &lt;strong&gt;memory&lt;/strong&gt; with them. If you arrange the gates correctly, they will remember an input value. This simple concept is the basis of &lt;a href="http://computer.howstuffworks.com/ram.htm"&gt;RAM&lt;/a&gt; (random access memory) in computers, and also makes it possible to create a wide variety of other useful circuits.  &lt;/p&gt;&lt;p&gt;  Memory relies on a concept called &lt;strong&gt;feedback&lt;/strong&gt;. That is, the output of a gate is fed back into the input. The simplest possible feedback circuit using two inverters is shown below: &lt;/p&gt;&lt;p&gt;  &lt;/p&gt;&lt;center&gt;  &lt;img src="http://static.howstuffworks.com/gif/bool-mem2.gif" /&gt;  &lt;/center&gt;  &lt;p&gt;&lt;br /&gt;If you follow the feedback path, you can see that if Q happens to be 1, it will always be 1. If it happens to be 0, it will always be 0. Since it's nice to be able to control the circuits we create, this one doesn't have much use -- but it does let you see how feedback works. &lt;/p&gt;&lt;p&gt; It turns out that in "real" circuits, you can actually use this sort of simple inverter feedback approach. A more useful feedback circuit using two NAND gates is shown below: &lt;/p&gt;&lt;p&gt;  &lt;/p&gt;&lt;center&gt;  &lt;img src="http://static.howstuffworks.com/gif/bool-rs.gif" /&gt;  &lt;/center&gt;  &lt;p&gt;&lt;br /&gt; This circuit has two inputs (&lt;strong&gt;R&lt;/strong&gt; and &lt;strong&gt;S&lt;/strong&gt;) and two outputs (&lt;strong&gt;Q&lt;/strong&gt; and &lt;strong&gt;Q'&lt;/strong&gt;). Because of the feedback, its logic table is a little unusual compared to the ones we have seen previously:  &lt;/p&gt;&lt;p&gt;  &lt;/p&gt;&lt;center&gt;  &lt;table width="220" align="center"&gt;  &lt;tbody&gt;&lt;tr&gt;&lt;td width="50" align="center"&gt;  &lt;strong&gt;R&lt;/strong&gt;  &lt;/td&gt;&lt;td width="50" align="center"&gt;  &lt;strong&gt;S&lt;/strong&gt;  &lt;/td&gt;&lt;td width="50" align="center"&gt;  &lt;strong&gt;Q&lt;/strong&gt;  &lt;/td&gt;&lt;td width="70" align="center"&gt;  &lt;strong&gt;Q'&lt;/strong&gt;  &lt;/td&gt;&lt;/tr&gt;  &lt;tr&gt;&lt;td align="center"&gt;  0  &lt;/td&gt;&lt;td align="center"&gt;  0  &lt;/td&gt;&lt;td align="center"&gt; &lt;br /&gt;&lt;/td&gt;&lt;td align="center"&gt;  &lt;span style="font-size:-1;"&gt;Illegal&lt;/span&gt;  &lt;/td&gt;&lt;/tr&gt;  &lt;tr&gt;&lt;td align="center"&gt;  0  &lt;/td&gt;&lt;td align="center"&gt;  1  &lt;/td&gt;&lt;td align="center"&gt;  1  &lt;/td&gt;&lt;td align="center"&gt;  0  &lt;/td&gt;&lt;/tr&gt;  &lt;tr&gt;&lt;td align="center"&gt;  1  &lt;/td&gt;&lt;td align="center"&gt;  0  &lt;/td&gt;&lt;td align="center"&gt;  0  &lt;/td&gt;&lt;td align="center"&gt;  1  &lt;/td&gt;&lt;/tr&gt;  &lt;tr&gt;&lt;td align="center"&gt;  1  &lt;/td&gt;&lt;td align="center"&gt;  1  &lt;/td&gt;&lt;td align="center"&gt; &lt;br /&gt;&lt;/td&gt;&lt;td align="center"&gt;  &lt;span style="font-size:-1;"&gt;Remembers&lt;/span&gt;  &lt;/td&gt;&lt;/tr&gt;  &lt;/tbody&gt;&lt;/table&gt;  &lt;/center&gt;  &lt;p&gt;  What the logic table shows is that:  &lt;/p&gt;&lt;ul&gt;&lt;li&gt;If R and S are opposites of one another, then Q follows S and Q' is the inverse of Q.  &lt;/li&gt;&lt;li&gt;If both R and S are switched to 1 simultaneously, then the circuit &lt;strong&gt;remembers&lt;/strong&gt; what was previously presented on R and S.  &lt;/li&gt;&lt;/ul&gt;  There is also the funny &lt;strong&gt;illegal&lt;/strong&gt; state. In this state, R and S both go to 0, which has no value in the memory sense. Because of the illegal state, you normally add a little &lt;strong&gt;conditioning logic&lt;/strong&gt; on the input side to prevent it, as shown here:  &lt;p&gt;  &lt;/p&gt;&lt;center&gt;  &lt;img src="http://static.howstuffworks.com/gif/bool-ff.gif" /&gt;  &lt;/center&gt;  &lt;p&gt;&lt;br /&gt; In this circuit, there are two inputs (D and E). You can think of &lt;strong&gt;D&lt;/strong&gt; as "Data" and &lt;strong&gt;E&lt;/strong&gt; as "Enable." If E is 1, then Q will follow D. If E changes to 0, however, Q will remember whatever was last seen on D. A circuit that behaves in this way is generally referred to as a &lt;strong&gt;flip-flop&lt;/strong&gt;.&lt;br /&gt;&lt;/p&gt;&lt;div class="articleBody"&gt;  &lt;h1 class="articlePageTitle"&gt;The J-K Flip-Flop&lt;/h1&gt;  &lt;!-- dtl_id=31761 //--&gt;  &lt;p&gt;  A very common form of flip-flop is the &lt;strong&gt;J-K flip-flop&lt;/strong&gt;. It is unclear, historically, where the name "J-K" came from, but it is generally represented in a black box like this:  &lt;/p&gt;&lt;p&gt;  &lt;/p&gt;&lt;center&gt;  &lt;img src="http://static.howstuffworks.com/gif/bool-jk.gif" /&gt;  &lt;/center&gt;  &lt;p&gt;&lt;br /&gt; In this diagram, &lt;strong&gt;P&lt;/strong&gt; stands for "Preset," &lt;strong&gt;C&lt;/strong&gt; stands for "Clear" and &lt;strong&gt;Clk&lt;/strong&gt; stands for "Clock." The logic table looks like this:  &lt;/p&gt;&lt;p&gt;  &lt;/p&gt;&lt;center&gt;  &lt;table align="center"&gt;  &lt;tbody&gt;&lt;tr&gt;&lt;td width="40" align="center"&gt;  &lt;strong&gt;P&lt;/strong&gt;  &lt;/td&gt;&lt;td width="40" align="center"&gt;  &lt;strong&gt;C&lt;/strong&gt;  &lt;/td&gt;&lt;td width="40" align="center"&gt;  &lt;strong&gt;Clk&lt;/strong&gt;  &lt;/td&gt;&lt;td width="15"&gt;   &lt;br /&gt;&lt;/td&gt;&lt;td width="40" align="center"&gt;  &lt;strong&gt;J&lt;/strong&gt;  &lt;/td&gt;&lt;td width="40" align="center"&gt;  &lt;strong&gt;K&lt;/strong&gt;  &lt;/td&gt;&lt;td width="40" align="center"&gt;  &lt;strong&gt;Q&lt;/strong&gt;  &lt;/td&gt;&lt;td width="50" align="center"&gt;  &lt;strong&gt;Q'&lt;/strong&gt;  &lt;/td&gt;&lt;/tr&gt;    &lt;tr&gt;&lt;td align="center"&gt;  1  &lt;/td&gt;&lt;td align="center"&gt;  1  &lt;/td&gt;&lt;td align="center"&gt;  1-to-0  &lt;/td&gt;&lt;td&gt; &lt;br /&gt;&lt;/td&gt;&lt;td align="center"&gt;  1  &lt;/td&gt;&lt;td align="center"&gt;  0  &lt;/td&gt;&lt;td align="center"&gt;  1  &lt;/td&gt;&lt;td align="center"&gt;  0  &lt;/td&gt;&lt;/tr&gt;  &lt;tr&gt;&lt;td align="center"&gt;  1  &lt;/td&gt;&lt;td align="center"&gt;  1  &lt;/td&gt;&lt;td align="center"&gt;  1-to-0  &lt;/td&gt;&lt;td&gt; &lt;br /&gt;&lt;/td&gt;&lt;td align="center"&gt;  0  &lt;/td&gt;&lt;td align="center"&gt;  1  &lt;/td&gt;&lt;td align="center"&gt;  0  &lt;/td&gt;&lt;td align="center"&gt;  1  &lt;/td&gt;&lt;/tr&gt;  &lt;tr&gt;&lt;td align="center"&gt;  1  &lt;/td&gt;&lt;td align="center"&gt;  1  &lt;/td&gt;&lt;td align="center"&gt;  1-to-0  &lt;/td&gt;&lt;td&gt; &lt;br /&gt;&lt;/td&gt;&lt;td align="center"&gt;  1  &lt;/td&gt;&lt;td align="center"&gt;  1  &lt;/td&gt;&lt;td align="center"&gt; &lt;br /&gt;&lt;/td&gt;&lt;td align="center"&gt;  &lt;span style="font-size:-1;"&gt;Toggles&lt;/span&gt;  &lt;/td&gt;&lt;/tr&gt;  &lt;tr&gt;&lt;td align="center"&gt;  1  &lt;/td&gt;&lt;td align="center"&gt;  0  &lt;/td&gt;&lt;td align="center"&gt;  X  &lt;/td&gt;&lt;td&gt; &lt;br /&gt;&lt;/td&gt;&lt;td align="center"&gt;  X  &lt;/td&gt;&lt;td align="center"&gt;  X  &lt;/td&gt;&lt;td align="center"&gt;  0  &lt;/td&gt;&lt;td align="center"&gt;  1  &lt;/td&gt;&lt;/tr&gt;  &lt;tr&gt;&lt;td align="center"&gt;  0  &lt;/td&gt;&lt;td align="center"&gt;  1  &lt;/td&gt;&lt;td align="center"&gt;  X  &lt;/td&gt;&lt;td&gt; &lt;br /&gt;&lt;/td&gt;&lt;td align="center"&gt;  X  &lt;/td&gt;&lt;td align="center"&gt;  X  &lt;/td&gt;&lt;td align="center"&gt;  1  &lt;/td&gt;&lt;td align="center"&gt;  0  &lt;/td&gt;&lt;/tr&gt;  &lt;/tbody&gt;&lt;/table&gt;&lt;/center&gt;  &lt;p&gt;&lt;br /&gt;Here is what the table is saying: First, Preset and Clear override J, K and Clk completely. So if Preset goes to 0, then Q goes to 1; and if Clear goes to 0, then Q goes to 0 no matter what J, K and Clk are doing. However, if both Preset and Clear are 1, then J, K and Clk can operate. The &lt;strong&gt;1-to-0&lt;/strong&gt; notation means that when the clock changes from a 1 to a 0, the value of J and K are remembered if they are opposites. At the &lt;strong&gt;low-going edge&lt;/strong&gt; of the clock (the transition from 1 to 0), J and K are stored. However, if both J and K happen to be 1 at the low-going edge, then Q simply &lt;strong&gt;toggles&lt;/strong&gt;. That is, Q changes from its current state to the opposite state.  &lt;/p&gt;&lt;p&gt; You might be asking yourself right now, "What in the world is that good for?" It turns out that the concept of "edge triggering" is very useful. The fact that J-K flip-flop only "latches" the J-K inputs on a transition from 1 to 0 makes it much more useful as a memory device. J-K flip-flops are also extremely useful in &lt;strong&gt;counters&lt;/strong&gt; (which are used extensively when &lt;a href="http://computer.howstuffworks.com/digital-clock.htm"&gt;creating a digital clock&lt;/a&gt;). Here is an example of a 4-bit counter using J-K flip-flops:  &lt;/p&gt;&lt;p&gt;  &lt;/p&gt;&lt;center&gt;  &lt;img src="http://static.howstuffworks.com/gif/bool-counter.gif" /&gt;  &lt;/center&gt;  &lt;p&gt;&lt;br /&gt;The outputs for this circuit are A, B, C and D, and they represent a 4-bit binary number. Into the clock input of the left-most flip-flop comes a signal changing from 1 to 0 and back to 1 repeatedly (an &lt;strong&gt;oscillating signal&lt;/strong&gt;). The counter will count the low-going edges it sees in this signal. That is, every time the incoming signal changes from 1 to 0, the 4-bit number represented by A, B, C and D will increment by 1. So the count will go from 0 to 15 and then cycle back to 0. You can add as many bits as you like to this counter and count anything you like. For example, if you put a magnetic switch on a door, the counter will count the number of times the door is opened and closed. If you put an optical sensor on a road, the counter could count the number of cars that drive by. &lt;/p&gt;&lt;p&gt;  Another use of a J-K flip-flop is to create an &lt;strong&gt;edge-triggered latch&lt;/strong&gt;, as shown here:  &lt;/p&gt;&lt;p&gt;  &lt;/p&gt;&lt;center&gt;  &lt;img src="http://static.howstuffworks.com/gif/bool-latch.gif" /&gt;  &lt;/center&gt;  &lt;p&gt;&lt;br /&gt; In this arrangement, the value on D is "latched" when the clock edge goes from low to high. &lt;strong&gt;Latches&lt;/strong&gt; are extremely important in the design of things like &lt;a href="http://computer.howstuffworks.com/microprocessor.htm"&gt;central processing units&lt;/a&gt; (CPUs) and peripherals in computers.&lt;br /&gt;&lt;/p&gt;&lt;div class="articleBody"&gt;  &lt;h1 class="articlePageTitle"&gt;Implementing Gates&lt;/h1&gt;  &lt;!-- dtl_id=396518 //--&gt; &lt;p&gt; In the previous sections we saw that, by using very simple Boolean gates, we can implement adders, counters, latches and so on. That is a big achievement, because not so long ago human beings were the only ones who could do things like add two numbers together. With a little work, it is not hard to design Boolean circuits that implement subtraction, multiplication, division... You can see that we are not that far away from a pocket calculator. From there, it is not too far a jump to the full-blown &lt;a href="http://computer.howstuffworks.com/microprocessor.htm"&gt;CPUs&lt;/a&gt; used in computers. &lt;/p&gt;&lt;p&gt; So how might we implement these gates in real life? Mr. Boole came up with them on paper, and on paper they look great. To use them, however, we need to implement them in physical reality so that the gates can perform their logic actively. Once we make that leap, then we have started down the road toward creating real computation devices. &lt;/p&gt;&lt;p&gt; The easiest way to understand the physical implementation of Boolean logic is to use &lt;a href="http://computer.howstuffworks.com/relay.htm"&gt;relays&lt;/a&gt;. This is, in fact, how the very first computers were implemented. No one implements computers with relays anymore -- today, people use sub-microscopic &lt;a href="http://computer.howstuffworks.com/diode4.htm"&gt;transistors etched onto silicon chips&lt;/a&gt;. These transistors are incredibly small and fast, and they consume very little power compared to a relay. However, relays are incredibly easy to understand, and they can implement Boolean logic very simply. Because of that simplicity, you will be able to see that mapping from "gates on paper" to "active gates implemented in physical reality" is possible and straightforward. Performing the same mapping with transistors is just as easy. &lt;/p&gt;&lt;p&gt; Let's start with an inverter. Implementing a NOT gate with a relay is easy: What we are going to do is use voltages to represent bit states. We will define a binary 1 to be 6 volts and a binary 0 to be zero volts (ground). Then we will use a 6-volt &lt;a href="http://computer.howstuffworks.com/battery.htm"&gt;battery&lt;/a&gt; to power our circuits. Our NOT gate will therefore look like this: &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;center&gt; &lt;img src="http://static.howstuffworks.com/gif/bool-relay-inv.gif" /&gt; &lt;/center&gt; &lt;p&gt; [If this figure makes no sense to you, please read &lt;a href="http://computer.howstuffworks.com/relay.htm"&gt;How Relays Work&lt;/a&gt; for an explanation.] &lt;/p&gt;&lt;p&gt; You can see in this circuit that if you apply zero volts to A, then you get 6 volts out on Q; and if you apply 6 volts to A, you get zero volts out on Q. It is very easy to implement an inverter with a relay! &lt;/p&gt;&lt;p&gt; It is similarly easy to implement an AND gate with two relays: &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;center&gt; &lt;img src="http://static.howstuffworks.com/gif/bool-relay-and.gif" /&gt; &lt;/center&gt; &lt;p&gt;&lt;br /&gt;Here you can see that if you apply 6 volts to A and B, Q will have 6 volts. Otherwise, Q will have zero volts. That is exactly the behavior we want from an AND gate. An OR gate is even simpler -- just hook two wires for A and B together to create an OR. You can get fancier than that if you like and use two relays in parallel. &lt;/p&gt;&lt;p&gt; You can see from this discussion that you can create the three basic gates -- NOT, AND and OR -- from relays. You can then hook those physical gates together using the logic diagrams shown above to create a physical 8-bit ripple-carry adder. If you use simple switches to apply A and B inputs to the adder and hook all eight Q lines to light bulbs, you will be able to add any two numbers together and read the results on the lights ("light on" = 1, "light off" = 0). &lt;/p&gt;&lt;p&gt; Boolean logic in the form of simple gates is very straightforward. From simple gates you can create more complicated functions, like addition. Physically implementing the gates is possible and easy. From those three facts you have the heart of the digital revolution, and you understand, at the core, how computers work. &lt;/p&gt;&lt;p&gt;  &lt;/p&gt;&lt;p&gt; &lt;!-- Page Break --&gt; &lt;/p&gt;&lt;/div&gt;       &lt;!--DEV NOTE: this div ensures that the entire article body --&gt;       &lt;!--DEV NOTE: is displayed before ending the container box --&gt;        &lt;/div&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8136767800267856096-2969752913218784691?l=mydigital-garage.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mydigital-garage.blogspot.com/feeds/2969752913218784691/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mydigital-garage.blogspot.com/2009/02/how-boolean-logic-works.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8136767800267856096/posts/default/2969752913218784691'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8136767800267856096/posts/default/2969752913218784691'/><link rel='alternate' type='text/html' href='http://mydigital-garage.blogspot.com/2009/02/how-boolean-logic-works.html' title='How Boolean Logic Works'/><author><name>PRITAM</name><uri>http://www.blogger.com/profile/02799170102757192497</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_apr7HBF_hu4/SMgQ-hsQcMI/AAAAAAAAAII/hu8eIXG9oAw/S220/1212120.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8136767800267856096.post-928641805225256620</id><published>2009-01-31T11:58:00.000-08:00</published><updated>2009-01-31T12:04:53.179-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='How Java Works'/><title type='text'>How Java Works</title><content type='html'>&lt;p&gt; Have you ever wondered how computer programs work? Have you ever wanted to learn how to write your own computer programs? Whether you are 14 years old and hoping to learn how to write your first game, or you are 70 years old and have been curious about computer programming for 20 years, this article is for you. In this edition of &lt;a href="http://www.howstuffworks.com/index.htm"&gt;&lt;b&gt;HowStuffWorks&lt;/b&gt;&lt;/a&gt;, I'm going to teach you how computer programs work by teaching you how to program in the &lt;b&gt;Java programming language&lt;/b&gt;. &lt;/p&gt;&lt;p&gt; In order to teach you about computer programming, I am going to make several assumptions from the start: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;I am going to assume that you know nothing about computer programming now. If you already know something then the first part of this article will seem elementary to you. Please feel free to skip forward until you get to something you don't know. &lt;p&gt; &lt;/p&gt;&lt;/li&gt;&lt;li&gt;I am going to assume you &lt;i&gt;do&lt;/i&gt; know something about the computer you are using. That is, I am going to assume you already know how to edit a file, copy and delete files, rename files, find information on your system, etc. &lt;p&gt; &lt;/p&gt;&lt;/li&gt;&lt;li&gt;For simplicity, I am going to assume that you are using a machine running Windows 95, 98, 2000, NT or XP. It should be relatively straightforward for people running other operating systems to map the concepts over to those. &lt;p&gt; &lt;/p&gt;&lt;/li&gt;&lt;li&gt;I am going to assume that you have a desire to learn. &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;All of the tools you need to start programming in Java are widely available on the Web for free. There is also a huge amount of educational material for Java available on the Web, so once you finish this article you can easily go learn more to advance your skills. You can learn Java programming here without spending any money on compilers, development environments, reading materials, etc. Once you learn Java it is easy to learn other languages, so this is a good place to start.&lt;br /&gt;&lt;/p&gt;&lt;h1 class="articlePageTitle"&gt;A Little Terminology&lt;/h1&gt; 	&lt;!-- dtl_id=7798 //--&gt; Keep in mind that I am assuming that you know nothing about programming. Here are several vocabulary terms that will make things understandable: &lt;ul&gt;&lt;li&gt;&lt;b&gt;Computer program&lt;/b&gt; - A computer program is a set of instructions that tell a computer exactly what to do. The instructions might tell the computer to add up a set of numbers, or compare two numbers and make a decision based on the result, or whatever. But a computer program is simply a set of instructions for the computer, like a recipe is a set of instructions for a cook or musical notes are a set of instructions for a musician. The computer follows your instructions exactly and in the process does something useful -- like balancing a checkbook or displaying a game on the screen or implementing a word processor. &lt;p&gt; &lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Programming language&lt;/b&gt; - In order for a computer to recognize the instructions you give it, those instructions need to be written in a language the computer understands -- a programming language. There are many computer programming languages -- Fortran, Cobol, Basic, Pascal, &lt;a href="http://www.howstuffworks.com/c.htm"&gt;C&lt;/a&gt;, C++, Java, &lt;a href="http://www.howstuffworks.com/perl.htm"&gt;Perl&lt;/a&gt; -- just like there are many spoken languages. They all express approximately the same concepts in different ways. &lt;p&gt; &lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Compiler&lt;/b&gt; - A compiler translates a computer program written in a human-readable computer language (like Java) into a form that a computer can &lt;b&gt;execute&lt;/b&gt;. You have probably seen EXE files on your computer. These EXE files are the output of compilers. They contain &lt;b&gt;executables&lt;/b&gt; -- machine-readable programs translated from human-readable programs. &lt;/li&gt;&lt;/ul&gt;  In order for you to start writing computer programs in a programming language called Java, you need a compiler for the Java language. The next section guides you through the process of downloading and installing a compiler. Once you have a compiler, we can get started. This process is going to take several hours, much of that time being download time for several large files. You are also going to need about 40 &lt;a href="http://www.howstuffworks.com/bytes.htm"&gt;megabytes&lt;/a&gt; of free &lt;a href="http://www.howstuffworks.com/hard-disk.htm"&gt;disk&lt;/a&gt; space (make sure you have the space available before you get started)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;												 	&lt;h1 class="articlePageTitle"&gt;Downloading the Java Compiler&lt;/h1&gt; 	&lt;!-- dtl_id=7800 //--&gt; In order to get a Java development environment set up on your machine -- you "develop" (write) computer programs using a "development environment" -- you will have to complete the following steps: &lt;ol&gt;&lt;li&gt;Download a large file containing the Java development environment (the compiler and other tools). &lt;/li&gt;&lt;li&gt;Download a large file containing the Java documentation. &lt;/li&gt;&lt;li&gt;If you do not already have WinZip (or an equivalent) on your machine, you will need to download a large file containing WinZip and install it. &lt;/li&gt;&lt;li&gt;Install the Java development environment. &lt;/li&gt;&lt;li&gt;Install the documentation. &lt;/li&gt;&lt;li&gt;Adjust several environment variables. &lt;/li&gt;&lt;li&gt;Test everything out. &lt;/li&gt;&lt;/ol&gt;Before getting started, it would make things easier if you create a new directory in your temp directory to hold the files we are about to download. We will call this the &lt;b&gt;download directory&lt;/b&gt;. &lt;p&gt; &lt;span style="color: rgb(0, 0, 153);"&gt;&lt;b&gt;Step 1 - Download the Java development environment&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;Go to the page &lt;a href="http://www.howstuffworks.com/framed.htm?parent=program.htm&amp;amp;url=http://java.sun.com/j2se/1.4.2/download.html"&gt;http://java.sun.com/j2se/1.4.2/download.html&lt;/a&gt;. Download the SDK software by clicking on the "Download J2SE SDK" link. You will be shown a licensing agreement. Click Accept. Select your &lt;a href="http://www.howstuffworks.com/operating-system.htm"&gt;operating system&lt;/a&gt; and download the file to your download directory. This is a huge file, and it will take several hours to download over a normal &lt;a href="http://www.howstuffworks.com/modem.htm"&gt;phone-line modem&lt;/a&gt;. The next two files are also large. &lt;/p&gt;&lt;p&gt; &lt;span style="color: rgb(0, 0, 153);"&gt;&lt;b&gt;Step 2 - Download the Java documentation&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;Download the documentation by selecting your operating system and clicking the SDK 1.4.1 documentation link. &lt;/p&gt;&lt;p&gt; &lt;span style="color: rgb(0, 0, 153);"&gt;&lt;b&gt;Step 3 - Download and install WinZip&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;If you do not have a version of WinZip or an equivalent on your machine, go to the page &lt;a href="http://www.howstuffworks.com/framed.htm?parent=program.htm&amp;amp;url=http://www.winzip.com/"&gt;http://www.winzip.com/&lt;/a&gt; and download an evaluation copy of WinZip. Run the EXE you get to install it. We will use it in a moment to install the documentation. &lt;/p&gt;&lt;p&gt; &lt;span style="color: rgb(0, 0, 153);"&gt;&lt;b&gt;Step 4 - Install the development kit&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;Run the j2sdk-1_4_1-*.exe file that you downloaded in step 1. It will unpack and install the development kit automatically. &lt;/p&gt;&lt;p&gt; &lt;span style="color: rgb(0, 0, 153);"&gt;&lt;b&gt;Step 5 - Install the documentation&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;Read the installation instructions for the documentation. They will instruct you to move the documentation file to same directory as that containing the development kit you just installed. Unzip the documentation and it will drop into the proper place. &lt;/p&gt;&lt;p&gt; &lt;span style="color: rgb(0, 0, 153);"&gt;&lt;b&gt;Step 6 - Adjust your environment&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;As instructed on &lt;a href="http://www.howstuffworks.com/framed.htm?parent=program.htm&amp;amp;url=http://java.sun.com/products/archive/j2se/1.4.1_07/"&gt;this page&lt;/a&gt;, you need to change your path variable. This is most easily done by opening an MS-DOS prompt and typing PATH to see what the path is set to currently. Then open autoexec.bat in Notepad and make the changes to PATH specified in the instructions. &lt;/p&gt;&lt;p&gt; &lt;span style="color: rgb(0, 0, 153);"&gt;&lt;b&gt;Step 7 - Test&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;Now you should be able to open another MS-DOS window and type &lt;b&gt;javac&lt;/b&gt;. If everything is set up properly, then you should see a two-line blob of text come out that tells you how to use &lt;b&gt;javac&lt;/b&gt;. That means you are ready to go. If you see the message "Bad Command or File Name" it means you are not ready to go. Figure out what you did wrong by rereading the installation instructions. Make sure the PATH is set properly and working. Go back and reread the Programmer's Creed above and be persistent until the problem is resolved. &lt;/p&gt;&lt;p&gt; You are now the proud owner of a machine that can compile Java programs. You are ready to start writing software! &lt;/p&gt;&lt;p&gt; By the way, one of the things you just unpacked is a &lt;b&gt;demo&lt;/b&gt; directory full of neat examples. All of the examples are ready to run, so you might want to find the directory and play with some of the samples. Many of them make sounds, so be sure to turn on your &lt;a href="http://www.howstuffworks.com/speaker.htm"&gt;speakers&lt;/a&gt;. To run the examples, find pages with names like &lt;b&gt;example1.html&lt;/b&gt; and load them into your usual Web browser.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;												&lt;div class="articleBody"&gt; 	&lt;h1 class="articlePageTitle"&gt;Your First Program&lt;/h1&gt; 	&lt;!-- dtl_id=7802 //--&gt; Your first program will be short and sweet. It is going to create a drawing area and draw a diagonal line across it. To create this program you will need to: &lt;ol&gt;&lt;li&gt;Open Notepad and type in (or cut and paste) the program &lt;/li&gt;&lt;li&gt;Save the program &lt;/li&gt;&lt;li&gt;Compile the program with the Java compiler to create a &lt;b&gt;Java applet&lt;/b&gt; &lt;/li&gt;&lt;li&gt;Fix any problems &lt;/li&gt;&lt;li&gt;Create an HTML web page to "hold" the Java Applet you created  &lt;/li&gt;&lt;li&gt;Run the Java applet &lt;/li&gt;&lt;/ol&gt; Here is the program we will use for this demonstration: &lt;p&gt; &lt;span style="color:blue;"&gt; &lt;pre&gt;import java.awt.Graphics;&lt;br /&gt;&lt;br /&gt;public class FirstApplet extends java.applet.Applet&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;  public void paint(Graphics g)&lt;br /&gt;  {&lt;br /&gt;      g.drawLine(0, 0, 200, 200);&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt; &lt;/span&gt; &lt;/p&gt;&lt;p&gt; &lt;span style="color: rgb(0, 0, 153);"&gt;&lt;b&gt;Step 1 - Type in the program&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;Create a new directory to hold your program. Open up Notepad (or any other text editor that can create TXT files). Type or cut and paste the program into the Notepad window. This is important: When you type the program in, &lt;b&gt;case matters&lt;/b&gt;. That means that you must type the uppercase and lowercase characters exactly as they appear in the program. Review the programmer's creed above. If you do not type it EXACTLY as shown, it is not going to work. &lt;/p&gt;&lt;p&gt; &lt;span style="color: rgb(0, 0, 153);"&gt;&lt;b&gt;Step 2 - Save the file&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;Save the file to the filename &lt;b&gt;FirstApplet.java&lt;/b&gt; in the directory that you created in step 1. &lt;b&gt;Case matters&lt;/b&gt; in the filename. Make sure the 'F' and 'A' are uppercase and all other characters are lowercase, as shown. &lt;/p&gt;&lt;p&gt; &lt;span style="color: rgb(0, 0, 153);"&gt;&lt;b&gt;Step 3 - Compile the program&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;Open an MS-DOS window. Change directory ("cd") to the directory containing &lt;b&gt;FirstApplet.java&lt;/b&gt;. Type: &lt;/p&gt;&lt;p&gt; &lt;span style="color:blue;"&gt; &lt;pre&gt;    javac FirstApplet.java&lt;br /&gt;&lt;/pre&gt; &lt;/span&gt; &lt;/p&gt;&lt;p&gt; &lt;b&gt;Case matters&lt;/b&gt;! Either it will work, in which case nothing will be printed to the window, or there will be errors. If there are no errors, a file named FirstApplet.class will be created in the directory right next to FirstApplet.java. &lt;/p&gt;&lt;p&gt; (Make sure that the file is saved to the name &lt;b&gt;FirstApplet.java&lt;/b&gt; and not &lt;b&gt;FirstApplet.java.txt&lt;/b&gt;. This is most easily done by typing &lt;b&gt;dir&lt;/b&gt; in the MS-DOS window and looking at the file name. If it has a &lt;b&gt;.txt&lt;/b&gt; extension, remove it by renaming the file. Or run the Windows Explorer and select Options in the View menu. Make sure that the "Hide MD-DOS File Extensions for file types that are registered" box is NOT checked, and then look at the filename with the explorer. Change it if necessary.) &lt;/p&gt;&lt;p&gt; &lt;span style="color: rgb(0, 0, 153);"&gt;&lt;b&gt;Step 4 - Fix any problems&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;If there are errors, fix them. Compare your program to the program above and get them to match exactly. Keep recompiling until you see no errors. If &lt;b&gt;javac&lt;/b&gt; seems to not be working, look back at the previous section and fix your installation. &lt;/p&gt;&lt;p&gt; &lt;span style="color: rgb(0, 0, 153);"&gt;&lt;b&gt;Step 5 - Create an HTML Page&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;Create an HTML page to hold the applet. Open another Notepad window. Type into it the following: &lt;/p&gt;&lt;pre&gt;&lt;span style="color:blue;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;applet code="FirstApplet.class" width="200" height="200"&gt;&lt;br /&gt;&lt;/applet&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt; &lt;p&gt; Save this file in the same directory with the name &lt;b&gt;applet.htm&lt;/b&gt;. &lt;/p&gt;&lt;p&gt; [If you have never worked with HTML before, please read &lt;a href="http://www.howstuffworks.com/web-page.htm"&gt;How a Web Page Works&lt;/a&gt;. The &lt;b&gt;applet&lt;/b&gt; tag is how you access a Java applet from a web page.] &lt;/p&gt;&lt;p&gt; &lt;span style="color: rgb(0, 0, 153);"&gt;&lt;b&gt;Step 6 - Run the Applet&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;In your MS-DOS window, type: &lt;/p&gt;&lt;p&gt; &lt;span style="color:blue;"&gt; &lt;pre&gt;    appletviewer applet.htm&lt;br /&gt;&lt;/pre&gt; &lt;/span&gt; &lt;/p&gt;&lt;p&gt; You should see a diagonal line running from the upper left corner to the lower right corner: &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;table width="400" align="center" cellpadding="3" cellspacing="0"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td&gt; &lt;center&gt;&lt;img src="http://static.howstuffworks.com/gif/java-appletviewer.gif" /&gt;&lt;br /&gt;&lt;/center&gt; &lt;/td&gt;&lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;p&gt; Pull the applet viewer a little bigger to see the whole line. You should also be able to load the HTML page into any modern browser like Netscape Navigator or Microsoft Internet Explorer and see approximately the same thing. &lt;/p&gt;&lt;p&gt; You have successfully created your first program!!! &lt;/p&gt;&lt;p&gt;  &lt;/p&gt;&lt;p&gt; &lt;!-- Page Break --&gt;&lt;/p&gt;&lt;/div&gt; 						&lt;!--DEV NOTE: this div ensures that the entire article body --&gt; 						&lt;!--DEV NOTE: is displayed before ending the container box --&gt; 						&lt;br /&gt;&lt;h1 class="articlePageTitle"&gt;Understanding What Just Happened&lt;/h1&gt; 	&lt;!-- dtl_id=7804 //--&gt;  So what just happened? First, you wrote a piece of code for an extremely simple &lt;b&gt;Java applet&lt;/b&gt;. An applet is a Java program that can run within a Web browser, as opposed to a &lt;b&gt;Java application&lt;/b&gt;, which is a stand-alone program that runs on your local machine (Java applications are slightly more complicated and somewhat less popular, so we will start with applets). We compiled the applet using &lt;b&gt;javac&lt;/b&gt;. We then created an extremely simple Web page to "hold" the applet. We ran the applet using &lt;b&gt;appletviewer&lt;/b&gt;, but you can just as easily run it in a browser. &lt;p&gt; The program itself is about 10 lines long: &lt;/p&gt;&lt;p&gt; &lt;span style="color:blue;"&gt; &lt;pre&gt;import java.awt.Graphics;&lt;br /&gt;&lt;br /&gt;public class FirstApplet extends java.applet.Applet&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;  public void paint(Graphics g)&lt;br /&gt;  {&lt;br /&gt;      g.drawLine(0, 0, 200, 200);&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt; &lt;/span&gt; &lt;/p&gt;&lt;p&gt; This is about the simplest Java applet you can create. To fully understand it you will have to learn a fair amount, particularly in the area of &lt;b&gt;object oriented programming techniques&lt;/b&gt;. Since I am assuming that you have zero programming experience, what I would like you to do is focus your attention on just one line in this program for the moment: &lt;/p&gt;&lt;p&gt; &lt;span style="color:blue;"&gt; &lt;pre&gt;        g.drawLine(0, 0, 200, 200);&lt;br /&gt;&lt;/pre&gt; &lt;/span&gt; &lt;/p&gt;&lt;p&gt;This is the line in this program that does the work. It draws the diagonal line. The rest of the program is scaffolding that supports that one line, and we can ignore the scaffolding for the moment. What happened here was that we told the computer to draw one line from the upper left hand corner (0,0) to the bottom right hand corner (200, 200). The computer drew it just like we told it to. That is the essence of computer programming! &lt;/p&gt;&lt;p&gt;(Note also that in the HTML page, we set the size of the applet's window in step 5 above to have a width of 200 and a height of 200.) &lt;/p&gt;&lt;p&gt; In this program, we called a &lt;b&gt;method&lt;/b&gt; (a.k.a. &lt;b&gt;function&lt;/b&gt;) called &lt;b&gt;drawLine&lt;/b&gt; and we passed it four &lt;b&gt;parameters&lt;/b&gt; (0, 0, 200, 200). The line ends in a semicolon. The semicolon acts like the period at the end of the sentence. The line begins with &lt;b&gt;g.&lt;/b&gt;, signifying that we want to call the method named &lt;b&gt;drawLine&lt;/b&gt; on the specific object named &lt;b&gt;g&lt;/b&gt; (which you can see one line up is of the class &lt;b&gt;Graphics&lt;/b&gt; -- we will get into classes and methods of classes in much more detail later in this article). &lt;/p&gt;&lt;p&gt; A method is simply a command -- it tells the computer to do something. In this case, &lt;b&gt;drawLine&lt;/b&gt; tells the computer to draw a line between the points specified: (0, 0) and (200, 200). You can think of the window as having its 0,0 coordinate in the upper left corner, with positive X and Y axes extending to the right and down. Each dot on the screen (each &lt;b&gt;pixel&lt;/b&gt;) is one increment on the scale. &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;table width="400" align="center" cellpadding="3" cellspacing="0"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td&gt; &lt;center&gt;&lt;img src="http://static.howstuffworks.com/gif/java-graph.gif" /&gt;&lt;br /&gt;&lt;/center&gt; &lt;/td&gt;&lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;p&gt; Try experimenting by using different numbers for the four parameters. Change a number or two, save your changes, recompile with &lt;b&gt;javac&lt;/b&gt; and rerun after each change in &lt;b&gt;appletviewer&lt;/b&gt;, and see what you discover. &lt;/p&gt;&lt;p&gt; What other functions are available besides &lt;b&gt;drawLine&lt;/b&gt;? You find this out by looking at the documentation for the &lt;b&gt;Graphics&lt;/b&gt; class. When you installed the Java development kit and unpacked the documentation, one of the files unloaded in the process is called &lt;b&gt;java.awt.Graphics.html&lt;/b&gt;, and it is on your machine. This is the file that explains the &lt;b&gt;Graphics&lt;/b&gt; class. On my machine, the exact path to this file is D:\jdk1.1.7\docs\api\java.awt.Graphics.html. On your machine the path is likely to be slightly different, but close -- it depends on exactly where you installed things. Find the file and open it. Up toward the top of this file there is a section called "Method Index." This is a list of all of the methods this class supports. The &lt;b&gt;drawLine&lt;/b&gt; method is one of them, but you can see &lt;i&gt;many&lt;/i&gt; others. You can draw, among other things: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Lines &lt;/li&gt;&lt;li&gt;Arcs &lt;/li&gt;&lt;li&gt;Ovals &lt;/li&gt;&lt;li&gt;Polygons &lt;/li&gt;&lt;li&gt;Rectangles &lt;/li&gt;&lt;li&gt;Strings &lt;/li&gt;&lt;li&gt;Characters &lt;/li&gt;&lt;/ul&gt; Read about and try experimenting with some of these different methods to discover what is possible. For example, try this code: &lt;p&gt; &lt;span style="color:blue;"&gt; &lt;pre&gt;        g.drawLine(0, 0, 200, 200);&lt;br /&gt;      g.drawRect(0, 0, 200, 200);&lt;br /&gt;      g.drawLine(200, 0, 0, 200);&lt;br /&gt;&lt;/pre&gt; &lt;/span&gt; &lt;/p&gt;&lt;p&gt; It will draw a box with two diagonals (be sure to pull the window big enough to see the whole thing). Try drawing other shapes. Read about and try changing the color with the &lt;b&gt;setColor&lt;/b&gt; method. For example: &lt;/p&gt;&lt;p&gt; &lt;span style="color:blue;"&gt; &lt;pre&gt;import java.awt.Graphics;&lt;br /&gt;import java.awt.Color;&lt;br /&gt;&lt;br /&gt;public class FirstApplet extends java.applet.Applet&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;  public void paint(Graphics g)&lt;br /&gt;  {&lt;br /&gt;      g.setColor(Color.red);&lt;br /&gt;      g.fillRect(0, 0, 200, 200);&lt;br /&gt;      g.setColor(Color.black);&lt;br /&gt;      g.drawLine(0, 0, 200, 200);&lt;br /&gt;      g.drawLine(200, 0, 0, 200);&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt; &lt;/span&gt; &lt;/p&gt;&lt;p&gt; Note the addition of the new &lt;b&gt;import&lt;/b&gt; line in the second line of the program. The output of this program looks like this: &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;table width="400" align="center" cellpadding="3" cellspacing="0"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td&gt; &lt;center&gt;&lt;img src="http://static.howstuffworks.com/gif/java-redrect.gif" /&gt;&lt;br /&gt;&lt;/center&gt; &lt;/td&gt;&lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;p&gt; One thing that might be going through your head right now is, "How did he know to use &lt;b&gt;Color.red&lt;/b&gt; rather than simply &lt;b&gt;red&lt;/b&gt;, and how did he know to add the second &lt;b&gt;import&lt;/b&gt; line?" You learn things like that by example. Because I just showed you an example of how to call the &lt;b&gt;setColor&lt;/b&gt; method, you now know that whenever you want to change the color you will use &lt;b&gt;Color.&lt;/b&gt; followed by a color name as a parameter to the &lt;b&gt;setColor&lt;/b&gt; method, and you will add the appropriate &lt;b&gt;import&lt;/b&gt; line at the top of the program. If you look up &lt;b&gt;setColor&lt;/b&gt;, it has a link that will tell you about the &lt;b&gt;Color&lt;/b&gt; class, and in it is a list of all the valid color names along with techniques for creating new (unnamed) colors. You read that information, you store it in your head and now you know how to change colors in Java. That is the essence of becoming a computer programmer -- you learn techniques and remember them for the next program you write. You learn the techniques either by reading an example (as you did here) or by reading through the documentation or by looking at example code (as in the demo directory). If you have a &lt;a href="http://www.howstuffworks.com/brain.htm"&gt;brain&lt;/a&gt; that likes exploring and learning and remembering things, then you will love programming! &lt;/p&gt;&lt;p&gt; In this section, you have learned how to write linear, sequential code -- blocks of code that consist of method calls starting at the top and working toward the bottom (try drawing one of the lines &lt;i&gt;before&lt;/i&gt; you draw the red rectangle and watch what happens -- it will be covered over by the rectangle and made invisible. The order of lines in the code sequence is important). Sequential lines of code form the basic core of any computer program. Experiment with all the different drawing methods and see what you can discover.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;												 	&lt;h1 class="articlePageTitle"&gt;Bugs and Debugging&lt;/h1&gt; 	&lt;!-- dtl_id=7806 //--&gt; One thing that you are going to notice as you learn about programming is that you tend to make a fair number of mistakes and assumptions that cause your program to either: 1) not compile, or 2) produce output that you don't expect when it executes. These problems are referred to as &lt;b&gt;bugs&lt;/b&gt;, and the act of removing them is called &lt;b&gt;debugging&lt;/b&gt;. About half of the time of any programmer is spent debugging. &lt;p&gt; You will have plenty of time and opportunity to create your own bugs, but to get more familiar with the possibilities let's create a few. In your program, try erasing one of the semicolons at the end of a line and try compiling the program with &lt;b&gt;javac&lt;/b&gt;. The compiler will give you an error message. This is called a &lt;b&gt;compiler error&lt;/b&gt;, and you have to eliminate all of them before you can execute your program. Try misspelling a function name, leaving out a "{" or eliminating one of the &lt;b&gt;import&lt;/b&gt; lines to get used to different compiler errors. The first time you see a certain type of compiler error it can be frustrating, but by experimenting like this -- with known errors that you create on purpose -- you can get familiar with many of the common errors. &lt;/p&gt;&lt;p&gt;A bug, also known as an execution (or run-time) error, occurs when the program compiles fine and runs, but then does not produce the output you planned on it producing. For example, this code produces a red rectangle with two diagonal lines across it: &lt;/p&gt;&lt;p&gt; &lt;span style="color:blue;"&gt; &lt;pre&gt;        g.setColor(Color.red);&lt;br /&gt;      g.fillRect(0, 0, 200, 200);&lt;br /&gt;      g.setColor(Color.black);&lt;br /&gt;      g.drawLine(0, 0, 200, 200);&lt;br /&gt;      g.drawLine(200, 0, 0, 200);&lt;br /&gt;&lt;/pre&gt; &lt;/span&gt; &lt;/p&gt;&lt;p&gt; The following code, on the other hand, produces just the red rectangle (which covers over the two lines): &lt;/p&gt;&lt;p&gt; &lt;span style="color:blue;"&gt; &lt;pre&gt;        g.setColor(Color.black);&lt;br /&gt;      g.drawLine(0, 0, 200, 200);&lt;br /&gt;      g.drawLine(200, 0, 0, 200);&lt;br /&gt;      g.setColor(Color.red);&lt;br /&gt;      g.fillRect(0, 0, 200, 200);&lt;br /&gt;&lt;/pre&gt; &lt;/span&gt; &lt;/p&gt;&lt;p&gt;The code is almost exactly the same but looks completely different when it executes. If you are expecting to see two diagonal lines, then the code in the second case contains a bug. &lt;/p&gt;&lt;p&gt; Here's another example: &lt;/p&gt;&lt;p&gt; &lt;span style="color:blue;"&gt; &lt;pre&gt;        g.drawLine(0, 0, 200, 200);&lt;br /&gt;      g.drawRect(0, 0, 200, 200);&lt;br /&gt;      g.drawLine(200, 0, 0, 200);&lt;br /&gt;&lt;/pre&gt; &lt;/span&gt; &lt;/p&gt;&lt;p&gt; This code produces a black outlined box and two diagonals. This next piece of code produces only one diagonal: &lt;/p&gt;&lt;p&gt; &lt;span style="color:blue;"&gt; &lt;pre&gt;        g.drawLine(0, 0, 200, 200);&lt;br /&gt;      g.drawRect(0, 0, 200, 200);&lt;br /&gt;      g.drawLine(0, 200, 0, 200);&lt;br /&gt;&lt;/pre&gt; &lt;/span&gt; &lt;/p&gt;&lt;p&gt;Again, if you expected to see two diagonals, then the second piece of code contains a bug (look at the second piece of code until you understand what went wrong). This sort of bug can take a long time to find because it is subtle. &lt;/p&gt;&lt;p&gt;You will have plenty of time to practice finding your own bugs. The average programmer spends about half of his or her time tracking down, finding and eliminating bugs. Try not to get frustrated when they occur -- they are a normal part of programming life.&lt;br /&gt;&lt;/p&gt;												&lt;div class="articleBody"&gt; 	&lt;h1 class="articlePageTitle"&gt;Variables&lt;/h1&gt; 	&lt;!-- dtl_id=7808 //--&gt;  All programs use &lt;b&gt;variables&lt;/b&gt; to hold pieces of data temporarily. For example, if at some point in a program you ask a user for a number, you will store it in a variable so that you can use it later. &lt;p&gt; Variables must be &lt;b&gt;defined&lt;/b&gt; (or &lt;b&gt;declared&lt;/b&gt;) in a program before you can use them, and you must give each variable a specific type. For example, you might declare one variable to have a type that allows it to hold numbers, and another variable to have a type that allows it to hold a person's name. (Because Java requires you to specifically define variables before you use them and state the type of value you plan to store in a variable, Java is called a &lt;b&gt;strongly typed&lt;/b&gt; language. Certain languages don't have these requirements. In general, when creating large programs, strong typing tends to reduce the number of programming errors that you make.) &lt;/p&gt;&lt;p&gt; &lt;span style="color:blue;"&gt; &lt;pre&gt;import java.awt.Graphics;&lt;br /&gt;import java.awt.Color;&lt;br /&gt;&lt;br /&gt;public class FirstApplet extends java.applet.Applet&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;  public void paint(Graphics g)&lt;br /&gt;  {&lt;br /&gt;      int width = 200;&lt;br /&gt;      int height = 200;&lt;br /&gt;      g.drawRect(0, 0, width, height);&lt;br /&gt;      g.drawLine(0, 0, width, height);&lt;br /&gt;      g.drawLine(width, 0, 0, height);&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt; &lt;/span&gt; &lt;/p&gt;&lt;p&gt; In this program, we have declared two variables named &lt;b&gt;width&lt;/b&gt; and &lt;b&gt;height&lt;/b&gt;. We have declared their type to be &lt;b&gt;int&lt;/b&gt;. An &lt;b&gt;int&lt;/b&gt; variable can hold an integer (a whole number such as 1, 2, 3). We have &lt;b&gt;initialized&lt;/b&gt; both variables to 200. We could just as easily have said: &lt;/p&gt;&lt;p&gt; &lt;span style="color:blue;"&gt; &lt;pre&gt;        int width;&lt;br /&gt;      width = 200;&lt;br /&gt;      int height;&lt;br /&gt;      height = 200;&lt;br /&gt;&lt;/pre&gt; &lt;/span&gt; &lt;/p&gt;&lt;p&gt; The first form is simply a bit quicker to type. &lt;/p&gt;&lt;p&gt; The act of setting a variable to its first value is called &lt;b&gt;initializing&lt;/b&gt; the variable. A common programming bug occurs when you forget to initialize a variable. To see that bug, try eliminating the initialization part of the code (the "= 200" part) and recompile the program to see what happens. What you will find is that the compiler complains about this problem. That's a very nice feature, by the way. It will save you lots of wasted time. &lt;/p&gt;&lt;p&gt; There are two types of variables in Java -- simple (&lt;b&gt;primitive&lt;/b&gt;) variables and &lt;b&gt;classes&lt;/b&gt;. &lt;/p&gt;&lt;p&gt; The &lt;b&gt;int&lt;/b&gt; type is simple. The variable can hold a number. That is all that it can do. You declare an &lt;b&gt;int&lt;/b&gt; , set it to a value and use it. &lt;b&gt;Classes&lt;/b&gt;, on the other hand, can contain multiple parts and have methods that make them easier to use. A good example of a straightforward class is the &lt;b&gt;Rectangle&lt;/b&gt; class, so let's start with it. &lt;/p&gt;&lt;p&gt; One of the limitations of the program we have been working on so far is the fact that it assumes the window is 200 by 200 pixels. What if we wanted to ask the window, "How big are you?," and then size our rectangle and diagonals to fit? If you go back and look on the documentation page for the &lt;b&gt;Graphics&lt;/b&gt; class (java.awt.Graphics.html -- the file that lists all the available drawing functions), you will see that one of the functions is called &lt;b&gt;getClipBounds&lt;/b&gt;. Click on this function name to see the full description. This function accepts no parameters but instead &lt;b&gt;returns&lt;/b&gt; a value of type &lt;b&gt;Rectangle&lt;/b&gt;. The rectangle it returns contains the width and height of the available drawing area. If you click on &lt;b&gt;Rectangle&lt;/b&gt; in this documentation page you will be taken to the documentation page for the &lt;b&gt;Rectangle&lt;/b&gt; class (java.awt.Graphics.html). Looking in the Variable Index section at the top of the page, you find that this class contains four variables named x, y, width and height, respectively. What we want to do, therefore, is get the clip boundary rectangle using &lt;b&gt;getClipBounds&lt;/b&gt; and then extract the width and height from that rectangle and save the values in the &lt;b&gt;width&lt;/b&gt; and &lt;b&gt;height&lt;/b&gt; variables we created in the previous example, like this: &lt;/p&gt;&lt;p&gt; &lt;span style="color:blue;"&gt; &lt;pre&gt;import java.awt.Graphics;&lt;br /&gt;import java.awt.Color;&lt;br /&gt;import java.awt.Rectangle;&lt;br /&gt;&lt;br /&gt;public class FirstApplet extends java.applet.Applet&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;  public void paint(Graphics g)&lt;br /&gt;  {&lt;br /&gt;      int width;&lt;br /&gt;      int height;&lt;br /&gt;      Rectangle r;&lt;br /&gt;&lt;br /&gt;      r = g.getClipBounds();&lt;br /&gt;      width = r.width - 1;&lt;br /&gt;      height = r.height - 1;&lt;br /&gt;&lt;br /&gt;      g.drawRect(0, 0, width, height);&lt;br /&gt;      g.drawLine(0, 0, width, height);&lt;br /&gt;      g.drawLine(width, 0, 0, height);&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt; &lt;/span&gt; &lt;/p&gt;&lt;p&gt; When you run this example, what you will notice is that the rectangle and diagonals exactly fit the drawing area. Plus, when you change the size of the window, the rectangle and diagonals redraw themselves at the new size automatically. There are five new concepts introduced in this code, so let's look at them: &lt;/p&gt;&lt;ol&gt;&lt;li&gt;First, because we are using the Rectangle class we need to import &lt;b&gt;java.awt.Rectangle&lt;/b&gt; on the third line of the program. &lt;p&gt; &lt;/p&gt;&lt;/li&gt;&lt;li&gt;We have declared three variables in this program. Two (&lt;b&gt;width&lt;/b&gt; and &lt;b&gt;height&lt;/b&gt;) are of type &lt;b&gt;int&lt;/b&gt; and one (&lt;b&gt;r&lt;/b&gt;) is of type Rectangle. &lt;p&gt; &lt;/p&gt;&lt;/li&gt;&lt;li&gt;We used the &lt;b&gt;getClipBounds&lt;/b&gt; function to get the size of the drawing area. It accepts no parameters so we passed it none ("()"), but it &lt;b&gt;returns&lt;/b&gt; a Rectangle. We wrote the line, "r = g.getClipBounds();" to say, "Please place the returned rectangle into the variable &lt;b&gt;r&lt;/b&gt;." &lt;p&gt; &lt;/p&gt;&lt;/li&gt;&lt;li&gt;The variable &lt;b&gt;r&lt;/b&gt;, being of the class Rectangle, actually contains four variables -- x, y, width, and height (you learn these names by reading the documentation for the Rectangle class). To access them you use the "." (dot) operator. So the phrase "r.width" says, "Inside the variable &lt;b&gt;r&lt;/b&gt; retrieve the value named &lt;b&gt;width&lt;/b&gt;." That value is placed into our local variable called &lt;b&gt;width&lt;/b&gt;. In the process, we subtracted 1. Try leaving the subtraction out and see what happens. Also try subtracting five instead and see what happens. &lt;p&gt; &lt;/p&gt;&lt;/li&gt;&lt;li&gt;Finally, we used &lt;b&gt;width&lt;/b&gt; and &lt;b&gt;height&lt;/b&gt; in the drawing functions. &lt;/li&gt;&lt;/ol&gt; One question commonly asked at this point is, "Did we really need to declare variables named &lt;b&gt;width&lt;/b&gt; and &lt;b&gt;height&lt;/b&gt;?" The answer is, "No." We could have typed &lt;b&gt;r.width - 1&lt;/b&gt; directly into the drawing function. Creating the variables simply makes things a little easier to read, and it's therefore a good habit to fall into. &lt;p&gt; Java supports several simple variable types. Here are three of the most common: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;int&lt;/b&gt; - integer (whole number) values (1, 2, 3...) &lt;/li&gt;&lt;li&gt;&lt;b&gt;float&lt;/b&gt; - decimal values (3.14159, for example) &lt;/li&gt;&lt;li&gt;&lt;b&gt;char&lt;/b&gt; - character values (a, b, c...) &lt;/li&gt;&lt;/ul&gt; You can perform math operations on simple types. Java understands &lt;b&gt;+&lt;/b&gt; (addition), &lt;b&gt;-&lt;/b&gt; (subtraction), &lt;b&gt;*&lt;/b&gt; (multiplication), &lt;b&gt;/&lt;/b&gt; (division) and several others. Here's an example of how you might use these operations in a program. Let's say that you want to calculate the volume of a sphere with a diameter of 10 feet. The following code would handle it: &lt;p&gt; &lt;span style="color:blue;"&gt; &lt;pre&gt;float diameter = 10;&lt;br /&gt;float radius;&lt;br /&gt;float volume;&lt;br /&gt;&lt;br /&gt;radius = diameter / 2.0;&lt;br /&gt;volume = 4.0 / 3.0 * 3.14159 * radius * radius * radius;&lt;br /&gt;&lt;/pre&gt; &lt;/span&gt; &lt;/p&gt;&lt;p&gt; The first calculation says, "Divide the value in the variable named &lt;b&gt;diameter&lt;/b&gt; by 2.0 and place the result in the variable named &lt;b&gt;radius&lt;/b&gt;." You can see that the "=" sign here means, "Place the result from the calculation on the right into the variable named on the left."&lt;br /&gt;&lt;/p&gt;&lt;h1 class="articlePageTitle"&gt;Looping&lt;/h1&gt; 	&lt;!-- dtl_id=7810 //--&gt; One of the things that computers do very well is perform repetitive calculations or operations. In the previous sections, we have seen how to write "sequential blocks of code," so the next thing we should discuss is the techniques for causing a sequential block of code to occur repeatedly. &lt;p&gt; For example, let's say that I ask you to draw the following figure: &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;table width="400" align="center" cellpadding="3" cellspacing="0"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td&gt; &lt;center&gt;&lt;img src="http://static.howstuffworks.com/gif/java-grid.gif" /&gt;&lt;br /&gt;&lt;/center&gt; &lt;/td&gt;&lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;p&gt; A good place to start would be to draw the horizontal lines, like this: &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;table width="400" align="center" cellpadding="3" cellspacing="0"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td&gt; &lt;center&gt;&lt;img src="http://static.howstuffworks.com/gif/java-lines.gif" /&gt;&lt;br /&gt;&lt;/center&gt; &lt;/td&gt;&lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;p&gt; One way to draw the lines would be to create a sequential block of code: &lt;/p&gt;&lt;p&gt; &lt;span style="color:blue;"&gt; &lt;pre&gt;import java.awt.Graphics;&lt;br /&gt;&lt;br /&gt;public class FirstApplet extends java.applet.Applet&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;  public void paint(Graphics g)&lt;br /&gt;  {&lt;br /&gt;      int y;&lt;br /&gt;      y = 10;&lt;br /&gt;      g.drawLine(10, y, 210, y);&lt;br /&gt;      y = y + 25;&lt;br /&gt;      g.drawLine(10, y, 210, y);&lt;br /&gt;      y = y + 25;&lt;br /&gt;      g.drawLine(10, y, 210, y);&lt;br /&gt;      y = y + 25;&lt;br /&gt;      g.drawLine(10, y, 210, y);&lt;br /&gt;      y = y + 25;&lt;br /&gt;      g.drawLine(10, y, 210, y);&lt;br /&gt;      y = y + 25;&lt;br /&gt;      g.drawLine(10, y, 210, y);&lt;br /&gt;      y = y + 25;&lt;br /&gt;      g.drawLine(10, y, 210, y);&lt;br /&gt;      y = y + 25;&lt;br /&gt;      g.drawLine(10, y, 210, y);&lt;br /&gt;      y = y + 25;&lt;br /&gt;      g.drawLine(10, y, 210, y);&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt; &lt;/span&gt; &lt;/p&gt;&lt;p&gt;(For some new programmers, the statement "y = y + 25;" looks odd the first time they see it. What it means is, "Take the value currently in the variable &lt;b&gt;y&lt;/b&gt;, add 25 to it and place the result back into the variable &lt;b&gt;y&lt;/b&gt;." So if y contains 10 before the line is executed, it will contain 35 immediately after the line is executed.) &lt;/p&gt;&lt;p&gt; Most people who look at this code immediately notice that it contains the same two lines repeated over and over. In this particular case the repetition is not so bad, but you can imagine that if you wanted to create a grid with thousands of rows and columns, this approach would make program-writing very tiring. The solution to this problem is a &lt;b&gt;loop&lt;/b&gt;, as shown below: &lt;/p&gt;&lt;p&gt; &lt;span style="color:blue;"&gt; &lt;pre&gt;import java.awt.Graphics;&lt;br /&gt;&lt;br /&gt;public class FirstApplet extends java.applet.Applet&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;  public void paint(Graphics g)&lt;br /&gt;  {&lt;br /&gt;      int y;&lt;br /&gt;      y = 10;&lt;br /&gt;      while (y &lt;= 210)        {            g.drawLine(10, y, 210, y);            y = y + 25;        }    } } &lt;/pre&gt; &lt;/span&gt; &lt;/p&gt;&lt;p&gt; When you run this program, you will see that it draws nine horizontal lines 200 pixels long. &lt;/p&gt;&lt;p&gt; The &lt;b&gt;while&lt;/b&gt; statement is a looping statement in Java. The statement tells Java to behave in the following way: At the &lt;b&gt;while&lt;/b&gt; statement, Java looks at the expression in the parentheses and asks, "Is &lt;b&gt;y&lt;/b&gt; less than or equal to 210?" &lt;/p&gt;&lt;ul&gt;&lt;li&gt;If the answer is yes, then Java enters the block of code bracketed by braces -- "{" and "}". The looping part occurs at the end of the block of code. When Java reaches the ending brace, it loops back up to the &lt;b&gt;while&lt;/b&gt; statement and asks the question again. This looping sequence may occur many times. &lt;/li&gt;&lt;li&gt;If the answer is no, it skips over the code bracketed by braces and continues. &lt;/li&gt;&lt;/ul&gt; So you can see that when you run this program, initially &lt;b&gt;y&lt;/b&gt; is 10. Ten is less than 210, so Java enters the block in braces, draws a line from (10,10) to (210, 10), sets &lt;b&gt;y&lt;/b&gt; to 35 and then goes back up to the &lt;b&gt;while&lt;/b&gt; statement. Thirty-five is less than 210, so Java enters the block in braces, draws a line from (10,35) to (210, 35), sets &lt;b&gt;y&lt;/b&gt; to 60 and then goes back up to the &lt;b&gt;while&lt;/b&gt; statement. This sequence repeats until &lt;b&gt;y&lt;/b&gt; eventually gets to be greater than 210. Then the program quits. &lt;p&gt; We can complete our grid by adding a second loop to the program, like this: &lt;/p&gt;&lt;p&gt; &lt;span style="color:blue;"&gt; &lt;pre&gt;import java.awt.Graphics;&lt;br /&gt;&lt;br /&gt;public class FirstApplet extends java.applet.Applet&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;  public void paint(Graphics g)&lt;br /&gt;  {&lt;br /&gt;      int x, y;&lt;br /&gt;      y = 10;&lt;br /&gt;      while (y &lt;= 210)        {            g.drawLine(10, y, 210, y);            y = y + 25;        }        x = 10;        while (x &lt;= 210)        {            g.drawLine(x, 10, x, 210);            x = x + 25;        }    } } &lt;/pre&gt; &lt;/span&gt; &lt;/p&gt;&lt;p&gt; You can see that a &lt;b&gt;while&lt;/b&gt; statement has three parts: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;There is an &lt;b&gt;initialization step&lt;/b&gt; that sets y to 10. &lt;/li&gt;&lt;li&gt;Then there is an &lt;b&gt;evaluation step&lt;/b&gt; inside the parentheses of the while statement. &lt;/li&gt;&lt;li&gt;Then, somewhere in the while statement there is an &lt;b&gt;increment step&lt;/b&gt; that increases the value of y. &lt;/li&gt;&lt;/ul&gt; &lt;p&gt; Java supports another way of doing the same thing that is a little more compact than a &lt;b&gt;while&lt;/b&gt; statement. It is called a &lt;b&gt;for&lt;/b&gt; statement. If you have a &lt;b&gt;while&lt;/b&gt; statement that looks like this: &lt;/p&gt;&lt;p&gt; &lt;span style="color:blue;"&gt; &lt;pre&gt;        y = 10;&lt;br /&gt;      while (y &lt;= 210)        {            g.drawLine(10, y, 210, y);            y = y + 25;        } &lt;/pre&gt; &lt;/span&gt; &lt;/p&gt;&lt;p&gt; then the equivalent &lt;b&gt;for&lt;/b&gt; statement looks like this: &lt;/p&gt;&lt;p&gt; &lt;span style="color:blue;"&gt; &lt;pre&gt;        for (y = 10; y &lt;= 210; y = y + 25)        {            g.drawLine(10, y, 210, y);        } &lt;/pre&gt; &lt;/span&gt; &lt;/p&gt;&lt;p&gt; You can see that all the &lt;b&gt;for&lt;/b&gt; statement does is condense the initialization, evaluation and incrementing lines into a short, single line. It simply shortens the programs you write, nothing more. &lt;/p&gt;&lt;p&gt; While we are here, two quick points about loops: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;In many cases, it would be just as easy to initialize &lt;b&gt;y&lt;/b&gt; to 210 and then decrement it by 25 each time through the loop. The evaluation would ask, "Is &lt;b&gt;y&lt;/b&gt; greater than or equal to 10?" The choice is yours. Most people find it easier to add than subtract in their heads, but you might be different. &lt;p&gt; &lt;/p&gt;&lt;/li&gt;&lt;li&gt;The increment step is very important. Let's say you were to accidentally leave out the part that says "y = y + 25;" inside the loop. What would happen is that the value of &lt;b&gt;y&lt;/b&gt; would never change -- it would always be 10. So it would never become greater than 210 and the loop would continue forever (or until you stop it by turning off the computer or closing the window). This condition is called an &lt;b&gt;infinite loop&lt;/b&gt;. It is a bug that is pretty common. &lt;/li&gt;&lt;/ul&gt; &lt;p&gt; To get some practice with looping, try writing programs to draw the following figures: &lt;/p&gt;&lt;p&gt; &lt;/p&gt;  &lt;img src="http://static.howstuffworks.com/gif/java-loop-ex.gif" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;  &lt;/p&gt;&lt;p&gt; &lt;!-- Page Break --&gt; &lt;/p&gt;&lt;/div&gt; 						&lt;!--DEV NOTE: this div ensures that the entire article body --&gt; 						&lt;!--DEV NOTE: is displayed before ending the container box --&gt; 						&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8136767800267856096-928641805225256620?l=mydigital-garage.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mydigital-garage.blogspot.com/feeds/928641805225256620/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mydigital-garage.blogspot.com/2009/01/how-java-works.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8136767800267856096/posts/default/928641805225256620'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8136767800267856096/posts/default/928641805225256620'/><link rel='alternate' type='text/html' href='http://mydigital-garage.blogspot.com/2009/01/how-java-works.html' title='How Java Works'/><author><name>PRITAM</name><uri>http://www.blogger.com/profile/02799170102757192497</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_apr7HBF_hu4/SMgQ-hsQcMI/AAAAAAAAAII/hu8eIXG9oAw/S220/1212120.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8136767800267856096.post-1613514587286172414</id><published>2009-01-31T11:45:00.000-08:00</published><updated>2009-01-31T11:54:11.047-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='How C Programming Works'/><title type='text'>How C Programming Works</title><content type='html'>&lt;div class="lineRight"&gt;            &lt;div class="relatedVideoBox"&gt;    &lt;div class="item"&gt;     &lt;div class="title"&gt;Computer Videos&lt;/div&gt;     &lt;center&gt;     &lt;div class="thumbnailBox"&gt;      &lt;a href="http://videos.howstuffworks.com/computer" onclick="var s=s_gi(s_account);void(s.tl(this,'o','How C Programming Works : Featured Video : Video : Page 0'));"&gt;&lt;img src="http://static.howstuffworks.com/en-us/computer/buttons/play-video.jpg" alt="Computer Videos" title="Computer Videos" border="0" /&gt;&lt;/a&gt;     &lt;/div&gt;     &lt;/center&gt;     &lt;ul class="plain"&gt;&lt;li&gt;&lt;a href="http://videos.howstuffworks.com/computer" onclick="var s=s_gi(s_account);void(s.tl(this,'o','How C Programming Works : Featured Video : More Videos : Page 0'));"&gt;More Computer Videos »&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;    &lt;/div&gt;   &lt;/div&gt;         &lt;/div&gt;                             &lt;!-- dtl_id=9485 //--&gt;       &lt;p&gt; The C programming language is a popular and widely used programming language for creating &lt;b&gt;computer programs&lt;/b&gt;. Programmers around the world embrace C because it gives maximum control and efficiency to the programmer. If you are a programmer, or if you are interested in becoming a programmer, there are a couple of benefits you gain from learning C: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;You will be able to read and write code for a large number of platforms -- everything from &lt;a href="http://www.howstuffworks.com/microcontroller.htm"&gt;microcontrollers&lt;/a&gt; to the most advanced scientific systems can be written in C, and many modern &lt;a href="http://www.howstuffworks.com/operating-system.htm"&gt;operating systems&lt;/a&gt; are written in C. &lt;p&gt; &lt;/p&gt;&lt;/li&gt;&lt;li&gt;The jump to the object oriented C++ language becomes much easier. C++ is an extension of C, and it is nearly impossible to learn C++ without learning C first. &lt;/li&gt;&lt;/ul&gt; &lt;p&gt; &lt;/p&gt;&lt;table width="415" align="center" cellpadding="3" cellspacing="0"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td&gt; &lt;center&gt;&lt;img src="http://static.howstuffworks.com/gif/c-exec.gif" /&gt;&lt;br /&gt;&lt;!-- &lt;span style="font-size:-2;"&gt;Photo courtesy&lt;/span&gt;&lt;br /&gt;--&gt; &lt;span style="font-size:-1;"&gt;&lt;b&gt;This animation shows the execution of a simple C program. By the end of this article you will understand how it works!&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;/center&gt; &lt;/td&gt;&lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;In this article, we will walk through the entire language and show you how to become a C programmer, starting at the beginning. You will be amazed at all of the different things you can create once you know C!&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;              &lt;h1 class="articlePageTitle"&gt;What is C?&lt;/h1&gt;  &lt;!-- dtl_id=9487 //--&gt;  C is a &lt;b&gt;computer programming language&lt;/b&gt;. That means that you can use C to create lists of instructions for a computer to follow. C is one of thousands of programming languages currently in use. C has been around for several decades and has won widespread acceptance because it gives programmers maximum control and efficiency. C is an easy language to learn. It is a bit more cryptic in its style than some other languages, but you get beyond that fairly quickly. &lt;p&gt; &lt;/p&gt;&lt;table width="400" align="center" cellpadding="3" cellspacing="0"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td&gt; &lt;center&gt;&lt;img src="http://static.howstuffworks.com/gif/c-compile.gif" /&gt;&lt;br /&gt;&lt;/center&gt; &lt;/td&gt;&lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;p&gt; C is what is called a &lt;b&gt;compiled language&lt;/b&gt;. This means that once you write your C program, you must run it through a &lt;b&gt;C compiler&lt;/b&gt; to turn your program into an &lt;b&gt;executable&lt;/b&gt; that the computer can run (execute). The C program is the human-readable form, while the executable that comes out of the compiler is the machine-readable and executable form. What this means is that to write and run a C program, you must have access to a C compiler. If you are using a UNIX machine (for example, if you are writing CGI scripts in C on your host's UNIX computer, or if you are a student working on a lab's UNIX machine), the C compiler is available for free. It is called either "cc" or "gcc" and is available on the command line. If you are a student, then the school will likely provide you with a compiler -- find out what the school is using and learn about it. If you are working at home on a Windows machine, you are going to need to download a free C compiler or purchase a commercial compiler. A widely used commercial compiler is Microsoft's Visual C++ environment (it compiles both C and C++ programs). Unfortunately, this program costs several hundred dollars. If you do not have hundreds of dollars to spend on a commercial compiler, then you can use one of the free compilers available on the Web. See &lt;a href="http://www.howstuffworks.com/framed.htm?parent=c.htm&amp;amp;url=http://delorie.com/djgpp/"&gt;http://delorie.com/djgpp/&lt;/a&gt; as a starting point in your search. &lt;/p&gt;&lt;p&gt; We will start at the beginning with an extremely simple C program and build up from there. I will assume that you are using the UNIX command line and gcc as your environment for these examples; if you are not, all of the code will still work fine -- you will simply need to understand and use whatever compiler you have available.&lt;br /&gt;&lt;/p&gt;              &lt;h1 class="articlePageTitle"&gt;The Simplest C Program&lt;/h1&gt;  &lt;!-- dtl_id=9503 //--&gt; Let's start with the simplest possible C program and use it both to understand the basics of C and the C compilation process. Type the following program into a standard text editor (vi or emacs on UNIX, Notepad on Windows or TeachText on a Macintosh). Then save the program to a file named &lt;b&gt;samp.c&lt;/b&gt;. If you leave off &lt;b&gt;.c&lt;/b&gt;, you will probably get some sort of error when you compile it, so make sure you remember the &lt;b&gt;.c&lt;/b&gt;. Also, make sure that your editor does not automatically append some extra characters (such as .txt) to the name of the file. Here's the first program: &lt;p&gt; &lt;span style="color:blue;"&gt; &lt;pre&gt;#include &lt;stdio.h&gt;&lt;br /&gt;&lt;br /&gt;int main()&lt;br /&gt;{&lt;br /&gt;   printf("This is output from my first program!\n");&lt;br /&gt;   return 0;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt; &lt;/span&gt; &lt;/p&gt;&lt;p&gt;When executed, this program instructs the computer to print out the line "This is output from my first program!" -- then the program quits. You can't get much simpler than that! &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;table width="400" align="center" bg border="1" cellpadding="3" cellspacing="0" style="color:lightyellow;"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:arial,helvetica;"&gt; &lt;center&gt;&lt;span style="color:#000099;"&gt;&lt;b&gt;Position&lt;/b&gt;&lt;/span&gt;&lt;/center&gt; &lt;span style="font-size:-1;"&gt; When you enter this program, position &lt;b&gt;&lt;span style="color:blue;"&gt;#include&lt;/span&gt;&lt;/b&gt; so that the pound sign is in column 1 (the far left side). Otherwise, the spacing and indentation can be any way you like it. On some UNIX systems, you will find a program called &lt;b&gt;cb&lt;/b&gt;, the C Beautifier, which will format code for you. The spacing and indentation shown above is a good example to follow. &lt;/span&gt;&lt;br /&gt;&lt;/span&gt; &lt;/td&gt;&lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;p&gt; To compile this code, take the following steps: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;On a UNIX machine, type &lt;b&gt;gcc samp.c -o samp&lt;/b&gt; (if gcc does not work, try cc). This line invokes the C compiler called gcc, asks it to compile samp.c and asks it to place the executable file it creates under the name &lt;b&gt;samp&lt;/b&gt;. To run the program, type &lt;b&gt;samp&lt;/b&gt; (or, on some UNIX machines, &lt;b&gt;./samp&lt;/b&gt;). &lt;/li&gt;&lt;li&gt;On a DOS or Windows machine using &lt;a href="http://www.howstuffworks.com/framed.htm?parent=c.htm&amp;amp;url=http://www.delorie.com/djgpp/"&gt;DJGPP&lt;/a&gt;, at an MS-DOS prompt type &lt;b&gt;gcc samp.c -o samp.exe&lt;/b&gt;. This line invokes the C compiler called gcc, asks it to compile samp.c and asks it to place the executable file it creates under the name &lt;b&gt;samp.exe&lt;/b&gt;. To run the program, type  &lt;b&gt;samp&lt;/b&gt;. &lt;/li&gt;&lt;li&gt;If you are working with some other compiler or development system, read and follow the directions for the compiler you are using to compile and execute the program. &lt;/li&gt;&lt;/ul&gt;You should see the output "This is output from my first program!" when you run the program. Here is what happened when you compiled the program: &lt;p&gt; &lt;/p&gt;&lt;table width="400" align="center" cellpadding="3" cellspacing="0"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td&gt; &lt;center&gt;&lt;img src="http://static.howstuffworks.com/gif/c-compile.gif" /&gt;&lt;br /&gt;&lt;!-- &lt;span style="font-size:-2;"&gt;Photo courtesy&lt;/span&gt;&lt;br /&gt;--&gt; &lt;/center&gt; &lt;/td&gt;&lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;If you mistype the program, it either will not compile or it will not run. If the program does not compile or does not run correctly, edit it again and see where you went wrong in your typing. Fix the error and try again.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;                &lt;/p&gt;&lt;div class="lineRight"&gt;            &lt;div class="relatedVideoBox"&gt;    &lt;div class="item"&gt;     &lt;div class="title"&gt;Computer Videos&lt;/div&gt;     &lt;center&gt;     &lt;div class="thumbnailBox"&gt;      &lt;a href="http://videos.howstuffworks.com/computer" onclick="var s=s_gi(s_account);void(s.tl(this,'o','How C Programming Works : Featured Video : Video : Page 3'));"&gt;&lt;img src="http://static.howstuffworks.com/en-us/computer/buttons/play-video.jpg" alt="Computer Videos" title="Computer Videos" border="0" /&gt;&lt;/a&gt;     &lt;/div&gt;     &lt;/center&gt;     &lt;ul class="plain"&gt;&lt;li&gt;&lt;a href="http://videos.howstuffworks.com/computer" onclick="var s=s_gi(s_account);void(s.tl(this,'o','How C Programming Works : Featured Video : More Videos : Page 3'));"&gt;More Computer Videos »&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;    &lt;/div&gt;   &lt;/div&gt;         &lt;/div&gt;                            &lt;h1 class="articlePageTitle"&gt;The Simplest C Program: What's Happening?&lt;/h1&gt;  &lt;!-- dtl_id=9505 //--&gt;  Let's walk through this program and start to see what the different lines are doing (&lt;a href="http://www.howstuffworks.com/c2.htm"&gt;Click here&lt;/a&gt; to open the program in another window): &lt;ul&gt;&lt;li&gt;This C program starts with &lt;b&gt;&lt;span style="color:blue;"&gt;#include &lt;stdio.h&gt;&lt;/span&gt;&lt;/b&gt;. This line &lt;b&gt;includes&lt;/b&gt; the "standard I/O library" into your program. The standard I/O library lets you read input from the &lt;a href="http://www.howstuffworks.com/keyboard.htm"&gt;keyboard&lt;/a&gt; (called "standard in"), write output to the &lt;a href="http://www.howstuffworks.com/monitor.htm"&gt;screen&lt;/a&gt; (called "standard out"), process text files stored on the &lt;a href="http://www.howstuffworks.com/hard-disk.htm"&gt;disk&lt;/a&gt;, and so on. It is an extremely useful library. C has a large number of standard libraries like stdio, including string, time and math libraries. A &lt;b&gt;library&lt;/b&gt; is simply a package of code that someone else has written to make your life easier (we'll discuss libraries a bit later). &lt;p&gt; &lt;/p&gt;&lt;/li&gt;&lt;li&gt;The line &lt;b&gt;&lt;span style="color:blue;"&gt;int main()&lt;/span&gt;&lt;/b&gt; declares the main function. Every C program must have a function named &lt;b&gt;main&lt;/b&gt; somewhere in the code. We will learn more about functions shortly. At run time, program execution starts at the first line of the main function. &lt;p&gt; &lt;/p&gt;&lt;/li&gt;&lt;li&gt;In C, the &lt;b&gt;&lt;span style="color:blue;"&gt;{&lt;/span&gt;&lt;/b&gt; and &lt;b&gt;&lt;span style="color:blue;"&gt;}&lt;/span&gt;&lt;/b&gt; symbols mark the beginning and end of a block of code. In this case, the block of code making up the main function contains two lines. &lt;p&gt; &lt;/p&gt;&lt;/li&gt;&lt;li&gt;The &lt;b&gt;&lt;span style="color:blue;"&gt;printf&lt;/span&gt;&lt;/b&gt; statement in C allows you to send output to standard out (for us, the screen). The portion in quotes is called the &lt;b&gt;format string&lt;/b&gt; and describes how the data is to be formatted when printed. The format string can contain string literals such as "This is output from my first program!," symbols for carriage returns (&lt;span style="color:blue;"&gt;\n&lt;/span&gt;), and operators as placeholders for variables (see below). If you are using UNIX, you can type &lt;b&gt;man 3 printf&lt;/b&gt; to get complete documentation for the printf function. If not, see the documentation included with your compiler for details about the printf function. &lt;p&gt; &lt;/p&gt;&lt;/li&gt;&lt;li&gt;The &lt;b&gt;&lt;span style="color:blue;"&gt;return 0;&lt;/span&gt;&lt;/b&gt; line causes the function to return an error code of 0 (no error) to the shell that started execution. More on this capability a bit later. &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;h1 class="articlePageTitle"&gt;Variables&lt;/h1&gt;  &lt;!-- dtl_id=9507 //--&gt; As a programmer, you will frequently want your program to "remember" a value. For example, if your program requests a value from the user, or if it calculates a value, you will want to remember it somewhere so you can use it later. The way your program remembers things is by using &lt;b&gt;variables&lt;/b&gt;. For example: &lt;p&gt; &lt;span style="color:blue;"&gt; &lt;pre&gt;    int b;&lt;br /&gt;&lt;/pre&gt; &lt;/span&gt; &lt;/p&gt;&lt;p&gt; This line says, "I want to create a space called b that is able to hold one integer value." A variable has a &lt;b&gt;name&lt;/b&gt; (in this case, &lt;span style="color:blue;"&gt;b&lt;/span&gt;) and a &lt;b&gt;type&lt;/b&gt; (in this case, &lt;span style="color:blue;"&gt;int&lt;/span&gt;, an integer). You can store a value in b by saying something like: &lt;/p&gt;&lt;p&gt; &lt;span style="color:blue;"&gt; &lt;pre&gt;    b = 5;&lt;br /&gt;&lt;/pre&gt; &lt;/span&gt; &lt;/p&gt;&lt;p&gt;You can use the value in b by saying something like: &lt;/p&gt;&lt;p&gt; &lt;span style="color:blue;"&gt; &lt;pre&gt;    printf("%d", b);&lt;br /&gt;&lt;/pre&gt; &lt;/span&gt; &lt;/p&gt;&lt;p&gt; In C, there are several standard types for variables: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;&lt;span style="color:blue;"&gt;int&lt;/span&gt;&lt;/b&gt; - integer (whole number) values &lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;span style="color:blue;"&gt;float&lt;/span&gt;&lt;/b&gt; - floating point values &lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;span style="color:blue;"&gt;char&lt;/span&gt;&lt;/b&gt; - single character values (such as "m" or "Z") &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;h1 class="articlePageTitle"&gt;Printf&lt;/h1&gt;  &lt;!-- dtl_id=9509 //--&gt;  The &lt;b&gt;printf statement allows you to send output to standard out.&lt;/b&gt; For us, standard out is generally the screen (although you can redirect standard out into a text file or another command). &lt;p&gt; Here is another program that will help you learn more about printf: &lt;/p&gt;&lt;p&gt; &lt;span style="color:blue;"&gt; &lt;pre&gt;#include &lt;stdio.h&gt;&lt;br /&gt;&lt;br /&gt;int main()&lt;br /&gt;{&lt;br /&gt;   int a, b, c;&lt;br /&gt;   a = 5;&lt;br /&gt;   b = 7;&lt;br /&gt;   c = a + b;&lt;br /&gt;   printf("%d + %d = %d\n", a, b, c);&lt;br /&gt;   return 0;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="articleBody"&gt;  &lt;h1 class="articlePageTitle"&gt;Printf: Reading User Values&lt;/h1&gt;  &lt;!-- dtl_id=9511 //--&gt; The previous program is good, but it would be better if it read in the values 5 and 7 from the user instead of using constants. Try this program instead: &lt;p&gt; &lt;span style="color:blue;"&gt; &lt;pre&gt;#include &lt;stdio.h&gt;&lt;br /&gt;&lt;br /&gt;int main()&lt;br /&gt;{&lt;br /&gt;   int a, b, c;&lt;br /&gt;   printf("Enter the first value:");&lt;br /&gt;   scanf("%d", &amp;amp;a);&lt;br /&gt;   printf("Enter the second value:");&lt;br /&gt;   scanf("%d", &amp;amp;b);&lt;br /&gt;   c = a + b;&lt;br /&gt;   printf("%d + %d = %d\n", a, b, c);&lt;br /&gt;   return 0;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt; &lt;/span&gt; &lt;/p&gt;&lt;p&gt; Here's how this program works when you execute it: &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;table width="400" align="center" cellpadding="3" cellspacing="0"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td&gt; &lt;center&gt;&lt;img src="http://static.howstuffworks.com/gif/c-exec.gif" /&gt;&lt;br /&gt;&lt;/center&gt; &lt;/td&gt;&lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;p&gt; Make the changes, then compile and run the program to make sure it works. Note that &lt;span style="color:blue;"&gt;scanf&lt;/span&gt; uses the same sort of format string as &lt;span style="color:blue;"&gt;printf&lt;/span&gt; (type &lt;b&gt;man scanf&lt;/b&gt; for more info). Also note the &lt;span style="color:blue;"&gt;&amp;amp;&lt;/span&gt; in front of &lt;span style="color:blue;"&gt;a&lt;/span&gt; and &lt;span style="color:blue;"&gt;b&lt;/span&gt;. This is the &lt;b&gt;address operator&lt;/b&gt; in C: It returns the address of the variable (this will not make sense until we discuss pointers). You must use the &amp;amp; operator in scanf on any variable of type char, int, or float, as well as structure types (which we will get to shortly). If you leave out the &amp;amp; operator, you will get an error when you run the program. Try it so that you can see what that sort of run-time error looks like. &lt;/p&gt;&lt;p&gt; Let's look at some variations to understand printf completely. Here is the simplest printf statement: &lt;/p&gt;&lt;p&gt; &lt;span style="color:blue;"&gt; &lt;pre&gt;    printf("Hello");&lt;br /&gt;&lt;/pre&gt; &lt;/span&gt; &lt;/p&gt;&lt;p&gt; This call to printf has a format string that tells printf to send the word "Hello" to standard out. Contrast it with this: &lt;/p&gt;&lt;p&gt; &lt;span style="color:blue;"&gt; &lt;pre&gt;    printf("Hello\n");&lt;br /&gt;&lt;/pre&gt; &lt;/span&gt; &lt;/p&gt;&lt;p&gt; The difference between the two is that the second version sends the word "Hello" followed by a carriage return to standard out. &lt;/p&gt;&lt;p&gt; The following line shows how to &lt;b&gt;output the value of a variable using printf&lt;/b&gt;. &lt;/p&gt;&lt;p&gt; &lt;span style="color:blue;"&gt; &lt;pre&gt;    printf("%d", b);&lt;br /&gt;&lt;/pre&gt; &lt;/span&gt; &lt;/p&gt;&lt;p&gt; The &lt;span style="color:blue;"&gt;&lt;b&gt;%d&lt;/b&gt;&lt;/span&gt; is a placeholder that will be replaced by the value of the variable &lt;b&gt;&lt;span style="color:blue;"&gt;b&lt;/span&gt;&lt;/b&gt; when the printf statement is executed. Often, you will want to embed the value within some other words. One way to accomplish that is like this: &lt;/p&gt;&lt;p&gt; &lt;span style="color:blue;"&gt; &lt;pre&gt;    printf("The temperature is ");&lt;br /&gt;   printf("%d", b);&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/span&gt;&lt;/p&gt;&lt;h1 class="articlePageTitle"&gt;canf&lt;/h1&gt;  &lt;!-- dtl_id=9513 //--&gt;  The &lt;b&gt;scanf function allows you to accept input from standard in&lt;/b&gt;, which for us is generally the keyboard. The scanf function can do a lot of different things, but it is generally unreliable unless used in the simplest ways. It is unreliable because it does not handle human errors very well. But for simple programs it is good enough and easy-to-use. &lt;p&gt; The simplest application of &lt;span style="color:blue;"&gt;&lt;b&gt;scanf&lt;/b&gt;&lt;/span&gt; looks like this: &lt;/p&gt;&lt;p&gt; &lt;span style="color:blue;"&gt; &lt;pre&gt;    scanf("%d", &amp;amp;b);&lt;br /&gt;&lt;/pre&gt; &lt;/span&gt; &lt;/p&gt;&lt;p&gt;The program will read in an integer value that the user enters on the keyboard (%d is for integers, as is printf, so b must be declared as an int) and place that value into b. &lt;/p&gt;&lt;p&gt; The scanf function uses the same placeholders as printf: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color:blue;"&gt;&lt;b&gt;int&lt;/b&gt;&lt;/span&gt; uses &lt;span style="color:blue;"&gt;&lt;b&gt;%d&lt;/b&gt;&lt;/span&gt; &lt;/li&gt;&lt;li&gt;&lt;span style="color:blue;"&gt;&lt;b&gt;float&lt;/b&gt;&lt;/span&gt; uses &lt;span style="color:blue;"&gt;&lt;b&gt;%f&lt;/b&gt;&lt;/span&gt; &lt;/li&gt;&lt;li&gt;&lt;span style="color:blue;"&gt;&lt;b&gt;char&lt;/b&gt;&lt;/span&gt; uses &lt;span style="color:blue;"&gt;&lt;b&gt;%c&lt;/b&gt;&lt;/span&gt; &lt;/li&gt;&lt;li&gt;&lt;b&gt;character strings&lt;/b&gt; (discussed later) use &lt;span style="color:blue;"&gt;&lt;b&gt;%s&lt;/b&gt;&lt;/span&gt; &lt;/li&gt;&lt;/ul&gt; You MUST put &lt;span style="color:blue;"&gt;&lt;b&gt;&amp;amp;&lt;/b&gt;&lt;/span&gt; in front of the variable used in scanf. The reason why will become clear once you learn about &lt;b&gt;pointers&lt;/b&gt;. It is easy to forget the &amp;amp; sign, and when you forget it your program will almost always crash when you run it. &lt;p&gt;In general, it is best to use scanf as shown here -- to read a single value from the keyboard. Use multiple calls to scanf to read multiple values. In any real program, you will use the &lt;b&gt;&lt;span style="color:blue;"&gt;gets&lt;/span&gt;&lt;/b&gt; or &lt;b&gt;&lt;span style="color:blue;"&gt;fgets&lt;/span&gt;&lt;/b&gt; functions instead to read text a line at a time. Then you will "parse" the line to read its values. The reason that you do that is so you can detect errors in the input and handle them as you see fit. &lt;/p&gt;&lt;p&gt;The printf and scanf functions will take a bit of practice to be completely understood, but once mastered they are extremely useful. &lt;/p&gt;&lt;p&gt;  &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;table width="400" align="center" bg border="1" cellpadding="3" cellspacing="0" style="color:#eef4f6;"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:arial,helvetica;"&gt; &lt;span style="font-size:+1;color:#000099;"&gt;&lt;center&gt;Try This!&lt;/center&gt;&lt;/span&gt; &lt;span style="font-size:-1;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;ul&gt;&lt;span style="font-family:arial,helvetica;"&gt;&lt;span style="font-size:-1;"&gt;&lt;li&gt;Modify this program so that it accepts three values instead of two and adds all three together: &lt;p&gt; &lt;span style="color:blue;"&gt; &lt;pre&gt;#include &lt;stdio.h&gt;&lt;br /&gt;&lt;br /&gt;int main()&lt;br /&gt;{&lt;br /&gt;   int a, b, c;&lt;br /&gt;   printf("Enter the first value:");&lt;br /&gt;   scanf("%d", &amp;amp;a);&lt;br /&gt;   printf("Enter the second value:");&lt;br /&gt;   scanf("%d", &amp;amp;b);&lt;br /&gt;   c = a + b;&lt;br /&gt;   printf("%d + %d = %d\n", a, b, c);&lt;br /&gt;   return 0;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt; &lt;/span&gt; &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;/li&gt;&lt;li&gt;Try deleting or adding random characters or words in one of the previous programs and watch how the compiler reacts to these errors. &lt;p&gt;For example, delete the b variable in the first line of the above program and see what the compiler does when you forget to declare a variable. Delete a semicolon and see what happens. Leave out one of the braces. Remove one of the parentheses next to the main function. Make each error by itself and then run the program through the compiler to see what happens. By simulating errors like these, you can learn about different compiler errors, and that will make your typos easier to find when you make them for real. &lt;/p&gt;&lt;/li&gt;&lt;/span&gt;&lt;/span&gt;&lt;/ul&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt; &lt;/p&gt;&lt;table width="400" align="center" bg border="1" cellpadding="3" cellspacing="0" style="color:#eef4f6;"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:arial,helvetica;"&gt; &lt;span style="font-size:+1;color:#000099;"&gt;&lt;center&gt;C Errors to Avoid&lt;/center&gt;&lt;/span&gt; &lt;span style="font-size:-1;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;ul&gt;&lt;span style="font-family:arial,helvetica;"&gt;&lt;span style="font-size:-1;"&gt;&lt;li&gt;Using the wrong character case - Case matters in C, so you cannot type &lt;b&gt;Printf&lt;/b&gt; or &lt;b&gt;PRINTF&lt;/b&gt;. It must be &lt;b&gt;&lt;span style="color:blue;"&gt;printf&lt;/span&gt;&lt;/b&gt;. &lt;/li&gt;&lt;li&gt;Forgetting to use the &lt;b&gt;&lt;span style="color:blue;"&gt;&amp;amp;&lt;/span&gt;&lt;/b&gt; in scanf &lt;/li&gt;&lt;li&gt;Too many or too few parameters following the format statement in printf or scanf &lt;/li&gt;&lt;li&gt;Forgetting to declare a variable name before using it &lt;/li&gt;&lt;/span&gt;&lt;/span&gt;&lt;/ul&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;span style="color:blue;"&gt;&lt;pre&gt;&lt;br /&gt;   printf(" degrees\n");&lt;br /&gt;&lt;/pre&gt; &lt;/span&gt; &lt;/p&gt;&lt;p&gt; An easier way is to say this: &lt;/p&gt;&lt;p&gt; &lt;span style="color:blue;"&gt; &lt;pre&gt;    printf("The temperature is %d degrees\n", b);&lt;br /&gt;&lt;/pre&gt; &lt;/span&gt; &lt;/p&gt;&lt;p&gt; You can also use multiple %d placeholders in one printf statement: &lt;/p&gt;&lt;p&gt; &lt;span style="color:blue;"&gt; &lt;pre&gt;    printf("%d + %d = %d\n", a, b, c);&lt;br /&gt;&lt;/pre&gt; &lt;/span&gt; &lt;/p&gt;&lt;p&gt; In the printf statement, it is extremely important that the number of &lt;b&gt;operators&lt;/b&gt; in the format string corresponds exactly with the number and type of the variables following it. For example, if the format string contains three %d operators, then it must be followed by exactly three parameters and they must have the same types in the same order as those specified by the operators. &lt;/p&gt;&lt;p&gt; You can &lt;b&gt;print all of the normal C types with printf&lt;/b&gt; by using different placeholders: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;&lt;span style="color:blue;"&gt;int&lt;/span&gt;&lt;/b&gt; (integer values) uses &lt;b&gt;&lt;span style="color:blue;"&gt;%d&lt;/span&gt;&lt;/b&gt; &lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;span style="color:blue;"&gt;float&lt;/span&gt;&lt;/b&gt; (floating point values) uses &lt;b&gt;&lt;span style="color:blue;"&gt;%f&lt;/span&gt;&lt;/b&gt; &lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;span style="color:blue;"&gt;char&lt;/span&gt;&lt;/b&gt; (single character values) uses &lt;b&gt;&lt;span style="color:blue;"&gt;%c&lt;/span&gt;&lt;/b&gt; &lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;span style="color:blue;"&gt;character strings&lt;/span&gt;&lt;/b&gt; (arrays of characters, discussed later) use &lt;b&gt;&lt;span style="color:blue;"&gt;%s&lt;/span&gt;&lt;/b&gt; &lt;/li&gt;&lt;/ul&gt; You can learn more about the nuances of printf on a UNIX machine by typing &lt;b&gt;man 3 printf&lt;/b&gt;. Any other C compiler you are using will probably come with a manual or a help file that contains a description of printf. &lt;p&gt;  &lt;/p&gt;&lt;p&gt; &lt;!-- Page Break --&gt; &lt;/p&gt;&lt;/div&gt;       &lt;!--DEV NOTE: this div ensures that the entire article body --&gt;       &lt;!--DEV NOTE: is displayed before ending the container box --&gt;       &lt;p&gt;&lt;span style="color:blue;"&gt;&lt;pre&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt; &lt;/span&gt; &lt;/p&gt;&lt;p&gt; Type this program into a file and save it as &lt;b&gt;add.c&lt;/b&gt;. Compile it with the line &lt;b&gt;gcc add.c -o add&lt;/b&gt; and then run it by typing &lt;b&gt;add&lt;/b&gt; (or &lt;b&gt;./add&lt;/b&gt;). You will see the line "5 + 7 = 12" as output. &lt;/p&gt;&lt;p&gt; Here is an explanation of the different lines in this program: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;The line &lt;b&gt;&lt;span style="color:blue;"&gt;int a, b, c;&lt;/span&gt;&lt;/b&gt; declares three integer variables named &lt;b&gt;a&lt;/b&gt;, &lt;b&gt;b&lt;/b&gt; and &lt;b&gt;c&lt;/b&gt;. Integer variables hold whole numbers. &lt;p&gt; &lt;/p&gt;&lt;/li&gt;&lt;li&gt;The next line initializes the variable named &lt;b&gt;a&lt;/b&gt; to the value 5. &lt;p&gt; &lt;/p&gt;&lt;/li&gt;&lt;li&gt;The next line sets &lt;b&gt;b&lt;/b&gt; to 7. &lt;p&gt; &lt;/p&gt;&lt;/li&gt;&lt;li&gt;The next line adds &lt;b&gt;a&lt;/b&gt; and &lt;b&gt;b&lt;/b&gt; and "assigns" the result to &lt;b&gt;c&lt;/b&gt;. &lt;p&gt; The computer adds the value in &lt;b&gt;a&lt;/b&gt; (5) to the value in &lt;b&gt;b&lt;/b&gt; (7) to form the result 12, and then places that new value (12) into the variable &lt;b&gt;c&lt;/b&gt;. The variable &lt;b&gt;c&lt;/b&gt; is assigned the value 12. For this reason, the &lt;span style="color:blue;"&gt;=&lt;/span&gt; in this line is called "the assignment operator." &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;/li&gt;&lt;li&gt;The &lt;span style="color:blue;"&gt;&lt;b&gt;printf&lt;/b&gt;&lt;/span&gt; statement then prints the line "5 + 7 = 12." The &lt;span style="color:blue;"&gt;&lt;b&gt;%d&lt;/b&gt;&lt;/span&gt; placeholders in the printf statement act as placeholders for values. There are three %d placeholders, and at the end of the printf line there are the three variable names: &lt;b&gt;&lt;span style="color:blue;"&gt;a&lt;/span&gt;&lt;/b&gt;, &lt;b&gt;&lt;span style="color:blue;"&gt;b&lt;/span&gt;&lt;/b&gt; and &lt;b&gt;&lt;span style="color:blue;"&gt;c&lt;/span&gt;&lt;/b&gt;. C matches up the first &lt;span style="color:blue;"&gt;%d&lt;/span&gt; with &lt;span style="color:blue;"&gt;a&lt;/span&gt; and substitutes 5 there. It matches the second &lt;span style="color:blue;"&gt;%d&lt;/span&gt; with &lt;span style="color:blue;"&gt;b&lt;/span&gt; and substitutes 7. It matches the third &lt;span style="color:blue;"&gt;%d&lt;/span&gt; with &lt;span style="color:blue;"&gt;c&lt;/span&gt; and substitutes 12. Then it prints the completed line to the screen: 5 + 7 = 12. The &lt;span style="color:blue;"&gt;&lt;b&gt;+&lt;/b&gt;&lt;/span&gt;, the &lt;span style="color:blue;"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; and the spacing are a part of the format line and get embedded automatically between the %d operators as specified by the programmer. &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;h1 class="articlePageTitle"&gt;Branching and Looping&lt;/h1&gt;  &lt;!-- dtl_id=9515 //--&gt;  In C, both &lt;b&gt;if&lt;/b&gt; statements and &lt;b&gt;while&lt;/b&gt; loops rely on the idea of &lt;b&gt;Boolean expressions&lt;/b&gt;. Here is a simple C program demonstrating an if statement: &lt;p&gt; &lt;span style="color:blue;"&gt; &lt;pre&gt;#include &lt;stdio.h&gt;&lt;br /&gt;&lt;br /&gt;int main()&lt;br /&gt;{&lt;br /&gt;   int b;&lt;br /&gt;   printf("Enter a value:");&lt;br /&gt;   scanf("%d", &amp;amp;b);&lt;br /&gt;   if (b &lt; 0)&lt;br /&gt;       printf("The value is negative\n");&lt;br /&gt;   return 0;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt; &lt;/span&gt; &lt;/p&gt;&lt;p&gt; This program accepts a number from the user. It then tests the number using an if statement to see if it is less than 0. If it is, the program prints a message. Otherwise, the program is silent. The &lt;b&gt;&lt;span style="color:blue;"&gt;(b &lt;&gt;&lt;/b&gt; portion of the program is the &lt;a href="http://www.howstuffworks.com/boolean.htm"&gt;Boolean expression&lt;/a&gt;. C evaluates this expression to decide whether or not to print the message. If the Boolean expression evaluates to &lt;b&gt;True&lt;/b&gt;, then C executes the single line immediately following the if statement (or a block of lines within braces immediately following the if statement). If the Boolean expression is &lt;b&gt;False&lt;/b&gt;, then C skips the line or block of lines immediately following the if statement. &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;table width="400" align="center" cellpadding="3" cellspacing="0"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span type="arial,helvetica"&gt; &lt;center&gt;&lt;img src="http://static.howstuffworks.com/gif/c-if.gif" /&gt;&lt;br /&gt;&lt;/center&gt; &lt;/span&gt;&lt;/td&gt;&lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;p&gt; Here's slightly more complex example: &lt;/p&gt;&lt;p&gt; &lt;span style="color:blue;"&gt; &lt;pre&gt;#include &lt;stdio.h&gt;&lt;br /&gt;&lt;br /&gt;int main()&lt;br /&gt;{&lt;br /&gt;   int b;&lt;br /&gt;   printf("Enter a value:");&lt;br /&gt;   scanf("%d", &amp;amp;b);&lt;br /&gt;   if (b &lt; 0)&lt;br /&gt;       printf("The value is negative\n");&lt;br /&gt;   else if (b == 0)&lt;br /&gt;       printf("The value is zero\n");&lt;br /&gt;   else&lt;br /&gt;       printf("The value is positive\n");&lt;br /&gt;   return 0;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt; &lt;/span&gt; &lt;/p&gt;&lt;p&gt; In this example, the &lt;span style="color:blue;"&gt;&lt;b&gt;else if&lt;/b&gt;&lt;/span&gt; and &lt;span style="color:blue;"&gt;&lt;b&gt;else&lt;/b&gt;&lt;/span&gt; sections evaluate for zero and positive values as well. &lt;/p&gt;&lt;p&gt; Here is a more complicated Boolean expression: &lt;/p&gt;&lt;p&gt; &lt;span style="color:blue;"&gt; &lt;pre&gt;if ((x==y) &amp;amp;&amp;amp; (j&gt;k))&lt;br /&gt;   z=1;&lt;br /&gt;else&lt;br /&gt;   q=10;&lt;br /&gt;&lt;/pre&gt; &lt;/span&gt; &lt;/p&gt;&lt;p&gt; This statement says, "If the value in variable x equals the value in variable y, and if the value in variable j is greater than the value in variable k, then set the variable z to 1, otherwise set the variable q to 10." You will use if statements like this throughout your C programs to make decisions. In general, most of the decisions you make will be simple ones like the first example; but on occasion, things get more complicated. &lt;/p&gt;&lt;p&gt; Notice that C uses &lt;b&gt;&lt;span style="color:blue;"&gt;==&lt;/span&gt;&lt;/b&gt; to &lt;b&gt;test for equality&lt;/b&gt;, while it uses &lt;b&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&lt;/b&gt; to &lt;b&gt;assign a value&lt;/b&gt; to a variable. The &lt;b&gt;&lt;span style="color:blue;"&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;/b&gt; in C represents a &lt;a href="http://www.howstuffworks.com/boolean1.htm"&gt;Boolean AND operation&lt;/a&gt;. &lt;/p&gt;&lt;p&gt; Here are all of the Boolean operators in C: &lt;/p&gt;&lt;p&gt; &lt;b&gt; &lt;pre&gt;  equality          &lt;span style="color:blue;"&gt;==&lt;/span&gt;&lt;br /&gt; less than         &lt;span style="color:blue;"&gt;&lt;&lt;/span&gt;&lt;br /&gt; Greater than      &lt;span style="color:blue;"&gt;&gt;&lt;/span&gt;&lt;br /&gt; &lt;=                &lt;span style="color:blue;"&gt;&lt;=&lt;/span&gt;&lt;br /&gt; &gt;=                &lt;span style="color:blue;"&gt;&gt;=&lt;/span&gt;&lt;br /&gt; inequality        &lt;span style="color:blue;"&gt;!=&lt;/span&gt;&lt;br /&gt; and               &lt;span style="color:blue;"&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;br /&gt; or                &lt;span style="color:blue;"&gt;||&lt;/span&gt;&lt;br /&gt; not               &lt;span style="color:blue;"&gt;!&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt; &lt;/b&gt; &lt;/p&gt;&lt;p&gt; You'll find that &lt;b&gt;while&lt;/b&gt; statements are just as easy to use as if statements. For example: &lt;/p&gt;&lt;p&gt; &lt;span style="color:blue;"&gt; &lt;pre&gt;while (a &lt; b)&lt;br /&gt;{&lt;br /&gt;   printf("%d\n", a);&lt;br /&gt;   a = a + 1;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt; &lt;/span&gt; &lt;/p&gt;&lt;p&gt; This causes the two lines within the braces to be executed repeatedly until &lt;b&gt;&lt;span style="color:blue;"&gt;a&lt;/span&gt;&lt;/b&gt; is greater than or equal to &lt;b&gt;&lt;span style="color:blue;"&gt;b&lt;/span&gt;&lt;/b&gt;. The while statement in general works like this: &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;table width="400" align="center" cellpadding="3" cellspacing="0"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td&gt; &lt;center&gt;&lt;img src="http://static.howstuffworks.com/gif/c-while.gif" /&gt;&lt;br /&gt;&lt;/center&gt; &lt;/td&gt;&lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;p&gt; C also provides a &lt;b&gt;do-while&lt;/b&gt; structure: &lt;/p&gt;&lt;p&gt; &lt;span style="color:blue;"&gt; &lt;pre&gt;do&lt;br /&gt;{&lt;br /&gt;   printf("%d\n", a);&lt;br /&gt;   a = a + 1;&lt;br /&gt;}&lt;br /&gt;while (a &lt; b);&lt;br /&gt;&lt;/pre&gt; &lt;/span&gt; &lt;/p&gt;&lt;p&gt; The &lt;b&gt;for loop&lt;/b&gt; in C is simply a shorthand way of expressing a while statement. For example, suppose you have the following code in C: &lt;/p&gt;&lt;p&gt; &lt;span style="color:blue;"&gt; &lt;pre&gt;x=1;&lt;br /&gt;while (x&lt;10)&lt;br /&gt;{&lt;br /&gt;   blah blah blah&lt;br /&gt;   x++; /* x++ is the same as saying x=x+1 */&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt; &lt;/span&gt; &lt;/p&gt;&lt;p&gt; You can convert this into a for loop as follows: &lt;/p&gt;&lt;p&gt; &lt;span style="color:blue;"&gt; &lt;pre&gt;for(x=1; x&lt;10; x++)&lt;br /&gt;{&lt;br /&gt;   blah blah blah&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt; &lt;/span&gt; &lt;/p&gt;&lt;p&gt; Note that the while loop contains an initialization step (&lt;b&gt;&lt;span style="color:blue;"&gt;x=1&lt;/span&gt;&lt;/b&gt;), a test step (&lt;b&gt;&lt;span style="color:blue;"&gt;x&lt;10&lt;/span&gt;&lt;/b&gt;), and an increment step (&lt;b&gt;&lt;span style="color:blue;"&gt;x++&lt;/span&gt;&lt;/b&gt;). The for loop lets you put all three parts onto one line, but you can put anything into those three parts. For example, suppose you have the following loop: &lt;/p&gt;&lt;p&gt; &lt;span style="color:blue;"&gt; &lt;pre&gt;a=1;&lt;br /&gt;b=6;&lt;br /&gt;while (a &lt; b)&lt;br /&gt;{&lt;br /&gt;   a++;&lt;br /&gt;   printf("%d\n",a);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt; &lt;/span&gt; &lt;/p&gt;&lt;p&gt; You can place this into a for statement as well: &lt;/p&gt;&lt;p&gt; &lt;span style="color:blue;"&gt;&lt;pre&gt;for (a=1,b=6; a &lt; b; a++,printf("%d\n",a));&lt;br /&gt;&lt;/pre&gt; &lt;/span&gt; &lt;/p&gt;&lt;p&gt; It is slightly confusing, but it is possible. The &lt;b&gt;comma operator&lt;/b&gt; lets you separate several different statements in the initialization and increment sections of the for loop (but not in the test section). Many C programmers like to pack a lot of information into a single line of C code; but a lot of people think it makes the code harder to understand, so they break it up. &lt;/p&gt;&lt;p&gt; &lt;/p&gt;  &lt;span style="font-family:arial,helvetica;"&gt; &lt;/span&gt;&lt;center&gt;&lt;span style="font-family:arial,helvetica;"&gt;&lt;b&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt; &lt;span style="color:#000099;"&gt;vs.&lt;/span&gt; &lt;span style="color:blue;"&gt;==&lt;/span&gt; &lt;span style="color:#000099;"&gt;in Boolean expressions&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/center&gt; &lt;span style="font-family:arial,helvetica;"&gt;&lt;span style="font-size:-1;"&gt;The &lt;b&gt;&lt;span style="color:blue;"&gt;==&lt;/span&gt;&lt;/b&gt; sign is a problem in C because every now and then you may forget and type just &lt;b&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&lt;/b&gt; in a Boolean expression. This is an easy mistake to make, but to the compiler there is a very important difference. C will accept either &lt;b&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&lt;/b&gt; and &lt;b&gt;&lt;span style="color:blue;"&gt;==&lt;/span&gt;&lt;/b&gt; in a Boolean expression -- the behavior of the program changes remarkably between the two, however. &lt;/span&gt;&lt;/span&gt;&lt;p&gt; &lt;span style="font-family:arial,helvetica;"&gt;&lt;span style="font-size:-1;"&gt;Boolean expressions evaluate to integers in C, and integers can be used inside of Boolean expressions. The integer value 0 in C is False, while any other integer value is True. The following is legal in C: &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial,helvetica;"&gt; &lt;span style="color:blue;"&gt; &lt;pre&gt;#include &lt;stdio.h&gt;&lt;br /&gt;&lt;br /&gt;int main()&lt;br /&gt;{&lt;br /&gt;   int a;&lt;br /&gt;&lt;br /&gt;   printf("Enter a number:");&lt;br /&gt;   scanf("%d", &amp;amp;a);&lt;br /&gt;   if (a)&lt;br /&gt;   {&lt;br /&gt;       printf("The value is True\n");&lt;br /&gt;   }&lt;br /&gt;   return 0;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;              &lt;h1 class="articlePageTitle"&gt;Looping: A Real Example&lt;/h1&gt;  &lt;!-- dtl_id=9517 //--&gt; Let's say that you would like to create a program that prints a Fahrenheit-to-Celsius conversion table. This is easily accomplished with a for loop or a while loop: &lt;p&gt; &lt;span style="color:blue;"&gt; &lt;pre&gt;#include &lt;stdio.h&gt;&lt;br /&gt;&lt;br /&gt;int main()&lt;br /&gt;{&lt;br /&gt;   int a;&lt;br /&gt;   a = 0;&lt;br /&gt;   while (a &lt;= 100)&lt;br /&gt;   {&lt;br /&gt;       printf("%4d degrees F = %4d degrees C\n",&lt;br /&gt;           a, (a - 32) * 5 / 9);&lt;br /&gt;       a = a + 10;&lt;br /&gt;   }&lt;br /&gt;   return 0;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt; &lt;/span&gt; &lt;/p&gt;&lt;p&gt;If you run this program, it will produce a table of values starting at 0 degrees F and ending at 100 degrees F. The output will look like this: &lt;/p&gt;&lt;p&gt; &lt;b&gt; &lt;pre&gt;   0 degrees F =  -17 degrees C&lt;br /&gt; 10 degrees F =  -12 degrees C&lt;br /&gt; 20 degrees F =   -6 degrees C&lt;br /&gt; 30 degrees F =   -1 degrees C&lt;br /&gt; 40 degrees F =    4 degrees C&lt;br /&gt; 50 degrees F =   10 degrees C&lt;br /&gt; 60 degrees F =   15 degrees C&lt;br /&gt; 70 degrees F =   21 degrees C&lt;br /&gt; 80 degrees F =   26 degrees C&lt;br /&gt; 90 degrees F =   32 degrees C&lt;br /&gt;100 degrees F =   37 degrees C&lt;br /&gt;&lt;/pre&gt; &lt;/b&gt; &lt;/p&gt;&lt;p&gt;The table's values are in increments of 10 degrees. You can see that you can easily change the starting, ending or increment values of the table that the program produces. &lt;/p&gt;&lt;p&gt; If you wanted your values to be more accurate, you could use &lt;b&gt;floating point&lt;/b&gt; values instead: &lt;/p&gt;&lt;p&gt; &lt;span style="color:blue;"&gt; &lt;pre&gt;#include &lt;stdio.h&gt;&lt;br /&gt;&lt;br /&gt;int main()&lt;br /&gt;{&lt;br /&gt;   float a;&lt;br /&gt;   a = 0;&lt;br /&gt;   while (a &lt;= 100)&lt;br /&gt;   {&lt;br /&gt;       printf("%6.2f degrees F = %6.2f degrees C\n",&lt;br /&gt;           a, (a - 32.0) * 5.0 / 9.0);&lt;br /&gt;       a = a + 10;&lt;br /&gt;   }&lt;br /&gt;   return 0;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt; &lt;/span&gt; &lt;/p&gt;&lt;p&gt; You can see that the declaration for &lt;b&gt;a&lt;/b&gt; has been changed to a float, and the &lt;b&gt;%f&lt;/b&gt; symbol replaces the &lt;b&gt;%d&lt;/b&gt; symbol in the printf statement. In addition, the %f symbol has some formatting applied to it: The value will be printed with six digits preceding the decimal point and two digits following the decimal point. &lt;/p&gt;&lt;p&gt;Now let's say that we wanted to modify the program so that the temperature 98.6 is inserted in the table at the proper position. That is, we want the table to increment every 10 degrees, but we also want the table to include an extra line for 98.6 degrees F because that is the normal body temperature for a human being. The following program accomplishes the goal: &lt;/p&gt;&lt;p&gt; &lt;span style="color:blue;"&gt; &lt;pre&gt;#include &lt;stdio.h&gt;&lt;br /&gt;&lt;br /&gt;int main()&lt;br /&gt;{&lt;br /&gt;   float a;&lt;br /&gt;   a = 0;&lt;br /&gt;   while (a &lt;= 100)&lt;br /&gt;   {&lt;br /&gt; if (a &gt; 98.6)&lt;br /&gt;       {&lt;br /&gt;           printf("%6.2f degrees F = %6.2f degrees C\n",&lt;br /&gt;               98.6, (98.6 - 32.0) * 5.0 / 9.0);&lt;br /&gt;       }&lt;br /&gt;       printf("%6.2f degrees F = %6.2f degrees C\n",&lt;br /&gt;           a, (a - 32.0) * 5.0 / 9.0);&lt;br /&gt;       a = a + 10;&lt;br /&gt;   }&lt;br /&gt;   return 0;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt; &lt;/span&gt; &lt;/p&gt;&lt;p&gt; This program works if the ending value is 100, but if you change the ending value to 200 you will find that the program has a &lt;b&gt;bug&lt;/b&gt;. It prints the line for 98.6 degrees too many times. We can fix that problem in several different ways. Here is one way: &lt;/p&gt;&lt;p&gt; &lt;span style="color:blue;"&gt; &lt;pre&gt;#include &lt;stdio.h&gt;&lt;br /&gt;&lt;br /&gt;int main()&lt;br /&gt;{&lt;br /&gt;   float a, b;&lt;br /&gt;   a = 0;&lt;br /&gt;   b = -1;&lt;br /&gt;   while (a &lt;= 100)&lt;br /&gt;   {&lt;br /&gt; if ((a &gt; 98.6) &amp;amp;&amp;amp; (b &lt; 98.6))&lt;br /&gt;       {&lt;br /&gt;           printf("%6.2f degrees F = %6.2f degrees C\n",&lt;br /&gt;               98.6, (98.6 - 32.0) * 5.0 / 9.0);&lt;br /&gt;       }&lt;br /&gt;       printf("%6.2f degrees F = %6.2f degrees C\n",&lt;br /&gt;           a, (a - 32.0) * 5.0 / 9.0);&lt;br /&gt;       b = a;&lt;br /&gt;       a = a + 10;&lt;br /&gt;   }&lt;br /&gt;   return 0;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt; &lt;/span&gt; &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;table width="400" align="center" bg border="1" cellpadding="3" cellspacing="0" style="color:#eef4f6;"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:arial,helvetica;"&gt; &lt;span style="font-size:+1;color:#000099;"&gt;&lt;center&gt;Try This!&lt;/center&gt;&lt;/span&gt; &lt;span style="font-size:-1;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;ul&gt;&lt;span style="font-family:arial,helvetica;"&gt;&lt;span style="font-size:-1;"&gt;&lt;li&gt;Try changing the Fahrenheit-to-Celsius program so that it uses scanf to accept the starting, ending and increment value for the table from the user. &lt;/li&gt;&lt;li&gt;Add a heading line to the table that is produced. &lt;/li&gt;&lt;li&gt;Try to find a different solution to the bug fixed by the previous example. &lt;/li&gt;&lt;li&gt;Create a table that converts pounds to kilograms or miles to kilometers. &lt;/li&gt;&lt;/span&gt;&lt;/span&gt;&lt;/ul&gt; &lt;span style="font-family:arial,helvetica;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;/td&gt;&lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;p&gt; &lt;/p&gt; &lt;span style="font-family:arial,helvetica;"&gt; &lt;span style="font-size:+1;color:#000099;"&gt;&lt;center&gt;C Errors to Avoid&lt;/center&gt;&lt;/span&gt; &lt;span style="font-size:-1;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;ul&gt;&lt;span style="font-family:arial,helvetica;"&gt;&lt;span style="font-size:-1;"&gt;&lt;li&gt;Putting = when you mean == in an if or while statement &lt;/li&gt;&lt;li&gt;Forgetting to increment the counter inside the while loop - If you forget to increment the counter, you get an &lt;b&gt;infinite&lt;/b&gt; loop (the loop never ends). &lt;/li&gt;&lt;li&gt;Accidentally putting a &lt;b&gt;;&lt;/b&gt; at the end of a for loop or if statement so that the statement has no effect - For example: &lt;/li&gt;&lt;/span&gt;&lt;/span&gt;&lt;p&gt; &lt;span style="font-family:arial,helvetica;"&gt;&lt;span style="color:blue;"&gt; &lt;pre&gt;for (x=1; x&lt;10; x++);&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/ul&gt;&lt;h1 class="articlePageTitle"&gt;Arrays&lt;/h1&gt;  &lt;!-- dtl_id=9489 //--&gt; In this section, we will create a small C program that generates 10 random numbers and sorts them. To do that, we will use a new variable arrangement called an &lt;b&gt;array&lt;/b&gt;. &lt;p&gt; &lt;/p&gt;&lt;table width="200" align="right" cellpadding="3" cellspacing="0"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span type="arial,helvetica"&gt; &lt;center&gt;&lt;img src="http://static.howstuffworks.com/gif/c-array.gif" /&gt;&lt;br /&gt;&lt;/center&gt; &lt;/span&gt;&lt;/td&gt;&lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; An array lets you declare and work with a collection of values of the same type. For example, you might want to create a collection of five integers. One way to do it would be to declare five integers directly: &lt;p&gt; &lt;span style="color:blue;"&gt; &lt;pre&gt;int a, b, c, d, e;&lt;br /&gt;&lt;/pre&gt; &lt;/span&gt; &lt;/p&gt;&lt;p&gt; This is okay, but what if you needed a thousand integers? An easier way is to declare an array of five integers: &lt;/p&gt;&lt;p&gt; &lt;span style="color:blue;"&gt; &lt;pre&gt;int a[5];&lt;br /&gt;&lt;/pre&gt; &lt;/span&gt; &lt;/p&gt;&lt;p&gt; The five separate integers inside this array are accessed by an &lt;b&gt;index&lt;/b&gt;. All arrays start at index zero and go to n-1 in C. Thus, &lt;b&gt;&lt;span style="color:blue;"&gt;int a[5];&lt;/span&gt;&lt;/b&gt; contains five elements. For example: &lt;/p&gt;&lt;p&gt; &lt;span style="color:blue;"&gt; &lt;pre&gt;int a[5];&lt;br /&gt;&lt;br /&gt;a[0] = 12;&lt;br /&gt;a[1] = 9;&lt;br /&gt;a[2] = 14;&lt;br /&gt;a[3] = 5;&lt;br /&gt;a[4] = 1;&lt;br /&gt;&lt;/pre&gt; &lt;/span&gt; &lt;/p&gt;&lt;p&gt; One of the nice things about array indexing is that you can use a loop to manipulate the index. For example, the following code initializes all of the values in the array to 0: &lt;/p&gt;&lt;p&gt; &lt;span style="color:blue;"&gt; &lt;pre&gt;int a[5];&lt;br /&gt;int i;&lt;br /&gt;&lt;br /&gt;for (i=0; i&lt;5; i++)&lt;br /&gt;   a[i] = 0;&lt;br /&gt;&lt;/pre&gt; &lt;/span&gt; &lt;/p&gt;&lt;p&gt; The following code initializes the values in the array sequentially and then prints them out: &lt;/p&gt;&lt;p&gt; &lt;span style="color:blue;"&gt; &lt;pre&gt;#include &lt;stdio.h&gt;&lt;br /&gt;&lt;br /&gt;int main()&lt;br /&gt;{&lt;br /&gt;   int a[5];&lt;br /&gt;   int i;&lt;br /&gt;&lt;br /&gt;   for (i=0; i&lt;5; i++)&lt;br /&gt;       a[i] = i;&lt;br /&gt;   for (i=0; i&lt;5; i++)&lt;br /&gt;       printf("a[%d] = %d\n", i, a[i]);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt; &lt;/span&gt; &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt; Arrays are used all the time in C. To understand a common usage, start an editor and enter the following code: &lt;/p&gt;&lt;p&gt; &lt;span style="color:blue;"&gt; &lt;pre&gt;#include &lt;stdio.h&gt;&lt;br /&gt;&lt;br /&gt;#define MAX 10&lt;br /&gt;&lt;br /&gt;int a[MAX];&lt;br /&gt;int rand_seed=10;&lt;br /&gt;&lt;br /&gt;/* from K&amp;amp;R&lt;br /&gt;  - returns random number between 0 and 32767.*/&lt;br /&gt;int rand()&lt;br /&gt;{&lt;br /&gt;   rand_seed = rand_seed * 1103515245 +12345;&lt;br /&gt;   return (unsigned int)(rand_seed / 65536) % 32768;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;int main()&lt;br /&gt;{&lt;br /&gt;   int i,t,x,y;&lt;br /&gt;&lt;br /&gt;   /* fill array */&lt;br /&gt;   for (i=0; i &lt; MAX; i++)&lt;br /&gt;   {&lt;br /&gt;       a[i]=rand();&lt;br /&gt;       printf("%d\n",a[i]);&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   /* more stuff will go here in a minute */&lt;br /&gt;&lt;br /&gt;   return 0;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt; &lt;/span&gt; &lt;/p&gt;&lt;p&gt; This code contains several new concepts. The &lt;b&gt;&lt;span style="color:blue;"&gt;#define&lt;/span&gt;&lt;/b&gt; line declares a constant named &lt;b&gt;MAX&lt;/b&gt; and sets it to 10. Constant names are traditionally written in all caps to make them obvious in the code. The line &lt;b&gt;&lt;span style="color:blue;"&gt;int a[MAX];&lt;/span&gt;&lt;/b&gt; shows you how to declare an array of integers in C. Note that because of the position of the array's declaration, it is global to the entire program. &lt;/p&gt;&lt;p&gt; The line &lt;b&gt;&lt;span style="color:blue;"&gt;int rand_seed=10&lt;/span&gt;&lt;/b&gt; also declares a global variable, this time named &lt;b&gt;rand_seed&lt;/b&gt;, that is initialized to 10 each time the program begins. This value is the starting seed for the random number code that follows. In a real random number generator, the seed should initialize as a random value, such as the system time. Here, the &lt;b&gt;rand&lt;/b&gt; function will produce the same values each time you run the program. &lt;/p&gt;&lt;p&gt; The line &lt;b&gt;&lt;span style="color:blue;"&gt;int rand()&lt;/span&gt;&lt;/b&gt; is a function declaration. The rand function accepts no parameters and returns an integer value. We will learn more about functions later. The four lines that follow implement the rand function. We will ignore them for now. &lt;/p&gt;&lt;p&gt;The main function is normal. Four local integers are declared, and the array is filled with 10 random values using a for loop. Note that the array &lt;b&gt;a&lt;/b&gt; contains 10 individual integers. You point to a specific integer in the array using square brackets. So &lt;b&gt;&lt;span style="color:blue;"&gt;a[0]&lt;/span&gt;&lt;/b&gt; refers to the first integer in the array, &lt;b&gt;&lt;span style="color:blue;"&gt;a[1]&lt;/span&gt;&lt;/b&gt; refers to the second, and so on. The line starting with &lt;span style="color:blue;"&gt;&lt;b&gt;/*&lt;/b&gt;&lt;/span&gt; and ending with &lt;span style="color:blue;"&gt;&lt;b&gt;*/&lt;/b&gt;&lt;/span&gt; is called a &lt;b&gt;comment&lt;/b&gt;. The compiler completely ignores the line. You can place notes to yourself or other programmers in comments. &lt;/p&gt;&lt;p&gt; Now add the following code in place of the &lt;b&gt;&lt;span style="color:blue;"&gt;more stuff ...&lt;/span&gt;&lt;/b&gt; comment: &lt;/p&gt;&lt;p&gt; &lt;span style="color:blue;"&gt; &lt;pre&gt;/* bubble sort the array */&lt;br /&gt;for (x=0; x &lt; MAX-1; x++)&lt;br /&gt;   for (y=0; y &lt; MAX-x-1; y++)&lt;br /&gt;       if (a[y] &gt; a[y+1])&lt;br /&gt;       {&lt;br /&gt;           t=a[y];&lt;br /&gt;           a[y]=a[y+1];&lt;br /&gt;           a[y+1]=t;&lt;br /&gt;       }&lt;br /&gt;/* print sorted array */&lt;br /&gt;printf("--------------------\n");&lt;br /&gt;for (i=0; i &lt; MAX; i++)&lt;br /&gt;printf("%d\n",a[i]);&lt;br /&gt;&lt;/pre&gt; &lt;/span&gt; &lt;/p&gt;&lt;p&gt; This code &lt;b&gt;sorts&lt;/b&gt; the random values and prints them in sorted order. Each time you run it, you will get the same values. If you would like to change the values that are sorted, change the value of &lt;span style="color:blue;"&gt;rand_seed&lt;/span&gt; each time you run the program. &lt;/p&gt;&lt;p&gt; The only easy way to truly understand what this code is doing is to execute it "by hand." That is, assume &lt;b&gt;MAX&lt;/b&gt; is 4 to make it a little more manageable, take out a sheet of paper and pretend you are the computer. Draw the array on your paper and put four random, unsorted values into the array. Execute each line of the sorting section of the code and draw out exactly what happens. You will find that, each time through the inner loop, the larger values in the array are pushed toward the bottom of the array and the smaller values bubble up toward the top. &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;table width="400" align="center" bg border="1" cellpadding="3" cellspacing="0" style="color:#eef4f6;"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:arial,helvetica;"&gt; &lt;span style="font-size:+1;color:#000099;"&gt;&lt;center&gt;Try This!&lt;/center&gt;&lt;/span&gt; &lt;span style="font-size:-1;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;ul&gt;&lt;span style="font-family:arial,helvetica;"&gt;&lt;span style="font-size:-1;"&gt;&lt;li&gt;In the first piece of code, try changing the for loop that fills the array to a single line of code. Make sure that the result is the same as the original code. &lt;/li&gt;&lt;li&gt;Take the bubble sort code out and put it into its own function. The function header will be &lt;b&gt;&lt;span style="color:blue;"&gt;void bubble_sort()&lt;/span&gt;&lt;/b&gt;. Then move the variables used by the bubble sort to the function as well, and make them local there. Because the array is global, you do not need to pass parameters. &lt;/li&gt;&lt;li&gt;Initialize the random number seed to different values. &lt;/li&gt;&lt;/span&gt;&lt;/span&gt;&lt;/ul&gt; &lt;span style="font-family:arial,helvetica;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;/td&gt;&lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;p&gt; &lt;/p&gt; &lt;span style="font-family:arial,helvetica;"&gt; &lt;span style="font-size:+1;color:#000099;"&gt;&lt;center&gt;C Errors to Avoid&lt;/center&gt;&lt;/span&gt; &lt;/span&gt;&lt;ul&gt;&lt;span style="font-family:arial,helvetica;"&gt;&lt;span style="font-size:-1;"&gt;&lt;li&gt;C has no range checking, so if you index past the end of the array, it will not tell you about it. It will eventually crash or give you garbage data. &lt;/li&gt;&lt;li&gt;A function call must include &lt;span style="color:blue;"&gt;&lt;b&gt;()&lt;/b&gt;&lt;/span&gt; even if no parameters are passed. For example, C will accept &lt;b&gt;&lt;span style="color:blue;"&gt;x=rand;&lt;/span&gt;&lt;/b&gt;, but the call will not work. The memory address of the rand function will be placed into &lt;b&gt;x&lt;/b&gt; instead. You must say &lt;b&gt;&lt;span style="color:blue;"&gt;x=rand();&lt;/span&gt;&lt;/b&gt;. &lt;/li&gt;&lt;/span&gt;&lt;/span&gt;&lt;/ul&gt;&lt;ul&gt;&lt;p&gt;&lt;span style="font-family:arial,helvetica;"&gt;&lt;span style="color:blue;"&gt;&lt;pre&gt;&lt;br /&gt;   printf("%d\n",x);&lt;br /&gt;&lt;/pre&gt; &lt;/span&gt; &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial,helvetica;"&gt;&lt;span style="font-size:-1;"&gt; only prints out one value because the semicolon after the for statement acts as the one line the for loop executes. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/ul&gt;&lt;p&gt;&lt;span style="font-family:arial,helvetica;"&gt;&lt;span style="color:blue;"&gt;&lt;pre&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt; &lt;/span&gt; &lt;/span&gt;&lt;/p&gt;&lt;p&gt; &lt;span style="font-family:arial,helvetica;"&gt;&lt;span style="font-size:-1;"&gt;If &lt;b&gt;&lt;span style="color:blue;"&gt;a&lt;/span&gt;&lt;/b&gt; is anything other than 0, the printf statement gets executed. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;span style="font-family:arial,helvetica;"&gt;&lt;span style="font-size:-1;"&gt;In C, a statement like &lt;b&gt;&lt;span style="color:blue;"&gt;if (a=b)&lt;/span&gt;&lt;/b&gt; means, "Assign &lt;b&gt;b&lt;/b&gt; to &lt;b&gt;a&lt;/b&gt;, and then test &lt;b&gt;a&lt;/b&gt; for its Boolean value." So if &lt;b&gt;a&lt;/b&gt; becomes 0, the if statement is False; otherwise, it is True. The value of &lt;b&gt;a&lt;/b&gt; changes in the process. This is not the intended behavior if you meant to type &lt;b&gt;&lt;span style="color:blue;"&gt;==&lt;/span&gt;&lt;/b&gt; (although this feature is useful when used correctly), so be careful with your &lt;b&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&lt;/b&gt; and &lt;b&gt;&lt;span style="color:blue;"&gt;==&lt;/span&gt;&lt;/b&gt; usage.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8136767800267856096-1613514587286172414?l=mydigital-garage.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mydigital-garage.blogspot.com/feeds/1613514587286172414/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mydigital-garage.blogspot.com/2009/01/how-c-programming-works.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8136767800267856096/posts/default/1613514587286172414'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8136767800267856096/posts/default/1613514587286172414'/><link rel='alternate' type='text/html' href='http://mydigital-garage.blogspot.com/2009/01/how-c-programming-works.html' title='How C Programming Works'/><author><name>PRITAM</name><uri>http://www.blogger.com/profile/02799170102757192497</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_apr7HBF_hu4/SMgQ-hsQcMI/AAAAAAAAAII/hu8eIXG9oAw/S220/1212120.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8136767800267856096.post-949678241109490081</id><published>2009-01-31T11:44:00.000-08:00</published><updated>2009-01-31T11:45:06.134-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='What does open source mean?'/><title type='text'>What does open source mean?</title><content type='html'>Most software that you buy or download only comes in the &lt;strong&gt;compiled&lt;/strong&gt; ready-to-run version. Compiled means that the actual program code that the developer created, known as the &lt;strong&gt;source code&lt;/strong&gt;, has run through a special program called a compiler that translates the source code into a form that the computer can understand (see &lt;a href="http://computer.howstuffworks.com/c.htm"&gt;How C Programming Works&lt;/a&gt; for details on compilers). It is extremely difficult to modify the compiled version of most applications and nearly impossible to see exactly how the developer created different parts of the program. Most commercial software manufacturers see this as an advantage that keeps other companies from copying their code and using it in a competing product. It also gives them control over the quality and features found in a particular product.&lt;p&gt;&lt;strong&gt;Open source&lt;/strong&gt; software is at the opposite end of the spectrum. The source code is included with the compiled version and modification or customization is actually encouraged. The software developers who support the open source concept believe that by allowing anyone who's interested to modify the source code, the application will be more useful and error-free over the long term.&lt;/p&gt;&lt;p&gt; To be considered as open source software by the software development industry, certain criteria must be met:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;The program must be freely distributed (It can be part of a package that is sold though, such as Red Hat has done with &lt;a href="http://computer.howstuffworks.com/question246.htm"&gt;Linux&lt;/a&gt; in the example below). &lt;/li&gt;&lt;li&gt;Source code must be included.&lt;/li&gt;&lt;li&gt;Anyone must be allowed to modify the source code.&lt;/li&gt;&lt;li&gt;Modified versions can be redistributed.&lt;/li&gt;&lt;li&gt;The license must not require the exclusion of other software or interfere with the operation of other software.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt; Let's take a look at a real world example of open source software. In 1991, Linus Torvalds, a student at the University of Helsinki in Finland, developed a new operating system based on Minix, a derivative of Unix, which he dubbed &lt;strong&gt;Linux&lt;/strong&gt;. Torvalds released version 0.02 of Linux under the &lt;a href="http://computer.howstuffworks.com/framed.htm?parent=question435.htm&amp;amp;url=http://www.linux.org/info/gnu.html"&gt;GNU General Public License&lt;/a&gt;, which provides a good legal definition of open source software. A lot of people around the world downloaded Linux and began working with it. Many of these users were programmers in their own right and made modifications to the source code that Torvalds had included. Over the next three years, Torvalds received these modified versions from the other programmers and incorporated many of the changes into the baseline version and released Linux version 1.0 in 1994. &lt;/p&gt;&lt;p&gt; A common concern for end-users who wish to use open source software is the lack of a warranty and technical support. Because the software's license encourages modification and customization, it is nearly impossible to support. This is why &lt;strong&gt;Red Hat Software&lt;/strong&gt;, founded in 1994, created the "Official Red Hat Linux" and is able to sell this normally "free" software. The main value that Red Hat adds to the package is a warranty and technical support. For most businesses, the assurance of technical support has been a key factor in the decision to buy Linux instead of simply downloading it for free. In addition to Red Hat, there are several other companies that have packaged Linux, usually with additional software, for resale. &lt;/p&gt;&lt;p&gt; Besides Linux, &lt;strong&gt;Mozilla&lt;/strong&gt; (Netscape browser core), &lt;strong&gt;Apache&lt;/strong&gt; (Web server), &lt;a href="http://computer.howstuffworks.com/perl.htm"&gt;&lt;strong&gt;PERL&lt;/strong&gt;&lt;/a&gt; (Web scripting language) and &lt;strong&gt;PNG&lt;/strong&gt; (graphics file format) are all examples of very popular software that is based on open source. &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8136767800267856096-949678241109490081?l=mydigital-garage.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mydigital-garage.blogspot.com/feeds/949678241109490081/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mydigital-garage.blogspot.com/2009/01/what-does-open-source-mean.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8136767800267856096/posts/default/949678241109490081'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8136767800267856096/posts/default/949678241109490081'/><link rel='alternate' type='text/html' href='http://mydigital-garage.blogspot.com/2009/01/what-does-open-source-mean.html' title='What does open source mean?'/><author><name>PRITAM</name><uri>http://www.blogger.com/profile/02799170102757192497</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_apr7HBF_hu4/SMgQ-hsQcMI/AAAAAAAAAII/hu8eIXG9oAw/S220/1212120.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8136767800267856096.post-8054832817084043803</id><published>2009-01-31T11:42:00.000-08:00</published><updated>2009-01-31T11:43:28.515-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='What is Linux and why is it so popular?'/><title type='text'>What is Linux and why is it so popular?</title><content type='html'>&lt;p&gt; Every desktop computer uses an &lt;strong&gt;operating system&lt;/strong&gt;. The most popular operating systems in use today are: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Windows &lt;/li&gt;&lt;li&gt;Mac OS &lt;/li&gt;&lt;li&gt;UNIX &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;Linux&lt;/strong&gt; is an operating system -- very much like &lt;strong&gt;UNIX&lt;/strong&gt; -- that has become very popular over the last several years.&lt;/p&gt; &lt;p&gt; &lt;a href="http://computer.howstuffworks.com/operating-system.htm"&gt;Operating systems&lt;/a&gt; are computer programs. An operating system is the first piece of software that the computer executes when you turn the machine on. The operating system loads itself into &lt;a href="http://computer.howstuffworks.com/computer-memory.htm"&gt;memory&lt;/a&gt; and begins managing the resources available on the computer. It then provides those resources to other applications that the user wants to execute. Typical services that an operating system provides include: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;A task scheduler - The task scheduler is able to allocate the execution of the &lt;a href="http://computer.howstuffworks.com/microprocessor.htm"&gt;CPU&lt;/a&gt; to a number of different tasks. Some of those tasks are the different applications that the user is running, and some of them are operating system tasks. The task scheduler is the part of the operating system that lets you print a document from your word processor in one window while you are downloading a file in another window and recalculating a spreadsheet in a third window. &lt;/li&gt;&lt;li&gt;A memory manager - The memory manager controls the system's &lt;a href="http://computer.howstuffworks.com/ram.htm"&gt;RAM&lt;/a&gt; and normally creates a larger &lt;a href="http://computer.howstuffworks.com/virtual-memory.htm"&gt;virtual memory&lt;/a&gt; space using a file on the &lt;a href="http://computer.howstuffworks.com/hard-disk.htm"&gt;hard disk&lt;/a&gt;. (See also &lt;a href="http://computer.howstuffworks.com/question175.htm"&gt;this Question of the Day&lt;/a&gt;.) &lt;/li&gt;&lt;li&gt;A disk manager - The disk manager creates and maintains the directories and files on the disk. When you request a file, the disk manager brings it in from the disk. &lt;/li&gt;&lt;li&gt;A network manager - The network manager controls all data moving between the computer and the &lt;a href="http://computer.howstuffworks.com/home-network.htm"&gt;network&lt;/a&gt;. &lt;/li&gt;&lt;li&gt;Other I/O services manager - The OS manages the &lt;a href="http://computer.howstuffworks.com/keyboard.htm"&gt;keyboard&lt;/a&gt;, &lt;a href="http://computer.howstuffworks.com/mouse.htm"&gt;mouse&lt;/a&gt;, &lt;a href="http://computer.howstuffworks.com/monitor.htm"&gt;video display&lt;/a&gt;, &lt;a href="http://computer.howstuffworks.com/inkjet-printer.htm"&gt;printers&lt;/a&gt;, etc. &lt;/li&gt;&lt;li&gt;Security manager - The OS maintains the security of the information in the computer's files and controls who can access the computer. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;An operating system normally also provides the default user interface for the system. The standard "look" of Windows 98 includes the Start button, the task bar, etc. The Mac OS provides a completely different look and feel for Macintosh computers.&lt;/p&gt; &lt;p&gt; Linux is as much a phenomenon as it is an operating system. To understand why Linux has become so popular, it is helpful to know a little bit about its history. The first version of UNIX was originally developed several decades ago and was used primarily as a research operating system in universities. High-powered desktop workstations from companies like Sun proliferated in the 1980s, and they were all based on UNIX. A number of companies entered the workstation field to compete against Sun: HP, IBM, Silicon Graphics, Apollo, etc. Unfortunately, each one had its own version of UNIX and this made the sale of software difficult. Windows NT was Microsoft's answer to this marketplace. NT provides the same sort of features as UNIX operating systems -- security, support for multiple CPUs, large-scale memory and disk management, etc. -- but it does it in a way that is compatible with most Windows applications. &lt;/p&gt;&lt;p&gt;The entry of Microsoft into the high-end workstation arena created a strange dynamic. The proprietary operating systems owned by separate companies and the lack of a central authority in the UNIX world weaken UNIX, but many people have personal problems with Microsoft. Linux stepped into this odd landscape and captured a lot of attention. &lt;/p&gt;&lt;p&gt; The Linux kernel, created by &lt;strong&gt;Linus Torvalds&lt;/strong&gt;, was made available to the world for free. Torvalds then invited others to add to the kernel provided that they keep their contributions free. Thousands of programmers began working to enhance Linux, and the operating system grew rapidly. Because it is free and runs on &lt;a href="http://computer.howstuffworks.com/pc.htm"&gt;PC&lt;/a&gt; platforms, it gained a sizeable audience among hard-core developers very quickly. Linux has a dedicated following and appeals to several different kinds of people: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;People who already know UNIX and want to run it on PC-type hardware &lt;/li&gt;&lt;li&gt;People who want to experiment with operating system principles &lt;/li&gt;&lt;li&gt;People who need or want a great deal of control over their operating system &lt;/li&gt;&lt;li&gt;People who have personal problems with Microsoft &lt;/li&gt;&lt;/ul&gt; In general, Linux is harder to manage than something like Windows, but offers more flexibility and configuration options.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8136767800267856096-8054832817084043803?l=mydigital-garage.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mydigital-garage.blogspot.com/feeds/8054832817084043803/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mydigital-garage.blogspot.com/2009/01/what-is-linux-and-why-is-it-so-popular.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8136767800267856096/posts/default/8054832817084043803'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8136767800267856096/posts/default/8054832817084043803'/><link rel='alternate' type='text/html' href='http://mydigital-garage.blogspot.com/2009/01/what-is-linux-and-why-is-it-so-popular.html' title='What is Linux and why is it so popular?'/><author><name>PRITAM</name><uri>http://www.blogger.com/profile/02799170102757192497</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_apr7HBF_hu4/SMgQ-hsQcMI/AAAAAAAAAII/hu8eIXG9oAw/S220/1212120.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8136767800267856096.post-8995896688475541862</id><published>2009-01-31T11:34:00.000-08:00</published><updated>2009-01-31T11:40:45.490-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='How Windows Vista Works'/><title type='text'>How Windows Vista Works</title><content type='html'>&lt;p&gt;The first version of Microsoft Windows hit the market in 1983. But unlike today's versions of Windows, Windows 1.0 was not an &lt;strong&gt;operating system (OS)&lt;/strong&gt;. It was a &lt;strong&gt;graphical user interface&lt;/strong&gt; that worked with an existing OS called MS-DOS. Version 1.0 didn't look much like newer versions, either -- not even Windows 3.0, which many people think of as the first real version of Windows. Its graphics were simpler and used fewer colors than today's user interfaces, and its windows could not overlap. &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;table width="200" align="right" cellpadding="3" cellspacing="0"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:arial,helvetica;"&gt; &lt;center&gt;&lt;img src="http://static.howstuffworks.com/gif/windows-vista-1.jpg" alt="Vista logo" /&gt;&lt;br /&gt;&lt;span style="font-size:-2;"&gt;Photo courtesy &lt;a href="http://computer.howstuffworks.com/framed.htm?parent=windows-vista.htm&amp;amp;url=http://www.microsoft.com"&gt;© 2006 Microsoft Corporation. All rights reserved. &lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;!-- &lt;span style="font-size:-1;"&gt;&lt;strong&gt;CAPTION&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;--&gt; &lt;/center&gt; &lt;/span&gt; &lt;/td&gt;&lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;Windows has changed considerably since then. In the last 20 years, Microsoft has released numerous full-fledged versions of the operating system. Sometimes, newer versions are significantly different from older ones, such as the change from Windows 3.1 to Windows 95. Other new releases have seemed more like enhancements or refinements of the older ones, such as the multiple consumer versions of the OS released from 1995 to 2001. &lt;/p&gt;&lt;p&gt; Microsoft's newest version of its operating system is &lt;strong&gt;Windows Vista&lt;/strong&gt;. For many users, upgrading to Vista won't seem as dramatic as the upgrade from 3.1 to Windows 95. But Windows Vista has a number of new features, both in the parts that you can see and the parts that you can't. &lt;/p&gt;&lt;p&gt; At its core, Windows Vista is still an operating system. It has two primary behind-the-scenes jobs:  &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Managing hardware and software resources, including the processor, memory, storage and additional devices &lt;/li&gt;&lt;li&gt;Allowing programs to work with the computer's hardware &lt;/li&gt;&lt;/ul&gt; &lt;table width="200" align="right" bg border="1" cellpadding="3" cellspacing="0" style="color:#eef4f6;"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:arial,helvetica;"&gt; &lt;center&gt;&lt;span style="font-size:+1;color:#000099;"&gt;Thank You&lt;/span&gt;&lt;/center&gt; &lt;span style="font-size:-1;"&gt;Thanks to &lt;strong&gt;Jason Caudill&lt;/strong&gt; for his assistance with this article.&lt;/span&gt; &lt;/span&gt; &lt;/td&gt;&lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;If all goes well, this work is usually invisible to the user, but it's essential to the computer's operation. You can learn about these tasks in more detail in &lt;a href="http://computer.howstuffworks.com/operating-system.htm"&gt;How Operating Systems Work&lt;/a&gt;. &lt;/p&gt;&lt;p&gt; But when many people think of operating systems, they think of the portion they can see -- the graphical user interface (GUI). The GUI is what people use to interact with the hardware and software on the &lt;a href="http://computer.howstuffworks.com/pc.htm"&gt;computer&lt;/a&gt;. In Windows systems, features like the Start menu, the &lt;a href="http://computer.howstuffworks.com/question578.htm"&gt;recycle bin&lt;/a&gt; and the visual representations of files and folders are all part of the GUI.  &lt;/p&gt;&lt;p&gt; Windows Vista's GUI is a 3-D interface called &lt;strong&gt;Windows Aero&lt;/strong&gt;. Of the four editions of Windows Vista, three -- &lt;strong&gt;Home Premium&lt;/strong&gt;, &lt;strong&gt;Business&lt;/strong&gt; and &lt;strong&gt;Ultimate&lt;/strong&gt; -- support Windows Aero. &lt;strong&gt;Home Basic&lt;/strong&gt;, the most scaled-down edition of the OS, uses a less graphics-intensive GUI instead of Aero. The other editions can also use this basic GUI, so people with older computers that can't support lots of 3-D graphics can still upgrade to Vista.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h1 class="articlePageTitle"&gt;Windows Vista:  Aero&lt;/h1&gt;  &lt;!-- dtl_id=337522 //--&gt;  &lt;p&gt; In some ways, Windows Aero is similar to recent versions of the Windows GUI, like the one used in Windows XP. Aero organizes information in on-screen windows and uses icons to represent files, folders and applications. But Aero also has several features that you can think of as upgrades to the Windows XP GUI. Its windows are three-dimensional objects that you can move and adjust in any direction. &lt;strong&gt;Aero Glass&lt;/strong&gt; makes the borders of each window translucent so you can see the desktop or other windows behind it. Microsoft asserts that the clear border lets you focus on your work instead of on your interface [Source: &lt;a href="http://computer.howstuffworks.com/%20http://www.microsoft.com/windowsvista/experiences/aero.mspx"&gt;Microsoft&lt;/a&gt;]. &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;table width="450" align="center" cellpadding="3" cellspacing="0"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:arial,helvetica;"&gt; &lt;center&gt;&lt;img alt="Aero glass" src="http://static.howstuffworks.com/gif/windows-vista-7.jpg" /&gt;&lt;br /&gt;&lt;span style="font-size:-2;"&gt;Photo courtesy &lt;a href="http://computer.howstuffworks.com/framed.htm?parent=windows-vista.htm&amp;amp;url=http://www.microsoft.com"&gt;© 2006 Microsoft Corporation. All rights reserved. &lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:-1;"&gt;&lt;strong&gt;Aero Glass&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;/center&gt; &lt;/span&gt; &lt;/td&gt;&lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;p&gt; Vista also replaces the simple, static icons that represent many files in older Windows GUIs with more elaborate &lt;strong&gt;Live Icons&lt;/strong&gt;. Live Icons give you up-to-date thumbnail previews of each file. When you look at a document's Live Icon, you see what the document actually looks like rather than seeing an icon for the program that created it. You can also look at the contents of files before opening them by using the Explorer preview pane. &lt;/p&gt;&lt;p&gt;Similar thumbnails also replace the icons you see when you use the "alt" and "tab" keys to move through open windows. Aero's more basic version of "alt + tab," called &lt;strong&gt;Flip&lt;/strong&gt;, lets you choose from 2-D thumbnail previews on a menu bar. Another feature, &lt;strong&gt;Flip 3D&lt;/strong&gt;, lets you choose from three-dimensional, moving thumbnails rather than 2-D images. In addition, if you hover your &lt;a href="http://computer.howstuffworks.com/mouse.htm"&gt;mouse&lt;/a&gt; over items on your taskbar, you'll see 2-D thumbnails of each window instead of text listing the applications and filenames. &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;table width="450" align="center" cellpadding="3" cellspacing="0"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:arial,helvetica;"&gt; &lt;center&gt;&lt;img alt="Flip 3D screenshot" src="http://static.howstuffworks.com/gif/windows-vista-2.jpg" /&gt;&lt;br /&gt;&lt;span style="font-size:-2;"&gt;Photo courtesy &lt;a href="http://computer.howstuffworks.com/framed.htm?parent=windows-vista.htm&amp;amp;url=http://www.microsoft.com"&gt;© 2006 Microsoft Corporation. All rights reserved. &lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:-1;"&gt;&lt;strong&gt; Flip 3D&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;/center&gt; &lt;/span&gt; &lt;/td&gt;&lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;p&gt; Many elements of the Aero GUI, including the Start menu and the windows themselves, incorporate new search capabilities. While a computer is running, Vista scans the disc drive for changes and maintains a running index of its files. You can search this index from multiple locations within the GUI. For example, rather than moving your mouse through a series of cascading windows in the Start menu, you can simply type in the program or file you're looking for. You can also create search folders -- saved searches that you can return to when you need to find particular files or folders. Adding &lt;strong&gt;metadata&lt;/strong&gt;, or tags, to your files can make these searches more efficient. When you search for a file, the computer examines filenames, tags and document contents to find relevant results. &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;table width="450" align="center" cellpadding="3" cellspacing="0"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:arial,helvetica;"&gt; &lt;center&gt;&lt;img alt="start search menu" src="http://static.howstuffworks.com/gif/windows-vista-3.jpg" /&gt;&lt;br /&gt;&lt;span style="font-size:-2;"&gt;Photo courtesy &lt;a href="http://computer.howstuffworks.com/framed.htm?parent=windows-vista.htm&amp;amp;url=http://www.microsoft.com"&gt;© 2006 Microsoft Corporation. All rights reserved. &lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:-1;"&gt;&lt;strong&gt;The Start search menu&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;/center&gt; &lt;/span&gt; &lt;/td&gt;&lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;p&gt; &lt;/p&gt;&lt;table width="200" align="right" bg border="1" cellpadding="3" cellspacing="0" style="color:#eef4f6;"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:arial,helvetica;"&gt; &lt;center&gt;&lt;span style="font-size:+1;color:#000099;"&gt;WinFS&lt;/span&gt;&lt;/center&gt; &lt;span style="font-size:-1;"&gt;While developing Windows Vista, Microsoft planned to incorporate a new file system called &lt;strong&gt;WinFS&lt;/strong&gt;. Short for Windows Future System, WinFS stored data in a &lt;strong&gt;relational database&lt;/strong&gt;. Rather than storing information in a series of folders and subfolders, WinFS would create indexes of a drive's data. In August 2004, Microsoft announced that WinFS would not be part of Vista. The company instead added new search capabilities to its existing file structure.&lt;/span&gt; &lt;/span&gt; &lt;/td&gt;&lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; In addition to the GUI, Vista comes with several new applications. Different versions include different features, but here's a sample of what's new: &lt;ul&gt;&lt;li&gt;&lt;strong&gt;Sidebar&lt;/strong&gt; allows you to access mini-applications called &lt;strong&gt;Gadgets&lt;/strong&gt;. Sidebar is similar to &lt;strong&gt;Konfabulator&lt;/strong&gt; or Macintosh OS X's &lt;strong&gt;Dashboard&lt;/strong&gt;, which call their mini-applications &lt;strong&gt;Widgets&lt;/strong&gt;. &lt;/li&gt;&lt;li&gt;&lt;strong&gt;Meeting Space&lt;/strong&gt; is a &lt;a href="http://computer.howstuffworks.com/teleconferencing.htm"&gt;teleconferencing&lt;/a&gt; program for small groups of Vista users. &lt;/li&gt;&lt;li&gt;&lt;a href="http://computer.howstuffworks.com/speech-recognition.htm"&gt;&lt;strong&gt;Speech Recognition&lt;/strong&gt;&lt;/a&gt; lets users control their computers and create documents using their voices. Vista has a speech-activated user interface as well as a general voice dictation application. &lt;/li&gt;&lt;li&gt;&lt;strong&gt;Windows Mail&lt;/strong&gt; replaces Outlook Express for home users and includes anti-&lt;a href="http://computer.howstuffworks.com/phishing.htm"&gt;phishing&lt;/a&gt; tools. &lt;/li&gt;&lt;li&gt;&lt;strong&gt;Windows Calendar&lt;/strong&gt;, also for home users, is an interactive calendar application. In addition to allowing users to keep track of appointments, it can be used to send e-mail invitations to events. &lt;/li&gt;&lt;/ul&gt; &lt;p&gt; &lt;/p&gt;&lt;table width="450" align="center" cellpadding="3" cellspacing="0"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:arial,helvetica;"&gt; &lt;center&gt;&lt;img alt="Sidebar" src="http://static.howstuffworks.com/gif/windows-vista-4.jpg" /&gt;&lt;br /&gt;&lt;span style="font-size:-2;"&gt;Photo courtesy &lt;a href="http://computer.howstuffworks.com/framed.htm?parent=windows-vista.htm&amp;amp;url=http://www.microsoft.com"&gt;© 2006 Microsoft Corporation. All rights reserved. &lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:-1;"&gt;&lt;strong&gt;Sidebar&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;/center&gt; &lt;/span&gt; &lt;/td&gt;&lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;p&gt; Vista also has a few new tools intended to improve performance: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;SuperFetch &lt;/strong&gt;pre-loads frequently-used applications into the memory so they can start up faster. &lt;/li&gt;&lt;li&gt;&lt;strong&gt;ReadyBoost &lt;/strong&gt;lets people add RAM to their system with a USB thumb drive. &lt;/li&gt;&lt;li&gt;&lt;strong&gt;Sleep&lt;/strong&gt; lets you quickly resume working by storing files that are currently in use. On desktop computers, these files are saved in the computer's &lt;a href="http://computer.howstuffworks.com/ram.htm"&gt;RAM&lt;/a&gt; and on the hard drive. On &lt;a href="http://computer.howstuffworks.com/laptop.htm"&gt;laptop computers&lt;/a&gt;, the files are saved to the hard drive only when the battery power wanes. &lt;/li&gt;&lt;/ul&gt;  Because of its new features, particularly its 3-D GUI, Vista has different hardware requirements than previous versions of the OS.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;              &lt;h1 class="articlePageTitle"&gt;Windows Vista: Creating a 3-D Desktop&lt;/h1&gt;  &lt;!-- dtl_id=337524 //--&gt;  &lt;p&gt;       Windows Vista's desktop environment requires considerably more &lt;a href="http://computer.howstuffworks.com/question466.htm"&gt;computer resources&lt;/a&gt; than previous versions of the OS. For this reason, and to make the OS more stable, Vista's &lt;strong&gt;graphics subsystem&lt;/strong&gt; is different from its predecessors. &lt;/p&gt;&lt;p&gt; First, Windows Vista uses a new &lt;strong&gt;graphics driver model&lt;/strong&gt;, known as the &lt;strong&gt;Windows Display Driver Model (WDDM)&lt;/strong&gt;. Previous Windows graphics drivers ran in &lt;strong&gt;kernel mode&lt;/strong&gt;. They had direct access to the graphics hardware, and their performance could affect the operating system. This is why graphics errors could cause the entire system to stop responding. WDDM, however, runs primarily in &lt;strong&gt;user mode&lt;/strong&gt;. It has little direct access to the graphics hardware or to critical parts of the &lt;a href="http://computer.howstuffworks.com/operating-system.htm"&gt;operating system&lt;/a&gt;. Microsoft instituted a similar change to Vista's audio subsystem as well. These changes should help make the OS more stable. &lt;/p&gt;&lt;p&gt; The WDDM manages the workload of the graphics processing unit (GPU). It allocates the video memory required for different tasks, and it prioritizes applications that need access to the GPU. In other words, it helps budget the computer's video processing resources. This is particularly important, since the OS and applications that use lots of 3-D graphics have to share the computer's graphics resources. &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;table width="400" align="center" cellpadding="3" cellspacing="0"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:arial,helvetica;"&gt; &lt;center&gt;&lt;img src="http://static.howstuffworks.com/gif/windows-vista-7.jpg" alt="Windows Vista desktop with 3D graphics and widget" /&gt;&lt;br /&gt;&lt;span style="font-size:-2;"&gt;Photo courtesy &lt;a href="http://computer.howstuffworks.com/framed.htm?parent=windows-vista.htm&amp;amp;url=http://www.microsoft.com"&gt;© 2006 Microsoft Corporation. All rights reserved. &lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:-1;"&gt;&lt;strong&gt;Windows Vista desktop view&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;/center&gt; &lt;/span&gt; &lt;/td&gt;&lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;  A driver called the &lt;strong&gt;Desktop Window Manager (DWM)&lt;/strong&gt; is part of the WDDM. This driver is responsible for updating what you see on the desktop. The DWM draws all of the objects you see on your screen and holds them in a buffer until you need them. By keeping different desktop views in a buffer, the DWM should help prevent the blank square of space that often appears when programs stop responding. The DWM creates the thumbnails used in Flip and Flip-3D, and it can &lt;strong&gt;scale&lt;/strong&gt; on-screen images to fill high-resolution monitors. &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;table width="200" align="right" bg border="1" cellpadding="3" cellspacing="0" style="color:#eef4f6;"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:arial,helvetica;"&gt; &lt;center&gt;&lt;span style="font-size:+1;color:#000099;"&gt;Cap Bits&lt;/span&gt;&lt;/center&gt; &lt;span style="font-size:-1;"&gt;Previous versions of DirectX used &lt;strong&gt;capability bits&lt;/strong&gt;, or &lt;strong&gt;cap bits&lt;/strong&gt;, to describe different DirectX features. Hardware did not necessarily have to support all of the cap bits to be DirectX compliant. For this reason, video cards and other components didn't always work properly even if they were DirectX compliant. DirectX 10 does away with this system, designating only three features as optional.&lt;/span&gt; &lt;/span&gt; &lt;/td&gt;&lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;&lt;p&gt; Although the WDDM is central to creating the windows you use to access your applications, it doesn't communicate with those programs directly. Instead, it interacts with programs through an &lt;strong&gt;application programming interface (API)&lt;/strong&gt;. APIs help hardware and software communicate more efficiently by providing sets of instructions for complex tasks. Windows Vista can use DirectX 9 as its API, although a new version, &lt;strong&gt;DirectX 10&lt;/strong&gt;, is a built-in, exclusive part of the OS. &lt;/p&gt;&lt;p&gt; All this 3-D rendering requires lots of processing power. To use Aero and some of the more hardware-intensive features of Windows Vista, a computer must be &lt;strong&gt;Premium Ready&lt;/strong&gt;. It has to have enough system and graphics memory to handle constant creation and manipulation of 3-D images. This is why the requirements for a Premium Ready computer sound like what you'd expect from a 3-D game. It must have: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;A 1 GHz 32-bit or 64-bit processor &lt;/li&gt;&lt;li&gt;1 GB of system memory &lt;/li&gt;&lt;li&gt;A 40 GB hard drive with at least 15 GB of free space &lt;/li&gt;&lt;li&gt;At least 128 MB of graphics memory &lt;/li&gt;&lt;/ul&gt;&lt;p&gt; The computer also has to support DirectX 9, have a DVD-ROM drive and have access to the Internet. Microsoft has a &lt;a href="http://computer.howstuffworks.com/framed.htm?parent=windows-vista.htm&amp;amp;url=http://www.microsoft.com/windowsvista/getready/capable.mspx"&gt;list&lt;/a&gt; of all of the necessary components for a Premium Ready system. &lt;/p&gt;&lt;p&gt;If you're considering upgrading to Windows Vista and want to use the Aero interface, you should keep in mind that these are the minimum requirements. If your computer meets exactly these specifications, it will be able to create the 3-D interface. However, it may bog down if you're multitasking or playing image-intensive games. If you hope to run Vista on a &lt;a href="http://communication.howstuffworks.com/laptop.htm"&gt;laptop&lt;/a&gt; or a desktop that doesn't have a dedicated video card, you may find that the GUI's benefits don't outweigh the strain it puts on your system resources. To get optimal performance from the Aero user interface, a computer needs to exceed the minimum recommendations, including a separate video card with its own graphics memory. &lt;/p&gt;&lt;p&gt; Microsoft has published different minimum requirements for computers using the basic interface. They include: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;An 800 MHz or better modern processor &lt;/li&gt;&lt;li&gt;512 MB of system memory &lt;/li&gt;&lt;li&gt;A graphics processor that supports DirectX 9 &lt;/li&gt;&lt;/ul&gt; Microsoft has also made some changes to how Vista handles networking and security.&lt;br /&gt;&lt;br /&gt;&lt;h1 class="articlePageTitle"&gt;Windows Vista: Networking and Security&lt;/h1&gt;  &lt;!-- dtl_id=337526 //--&gt;      &lt;p&gt; In the past, computer networks primarily existed in schools, businesses and computer enthusiasts' homes. But today, many households have several computers that need to share files, printers and connections to the &lt;a href="http://computer.howstuffworks.com/internet-infrastructure.htm"&gt;Internet&lt;/a&gt;. Unlike most businesses, many average home users do not have a networking expert to set up and maintain their networks.  &lt;/p&gt;&lt;p&gt; For this reason, Windows Vista includes several network setup wizards, which walk users through creating networks and sharing devices. It also has several built-in network tools that are accessible through a &lt;strong&gt;Network Center&lt;/strong&gt;: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Network Explorer&lt;/strong&gt; lets users find files on networked computers and move them from to place. It's similar to other Windows Explorers that let people find files on their own computers. &lt;/li&gt;&lt;li&gt;&lt;strong&gt;Network Map&lt;/strong&gt; creates a visual map of all the computers and devices on the network. &lt;/li&gt;&lt;/ul&gt; Vista also includes a &lt;strong&gt;Network Awareness&lt;/strong&gt; feature for people who need to use their computers in multiple locations. Network Awareness detects which network a person's computer is using and applies the appropriate settings. &lt;p&gt; &lt;/p&gt;&lt;table width="400" align="center" cellpadding="3" cellspacing="0"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:arial,helvetica;"&gt; &lt;center&gt;&lt;img alt="the Network Center" src="http://static.howstuffworks.com/gif/windows-vista-5.jpg" /&gt;&lt;br /&gt;&lt;span style="font-size:-2;"&gt;Photo courtesy &lt;a href="http://computer.howstuffworks.com/framed.htm?parent=windows-vista.htm&amp;amp;url=http://www.microsoft.com"&gt;© 2006 Microsoft Corporation. All rights reserved. &lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:-1;"&gt;&lt;strong&gt;The Network Center&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;/center&gt; &lt;/span&gt; &lt;/td&gt;&lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;p&gt; Vista also includes tools to help people maintain and repair their own networks. The &lt;strong&gt;Network Diagnostics&lt;/strong&gt; feature can detect and repair some network issues on its own. It can also walk users through the necessary steps to restore their network connections. To do this, it uses a collection of tools that use the &lt;strong&gt;Windows Diagnostic Infrastructure (WDI)&lt;/strong&gt;. &lt;/p&gt;&lt;p&gt; The WDI provides the structure for several components, including the &lt;strong&gt;Network Diagnostics Framework (NDF&lt;/strong&gt;) and several APIs. The NDF identifies and troubleshoots client-side network issues using a &lt;strong&gt;Network Diagnostics Engine&lt;/strong&gt; as well as Microsoft and third-party &lt;strong&gt;helper classes&lt;/strong&gt;. The helper classes are troubleshooting protocols, and the Network Diagnostic Engine communicates with them through the helper class API. Applications that need to access the Internet can also use APIs to access Vista's troubleshooting capabilities. &lt;/p&gt;&lt;p&gt;Other changes to Vista should improve computers' security once they're connected to a network or the Internet. Some experts blame the Windows &lt;strong&gt;kernel&lt;/strong&gt; for previous issues with security [Source: &lt;a href="http://computer.howstuffworks.com/framed.htm?parent=windows-vista.htm&amp;amp;url=http://www.extremetech.com/article2/0,1697,1931914,00.asp"&gt;Extreme Tech&lt;/a&gt;]. Although Vista uses essentially the same kernel as previous versions of Windows, Microsoft has made some changes to how applications interact with it. In addition to making the computer more stable, this change will also make it more difficult for people to write malicious code designed to exploit applications and affect the kernel. &lt;/p&gt;&lt;p&gt;Vista also includes applications and tools that people can use to make their systems more secure. As with previous versions of Windows, Vista can check for, download and install security updates automatically. In addition, it has several new security features: &lt;/p&gt;&lt;ul&gt;&lt;table width="200" align="right" bg border="1" cellpadding="3" cellspacing="0" style="color:#eef4f6;"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:arial,helvetica;"&gt; &lt;center&gt;&lt;span style="font-size:+1;color:#000099;"&gt;What's a Kernel?&lt;/span&gt;&lt;/center&gt; &lt;span style="font-size:-1;"&gt;A kernel is a small but integral piece of an operating system. It's usually the first piece to load into the computer's memory, and it stays there while the computer runs. Many other applications and devices rely on the kernel extensively, so problems with it can cause system-wide issues. &lt;/span&gt; &lt;/span&gt; &lt;/td&gt;&lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;&lt;li&gt;&lt;strong&gt;User Account Control (UAC)&lt;/strong&gt; lets each Windows Vista user for a particular computer set up his own account. A user with administrative privileges can determine what kind of applications different accounts can install and what kind of changes they can make to the computer's setup. In many cases, installing software and making changes to the operating system requires an administrator's password. &lt;/li&gt;&lt;li&gt;UAC also lets parents use &lt;strong&gt;parental controls&lt;/strong&gt; to manage what kind of games their children can play and what kind of Web content they can view. Parents can also set time limits for computer use. &lt;/li&gt;&lt;li&gt;&lt;strong&gt;User Account Control&lt;/strong&gt;, &lt;strong&gt;Windows Firewall&lt;/strong&gt;, &lt;strong&gt;Windows Defender&lt;/strong&gt; and the &lt;strong&gt;Malicious Software Removal Tool&lt;/strong&gt; improve system security and help prevent and remove &lt;a href="http://computer.howstuffworks.com/virus.htm"&gt;viruses&lt;/a&gt; and &lt;a href="http://computer.howstuffworks.com/spyware.htm"&gt;Spyware&lt;/a&gt;. However, many industry experts advise users to install additional virus protection. &lt;/li&gt;&lt;/ul&gt; &lt;p&gt; &lt;/p&gt;&lt;table width="400" align="center" cellpadding="3" cellspacing="0"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:arial,helvetica;"&gt; &lt;center&gt;&lt;img alt="the Family Safety Center" src="http://static.howstuffworks.com/gif/windows-vista-6.jpg" /&gt;&lt;br /&gt;&lt;span style="font-size:-2;"&gt;Photo courtesy &lt;a href="http://computer.howstuffworks.com/framed.htm?parent=windows-vista.htm&amp;amp;url=http://www.microsoft.com"&gt;© 2006 Microsoft Corporation. All rights reserved. &lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:-1;"&gt;&lt;strong&gt;The Family Safety Center&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;/center&gt; &lt;/span&gt; &lt;/td&gt;&lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;Although Microsoft has presented Vista as safer and more secure than previous versions of Windows, the new OS is not without controversy. Critics have pointed out that many of its features, including search, Sidebar and preview pane functions, already exist in other operating systems, like Linux and Macintosh OS X. Beta testers have described the UAC password requirements as invasive and annoying. Some claim that the improved security that comes from changes to how applications interact with the kernel will be short-lived. Vista has also been accused of &lt;a href="http://history.howstuffworks.com/american-history/antitrust-laws.htm"&gt;antitrust&lt;/a&gt; violations in several countries, particularly because of its integrated malware removal tools. &lt;/p&gt;&lt;p&gt; Other criticism is laptop-specific. Aero's hardware requirements for 3-D rendering may drain laptop batteries more quickly than older versions of Windows. The sleep state may also drain laptop batteries when the laptops are not in use. &lt;/p&gt;&lt;p&gt;Vista hit the market for volume license buyers on November 30, 2006, and it became available to the public on January 30, 2007. With the 3-D GUI and related hardware requirements, it has the potential to change how people shop for computers, especially when it comes to graphics hardware. Only time will tell whether the differences between Windows Vista and prior versions make it a more stable, secure OS or whether its most significant changes are cosmetic. &lt;/p&gt; Check out Microsoft's &lt;a href="http://computer.howstuffworks.com/framed.htm?parent=windows-vista.htm&amp;amp;url=http://www.microsoft.com/windowsvista/"&gt;site&lt;/a&gt; for more detailed information about Windows Vista's features and costs.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8136767800267856096-8995896688475541862?l=mydigital-garage.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mydigital-garage.blogspot.com/feeds/8995896688475541862/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mydigital-garage.blogspot.com/2009/01/how-windows-vista-works.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8136767800267856096/posts/default/8995896688475541862'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8136767800267856096/posts/default/8995896688475541862'/><link rel='alternate' type='text/html' href='http://mydigital-garage.blogspot.com/2009/01/how-windows-vista-works.html' title='How Windows Vista Works'/><author><name>PRITAM</name><uri>http://www.blogger.com/profile/02799170102757192497</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_apr7HBF_hu4/SMgQ-hsQcMI/AAAAAAAAAII/hu8eIXG9oAw/S220/1212120.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8136767800267856096.post-3715779210911844981</id><published>2009-01-13T18:48:00.000-08:00</published><updated>2009-01-19T01:06:58.573-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='How Hackers Work'/><title type='text'>How Hackers Work</title><content type='html'>Thanks to the media, the word "hacker" has gotten a bad reputation. The word summons up thoughts of malicious &lt;a href="http://computer.howstuffworks.com/"&gt;computer&lt;/a&gt; users finding new ways to harass people, defraud corporations, steal information and maybe even &lt;a href="http://computer.howstuffworks.com/die-hard-hacker.htm"&gt;destroy the economy&lt;/a&gt; or start a war by infiltrating military computer systems. While there's no denying that there are hackers out there with bad intentions, they make up only a small percentage of the hacker community.   &lt;p&gt;     &lt;/p&gt;&lt;table align="center" cellpadding="3" cellspacing="0" width="400"&gt;       &lt;tbody&gt;         &lt;tr&gt;           &lt;td&gt;&lt;center&gt;&lt;img alt="Chaos Communications Camp 2007" src="http://static.howstuffworks.com/gif/hackers-8.jpg" border="0" width="400" height="267" /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;Sean Gallup/&lt;a href="http://howstuffworks.com/framed.htm?parent=hackers.htm&amp;amp;url=http://www.gettyimages.com/Home.aspx?esource=googUSA_Getty_Brand&amp;amp;country=usa&amp;amp;kw=usa+getty+images"&gt;Getty Images&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;Hackers from around the world gather at camps to&lt;br /&gt;practice their hobby and trade tips.&lt;/strong&gt;&lt;br /&gt;&lt;/span&gt;&lt;/center&gt;&lt;/td&gt;         &lt;/tr&gt;       &lt;/tbody&gt;     &lt;/table&gt;      &lt;p&gt;The term computer hacker first showed up in the mid-1960s. A hacker was a programmer -- someone who hacked out computer code. Hackers were visionaries who could see new ways to use computers, creating programs that no one else could conceive. They were the pioneers of the computer industry, building everything from small applications to &lt;a href="http://computer.howstuffworks.com/operating-system.htm"&gt;operating systems&lt;/a&gt;. In this sense, people like Bill Gates, Steve Jobs and Steve Wozniak were all hackers -- they saw the potential of what computers could do and created ways to achieve that potential. &lt;/p&gt;   &lt;p&gt;A unifying trait among these hackers was a strong sense of curiosity, sometimes bordering on obsession. These hackers prided themselves on not only their ability to create new programs, but also to learn how other programs and systems worked. When a program had a &lt;strong&gt;bug&lt;/strong&gt; -- a section of bad code that prevented the program from working properly -- hackers would often create and distribute small sections of code called &lt;strong&gt;patches&lt;/strong&gt; to fix the problem. Some managed to land a job that leveraged their skills, getting paid for what they'd happily do for free.&lt;/p&gt;   &lt;p&gt;As computers evolved, computer engineers began to network individual machines together into a system. Soon, the term hacker had a new meaning -- a person using computers to explore a &lt;a href="http://computer.howstuffworks.com/home-network.htm"&gt;network&lt;/a&gt; to which he or she didn't belong. Usually hackers didn't have any malicious intent. They just wanted to know how computer networks worked and saw any barrier between them and that knowledge as a challenge.&lt;/p&gt;   ­   &lt;p&gt;In fact, that's still the case today. While there are plenty of stories about malicious hackers sabotaging computer systems, infiltrating networks and spreading &lt;a href="http://computer.howstuffworks.com/virus.htm"&gt;computer viruses&lt;/a&gt;, most hackers are just curious -- they want to know all the intricacies of the computer world. Some use their knowledge to help corporations and governments construct better security measures. Others might use their skills for more unethical endeavors.&lt;/p&gt;   &lt;p&gt;In this article, we'll explore common techniques hackers use to infiltrate systems. We'll examine hacker culture and the various kinds of hackers as well as learn about famous hackers, some of whom have run afoul of the law.&lt;/p&gt;&lt;center&gt;&lt;span style="color: rgb(0, 0, 153);font-size:78%;" &gt;Hackers and Crackers&lt;/span&gt;&lt;/center&gt;               &lt;div align="left"&gt;&lt;span style=""&gt;Many computer programmers insist that the word "hacker" applies only to law-abiding enthusiasts who help create programs and applications or improve computer security. Anyone using his or her skills maliciously isn't a hacker at all, but a &lt;strong&gt;cracker&lt;/strong&gt;. &lt;/span&gt;&lt;/div&gt;               &lt;p&gt;&lt;span style=""&gt;Crackers infiltrate systems and cause mischief, or worse. Unfortunately, most people outside the hacker community use the word as a negative term because they don't understand the distinction between hackers and crackers&lt;/span&gt;&lt;/p&gt;&lt;h1 class="articlePageTitle"&gt;The Hacker Toolbox&lt;/h1&gt;  &lt;!-- dtl_id=467426 //--&gt;    &lt;p&gt;The main resource hackers rely upon, apart from their own ingenuity, is &lt;a href="http://computer.howstuffworks.com/"&gt;computer&lt;/a&gt; code. While there is a large community of hackers on the &lt;a href="http://computer.howstuffworks.com/internet-channel.htm"&gt;Internet&lt;/a&gt;, only a relatively small number of hackers actually program code. Many hackers seek out and download code written by other people. There are thousands of different programs hackers use to explore computers and networks. These programs give hackers a lot of power over innocent users and organizations -- once a skilled hacker knows how a system works, he can design programs that exploit it.&lt;/p&gt;   &lt;p&gt;     &lt;/p&gt;&lt;table align="center" cellpadding="3" cellspacing="0" width="400"&gt;       &lt;tbody&gt;         &lt;tr&gt;           &lt;td&gt;&lt;center&gt;&lt;img alt="ILOVEYOU Computer Virus" src="http://static.howstuffworks.com/gif/hackers-5.jpg" border="0" width="400" height="260" /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;Robyn Beck/AFP/&lt;a href="http://howstuffworks.com/framed.htm?parent=hackers.htm&amp;amp;url=http://www.gettyimages.com/Home.aspx?esource=googUSA_Getty_Brand&amp;amp;country=usa&amp;amp;kw=usa+getty+images"&gt;Getty Images&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size:85%;"&gt;The ILOVEYOU Computer Virus was a malicious program&lt;br /&gt;that plagued computers worldwide and&lt;br /&gt;caused millions of dollars in damages.&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;/center&gt;&lt;/td&gt;         &lt;/tr&gt;       &lt;/tbody&gt;     &lt;/table&gt;      &lt;p&gt;Malicious hackers use programs to: &lt;/p&gt;   &lt;ul&gt;&lt;li&gt;&lt;strong&gt;Hack passwords&lt;/strong&gt;: There are many ways to hack someone's password, from educated guesses to simple &lt;strong&gt;algorithms&lt;/strong&gt; that generate combinations of letters, numbers and symbols. The trial and error method of hacking passwords is called a &lt;strong&gt;brute force attack&lt;/strong&gt;, meaning the hacker tries to generate every possible combination to gain access. Another way to hack passwords is to use a &lt;strong&gt;dictionary attack&lt;/strong&gt;, a program that inserts common words into password fields. &lt;/li&gt;&lt;li&gt;Infect a computer or system with a &lt;strong&gt;&lt;a href="http://computer.howstuffworks.com/virus.htm"&gt;virus&lt;/a&gt;&lt;/strong&gt;: Computer viruses are programs designed to duplicate themselves and cause problems ranging from crashing a computer to wiping out everything on a system's hard drive. A hacker might install a virus by infiltrating a system, but it's much more common for hackers to create simple viruses and send them out to potential victims via email, instant messages, Web sites with downloadable content or peer-to-peer networks. &lt;/li&gt;&lt;li&gt;&lt;strong&gt;Log keystrokes&lt;/strong&gt;: Some programs allow hackers to review every keystroke a computer user makes. Once installed on a victim's computer, the programs record each keystroke, giving the hacker everything he needs to infiltrate a system or even steal someone's identity. &lt;/li&gt;&lt;li&gt;&lt;strong&gt;Gain backdoor access&lt;/strong&gt;: Similar to hacking passwords, some hackers create programs that search for unprotected pathways into network systems and computers. In the early days of the Internet, many computer systems had limited security, making it possible for a hacker to find a pathway into the system without a username or password. Another way a hacker might gain backdoor access is to infect a computer or system with a &lt;strong&gt;Trojan horse&lt;/strong&gt;. &lt;/li&gt;&lt;li&gt;Create &lt;strong&gt;&lt;a href="http://computer.howstuffworks.com/zombie-computer.htm"&gt;zombie computers&lt;/a&gt;&lt;/strong&gt;: A zombie computer, or bot, is a computer that a hacker can use to send spam or commit &lt;strong&gt;Distributed Denial of Service&lt;/strong&gt; (DDoS) attacks. After a victim executes seemingly innocent code, a connection opens between his computer and the hacker's system. The hacker can secretly control the victim's computer, using it to commit crimes or spread &lt;a href="http://computer.howstuffworks.com/spam.htm"&gt;spam&lt;/a&gt;. &lt;/li&gt;&lt;li&gt;Spy on &lt;strong&gt;&lt;a href="http://communication.howstuffworks.com/email.htm"&gt;e-mail&lt;/a&gt;&lt;/strong&gt;: Hackers have created code that lets them intercept and read e-mail messages -- the Internet's equivalent to wiretapping. Today, most e-mail programs use &lt;a href="http://computer.howstuffworks.com/encryption.htm"&gt;encryption&lt;/a&gt; formulas so complex that even if a hacker intercepts the message, he won't be able to read it. &lt;/li&gt;&lt;/ul&gt;   &lt;p&gt;     &lt;/p&gt;                           &lt;span style="font-family:arial,helvetica;"&gt;&lt;center&gt;&lt;span style="color: rgb(0, 0, 153);font-size:78%;" &gt;Hacker Hierarchy&lt;/span&gt;&lt;/center&gt;&lt;span style=""&gt;Psychologist Marc Rogers says there are several subgroups of hackers -- &lt;strong&gt;newbies&lt;/strong&gt;, &lt;strong&gt;cyberpunks&lt;/strong&gt;, &lt;strong&gt;coders&lt;/strong&gt; and &lt;strong&gt;cyber terrorists&lt;/strong&gt;. Newbies are hackers who have access to hacking tools but aren't really aware of how computers and programs work. Cyberpunks are savvier and are less likely to get caught than a newbie while hacking a system, but they have a tendency to boast about their accomplishments. Coders write the programs other hackers use to infiltrate and navigate computer systems. A cyber terrorist is a professional hacker who infiltrates systems for profit -- he might sabotage a company or raid a corporation's databases for proprietary information&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;h1 class="articlePageTitle"&gt;Hacker Culture&lt;/h1&gt;  &lt;!-- dtl_id=467442 //--&gt;      &lt;p&gt;Individually, many hackers are antisocial. Their intense interest in &lt;a href="http://computer.howstuffworks.com/"&gt;computers&lt;/a&gt; and programming can become a communication barrier. Left to his or her own devices, a hacker can spend hours working on a computer program while neglecting everything else.&lt;/p&gt;   &lt;table style="width: 6px; height: 42px;" class="sideBoxLeft"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;Com­puter networks gave hackers a way to associate with other people with their same interests. Before the &lt;a href="http://computer.howstuffworks.com/internet-channel.htm"&gt;Internet&lt;/a&gt; became easily accessible, hackers would set up and visit &lt;strong&gt;bulletin board systems&lt;/strong&gt; (BBS). A hacker could host a bulletin board system on his or her computer and let people dial into the system to send messages, share information, play games and download programs. As hackers found one another, information exchanges increased dramatically. &lt;/p&gt;   &lt;p&gt;     &lt;/p&gt;&lt;table bg="" style="color: rgb(238, 244, 246);" align="right" border="1" cellpadding="3" cellspacing="0" width="200"&gt;       &lt;tbody&gt;         &lt;tr&gt;           &lt;td&gt;&lt;span style="font-family:arial,helvetica;"&gt;&lt;center&gt;&lt;span style="color: rgb(0, 0, 153);font-size:78%;" &gt;Super Phreak&lt;/span&gt;&lt;/center&gt;&lt;span style=""&gt;Before computer hackers, curious and clever individuals found ways to manipulate the &lt;a href="http://communication.howstuffworks.com/telephone.htm"&gt;phone&lt;/a&gt; system in a phenomenon called &lt;strong&gt;phreaking&lt;/strong&gt;. Through phreaking, these individuals found ways to make long distance calls for free or sometimes just played pranks on other telephone users&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;         &lt;/tr&gt;       &lt;/tbody&gt;     &lt;/table&gt;      &lt;p&gt;Some hackers posted their accomplishments on a BBS, boasting about infiltrating secure systems. Often they would upload a document from their victims' databases to prove their claims. By the early 1990s, law enforcement officials considered hackers an enormous security threat. There seemed to be hundreds of people who could hack into the world's most secure systems at will [source: &lt;a href="http://computer.howstuffworks.com/hacker5.htm#Sterling"&gt;Sterling&lt;/a&gt;]. &lt;/p&gt;   &lt;p&gt;There are many &lt;a href="http://computer.howstuffworks.com/web-page.htm"&gt;Web sites&lt;/a&gt; dedicated to hacking. The hacker journal "2600: The Hacker Quarterly" has its own site, complete with a live broadcast section dedicated to hacker topics. The print version is still available on newsstands. Web sites like Hacker.org promote learning and include puzzles and competitions for hackers to test their skills. &lt;/p&gt;   &lt;p&gt;When caught -- either by law enforcement or corporations -- some hackers admit that they could have caused massive problems. Most hackers don't want to cause trouble; instead, they hack into systems just because they wanted to know how the systems work. To a hacker, a secure system is like &lt;a href="http://people.howstuffworks.com/mount-everest.htm"&gt;Mt. Everest&lt;/a&gt; -- he or she infiltrates it for the sheer challenge. In the &lt;a href="http://maps.howstuffworks.com/maps-of-united-states.htm"&gt;United States&lt;/a&gt;, a hacker can get into trouble for just entering a system. The Computer Fraud and Abuse Act outlaws unauthorized access to computer systems [source: &lt;a href="http://howstuffworks.com/framed.htm?parent=hackers.htm&amp;amp;url=http://www.rent-a-hacker.com/hacklaw.htm"&gt;Hacking Laws&lt;/a&gt;].&lt;/p&gt;   &lt;p&gt;Not all hackers try to explore forbidden computer systems. Some use their talents and knowledge to create better &lt;a href="http://computer.howstuffworks.com/software-channel.htm"&gt;software&lt;/a&gt; and security measures. In fact, many hackers who once used their skills to break into systems now put that knowledge and ingenuity to use by creating more comprehensive security measures. In a way, the Internet is a battleground between different kinds of hackers -- the bad guys, or &lt;strong&gt;black hats&lt;/strong&gt;, who try to infiltrate systems or spread &lt;a href="http://computer.howstuffworks.com/virus.htm"&gt;viruses&lt;/a&gt;, and the good guys, or &lt;strong&gt;white hats&lt;/strong&gt;, who bolster security systems and develop powerful virus protection software.&lt;/p&gt;   &lt;p&gt;     &lt;/p&gt;&lt;table align="center" cellpadding="3" cellspacing="0" width="400"&gt;       &lt;tbody&gt;         &lt;tr&gt;           &lt;td&gt;&lt;center&gt;&lt;img alt="Yahoo Hack Day" src="http://static.howstuffworks.com/gif/hackers-9.jpg" border="0" width="400" height="300" /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;Glenn Chapman/AFP/&lt;a href="http://howstuffworks.com/framed.htm?parent=hackers.htm&amp;amp;url=http://www.gettyimages.com/Home.aspx?esource=googUSA_Getty_Brand&amp;amp;country=usa&amp;amp;kw=usa+getty+images"&gt;Getty Images&lt;/a&gt;&lt;/span&gt;&lt;/center&gt;&lt;center&gt;&lt;strong&gt;&lt;span style="font-size:85%;"&gt;Hackers work together to create "mashups" of Yahoo applications at Yahoo Hack Day 2006.&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;/center&gt;&lt;/td&gt;         &lt;/tr&gt;       &lt;/tbody&gt;     &lt;/table&gt;Hackers on both sides overwhelmingly support &lt;strong&gt;&lt;a href="http://computer.howstuffworks.com/question435.htm"&gt;open source software&lt;/a&gt;&lt;/strong&gt;, programs in which the source code is available for anyone to study, copy, distribute and modify. With open source software, hackers can learn from other hackers' experiences and help make programs work better than they did before. Programs might range from simple applications to complex &lt;a href="http://computer.howstuffworks.com/operating-system.htm"&gt;operating systems&lt;/a&gt; like &lt;a href="http://computer.howstuffworks.com/question246.htm"&gt;Linux&lt;/a&gt;.       &lt;p&gt;There are several annual hacker events, most of which promote responsible behavior. A yearly convention in &lt;a href="http://travel.howstuffworks.com/las-vegas-city-guide.htm"&gt;Las Vegas&lt;/a&gt; called &lt;strong&gt;DEFCON&lt;/strong&gt; sees thousands of attendees gather to exchange programs, compete in contests, participate in panel discussions about hacking and computer development and generally promote the pursuit of satisfying curiosity. A similar event called the &lt;strong&gt;Chaos Communication Camp&lt;/strong&gt; combines low-tech living arrangements -- most attendees stay in tents -- and high-tech conversation and activities.&lt;/p&gt;&lt;br /&gt;&lt;h1 class="articlePageTitle"&gt;Hackers and the Law&lt;/h1&gt;  &lt;!-- dtl_id=467446 //--&gt;    &lt;p&gt;In general, most governments aren't too crazy about hackers. Hackers' ability to slip in and out of &lt;a href="http://computer.howstuffworks.com/"&gt;computers&lt;/a&gt; undetected, stealing classified information when it amuses them, is enough to give a government official a nightmare. Secret information, or &lt;strong&gt;intelligence&lt;/strong&gt;, is incredibly important. Many government agents won't take the time to differentiate between a curious hacker who wants to test his skills on an advanced security system and a &lt;a href="http://people.howstuffworks.com/spy.htm"&gt;spy&lt;/a&gt;.&lt;/p&gt;   &lt;p&gt;Laws reflect this attitude. In the &lt;a href="http://maps.howstuffworks.com/maps-of-united-states.htm"&gt;United States&lt;/a&gt;, there are several laws forbidding the practice of hacking. Some, like 18 U.S.C. § 1029, concentrate on the creation, distribution and use of codes and devices that give hackers unauthorized access to computer systems. The language of the law only specifies using or creating such a device with the intent to defraud, so an accused hacker could argue he just used the devices to learn how security systems worked. &lt;/p&gt;   &lt;p&gt;     &lt;/p&gt;&lt;table align="center" cellpadding="3" cellspacing="0" width="400"&gt;       &lt;tbody&gt;         &lt;tr&gt;           &lt;td&gt;&lt;center&gt;&lt;img alt="Janet Reno testifies about hackers" src="http://static.howstuffworks.com/gif/hackers-3.jpg" border="0" width="400" height="288" /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;Mark Wilson/&lt;a href="http://howstuffworks.com/framed.htm?parent=hackers.htm&amp;amp;url=http://www.gettyimages.com/Home.aspx?esource=googUSA_Getty_Brand&amp;amp;country=usa&amp;amp;kw=usa+getty+images"&gt;Getty Images&lt;/a&gt;&lt;/span&gt;&lt;/center&gt;&lt;center&gt;&lt;strong&gt;&lt;span style="font-size:85%;"&gt;Concern about hackers reaches up to the highest levels of government. Here, former Attorney General&lt;br /&gt;Janet Reno testifies about hacker activity.&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;/center&gt;&lt;/td&gt;         &lt;/tr&gt;       &lt;/tbody&gt;     &lt;/table&gt;Another important law is 18 U.S.C. § 1030, part of which forbids unauthorized access to government computers. Even if a hacker just wants to get into the system, he or she could be breaking the law and be punished for accessing a nonpublic government computer [Source: &lt;a href="http://howstuffworks.com/framed.htm?parent=hackers.htm&amp;amp;url=http://www.usdoj.gov/criminal/cybercrime/cclaws.html"&gt;U.S. Department of Justice&lt;/a&gt;].       &lt;p&gt;Punishments range from hefty fines to jail time. Minor offenses may earn a hacker as little as six months' probation, while other offenses can result in a maximum sentence of 20 years in jail. One formula on the Department of Justice's &lt;a href="http://computer.howstuffworks.com/web-page.htm"&gt;Web page&lt;/a&gt; factors in the financial damage a hacker causes, added to the number of his victims to determine an appropriate punishment [Source: &lt;a href="http://howstuffworks.com/framed.htm?parent=hackers.htm&amp;amp;url=http://www.usdoj.gov/criminal/cybercrime/cclaws.html"&gt;U.S. Department of Justice&lt;/a&gt;].&lt;/p&gt;   &lt;p&gt;Other countries have similar laws, some much more vague than legislation in the U.S. A recent &lt;a href="http://maps.howstuffworks.com/maps-of-germany.htm"&gt;German&lt;/a&gt; law forbids possession of "hacker tools." Critics say that the law is too broad and that many legitimate applications fall under its vague definition of hacker tools. Some point out that under this legislation, companies would be breaking the law if they hired hackers to look for flaws in their security systems [source: &lt;a href="http://howstuffworks.com/framed.htm?parent=hackers.htm&amp;amp;url=http://www.infoworld.com/article/07/08/13/German-antihacker-law_1.html"&gt;IDG News Service&lt;/a&gt;].&lt;/p&gt;   &lt;p&gt;Hackers can commit crimes in one country while sitting comfortably in front of their computers on the other side of the world. Therefore, prosecuting a hacker is a complicated process. Law enforcement officials have to petition countries to &lt;strong&gt;extradite&lt;/strong&gt; suspects in order to hold a trial, and this process can take years. One famous case is the United States' indictment of hacker Gary McKinnon. Since 2002, McKinnon fought extradition charges to the U.S. for hacking into the Department of Defense and &lt;a href="http://science.howstuffworks.com/nasa.htm"&gt;NASA&lt;/a&gt; computer systems. McKinnon, who hacked from the &lt;a href="http://maps.howstuffworks.com/maps-of-united-kingdom.htm"&gt;United Kingdom&lt;/a&gt;, defended himself by claiming that he merely pointed out flaws in important security systems. In April 2007, his battle against extradition came to an end when the British courts denied his appeal [Source: &lt;a href="http://howstuffworks.com/framed.htm?parent=hackers.htm&amp;amp;url=http://news.bbc.co.uk/2/hi/uk_news/6521255.stm"&gt;BBC News&lt;/a&gt;].&lt;/p&gt;   &lt;p&gt;     &lt;/p&gt;                           &lt;span style="font-family:arial,helvetica;"&gt;&lt;center&gt;&lt;span style="color: rgb(0, 0, 153);font-size:78%;" &gt;Hacking a Living&lt;/span&gt;&lt;/center&gt;&lt;span style=""&gt;Hackers who obey the law can make a good living. Several companies hire hackers to test their security systems for flaws. Hackers can also make their fortunes by creating useful programs and applications, like Stanford University students Larry Page and Sergey Brin. Page and Brin worked together to create a &lt;a href="http://computer.howstuffworks.com/search-engine.htm"&gt;search engine&lt;/a&gt; they eventually named Google. Today, they are tied for 26th place on Forbes' list of the world's most wealthy billionaires&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;h1 class="articlePageTitle"&gt;Famous Hackers&lt;/h1&gt;  &lt;!-- dtl_id=467450 //--&gt;    &lt;p&gt;     &lt;/p&gt;&lt;table align="right" cellpadding="3" cellspacing="0" width="200"&gt;       &lt;tbody&gt;         &lt;tr&gt;           &lt;td&gt;&lt;center&gt;&lt;img alt="Steve Jobs" src="http://static.howstuffworks.com/gif/hackers-10.jpg" border="0" width="200" height="300" /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;Sean Gallup/&lt;a href="http://howstuffworks.com/framed.htm?parent=hackers.htm&amp;amp;url=http://www.gettyimages.com/Home.aspx?esource=googUSA_Getty_Brand&amp;amp;country=usa&amp;amp;kw=usa+getty+images"&gt;Getty Images&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;Steve Jobs, co-founder of Apple and pioneer hacker&lt;/strong&gt;&lt;br /&gt;&lt;/span&gt;&lt;/center&gt;&lt;/td&gt;         &lt;/tr&gt;       &lt;/tbody&gt;     &lt;/table&gt;      &lt;p&gt;Steve Jobs and Steve Wozniak, founders of Apple Computers, are both hackers. Some of their early exploits even resemble the questionable activities of some malicious hackers. However, both Jobs and Wozniak outgrew their malicious behavior and began concentrating on creating &lt;a href="http://computer.howstuffworks.com/"&gt;computer&lt;/a&gt; &lt;a href="http://computer.howstuffworks.com/hardware-channel.htm"&gt;hardware&lt;/a&gt; and &lt;a href="http://computer.howstuffworks.com/software-channel.htm"&gt;software&lt;/a&gt;. Their efforts helped usher in the age of the &lt;a href="http://computer.howstuffworks.com/pc.htm"&gt;personal computer&lt;/a&gt; -- before Apple, computer systems remained the property of large corporations, too expensive and cumbersome for average consumers.&lt;/p&gt;   &lt;p&gt;Linus Torvalds, creator of &lt;a href="http://computer.howstuffworks.com/question246.htm"&gt;Linux&lt;/a&gt;, is another famous honest hacker. His &lt;a href="http://computer.howstuffworks.com/question435.htm"&gt;open source&lt;/a&gt; &lt;a href="http://computer.howstuffworks.com/operating-system.htm"&gt;operating system&lt;/a&gt; is very popular with other hackers. He has helped promote the concept of open source software, showing that when you open information up to everyone, you can reap amazing benefits. &lt;/p&gt;   &lt;p&gt;Richard Stallman, also known as "rms," founded the &lt;strong&gt;GNU Project&lt;/strong&gt;, a free &lt;a href="http://computer.howstuffworks.com/operating-system.htm"&gt;operating system&lt;/a&gt;. He promotes the concept of free software and computer access. He works with organizations like the Free Software Foundation and opposes policies like &lt;a href="http://computer.howstuffworks.com/drm.htm"&gt;Digital Rights Management&lt;/a&gt;.&lt;/p&gt;   &lt;p&gt;On the other end of the spectrum are the black hats of the hacking world. At the age of 16, Jonathan James became the first juvenile hacker to get sent to prison. He committed computer intrusions on some very high-profile victims, including &lt;a href="http://science.howstuffworks.com/nasa.htm"&gt;NASA&lt;/a&gt; and a Defense Threat Reduction Agency server. Online, Jonathan used the nickname (called a &lt;strong&gt;handle&lt;/strong&gt;) "c0mrade." Originally sentenced to house arrest, James was sent to prison when he violated parole. &lt;/p&gt;   &lt;p&gt;     &lt;/p&gt;&lt;table align="center" cellpadding="3" cellspacing="0" width="400"&gt;       &lt;tbody&gt;         &lt;tr&gt;           &lt;td&gt;&lt;center&gt;&lt;img alt="Kevin Mitnick" src="http://static.howstuffworks.com/gif/hackers-13.jpg" border="0" width="400" height="277" /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;Greg Finley/&lt;a href="http://howstuffworks.com/framed.htm?parent=hackers.htm&amp;amp;url=http://www.gettyimages.com/Home.aspx?esource=googUSA_Getty_Brand&amp;amp;country=usa&amp;amp;kw=usa+getty+images"&gt;Getty Images&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;Hacker Kevin Mitnick, newly released from the Federal Correctional Institution in Lompoc, California.&lt;/strong&gt;&lt;br /&gt;&lt;/span&gt;&lt;/center&gt;&lt;/td&gt;         &lt;/tr&gt;       &lt;/tbody&gt;     &lt;/table&gt;      &lt;p&gt;Kevin Mitnick gained notoriety in the 1980s as a hacker who allegedly broke into the &lt;a href="http://science.howstuffworks.com/norad.htm"&gt;North American Aerospace Defense Command&lt;/a&gt; (NORAD) when he was 17 years old. Mitnick's reputation seemed to grow with every retelling of his exploits, eventually leading to the rumor that Mitnick had made the &lt;a href="http://people.howstuffworks.com/fbi.htm"&gt;FBI's&lt;/a&gt; Most Wanted list. In reality, Mitnick was arrested several times for hacking into secure systems, usually to gain access to powerful computer software.&lt;/p&gt;   &lt;p&gt;Kevin Poulsen, or Dark Dante, specialized in hacking &lt;a href="http://communication.howstuffworks.com/telephone.htm"&gt;phone&lt;/a&gt; systems. He's famous for hacking the phones of a &lt;a href="http://electronics.howstuffworks.com/radio.htm"&gt;radio&lt;/a&gt; station called KIIS-FM. Poulsen's hack allowed only calls originating from his house to make it through to the station, allowing him to win in various radio contests. Since then, he has turned over a new leaf, and now he's famous for being a senior editor at Wired magazine.&lt;/p&gt;   &lt;p&gt;Adrian Lamo hacked into computer systems using computers at libraries and Internet cafes. He would explore high-profile systems for security flaws, exploit the flaws to hack into the system, and then send a message to the corresponding company, letting them know about the security flaw. Unfortunately for Lamo, he was doing this on his own time rather than as a paid consultant -- his activities were illegal. He also snooped around a lot, reading sensitive information and giving himself access to confidential material. He was caught after breaking into the computer system belonging to the New York Times.&lt;/p&gt;   &lt;p&gt;It's likely that there are thousands of hackers active online today, but an accurate count is impossible. Many hackers don't really know what they are doing -- they're just using dangerous tools they don't completely understand. Others know what they're doing so well that they can slip in and out of systems without anyone ever knowing. &lt;/p&gt;&lt;br /&gt;&lt;span style="font-family:arial,helvetica;"&gt;&lt;span style=""&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8136767800267856096-3715779210911844981?l=mydigital-garage.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mydigital-garage.blogspot.com/feeds/3715779210911844981/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mydigital-garage.blogspot.com/2009/01/how-hackers-work.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8136767800267856096/posts/default/3715779210911844981'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8136767800267856096/posts/default/3715779210911844981'/><link rel='alternate' type='text/html' href='http://mydigital-garage.blogspot.com/2009/01/how-hackers-work.html' title='How Hackers Work'/><author><name>PRITAM</name><uri>http://www.blogger.com/profile/02799170102757192497</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_apr7HBF_hu4/SMgQ-hsQcMI/AAAAAAAAAII/hu8eIXG9oAw/S220/1212120.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8136767800267856096.post-6673586571904294424</id><published>2009-01-13T18:39:00.000-08:00</published><updated>2009-01-19T01:11:18.612-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='How Operating Systems Work'/><title type='text'>How Operating Systems Work</title><content type='html'>&lt;p&gt;When you turn on your &lt;a href="http://computer.howstuffworks.com/pc.htm"&gt;computer&lt;/a&gt;, it's nice to think that you're in control. There's the trusty computer &lt;a href="http://computer.howstuffworks.com/mouse.htm"&gt;mouse&lt;/a&gt;, which you can move anywhere on the screen, summoning up your music library or &lt;a href="http://computer.howstuffworks.com/internet-infrastructure.htm"&gt;Internet&lt;/a&gt; browser at the slightest whim. Although it's easy to feel like a director in front of your desktop or &lt;a href="http://computer.howstuffworks.com/laptop.htm"&gt;laptop&lt;/a&gt;, there's a lot going on inside, and the real man behind the curtain handling the necessary tasks is the operating system.  ­&lt;br /&gt;&lt;/p&gt;&lt;p&gt;­Most desktop or laptop PCs come pre-loaded with Microsoft Windows. Macintosh computers come pre-loaded with Mac OS X. Many corporate servers use the Linux or UNIX operating systems. The operating system (OS) is the first thing loaded onto the computer -- without the operating system, a computer is useless. &lt;/p&gt;&lt;table class="sideBoxLeft"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="titleGray"&gt;Types of Systems­&lt;br /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://computer.howstuffworks.com/question246.htm"&gt;Linux&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://computer.howstuffworks.com/windows-vista.htm"&gt;Windows Vista&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://communication.howstuffworks.com/web-operating-system.htm"&gt;Web Operating Systems&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;­More recently, operating systems have started to pop up in smaller computers as well. If you like to tinker with electronic devices, you're probably pleased that operating systems can now be found on many of the devices we use every day, from &lt;a href="http://computer.howstuffworks.com/cell-phone.htm"&gt;cell phones&lt;/a&gt; to wireless access points. The computers used in these little devices have gotten so powerful that they can now actually run an operating system and applications. The computer in a typical modern cell phone is now more powerful than a desktop computer from 20 years ago, so this progression makes sense and is a natural development. &lt;/p&gt;&lt;p&gt; The purpose of an operating system is to organize and control hardware and software so that the device it lives in behaves in a flexible but predictable way. In this article, we'll tell you what a piece of software must do to be called an operating system, show you how the operating system in your desktop computer works and give you some examples of how to take control of the other operating systems around you.&lt;br /&gt;&lt;a href="http://computer.howstuffworks.com/computer-pictures.htm"&gt;&lt;img class="article" src="http://static.howstuffworks.com/gif/operating-system-1.jpg" alt="Steve Ballmer, C.E.O. of Microsoft Corporation, visits a Best Buy store and watches a customer demonstrate the Windows Vista operating system. What does an operating system do?" width="400" height="267" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span class="credit"&gt;Spencer Platt/&lt;a href="http://howstuffworks.com/framed.htm?parent=operating-system.htm&amp;amp;url=http://www.gettyimages.com"&gt;Getty Images&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="caption"&gt;Steve Ballmer, C.E.O. of Microsoft Corporation, watches a customer demonstrate the Windows Vista operating system.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;span class="caption"&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="articleBody"&gt;  &lt;h1 class="articlePageTitle"&gt;What is an Operating System?&lt;/h1&gt;  &lt;!-- dtl_id=17577 //--&gt;  &lt;p&gt;Not all computers have operating systems. The computer that controls the &lt;a href="http://computer.howstuffworks.com/microwave.htm"&gt;microwave oven&lt;/a&gt; in your kitchen, for example, doesn't need an operating system. It has one set of tasks to perform, very straightforward input to expect (a numbered keypad and a few pre-set buttons) and simple, never-changing hardware to control. For a computer like this, an operating system would be unnecessary baggage, driving up the development and manufacturing costs significantly and adding complexity where none is required. Instead, the computer in a microwave oven simply runs a single hard-wired program all the time.&lt;/p&gt;&lt;center&gt;&lt;div style="width: 400px; text-align: center; padding-bottom: 3px;"&gt;&lt;img alt="A model displays Japanese mobile phone operator Willcom's smart phone, 'D4', which comes equipped with the Windows Vista operating system." src="http://static.howstuffworks.com/gif/operating-system-2.jpg" class="article" width="400" height="464" /&gt;&lt;br /&gt;&lt;span class="credit"&gt;Yoshikazu Tsuno/AFP/&lt;a href="http://howstuffworks.com/framed.htm?parent=operating-system.htm&amp;amp;url=http://www.gettyimages.com"&gt;Getty Images&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="caption"&gt;A model displays Japanese mobile phone operator Willcom's smart phone, 'D4', which comes equipped with the Windows Vista operating system.&lt;/span&gt;&lt;/div&gt;&lt;/center&gt; &lt;p&gt; For other devices, an operating system creates the ability to: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;serve a variety of purposes &lt;/li&gt;&lt;li&gt;interact with users in more complicated ways &lt;/li&gt;&lt;li&gt;keep up with needs that change over time &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;All desktop computers have operating systems. The most common are the Windows family of operating systems developed by Microsoft, the Macintosh operating systems developed by Apple and the UNIX family of operating systems (which have been developed by a whole history of individuals, corporations and collaborators). There are hundreds of other operating systems available for special-purpose applications, including specializations for mainframes, robotics, manufacturing, real-time control systems and so on. &lt;/p&gt;&lt;p&gt;In any device that has an operating system, there's usually a way to make changes to how the device works. This is far from a happy accident; one of the reasons operating systems are made out of portable code rather than permanent physical circuits is so that they can be changed or modified without having to scrap the whole device. &lt;/p&gt;&lt;p&gt;For a desktop computer user, this means you can add a new security update, system patch, new application or even an entirely new operating system rather than junk your computer and start again with a new one when you need to make a change. As long as you understand how an operating system works and how to get at it, in many cases you can change some of the ways it behaves. The same thing goes for your phone, too. &lt;/p&gt;&lt;p&gt;Regardless of what device an operating system runs, what exactly can it do?&lt;br /&gt;&lt;/p&gt;&lt;h1 class="articlePageTitle"&gt;Operating System Functions&lt;/h1&gt;  &lt;!-- dtl_id=17579 //--&gt;  At the simplest level, an operating system does two things: &lt;ol&gt;&lt;li&gt;It manages the hardware and software resources of the system. In a &lt;a href="http://computer.howstuffworks.com/pc.htm"&gt;desktop computer&lt;/a&gt;, these resources include such things as the &lt;a href="http://computer.howstuffworks.com/microprocessor.htm"&gt;processor&lt;/a&gt;, &lt;a href="http://computer.howstuffworks.com/memory"&gt;memory&lt;/a&gt;, disk space and more (On a &lt;a href="http://electronics.howstuffworks.com/cell-phone.htm"&gt;cell phone&lt;/a&gt;, they include the keypad, the screen, the address book, the phone dialer, the battery and the network connection). &lt;p&gt; &lt;/p&gt;&lt;/li&gt;&lt;li&gt;It provides a stable, consistent way for applications to deal with the hardware without having to know all the details of the hardware. &lt;/li&gt;&lt;/ol&gt; &lt;p&gt;The first task, managing the hardware and software resources, is very important, as various programs and input methods compete for the attention of the &lt;strong&gt;central processing unit&lt;/strong&gt; (CPU) and demand memory, storage and input/output (I/O) bandwidth for their own purposes. In this capacity, the operating system plays the role of the good parent, making sure that each application gets the necessary resources while playing nicely with all the other applications, as well as husbanding the limited capacity of the system to the greatest good of all the users and applications. &lt;/p&gt;&lt;div style="float: right; width: 207px; text-align: center; padding-bottom: 3px;"&gt;&lt;img class="article" src="http://static.howstuffworks.com/gif/operating-system-architecture.gif" alt="Operating system architecture" width="207" height="167" /&gt;&lt;br /&gt;&lt;span class="credit"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="caption"&gt;The operating system controls every task your computer&lt;br /&gt;carries out and manages&lt;br /&gt;system resources.&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;­ The second task, providing a consistent application interface, is especially important if there is to be more than one of a particular type of computer using the operating system, or if the hardware making up the computer is ever open to change. A consistent &lt;strong&gt;application program interface&lt;/strong&gt; (API) allows a software developer to write an application on one computer and have a high level of confidence that it will run on another computer of the same type, even if the amount of memory or the quantity of storage is different on the two machines. &lt;/p&gt;&lt;p&gt;Even if a particular computer is unique, an operating system can ensure that applications continue to run when hardware upgrades and updates occur. This is because the operating system -- not the application -- is charged with managing the hardware and the distribution of its resources. One of the challenges facing developers is keeping their operating systems flexible enough to run hardware from the thousands of vendors manufacturing computer equipment. Today's systems can accommodate thousands of different printers, disk drives and special peripherals in any possible combination.&lt;br /&gt;&lt;/p&gt;&lt;h1 class="articlePageTitle"&gt;Types of Operating Systems&lt;/h1&gt;  &lt;!-- dtl_id=17581 //--&gt; Within the broad family of operating systems, there are generally four types, categorized based on the types of computers they control and the sort of applications they support. The categories are: &lt;ul&gt;&lt;li&gt;&lt;strong&gt;Real-time operating system&lt;/strong&gt; (RTOS) - Real-time operating systems are used to control machinery, scientific instruments and industrial systems. An RTOS typically has very little user-interface capability, and no end-user utilities, since the system will be a "sealed box" when delivered for use. A very important part of an RTOS is managing the resources of the computer so that a particular operation executes in precisely the same amount of time, every time it occurs. In a complex machine, having a part move more quickly just because system resources are available may be just as catastrophic as having it not move at all because the system is busy. &lt;p&gt; &lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Single-user, single task&lt;/strong&gt; - As the name implies, this operating system is designed to manage the computer so that one user can effectively do one thing at a time. The Palm OS for Palm handheld computers is a good example of a modern single-user, single-task operating system. &lt;p&gt; &lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Single-user, multi-tasking&lt;/strong&gt; - This is the type of operating system most people use on their desktop and laptop computers today. Microsoft's Windows and Apple's MacOS platforms are both examples of operating systems that will let a single user have several programs in operation at the same time. For example, it's entirely possible for a Windows user to be writing a note in a word processor while downloading a file from the Internet while printing the text of an e-mail message. &lt;p&gt; &lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Multi-user&lt;/strong&gt; - A multi-user operating system allows many different users to take advantage of the computer's resources simultaneously. The operating system must make sure that the requirements of the various users are balanced, and that each of the programs they are using has sufficient and separate resources so that a problem with one user doesn't affect the entire community of users. Unix, VMS and mainframe operating systems, such as &lt;em&gt;MVS&lt;/em&gt;, are examples of multi-user operating systems. &lt;/li&gt;&lt;/ul&gt; &lt;p&gt; &lt;/p&gt;&lt;table align="center" cellpadding="3" cellspacing="0" width="400"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:arial,helvetica;"&gt; &lt;center&gt;&lt;img src="http://static.howstuffworks.com/gif/operating-system-xscreen.jpg" /&gt;&lt;br /&gt;&lt;span style=""&gt;Photo courtesy &lt;a href="http://computer.howstuffworks.com/framed.htm?parent=operating-system.htm&amp;amp;url=http://www.apple.com" target="_blank"&gt;Apple&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=""&gt;&lt;strong&gt;Mac OS X Panther screen shot&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;/center&gt; &lt;/span&gt; &lt;/td&gt;&lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;&lt;br /&gt;It's important to differentiate between multi-user operating systems and single-user operating systems that support networking. Windows 2000 and Novell Netware can each support hundreds or thousands of networked users, but the operating systems themselves aren't true multi-user operating systems. The &lt;strong&gt;system administrator&lt;/strong&gt; is the only "user" for Windows 2000 or Netware. The network support and all of the remote user logins the network enables are, in the overall plan of the operating system, a program being run by the administrative user. &lt;/p&gt;&lt;p&gt; With the different types of operating systems in mind, it's time to look at the basic functions provided by an operating system.&lt;br /&gt;&lt;/p&gt;            &lt;div class="articleBody"&gt;  &lt;h1 class="articlePageTitle"&gt;Computer Operating Systems&lt;/h1&gt;  &lt;!-- dtl_id=17583 //--&gt; &lt;p&gt;When you turn on the power to a computer, the first program that runs is usually a set of instructions kept in the computer's &lt;a href="http://computer.howstuffworks.com/rom.htm"&gt;read-only memory&lt;/a&gt; (ROM). This code examines the system hardware to make sure everything is functioning properly. This &lt;strong&gt;power-on self test&lt;/strong&gt; (POST) checks the CPU, &lt;a href="http://computer.howstuffworks.com/computer-memory.htm"&gt;memory&lt;/a&gt;, and &lt;a href="http://computer.howstuffworks.com/bios.htm"&gt;basic input-output systems&lt;/a&gt; (BIOS) for errors and stores the result in a special memory location. Once the POST has successfully completed, the software loaded in ROM (sometimes called the BIOS or &lt;strong&gt;firmware&lt;/strong&gt;) will begin to activate the computer's disk drives. In most modern computers, when the computer activates the &lt;a href="http://computer.howstuffworks.com/hard-disk.htm"&gt;hard disk&lt;/a&gt; drive, it finds the first piece of the operating system: the &lt;strong&gt;bootstrap loader&lt;/strong&gt;. &lt;/p&gt;&lt;center&gt;&lt;div style="width: 400px; text-align: center; padding-bottom: 3px;"&gt;&lt;img alt="Khulud Dwaibess sits at her computer in her office in the West Bank city of Bethlehem. Several things happen when she boots up her computer, but eventually the operating system takes over." src="http://static.howstuffworks.com/gif/operating-system-3.jpg" class="article" width="400" height="267" /&gt;&lt;br /&gt;&lt;span class="credit"&gt;Awad Awad/AFP/&lt;a href="http://howstuffworks.com/framed.htm?parent=operating-system.htm&amp;amp;url=http://www.gettyimages.com"&gt;Getty Images&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="caption"&gt;Khulud Dwaibess sits at her computer in her office in the West Bank city of Bethlehem in Israel. Several things happen when she boots up her computer, but eventually the operating system takes over.&lt;/span&gt;&lt;/div&gt;&lt;/center&gt; &lt;p&gt;The bootstrap loader is a small program that has a single function: It loads the operating system into memory and allows it to begin operation. In the most basic form, the bootstrap loader sets up the small driver programs that interface with and control the various hardware subsystems of the computer. It sets up the divisions of memory that hold the operating system, user information and applications. It establishes the data structures that will hold the myriad signals, flags and semaphores that are used to communicate within and between the subsystems and applications of the computer. Then it turns control of the computer over to the operating system. &lt;/p&gt;&lt;p&gt; The operating system's tasks, in the most general sense, fall into six categories: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Processor management &lt;/li&gt;&lt;li&gt;Memory management &lt;/li&gt;&lt;li&gt;Device management &lt;/li&gt;&lt;li&gt;Storage management &lt;/li&gt;&lt;li&gt;Application interface &lt;/li&gt;&lt;li&gt;User interface &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;While there are some who argue that an operating system should do more than these six tasks, and some operating-system vendors do build many more utility programs and auxiliary functions into their operating systems, these six tasks define the core of nearly all operating systems. Next, let's look at the tools the operating system uses to perform each of these functions.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8136767800267856096-6673586571904294424?l=mydigital-garage.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mydigital-garage.blogspot.com/feeds/6673586571904294424/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mydigital-garage.blogspot.com/2009/01/how-operating-systems-work.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8136767800267856096/posts/default/6673586571904294424'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8136767800267856096/posts/default/6673586571904294424'/><link rel='alternate' type='text/html' href='http://mydigital-garage.blogspot.com/2009/01/how-operating-systems-work.html' title='How Operating Systems Work'/><author><name>PRITAM</name><uri>http://www.blogger.com/profile/02799170102757192497</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_apr7HBF_hu4/SMgQ-hsQcMI/AAAAAAAAAII/hu8eIXG9oAw/S220/1212120.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8136767800267856096.post-7419328436956785850</id><published>2009-01-13T18:35:00.000-08:00</published><updated>2009-01-19T01:13:12.264-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='How Virtual Memory Works'/><title type='text'>How Virtual Memory Works</title><content type='html'>&lt;strong&gt;Virtual memory&lt;/strong&gt; is a common part of most &lt;a href="http://computer.howstuffworks.com/operating-system.htm"&gt;operating systems&lt;/a&gt; on &lt;a href="http://computer.howstuffworks.com/pc.htm"&gt;desktop computers&lt;/a&gt;. It has become so common because it provides a big benefit for users at a very low cost.  &lt;p&gt; In this article, you will learn exactly what virtual memory is, what your computer uses it for and how to configure it on your own machine to achieve optimal performance.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;  Most computers today have something like 32 or 64 &lt;a href="http://computer.howstuffworks.com/bytes.htm"&gt;megabytes&lt;/a&gt; of RAM available for the &lt;a href="http://computer.howstuffworks.com/microprocessor.htm"&gt;CPU&lt;/a&gt; to use (see &lt;a href="http://computer.howstuffworks.com/ram.htm"&gt;How RAM Works&lt;/a&gt; for details on RAM). Unfortunately, that amount of RAM is not enough to run all of the programs that most users expect to run at once. &lt;/p&gt;&lt;p&gt;  For example, if you load the &lt;a href="http://computer.howstuffworks.com/operating-system.htm"&gt;operating system&lt;/a&gt;, an &lt;a href="http://computer.howstuffworks.com/email.htm"&gt;e-mail program&lt;/a&gt;, a Web browser and word processor into RAM simultaneously, 32 megabytes is not enough to hold it all. If there were no such thing as virtual memory, then once you filled up the available RAM your computer would have to say, "Sorry, you can not load any more applications. Please close another application to load a new one." With virtual memory, what the computer can do is look at RAM for areas that have not been used recently and copy them onto the &lt;a href="http://computer.howstuffworks.com/hard-disk.htm"&gt;hard disk&lt;/a&gt;. This frees up space in RAM to load the new application. &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;table align="center" cellpadding="3" cellspacing="0" width="400"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:arial,helvetica;"&gt; &lt;center&gt;&lt;img src="http://static.howstuffworks.com/gif/computer-memory-pyramid.gif" alt="Types and proportions of computer memory" /&gt;&lt;br /&gt;&lt;/center&gt; &lt;/span&gt;  &lt;/td&gt;&lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;  Because this &lt;strong&gt;copying&lt;/strong&gt; happens automatically, you don't even know it is happening, and it makes your computer feel like is has unlimited RAM space even though it only has 32 megabytes installed. Because hard disk space is so much cheaper than RAM chips, it also has a nice economic benefit. &lt;/p&gt;&lt;p&gt;The read/write speed of a hard drive is much slower than RAM, and the technology of a hard drive is not geared toward accessing small pieces of data at a time. If your system has to rely too heavily on virtual memory, you will notice a significant performance drop. The key is to have enough RAM to handle everything you tend to work on simultaneously -- then, the only time you "feel" the slowness of virtual memory is is when there's a slight pause when you're changing tasks. When that's the case, virtual memory is perfect. &lt;/p&gt;&lt;p&gt;When it is not the case, the operating system has to constantly swap information back and forth between RAM and the hard disk. This is called &lt;strong&gt;thrashing&lt;/strong&gt;, and it can make your computer feel incredibly slow. &lt;/p&gt;&lt;p&gt;    &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;center&gt; &lt;script type="text/javascript"&gt;&lt;!--  inject_code("&lt;object width="\" height="\" classid="\" codebase="\" version="4,0,2,0\"&gt;   &lt;param name="\" value="\"&gt;   &lt;param name="\" value="\"&gt;   &lt;embed width="\" height="\" src="\" quality="\" pluginspage="\" version="ShockwaveFlash\" type="\"&gt;&lt;/embed&gt;      &lt;/object&gt;"); //--&gt; &lt;/script&gt;&lt;object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=4,0,2,0" width="450" height="200"&gt;   &lt;param name="movie" value="http://static.howstuffworks.com/flash/operating-system-memory.swf"&gt;   &lt;param name="quality" value="high"&gt;   &lt;embed name="s_media_2_0" id="s_media_2_0" src="http://static.howstuffworks.com/flash/operating-system-memory.swf" quality="high" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_ Version=ShockwaveFlash" type="application/x-shockwave-flash" width="450" height="200"&gt;&lt;/embed&gt; &lt;/object&gt;&lt;noscript&gt;&lt;/noscript&gt;   &lt;/center&gt; &lt;p&gt; The area of the hard disk that stores the RAM image is called a &lt;strong&gt;page file&lt;/strong&gt;. It holds &lt;strong&gt;pages&lt;/strong&gt; of RAM on the hard disk, and the operating system moves data back and forth between the page file and RAM. On a Windows machine, page files have a .SWP extension. &lt;/p&gt;&lt;p&gt; Next, we'll look at how to configure virtual memory on a computer.&lt;/p&gt;&lt;h1 class="articlePageTitle"&gt;Configuring Virtual Memory&lt;/h1&gt;  &lt;!-- dtl_id=32499 //--&gt; Windows 98 is an example of a typical &lt;a href="http://computer.howstuffworks.com/operating-system.htm"&gt;operating system&lt;/a&gt; that has virtual memory. Windows 98 has an intelligent &lt;b&gt;virtual memory manager&lt;/b&gt; that uses a default setting to help Windows allocate hard drive space for virtual memory as needed. For most circumstances, this should meet your needs, but you may want to manually configure virtual memory, especially if you have more than one physical &lt;a href="http://computer.howstuffworks.com/hard-disk.htm"&gt;hard drive&lt;/a&gt; or speed-critical applications. &lt;p&gt; To do this, open the "Control Panel" window and double-click on the "System" icon. The system dialog window will open. Click on the "Performance" tab and then click on the "Virtual Memory" button. &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;table align="center" cellpadding="3" cellspacing="0" width="400"&gt;  &lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:arial,helvetica;"&gt; &lt;center&gt;&lt;img src="http://static.howstuffworks.com/gif/ram-vm1.gif" alt="Windows 98 performance tab for virtual memory" /&gt;&lt;br /&gt;&lt;/center&gt; &lt;/span&gt;  &lt;/td&gt;&lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;Click on the option that says, "Let me specify my own virtual memory settings." This will make the options below that statement become active. Click on the drop-down list beside "Hard disk:" to select the hard drive that you wish to configure virtual memory for. Remember that a good rule of thumb is to &lt;b&gt;equally split virtual memory&lt;/b&gt; between the physical hard disks you have. &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;table align="center" cellpadding="3" cellspacing="0" width="400"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:arial,helvetica;"&gt; &lt;center&gt;&lt;img src="http://static.howstuffworks.com/gif/ram-vm2.gif" alt="Windows 98 virtual memory settings" /&gt;&lt;br /&gt;&lt;/center&gt; &lt;/span&gt;  &lt;/td&gt;&lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;p&gt; In the "Minimum:" box, enter the smallest amount of hard drive space you wish to use for virtual memory on the hard disk specified. The amounts are in &lt;a href="http://computer.howstuffworks.com/bytes.htm"&gt;megabytes&lt;/a&gt;. For the "C:" drive, the minimum should be &lt;b&gt;2 megabytes&lt;/b&gt;. The "Maximum:" figure can be anything you like, but one possible upper limit is twice physical RAM space. Windows default is normally 12 megabytes above the amount of physical RAM in your computer. To put the new settings into effect, close the dialog box and restart your computer. &lt;/p&gt;&lt;p&gt;The amount of hard drive space you allocate for virtual memory is important. If you allocate too little, you will get "Out of Memory" errors. If you find that you need to keep increasing the size of the virtual memory, you probably are also finding that your system is sluggish and accesses the hard drive constantly. In that case, you should consider buying more RAM to keep the ratio between RAM and virtual memory about &lt;b&gt;2:1&lt;/b&gt;. Some applications enjoy having lots of virtual memory space but do not access it very much. In that case, &lt;b&gt;large paging files&lt;/b&gt; work well. &lt;/p&gt;&lt;p&gt;  &lt;!--&lt;table cellpadding="3" cellspacing="0" align="right" width="200"&gt; &lt;tr&gt;&lt;td&gt;&lt;span style="font-family:arial,helvetica;"&gt; &lt;center&gt;&lt;a href="javascript:videoWin('Computer+Tour');" border="0"&gt;&lt;img src="http://static.howstuffworks.com/gif/computer-tour-vid.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:-1;"&gt;&lt;b&gt;&lt;a href="javascript:videoWin('Computer+Tour');"&gt;Click here&lt;/a&gt; to see how a PC works, from the inside out&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;/center&gt; &lt;/span&gt; &lt;/td&gt;&lt;/tr&gt; &lt;/table&gt;--&gt; One trick that can improve the performance of virtual memory (especially when large amounts of virtual memory are needed) is to make the minimum and maximum sizes of the virtual memory file &lt;b&gt;identical&lt;/b&gt;. This forces the operating system to allocate the entire paging file when you start the machine. That keeps the paging file from having to grow while programs are running, which improves performance. Many video applications recommend this technique to avoid pauses while reading or writing video information between hard disk and tape. &lt;/p&gt;&lt;p&gt; Another factor in the performance of virtual memory is the location of the &lt;b&gt;pagefile&lt;/b&gt;. If your system has multiple physical hard drives (not multiple drive letters, but actual drives), you can spread the work among them by making smaller pagefiles on each drive. This simple modification will significantly speed up any system that makes heavy use of virtual memory.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8136767800267856096-7419328436956785850?l=mydigital-garage.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mydigital-garage.blogspot.com/feeds/7419328436956785850/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mydigital-garage.blogspot.com/2009/01/how-virtual-memory-works.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8136767800267856096/posts/default/7419328436956785850'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8136767800267856096/posts/default/7419328436956785850'/><link rel='alternate' type='text/html' href='http://mydigital-garage.blogspot.com/2009/01/how-virtual-memory-works.html' title='How Virtual Memory Works'/><author><name>PRITAM</name><uri>http://www.blogger.com/profile/02799170102757192497</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_apr7HBF_hu4/SMgQ-hsQcMI/AAAAAAAAAII/hu8eIXG9oAw/S220/1212120.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8136767800267856096.post-8044365619262939379</id><published>2009-01-11T23:16:00.000-08:00</published><updated>2009-01-19T01:13:36.265-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='How Spyware Works'/><title type='text'>How Spyware Works</title><content type='html'>&lt;p&gt; Has your computer ever become so slow that you can fix yourself a snack in the time it takes your word processor to open? Perhaps &lt;strong&gt;spyware &lt;/strong&gt;is to blame.         &lt;/p&gt;&lt;p&gt; &lt;img src="file:///C:/Users/pritam/AppData/Local/Temp/moz-screenshot.jpg" alt="" /&gt;&lt;img src="file:///C:/Users/pritam/AppData/Local/Temp/moz-screenshot-1.jpg" alt="" /&gt;Spyware is a category of computer programs that attach themselves to your &lt;a href="http://computer.howstuffworks.com/operating-system.htm"&gt;operating system&lt;/a&gt; in nefarious ways. They can suck the life out of your computer's processing power. They're designed to track your Internet habits, nag you with unwanted sales offers or generate traffic for their host Web site. According to some estimates, more than 80 percent of all personal computers are infected with some kind of spyware [source: FaceTime Communications]. But before you chuck your computer out the window and move to a desert island, you might want to read on. In this article we'll explain how spyware gets installed on your computer, what it does there and how you can get rid of it.&lt;/p&gt;&lt;p&gt; &lt;a href="http://computer.howstuffworks.com/enlarge-image.htm?terms=Computer+Security+-macy%27s+-entering&amp;amp;page=0"&gt;&lt;img alt="spyware example" src="http://static.howstuffworks.com/gif/spyware-1.jpg" class="article" width="400" height="184" /&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;  &lt;/p&gt;Some people mistake spyware for a computer virus. A &lt;a href="http://computer.howstuffworks.com/virus.htm"&gt;com&lt;/a&gt;&lt;a href="http://computer.howstuffworks.com/virus.htm"&gt;puter virus&lt;/a&gt; is a piece of code designed to replicate itself as many times as possible, spreading from one host computer to any other computers connected to it. It usually has a payload that may damage your personal files or even your operating system.&lt;br /&gt;Spyware, on the other hand, generally isn't designed to damage your computer. Spyware is defined broadly as any program that gets into your computer without your permission and hides in the background while it makes unwanted changes to your user experience. The damage it does is more a by-product of its main mission, which is to serve you targeted advertisements or make your browser display certain sites or search results.  At present, most spyware targets only the &lt;strong&gt;Windows operating system&lt;/strong&gt;. Some of the more notorious spyware threats include Trymedia, Nuvens, Estalive, Hotbar and New.Net.Domain.Plugin  [source: CA].&lt;br /&gt;&lt;br /&gt;&lt;h1 class="articlePageTitle"&gt;How Your Computer Gets Spyware&lt;/h1&gt;  &lt;!-- dtl_id=42335 //--&gt; Spyware usually ends up on your machine because of something you do, like clicking a button on a pop-up window, installing a software package or agreeing to add functionality to your Web browser. These applications often use trickery to get you to install them, from fake system alert messages to buttons that say "cancel" when they really install spyware.Here are some of the general ways in which spyware finds its way into your computer: &lt;ul&gt;&lt;li&gt;&lt;strong&gt;Piggybacked software installation&lt;/strong&gt; - Some applications -- particularly &lt;a href="http://computer.howstuffworks.com/file-sharing.htm"&gt;peer-to-peer file-sharing clients&lt;/a&gt; -- will install spyware as a part of their standard installation procedure. If you don't read the installation list closely, you might not notice that you're getting more than the file-sharing application you want. This is especially true of the "free" versions that are advertised as alternatives to software you have to buy. As the old saying goes, there's no such thing as a free lunch. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;  &lt;/p&gt;&lt;table align="center" cellpadding="3" cellspacing="0" width="400"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:arial,helvetica;"&gt; &lt;center&gt; &lt;img alt="While it officially claims otherwise, Kazaa has been known to include spyware in its download package." src="http://static.howstuffworks.com/gif/kazaa-1.jpg" /&gt;&lt;br /&gt;&lt;span style=""&gt;Courtesy © Sharman Networks 2002-2004 - All Rights Reserved.&lt;/span&gt;&lt;br /&gt;&lt;span style=""&gt;&lt;strong&gt;While it officially claims otherwise, Kazaa has been known to include spyware in its download package.&lt;/strong&gt;&lt;/span&gt;&lt;/center&gt;&lt;/span&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Drive-by download&lt;/strong&gt; - This is when a Web site or pop-up window automatically tries to download and install spyware on your machine. The only warning you might get would be your browser's standard message telling you the name of the software and asking if it's okay to install it. If your security settings are set low enough, you won't even get the warning.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;  &lt;table align="center" cellpadding="3" cellspacing="0" width="400"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:arial,helvetica;"&gt;  &lt;center&gt; &lt;img alt="Internet Explorer security warning" src="http://static.howstuffworks.com/gif/spyware-3.jpg" /&gt;&lt;br /&gt;&lt;span style=""&gt;&lt;strong&gt;Internet Explorer security warning&lt;/strong&gt;&lt;/span&gt;&lt;/center&gt;&lt;/span&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;ul&gt;&lt;li&gt;&lt;strong&gt;Browser add-ons&lt;/strong&gt; - These are pieces of software that add enhancements to your Web browser, like a toolbar, animated pal or additional search box. Sometimes, these really do what they say they'll do but also include elements of spyware as part of the deal. Or sometimes they are nothing more than thinly veiled spyware themselves. Particularly nasty add-ons are considered &lt;strong&gt;browser hijackers&lt;/strong&gt; -- these embed themselves deeply in your machine and take quite a bit of work to get rid of.   &lt;/li&gt;&lt;/ul&gt;  &lt;table align="center" cellpadding="3" cellspacing="0" width="400"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:arial,helvetica;"&gt; &lt;center&gt; &lt;img alt="Bonzi Buddy is an 'add-on' application that includes spyware in its package." src="http://static.howstuffworks.com/gif/spyware-4.jpg" /&gt;&lt;br /&gt;&lt;span style=""&gt;&lt;strong&gt;Bonzi Buddy is an "add-on" application that includes spyware in its package.&lt;/strong&gt;&lt;/span&gt;&lt;/center&gt;&lt;/span&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;ul&gt;&lt;li&gt;&lt;strong&gt;Masquerading as anti-spyware&lt;/strong&gt; -- This is one of the cruelest tricks in the book. This type of software convinces you that it's a tool to detect and remove spyware. &lt;/li&gt;&lt;/ul&gt; &lt;table align="center" cellpadding="3" cellspacing="0" width="400"&gt;  &lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:arial,helvetica;"&gt; &lt;/span&gt;&lt;center&gt;  &lt;span style="font-family:arial,helvetica;"&gt;&lt;img alt="This type of software convinces you that it's a tool to detect and remove spyware." src="http://static.howstuffworks.com/gif/spyware-2.jpg" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/center&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;ul&gt; When you run the tool, it tells you your computer is clean while it installs additional spyware of its own.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/ul&gt;&lt;div class="articleBody"&gt;  &lt;h1 class="articlePageTitle"&gt;What Spyware Can Do&lt;/h1&gt;  &lt;!-- dtl_id=42337 //--&gt; &lt;table class="sideBoxRight"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="titleBlue"&gt;Snitches and Sneaks&lt;br /&gt;&lt;/div&gt;&lt;div class="body"&gt;&lt;span type="arial, helvetica"&gt;&lt;span style=""&gt;There are computer programs that truly "spy" on you. There are applications designed to sit silently on your desktop and intercept personal information like usernames and passwords. These programs include Bugdrop, Back Orifice and VX2. These are more like viruses or hacker tools than spyware.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;       Spyware can do any number of things once it's installed on your computer. &lt;/p&gt;&lt;p&gt; At a minimum, most spyware runs as an application in the background as soon as you start your computer up, hogging &lt;a href="http://computer.howstuffworks.com/ram.htm"&gt;RAM&lt;/a&gt; and processor power. It can generate endless pop-up ads that make your Web browser so slow it becomes unusable. It can reset your browser's home page to display an ad every time you open it. Some spyware redirects your Web searches, controlling the results you see and making your &lt;a href="http://computer.howstuffworks.com/search-engine.htm"&gt;search engine&lt;/a&gt; practically useless. It can also modify the dynamically linked libraries (DLLs) your computer uses to connect to the Internet, causing connectivity failures that are hard to diagnose. At its very worst, spyware can record the words you type, your Web browsing history, passwords and other private information.&lt;br /&gt;&lt;/p&gt;&lt;p&gt; Certain types of spyware can modify your Internet settings so that if you connect through dial-up service, your &lt;a href="http://computer.howstuffworks.com/modem.htm"&gt;modem&lt;/a&gt; dials out to expensive, pay telephone numbers. Like a bad guest, some spyware changes your &lt;a href="http://computer.howstuffworks.com/firewall.htm"&gt;firewall&lt;/a&gt; settings, inviting in more unwanted pieces of software. There are even some forms that are smart enough to know when you try to remove them in the Windows registry and intercept your attempts to do so. &lt;/p&gt;&lt;table class="sideBoxRight"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="titleBlue"&gt;Other "Ware"&lt;br /&gt;&lt;/div&gt;&lt;div class="body"&gt;&lt;div class="body" align="left"&gt;&lt;span type="arial, helvetica"&gt;&lt;span style=""&gt;&lt;li&gt;&lt;strong&gt;Malware&lt;/strong&gt; -- a general term for any program that makes changes (does malicious or "bad" things) without your express permission &lt;/li&gt;&lt;li&gt;&lt;strong&gt;Adware&lt;/strong&gt; -- programs designed specifically to deliver unrequested advertising   &lt;/li&gt;&lt;li&gt;&lt;strong&gt;Stealware&lt;/strong&gt; -- specific spyware designed to capture clicks or Web-site referral credits &lt;/li&gt;&lt;li&gt;&lt;strong&gt;Browser hijacker&lt;/strong&gt; -- a malicious program that becomes deeply embedded in your browser's code and core functionality&lt;/li&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;The point of all this from the spyware makers' perspective isn't always clear. One reason it's used is to pad advertisers' Web traffic statistics. If they can force your computer to show you tons of pop-up ads and fake search results, they can claim credit for displaying that ad to you over and over again. And each time you click the ad by accident, they can count that as someone expressing interest in the advertised product. &lt;/p&gt;&lt;p&gt; Another use of spyware is to steal affiliate credits. Major shopping sites like &lt;a href="http://money.howstuffworks.com/amazon.htm"&gt;Amazon&lt;/a&gt; and &lt;a href="http://money.howstuffworks.com/ebay.htm"&gt;eBay&lt;/a&gt; offer credit to a Web site that successfully directs traffic to their item pages. Certain spyware applications capture your requests to view sites like Amazon and eBay and then take the credit for sending you there. &lt;/p&gt;&lt;p&gt;  &lt;/p&gt;&lt;p&gt; &lt;!-- Page Break --&gt;&lt;/p&gt;&lt;/div&gt;       &lt;!--DEV NOTE: this div ensures that the entire article body --&gt;       &lt;!--DEV NOTE: is displayed before ending the container box --&gt;       &lt;ul&gt;&lt;br /&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8136767800267856096-8044365619262939379?l=mydigital-garage.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mydigital-garage.blogspot.com/feeds/8044365619262939379/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mydigital-garage.blogspot.com/2009/01/how-spyware-works.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8136767800267856096/posts/default/8044365619262939379'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8136767800267856096/posts/default/8044365619262939379'/><link rel='alternate' type='text/html' href='http://mydigital-garage.blogspot.com/2009/01/how-spyware-works.html' title='How Spyware Works'/><author><name>PRITAM</name><uri>http://www.blogger.com/profile/02799170102757192497</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_apr7HBF_hu4/SMgQ-hsQcMI/AAAAAAAAAII/hu8eIXG9oAw/S220/1212120.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8136767800267856096.post-3390701676865870331</id><published>2009-01-11T23:09:00.000-08:00</published><updated>2009-01-19T01:13:59.813-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='How Fabric Displays Work'/><title type='text'>How Fabric Displays Work</title><content type='html'>&lt;p&gt;Some people are just begging for attention. Marketers are constantly trying to find ways to build brand awareness, often with clothing -- it's a common practice to make shirts and hats featuring ­company logos and slogans. To really grab your attention, some companies are using &lt;strong&gt;fabric displays&lt;/strong&gt; -- techniques and systems designed to make dynamic images and text on clothes and other things made of fabric.&lt;/p&gt;   &lt;p&gt;     &lt;/p&gt;&lt;table align="center" cellpadding="3" cellspacing="0" width="400"&gt;       &lt;tbody&gt;         &lt;tr&gt;           &lt;td&gt;&lt;center&gt;&lt;img alt="LED costumes" src="http://static.howstuffworks.com/gif/fabric-displays-2.jpg" border="0" width="400" height="266" /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;Sam Yeh/AFP/&lt;a href="http://howstuffworks.com/framed.htm?parent=fabric-display.htm&amp;amp;url=http://www.gettyimages.com/Home.aspx?esource=googUSA_Getty_Brand&amp;amp;country=usa&amp;amp;kw=usa+getty+images"&gt;Getty Images&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;Two Taiwanese models wear LED costumes at a photonics festival in Taipei.&lt;/strong&gt;&lt;br /&gt;&lt;/span&gt;&lt;/center&gt;&lt;/td&gt;         &lt;/tr&gt;       &lt;/tbody&gt;     &lt;/table&gt;      &lt;p&gt;There are many different kinds of fabric displays. Some use a still image as a starting point, relying on fabric with special properties to make the design more eye-catching. Other fabric displays can show full video with sound. Each method relies on different technologies, and all have their advantages and disadvantages. &lt;/p&gt;   &lt;p&gt;A few fabric display techniques are readily available to the consumer market. Creative individuals have used fabric display technology to build elaborate costumes. Jay Maynard used &lt;strong&gt;electroluminescent wire&lt;/strong&gt; (&lt;strong&gt;EL wire&lt;/strong&gt;) in the costume he built based on the Disney film "Tron" -- his &lt;a href="http://computer.howstuffworks.com/web-page.htm"&gt;Web page&lt;/a&gt; describes how made the costume. His efforts gained national attention, and before long Maynard was making the talk show circuit as "the Tron guy."&lt;/p&gt;   &lt;p&gt;In this article, we'll look at the different ways inventors have modified clothing to make a bigger impact on audiences. We'll learn about an idea for fur displays that use electrostatic charges to shocking effect. We'll see how a heat-sensitive dye can turn a normal T-shirt into a very large mood ring. After that, we'll explore the world of electroluminescent clothing. Then we'll see how LED and PLED displays can turn a normal outfit into an eye-catching light display. Finally, we'll learn about companies that have created clothing with built-in &lt;a href="http://electronics.howstuffworks.com/tv.htm"&gt;television&lt;/a&gt; and &lt;a href="http://computer.howstuffworks.com/pc.htm"&gt;PC&lt;/a&gt; displays.&lt;/p&gt;   &lt;p&gt;In the next section, we'll look at a way some engineers plan to use fur to create a dynamic fabric display.&lt;/p&gt;     &lt;script language="javascript"&gt;           &lt;!--            inPagePlayer(29317);                // --&gt;­­­         &lt;/script&gt;&lt;br /&gt;&lt;h1 class="articlePageTitle"&gt;Fur Fabric Displays&lt;/h1&gt;  &lt;!-- dtl_id=476113 //--&gt;    &lt;p&gt;There has been some confusion about what, exactly, a fur fabric display is. Philips Electronics filed a &lt;a href="http://people.howstuffworks.com/patent.htm"&gt;patent&lt;/a&gt; application with the simple title "Fabric Display," though some science &lt;a href="http://computer.howstuffworks.com/blog.htm"&gt;blogs&lt;/a&gt; and magazines have referred to it as "furry &lt;a href="http://electronics.howstuffworks.com/tv.htm"&gt;television&lt;/a&gt;." At its most basic level, this fur fabric display relies on a very simple technology. Patches of fur cover an image, and when the fur moves, it reveals the image underneath. It's a simple way to conceal and reveal designs.&lt;/p&gt;   &lt;p&gt;The fabric display has three layers. The bottom layer is &lt;strong&gt;conductive&lt;/strong&gt;, which means it can carry &lt;a href="http://science.howstuffworks.com/electricity.htm"&gt;electricity&lt;/a&gt; from a power source -- like a small &lt;a href="http://electronics.howstuffworks.com/battery.htm"&gt;battery&lt;/a&gt; pack -- to the rest of the fabric to create an electrostatic field across the fur, which gives each strand of fur the same electrical charge. &lt;/p&gt;   &lt;p&gt;The next layer in a fur fabric display is the fabric's base color or design. This could be a company logo, a picture or just a particular color. The furry display doesn't change the design on the cloth; it just hides or reveals portions of the design at a given time.&lt;/p&gt;   &lt;p&gt;The third layer is the fur. It can be any color, but it must be short enough so that when the user turns on the electrostatic field, the strands stand on end and reveal the design or color of the fabric underneath. For example, in a simple fur fabric display, you could use red fur to cover a blue shirt. When you turn on the power for the conductive layer, the red fur would stand on end, revealing the blue shirt underneath. To a distant observer, it would appear that the shirt had just magically changed colors.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;The patent application refers to each small, visible section of the base fabric as a "&lt;strong&gt;pixel&lt;/strong&gt;," which may be why some articles refer to the display as furry television. While it might be possible to approximate primitive animation techniques by printing one image across the fur layer and a slightly adjusted image on the fabric underneath, it's not quite the same as watching television on someone's jacket.&lt;/p&gt;&lt;h1 class="articlePageTitle"&gt;Thermochromic Fabric Displays&lt;/h1&gt;  &lt;!-- dtl_id=476115 //--&gt;    &lt;p&gt;The word "&lt;strong&gt;thermochromic&lt;/strong&gt;" looks a little intimidating at first, but the concept itself is pretty simple. &lt;strong&gt;Thermo&lt;/strong&gt; comes from the Greek word "thermos," which means warm or hot. &lt;strong&gt;Chromic&lt;/strong&gt; comes from "chroma," meaning color. A thermochromic substance changes color as it changes temperature. In fabrics, a special dye acts as the thermochromic agent.&lt;/p&gt;   &lt;p&gt;Some thermochromic dyes change from colorful to clear, revealing the color of the fabric underneath. Companies can use thermochromic dyes in shirts that slowly reveal a company slogan or logo as the shirt heats up. When the shirt cools down, the logo seems to disappear. &lt;/p&gt;   &lt;p&gt;There are two widely used elements in thermochromic dyes, and both rely on chemical reactions:&lt;/p&gt;   &lt;ul style="margin-top: 0in;" type="disc"&gt;&lt;li&gt;&lt;strong&gt;Liquid crystals&lt;/strong&gt;: These thermochromic dyes rely on liquid crystals contained in tiny capsules. The liquid crystals are &lt;strong&gt;cholestric&lt;/strong&gt;, also known as &lt;strong&gt;chiral nematics&lt;/strong&gt;, which means that its molecules arrange themselves in a very specific helical structure. These structures reflect certain wavelengths of &lt;a href="http://science.howstuffworks.com/light.htm"&gt;light&lt;/a&gt;. As the liquid crystals heat up, the orientation of the helices changes, which causes the helices to reflect a different wavelength of light. To our eyes, the result is a change in color. As the crystals cool down, they reorient themselves into their initial arrangements and the original color returns. &lt;/li&gt;&lt;li&gt;&lt;strong&gt;Micro-encapsulate thermochromic system&lt;/strong&gt;: In this system, the thermochromic dye contains millions of tiny capsules that look a little like an organic &lt;a href="http://science.howstuffworks.com/cell.htm"&gt;cell&lt;/a&gt;. Each capsule has an outer membrane and contains an organic, hydrophobic solvent, which makes it less likely that &lt;a href="http://science.howstuffworks.com/h2o.htm"&gt;water&lt;/a&gt; will dilute or wash out the chemicals in the dye. The solvent contains particles of a &lt;strong&gt;color developer&lt;/strong&gt; and a &lt;strong&gt;dye precursor&lt;/strong&gt;. As the capsule heats up, the solvent melts and a chemical reaction causes the color developer to donate a proton to the dye precursor. In turn, this causes the precursor to develop into the dye itself and change color. When the dye cools down, the developer and precursor separate, the solvent resolidifies and the color returns to its original state. &lt;/li&gt;&lt;li&gt;Like fur fabric displays, thermochromic fabrics aren't animated -- they can only conceal and reveal designs or colors based on environmental conditions. While that might be enough for some people, others want even more dynamic clothing.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;h1 class="articlePageTitle"&gt;Electroluminescent Fabric Displays&lt;/h1&gt;  &lt;!-- dtl_id=476117 //--&gt;    &lt;p&gt;If wearing a furry display or heat-sensitive clothing doesn't seem appealing, you might want to look into &lt;strong&gt;electroluminescent fabric displays&lt;/strong&gt;. Electroluminescent substances give off light after being exposed to &lt;a href="http://science.howstuffworks.com/electricity.htm"&gt;electricity&lt;/a&gt;. For fabric displays, designers use &lt;strong&gt;electroluminescent wire&lt;/strong&gt; (&lt;strong&gt;EL wire&lt;/strong&gt;) to create amazing, vibrant effects.&lt;/p&gt;   &lt;p&gt;     &lt;/p&gt;                           &lt;span style="font-family:arial,helvetica;"&gt;&lt;center&gt;EL wires have several layers:   &lt;ul style="margin-top: 0in;" type="disc"&gt;&lt;li&gt;The core layer is a copper wire that acts as a conductor in the EL wire's &lt;strong&gt;alternating current&lt;/strong&gt; (&lt;strong&gt;AC&lt;/strong&gt;) power system. &lt;/li&gt;&lt;li&gt;On top of the copper is a coating of electroluminescent phosphor. This is the material that will emit light after encountering an AC electric field. &lt;/li&gt;&lt;li&gt;The next layer consists of two wires wrapped around the phosphor. These wires complete the second half of a &lt;strong&gt;circuit&lt;/strong&gt;, the first half consisting of the copper conductor. &lt;/li&gt;&lt;li&gt;Last comes a pair of plastic sheaths, which protects both the phosphor material (moisture can ruin some phosphors) and the user from electric shocks. &lt;/li&gt;&lt;/ul&gt;   &lt;p&gt;EL wire needs a high &lt;strong&gt;voltage&lt;/strong&gt; -- around 100 volts -- to glow brightly. Lower voltages result only in a dull glow. Some EL wires can produce a range of light wavelengths depending on the &lt;strong&gt;frequency&lt;/strong&gt; of applied power. &lt;a href="http://howstuffworks.com/framed.htm?parent=fabric-display.htm&amp;amp;url=http://www.elwire.com/"&gt;Elwire.com&lt;/a&gt; offers an "aqua" EL wire with a color that varies from deep green to deep blue as the user alters the power frequency from 60 hertz (Hz) to 6 Hz. Also, because EL wire needs an AC power system, any outfit that has EL wire will need a &lt;a href="http://electronics.howstuffworks.com/battery.htm"&gt;battery&lt;/a&gt; pack and an inverter -- a device that converts direct current (DC) power to AC power. To learn more about AC and DC power, read our article on &lt;a href="http://science.howstuffworks.com/electricity.htm"&gt;How Electricity Works&lt;/a&gt;.&lt;/p&gt;   &lt;p&gt;     &lt;/p&gt;&lt;table align="right" cellpadding="3" cellspacing="0" width="200"&gt;       &lt;tbody&gt;         &lt;tr&gt;           &lt;td&gt;&lt;center&gt;&lt;img src="http://static.howstuffworks.com/gif/fabric-displays-1.jpg" alt="The Tron Guy" border="0" width="200" height="250" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;Jay Maynard -- the &lt;a href="http://howstuffworks.com/framed.htm?parent=fabric-display.htm&amp;amp;url=http://tronguy.net/"&gt;Tron guy&lt;/a&gt; -- constructed his costume with EL wire.&lt;/strong&gt;&lt;br /&gt;&lt;/span&gt;&lt;/center&gt;&lt;/td&gt;         &lt;/tr&gt;       &lt;/tbody&gt;     &lt;/table&gt;      &lt;p&gt;Because the core of EL wire is copper, it's flexible but holds its shape. You can bend EL wire into all sorts of designs. When it's turned off, EL wire looks like a colorful plastic tube, but when the power comes on, EL wire looks like thin strands of neon lights. An outfit with EL wire could have several different strands emitting different colors, and might even include a &lt;strong&gt;sequencer&lt;/strong&gt; -- a special circuit board -- connected to the power source that manages each strand's power supply. By alternating power to various strands, the wire can appear to be animated as different strands flash on and off.&lt;/p&gt;   &lt;p&gt;Clothes with EL wire require careful maintenance and cleaning procedures. If the wire is permanently affixed to the clothing, the wearer will need to carefully wash it by hand and let it dry on a flat surface, or rely on spot cleaning. Throwing electroluminescent clothes into the &lt;a href="http://home.howstuffworks.com/washer.htm"&gt;washing machine&lt;/a&gt; is a good way to ruin a special outfit, and could even damage other clothes or the washing machine itself if the plastic tubing around the copper core tears.&lt;/p&gt;   &lt;p&gt;Electroluminescent clothes are bright and vibrant, and with the right equipment they can display lights in patterns and sequences, but they're still fairly static -- you're limited by the shapes into which you've bent the EL wire. &lt;/p&gt;&lt;/center&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8136767800267856096-3390701676865870331?l=mydigital-garage.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mydigital-garage.blogspot.com/feeds/3390701676865870331/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mydigital-garage.blogspot.com/2009/01/how-fabric-displays-work.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8136767800267856096/posts/default/3390701676865870331'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8136767800267856096/posts/default/3390701676865870331'/><link rel='alternate' type='text/html' href='http://mydigital-garage.blogspot.com/2009/01/how-fabric-displays-work.html' title='How Fabric Displays Work'/><author><name>PRITAM</name><uri>http://www.blogger.com/profile/02799170102757192497</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_apr7HBF_hu4/SMgQ-hsQcMI/AAAAAAAAAII/hu8eIXG9oAw/S220/1212120.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8136767800267856096.post-7488113968993324733</id><published>2009-01-11T04:04:00.000-08:00</published><updated>2009-01-19T18:18:01.786-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='How Bluetooth Surveillance Works'/><title type='text'>How Bluetooth Surveillance Works</title><content type='html'>&lt;h1 class="articlePageTitle"&gt;Bluetooth Discoverability&lt;/h1&gt;  &lt;!-- dtl_id=510565 //--&gt;  &lt;div style="float: right; width: 200px; text-align: center; padding-bottom: 3px; padding-left: 3px;"&gt;&lt;img alt="Keeping a Bluetooth device in " src="http://static.howstuffworks.com/gif/bluetooth-surveillance-2.jpg" class="article" width="200" height="267" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;Before we dive into &lt;a href="http://electronics.howstuffworks.com/bluetooth.htm"&gt;Bluetooth&lt;/a&gt; surveillance, we'll want to take a look at how Bluetooth itself works and understand what makes the technology traceable. Bluetooth devices use the free, 2.4-gigahertz &lt;a href="http://electronics.howstuffworks.com/radio.htm"&gt;radio&lt;/a&gt; band known as &lt;strong&gt;ISM&lt;/strong&gt;, which stands for industrial, scientific and medical devices. The band is unlicensed for low-power use, so headsets and other Bluetooth accessories use very little in the way of batteries. While any two Bluetooth devices can share ­data at a range between 10 and 100 meters (33 and 328 feet), phones usually operate at the former, laptops at the latter. Any Bluetooth device can communicate with up to seven other devices at a time.&lt;br /&gt;&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt; &lt;/p&gt;  &lt;p&gt;After you turn any Bluetooth-capable device on, the most basic security feature on it is the ability to go into one of two modes: "discoverable" or "non-discoverable." This information is typically found in the "settings" option of a device's control panel, where you can select whether or not your &lt;a href="http://electronics.howstuffworks.com/cell-phone.htm"&gt;phone&lt;/a&gt; or &lt;a href="http://communication.howstuffworks.com/laptop.htm"&gt;laptop&lt;/a&gt; is visible to others within the area.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;If several Bluetooth devices are set on discoverable mode, they all have the ability to search for and locate each other, so long as they remain within range. Every device has its own address, a unique 48-bit identifier with six bytes of information that might look like this: 01:23:45:67:89.10. The first three bytes (01:23:45) are assigned to the specific manufacturer of the device, while the last three bytes (67:89:10) are assigned by the manufacturer. These make each device entirely unique.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;span&gt;So how could someone track your movement if you left your phone on discoverable? Would they have to follow you around all day long, or is there a simpler way?&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;h1 class="articlePageTitle"&gt;Bluetooth Positioning and Tracking&lt;/h1&gt;  &lt;!-- dtl_id=510567 //--&gt;  &lt;p&gt;Locating several &lt;a href="http://electronics.howstuffworks.com/bluetooth.htm"&gt;Bluetooth&lt;/a&gt; users with a typical &lt;a href="http://electronics.howstuffworks.com/cell-phone.htm"&gt;mobile phone&lt;/a&gt; is relatively simple: You just turn on your phone and search for every discoverable device. But you could only monitor the people moving in and out of your Bluetooth's range, which is most likely a 10-meter (33-foot) circle around you. If you wanted to track a specific address, you'd have to visually locate that person's physical device and follow it around all day, which would easily blow your cover.&lt;/p&gt;&lt;center&gt;&lt;div style="width: 400px; text-align: center; padding-bottom: 3px;"&gt;&lt;img class="article" src="http://static.howstuffworks.com/gif/bluetooth-surveillance-3.jpg" alt="Setting up a network of Bluetooth receivers that record the locations of specific makes the method of Bluetooth surveillance possible. Could shopping mall stores do this to track customers' movements?" width="400" height="296" /&gt;&lt;br /&gt;&lt;span class="credit"&gt;Michael McQueen/&lt;a href="http://howstuffworks.com/framed.htm?parent=bluetooth-surveillance.htm&amp;amp;url=http://www.gettyimages.com/Home.aspx"&gt;Getty Images&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="caption"&gt;Setting up a network of Bluetooth receivers that record the locations of specific makes the method of Bluetooth surveillance possible. Could shopping mall stores do this to track customers' movements?&lt;/span&gt;   &lt;/div&gt;&lt;/center&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt; &lt;/p&gt;  &lt;p&gt;Creating a Bluetooth surveillance network solves this problem. If several Bluetooth-enabled receivers are strategically placed to cover a large area, they can track the positions of any discoverable device, recording and sending any data back to a single address. Each Bluetooth receiver acts like any regular Bluetooth device: It searches for every device within range. If a person walked down a 100-meter-long (328-foot-long) street and each Bluetooth receiver had a range of 10 meters, five receivers with a radius of 20 meters (66 feet) would be needed to track that person's movement. As he walked toward the street, the first receiver would track him for the length of the first 20 meters, the second for the next 20 meters, and so on for the length of the street.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;So how have people used this system to track people? One of the earliest uses of Bluetooth positioning and tracking technology is the Aalborg Zoo, the largest zoological garden in Denmark. The point of installing the system was not to put the &lt;a href="http://animals.howstuffworks.com/animal-facts/zoo-info.htm"&gt;zoo&lt;/a&gt;'s patrons under surveillance or to see which exhibitions people went to more often. Instead, special "Bluetags" were made available to prevent parents from losing valuable belongings that tend to wander off -- their children. A parent could attach a "Bluetag" onto a child, and Bluetooth receivers around the zoo would track the child's movement.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;Some people worry about others using this sort of technology illegally and maliciously. A shopping mall, for example, could install a Bluetooth surveillance system throughout its entire area to monitor the movements of Bluetooth owners. Although it wouldn't present a perfectly accurate description of a person's movement, the system could create a general map of his path and even compare how long someone stays in a certain area. With this knowledge, store owners could analyze shopper's behavior and change advertisement positions accordingly without anyone ever knowing.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;It's difficult for someone to use Bluetooth to identify you in particular, unless you've chosen to include your name or some other personally identifiable information in the name of your phone, &lt;a href="http://communication.howstuffworks.com/smartphone.htm"&gt;smart phone&lt;/a&gt; or &lt;a href="http://communication.howstuffworks.com/pda.htm"&gt;PDA&lt;/a&gt;. Still, if you're concerned that someone might be able to track you down via Bluetooth, the best defense is to make your device non-discoverable to others when not using it.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8136767800267856096-7488113968993324733?l=mydigital-garage.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mydigital-garage.blogspot.com/feeds/7488113968993324733/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mydigital-garage.blogspot.com/2009/01/how-bluetooth-surveillance-works.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8136767800267856096/posts/default/7488113968993324733'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8136767800267856096/posts/default/7488113968993324733'/><link rel='alternate' type='text/html' href='http://mydigital-garage.blogspot.com/2009/01/how-bluetooth-surveillance-works.html' title='How Bluetooth Surveillance Works'/><author><name>PRITAM</name><uri>http://www.blogger.com/profile/02799170102757192497</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_apr7HBF_hu4/SMgQ-hsQcMI/AAAAAAAAAII/hu8eIXG9oAw/S220/1212120.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8136767800267856096.post-3485657600123963237</id><published>2009-01-11T03:58:00.000-08:00</published><updated>2009-01-19T18:18:24.406-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='How Xbox Live Works'/><title type='text'>How Xbox Live Works</title><content type='html'>Microsoft launched Xbox Live to much fanfare in 2002, and the hype seems justified. Last year, the number of users topped 2 million. And the success of &lt;a href="http://www.howstuffworks.com/xbox-three-sixty.htm"&gt;Xbox 360&lt;/a&gt; has increased both the number of online gamers and the amount of time they spend online: almost half of all Xbox 360 players have an Xbox Live membership {&lt;a href="http://electronics.howstuffworks.com/framed.htm?parent=xbox-live.htm&amp;amp;url=http://arstechnica.com/journals/thumbs.ars/2005/7/21/778"&gt;ref&lt;/a&gt;,&lt;a href="http://electronics.howstuffworks.com/framed.htm?parent=xbox-live.htm&amp;amp;url=http://www.usatoday.com/tech/gaming/2006-01-04-xbox360-hd-dvd_x.htm"&gt;ref&lt;/a&gt;].  &lt;p&gt; This Xbox Live still offers great head-to-head gameplay, including a matching service designed to give users the best game possible. But the Xbox 360 version also includes the ability to read e-mail, watch movies, view photos stored on your PC, listen to music, and more. Microsoft hopes that the latest version of Xbox Live will appeal to both gamers and non-gamers alike to become a digital media hub. &lt;/p&gt;&lt;p&gt; In this article, we'll learn exactly what users get out of the Xbox Live system and find out how to set it up.&lt;br /&gt;&lt;/p&gt;&lt;h1 class="articlePageTitle"&gt;Xbox Live Basics&lt;/h1&gt;  &lt;!-- dtl_id=47423 //--&gt;       Owners of &lt;a href="http://www.howstuffworks.com/xbox.htm"&gt;Xbox&lt;/a&gt; and Xbox 360 game systems can connect to the Xbox Live network via a broadband connection (such as a &lt;a href="http://www.howstuffworks.com/cable-modem.htm"&gt;cable modem&lt;/a&gt;). Microsoft's servers allow players to compete against or cooperate with other players on the system. Xbox Live also allows personal messaging, voice chat, online scoreboards, ranking systems and downloadable content. &lt;p&gt;   &lt;/p&gt;&lt;table width="400" align="center" cellpadding="3" cellspacing="0"&gt;   &lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:arial,helvetica;"&gt;   &lt;center&gt;&lt;img src="http://static.howstuffworks.com/gif/xbox-live-2.jpg" /&gt;&lt;br /&gt;&lt;span style=""&gt;Photo courtesy &lt;a href="http://shopper.howstuffworks.com/"&gt;HowStuffWorks Shopper&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=""&gt;&lt;b&gt;The top five most popular Xbox Live games&lt;/b&gt;&lt;/span&gt;&lt;br /&gt; &lt;/center&gt;   &lt;/span&gt;   &lt;/td&gt;&lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;   &lt;p&gt;   Xbox Live games come in two flavors: &lt;b&gt;Live Enabled&lt;/b&gt; and &lt;b&gt;Live Aware&lt;/b&gt;. A Live Enabled game uses all of the features of Xbox Live. You can play against other people, participate in tournaments and have your scores publicly ranked. A Live Aware game doesn't allow you to play against other people, but you can log in to the Xbox Live system while you're playing to receive chat messages and post high scores depending on the features that the game's developers have included. &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;table width="400" align="center" cellpadding="3" cellspacing="0"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:arial,helvetica;"&gt; &lt;center&gt;&lt;img src="http://static.howstuffworks.com/gif/xbox-live-9.jpg" /&gt;&lt;br /&gt;&lt;span style=""&gt;Photo courtesy &lt;a href="http://electronics.howstuffworks.com/framed.htm?parent=xbox-live.htm&amp;amp;url=http://www.xbox.com"&gt;Xbox&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=""&gt;&lt;b&gt;Marketplace downloads include add-ons for games&lt;br /&gt;like "Halo 2."&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;/center&gt; &lt;/span&gt; &lt;/td&gt;&lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;p&gt; On the &lt;b&gt;Xbox Live Marketplace&lt;/b&gt;, gamers can purchase and download entire games, new game levels, new characters, themes for the Xbox Live Dashboard, images and more. Many of the downloadable games are puzzle games like "Bejeweled" or classic arcade games like "Joust" and "Gauntlet" -- in fact, the downloads section is called the &lt;b&gt;Xbox Live Arcade&lt;/b&gt;.  &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;table width="400" align="center" cellpadding="3" cellspacing="0"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:arial,helvetica;"&gt; &lt;center&gt;&lt;img src="http://static.howstuffworks.com/gif/xbox-live-7.jpg" /&gt;&lt;br /&gt;&lt;span style=""&gt;Photo courtesy &lt;a href="http://electronics.howstuffworks.com/framed.htm?parent=xbox-live.htm&amp;amp;url=http://www.xbox.com"&gt;Xbox&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=""&gt;&lt;b&gt;In the Arcade, users can download new and classic&lt;br /&gt;arcade games.&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;/center&gt; &lt;/span&gt; &lt;/td&gt;&lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;p&gt; Microsoft has also integrated Xbox Live and MSN Messenger. Users can link their Gamertag to their MSN ID or &lt;a href="http://electronics.howstuffworks.com/framed.htm?parent=xbox-live.htm&amp;amp;url=http://www.hotmail.com"&gt;Hotmail&lt;/a&gt; &lt;a href="http://www.howstuffworks.com/email.htm"&gt;e-mail&lt;/a&gt; account and receive notifications on Xbox Live when their friends &lt;a href="http://www.howstuffworks.com/instant-messaging.htm"&gt;IM&lt;/a&gt; them or when they are invited to join a game. Users can also receive a notification when there are new games in the Arcade. &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt; Next, we'll learn about the new levels of Live membership that Microsoft rolled out with the release of Xbox 360.&lt;br /&gt;&lt;/p&gt;&lt;h1 class="articlePageTitle"&gt;Silver and Gold&lt;/h1&gt;  &lt;!-- dtl_id=47425 //--&gt;       &lt;table width="200" align="right" cellpadding="3" cellspacing="0"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:arial,helvetica;"&gt; &lt;center&gt;&lt;img src="http://static.howstuffworks.com/gif/xbox-live-11.jpg" /&gt;&lt;br /&gt;&lt;span style=""&gt;Photo courtesy &lt;a href="http://electronics.howstuffworks.com/framed.htm?parent=xbox-live.htm&amp;amp;url=http://www.xbox.com"&gt;Xbox&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;!--&lt;span style="font-size:-1;"&gt;&lt;b&gt;CAPTION&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;--&gt; &lt;/center&gt; &lt;/span&gt; &lt;/td&gt;&lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; With the introduction of Xbox 360, Microsoft redesigned Xbox Live. Part of this redesign includes the creation of two levels of Live membership: &lt;b&gt;Silver&lt;/b&gt; and &lt;b&gt;Gold&lt;/b&gt;. &lt;p&gt; Membership to Silver is free. With it, players can: &lt;/p&gt;&lt;ul&gt;&lt;li&gt; Create a profile and a Gamertag  &lt;/li&gt;&lt;li&gt; Create a friends list &lt;/li&gt;&lt;li&gt; Send and receive text and voice messages &lt;/li&gt;&lt;li&gt; Access the Marketplace and Arcade &lt;/li&gt;&lt;li&gt; Access Massively Multiplayer Online Games (usually for an additional fee) &lt;/li&gt;&lt;/ul&gt; &lt;p&gt; Gold membership costs $50 per year and includes all of the features of Silver as well as the ability to: &lt;/p&gt;&lt;ul&gt;&lt;li&gt; Access exclusive Marketplace content &lt;/li&gt;&lt;li&gt; Use the TrueSkill matchmaking service to find players of a similar skill level &lt;/li&gt;&lt;li&gt; Use a more extensive feedback and friends list system  &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;  &lt;/p&gt;&lt;table width="400" align="center" cellpadding="3" cellspacing="0"&gt;  &lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:arial,helvetica;"&gt;  &lt;center&gt;&lt;img src="http://static.howstuffworks.com/gif/xbox-live-1.jpg" /&gt;&lt;br /&gt;&lt;span style=""&gt;Photo courtesy &lt;a href="http://shopper.howstuffworks.com/"&gt;HowStuffWorks Shopper&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=""&gt;&lt;b&gt;Depending on which version of Xbox you purchase, you may need additional hardware or software.&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;/center&gt;  &lt;/span&gt;  &lt;/td&gt;&lt;/tr&gt;  &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;   An Xbox 360 costs $399 (the $299 core version doesn't include the &lt;a href="http://electronics.howstuffworks.com/ethernet.htm"&gt;Ethernet&lt;/a&gt; cable or the hard drive, both of which are required for Xbox Live). This includes a 20 GB hard drive, Ethernet cable, voice chat headset and a free month of Gold membership. There are also Xbox Live starter packages available that include the headset, a Gold membership, Marketplace points and access to a game at the Arcade. Once the free membership period has passed, it costs $50 per year for a Gold membership. &lt;/p&gt;&lt;p&gt; Players purchase downloadable content with points, which they can pre-purchase with a card that is similar to a phone card. This allows people without credit cards to buy downloadable content. A 1600 point-card costs about $20. Games in the Arcade cost 400 to 800 points, while gamer pictures cost 20 points and a theme for the Xbox Live Dashboard (the system's graphical user interface) costs 150 points. Demos and trailers for upcoming games are also available, usually for free.&lt;br /&gt;&lt;/p&gt;&lt;h1 class="articlePageTitle"&gt;Live Technology&lt;/h1&gt;  &lt;!-- dtl_id=47427 //--&gt; The Xbox 360 connects to the Xbox Live network through a built-in Ethernet port. Xbox 360 Live is a broadband network, which helps improve the performance of online games. The 360 is also &lt;a href="http://www.howstuffworks.com/wireless-network.htm"&gt;WiFi&lt;/a&gt; ready, supporting &lt;a href="http://electronics.howstuffworks.com/framed.htm?parent=xbox-live.htm&amp;amp;url=http://www.ieee.org/"&gt;IEEE&lt;/a&gt; standards 802.11a, 802.11b, and 802.11g. &lt;p&gt; &lt;!-- NOTE: each image here cannot exceed 200 pixels in width --&gt; &lt;/p&gt;&lt;table width="400" align="center" cellpadding="3" cellspacing="0"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:arial,helvetica;"&gt; &lt;center&gt;&lt;img src="http://static.howstuffworks.com/gif/xbox-live-3.jpg" /&gt;&lt;br /&gt;&lt;/center&gt; &lt;/span&gt; &lt;/td&gt; &lt;td&gt;&lt;span style="font-family:arial,helvetica;"&gt; &lt;center&gt;&lt;img src="http://static.howstuffworks.com/gif/xbox-live-4.jpg" /&gt;&lt;br /&gt;&lt;/center&gt; &lt;/span&gt; &lt;/td&gt;&lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;center&gt; &lt;span style="font-family:arial,helvetica;"&gt;&lt;span style=""&gt;Images courtesy &lt;a href="http://electronics.howstuffworks.com/framed.htm?parent=xbox-live.htm&amp;amp;url=http://www.xbox.com"&gt;Xbox&lt;/a&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style=""&gt;&lt;b&gt;Products such as routers or modems sporting either of these logos have been tested for use on Xbox Live. The logo on the right is the "old" logo, now being phased out.&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/center&gt; &lt;p&gt; In its current configuration, most Xbox Live content is routed through Microsoft's Xbox Live servers. For the Xbox Live launch in 2002, Microsoft installed massive arrays of servers in four locations in the United States, Japan and the United Kingdom. The network costs alone were estimated at $500 million [&lt;a href="http://electronics.howstuffworks.com/framed.htm?parent=xbox-live.htm&amp;amp;url=http://news.com.com/Microsoft+pushes+Xbox+online/2100-1040_3-965830.html"&gt;ref&lt;/a&gt;]. The servers are physically secure, with multiple levels of security. The entire system is controlled from Xbox Live headquarters in Redmond, Washington. Microsoft is so security conscious that they don't give out specific information about types or exact numbers of servers used. &lt;/p&gt;&lt;p&gt;There are a few exceptions, however. Initially Electronic Arts did not produce Live Enabled games for Xbox because Microsoft wouldn't allow them to use their own servers. Eventually, Microsoft relented and EA has begun producing Live Enabled games in their popular sports line, as well as games like "Burnout 3." However, the rollout for "Burnout 3" was plagued with severe problems, including server timeouts, Xbox crashes and poor performance. &lt;/p&gt;&lt;p&gt;There are plans to open up the Xbox Live Marketplace to user-created content, making the Marketplace more of a peer-to-peer network. There is no date for implementing that feature, but Microsoft plans to carefully screen and certify all user content to make sure it meets community standards and is &lt;a href="http://www.howstuffworks.com/virus.htm"&gt;virus&lt;/a&gt;-free. &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;table width="400" align="center" cellpadding="3" cellspacing="0"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:arial,helvetica;"&gt; &lt;center&gt;&lt;img src="http://static.howstuffworks.com/gif/xbox-live-10.jpg" /&gt;&lt;br /&gt;&lt;!-- &lt;span style="font-size:-2;"&gt;Photo courtesy&lt;/span&gt;&lt;br /&gt;--&gt; &lt;span style=""&gt;&lt;b&gt;Setting up Xbox Live is usually a simple process.&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;/center&gt; &lt;/span&gt; &lt;/td&gt;&lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;p&gt; Xbox 360 is "Live-ready" out of the box. In most cases, installation and setup is simple. You'll need a router if you use your Internet connection for something other than Xbox Live. A router allows multiple devices to use your Internet connection at the same time. The Xbox will plug into an outlet on the router. Router configuration can vary greatly, depending on the make and manufacturer. Microsoft provides some guidance &lt;a href="http://electronics.howstuffworks.com/framed.htm?parent=xbox-live.htm&amp;amp;url=%20http://www.xbox.com/en-US/live/connect/router.htm"&gt;here&lt;/a&gt;. If you're only going to use your connection for Xbox Live, you can just run the included Ethernet cable from the Xbox 360's port to your &lt;a href="http://www.howstuffworks.com/cable-modem.htm"&gt;cable modem&lt;/a&gt;. &lt;/p&gt;&lt;p&gt; Both the Xbox and Xbox 360 use the same Xbox Live system, with Gamertags shared across both consoles. However, an Xbox console can't play Xbox 360 games, and Xbox games aren't capable of using some of the features that were added to Xbox Live late in 2005 for the rollout of Xbox 360.&lt;br /&gt;&lt;/p&gt;&lt;h1 class="articlePageTitle"&gt;Rated Xbox&lt;/h1&gt;  &lt;!-- dtl_id=47429 //--&gt; Many of the problems with Xbox Live are the same ones encountered in any other online game setting. The most prevalent problem is the presence of &lt;b&gt;griefers&lt;/b&gt; -- people who seem to derive pleasure from ruining other people's fun. Their behavior can range from constant foul language, racist taunts and playing the game in an annoying, disruptive way. For example, in a racing game, a griefer might intentionally crash into the other players' cars instead of racing. Swearing can be a serious problem in games when players are using voice chat. It can be muted, but then the players lose the use of the voice chat. Some games allow you to mute individual players. &lt;p&gt; &lt;/p&gt;&lt;table width="400" align="center" cellpadding="3" cellspacing="0"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-family:arial,helvetica;"&gt; &lt;center&gt;&lt;img src="http://static.howstuffworks.com/gif/xbox-live-6.jpg" /&gt;&lt;br /&gt;&lt;span style=""&gt;Images courtesy &lt;a href="http://electronics.howstuffworks.com/framed.htm?parent=xbox-live.htm&amp;amp;url=http://www.xbox.com"&gt;Xbox&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=""&gt;&lt;b&gt;Your best defense against griefers is a strong Friends list.&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;/center&gt; &lt;/span&gt; &lt;/td&gt;&lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;Xbox Live supports a feedback system that allows users to rate other players based on their in-game behavior. Microsoft reports that they review the feedback and punish players who receive a significant number of complaints. Punishments range from warnings to suspensions that can last up to two weeks. Microsoft can ban players who abuse voice chat from using the service. &lt;/p&gt;&lt;p&gt;Users can also designate players they want to avoid and players that they enjoyed playing with. The TruSkill matchmaking software will try to accommodate the user's wishes when setting up games. The Friends list is probably the best weapon against griefers. A healthy list of friends who have a reputation for playing well can ensure a fun experience. &lt;/p&gt;&lt;p&gt;  A more insidious problem is cheating. &lt;b&gt;Mod chips&lt;/b&gt; were widely available for installation in the original Xbox. These chips could allow the Xbox to play games from different regions, or they could alter it so that the player had an advantage in online games. The Xbox 360 has not been hacked yet, and no mod chips are currently available, but there are reports of groups working hard to develop them. Microsoft has taken great pains to make the Xbox 360 mod-proof. Whenever an Xbox 360 connects to the Xbox Live network, the system checks and matches individual codes on the processor and the hard drive. It also checks the system &lt;a href="http://www.howstuffworks.com/bios.htm"&gt;BIOS&lt;/a&gt;. If anything has changed, the system blocks that 360 from ever accessing Xbox Live. &lt;/p&gt;&lt;p&gt; Another common problem is poor performance. Lag and latency can slow some games to a crawl, or cause servers to time out. Although this can be due to deficiencies with Microsoft's servers, it is usually a problem with Internet traffic in general, or with the connections used by the participating players. If the player hosting the game sets the number of players too high, or doesn't have enough upstream bandwidth, the game will run poorly. &lt;/p&gt;&lt;p&gt;Some Xbox Live users are concerned about privacy. The Gamecard interface allows other players to see what a user is doing, because the current activity, such as "Viewing Pictures," is displayed on the card. You can disable this by adjusting the privacy settings, and there have been no reports of sensitive information such as an address or credit card number being stolen from an Xbox Live account. &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8136767800267856096-3485657600123963237?l=mydigital-garage.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mydigital-garage.blogspot.com/feeds/3485657600123963237/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mydigital-garage.blogspot.com/2009/01/how-xbox-live-works.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8136767800267856096/posts/default/3485657600123963237'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8136767800267856096/posts/default/3485657600123963237'/><link rel='alternate' type='text/html' href='http://mydigital-garage.blogspot.com/2009/01/how-xbox-live-works.html' title='How Xbox Live Works'/><author><name>PRITAM</name><uri>http://www.blogger.com/profile/02799170102757192497</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://1.bp.blogspot.com/_apr7HBF_hu4/SMgQ-hsQcMI/AAAAAAAAAII/hu8eIXG9oAw/S220/1212120.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8136767800267856096.post-3069348148033850112</id><published>2009-01-11T03:30:00.000-08:00</published><updated>2009-01-19T18:18:48.282-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='How iPods Work'/><title type='text'>How iPods Work</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://static.howstuffworks.com/gif/ipod-classic300x300.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 300px; height: 300px;" src="http://static.howstuffworks.com/gif/ipod-classic300x300.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;iPod Image GalleryThe sixth-generation iPod Classic&lt;br /&gt;Photo courtesy Apple&lt;br /&gt;The sixth-generation iPod Classic. See more iPod pictures.&lt;br /&gt;&lt;br /&gt;In 2001, Apple introduced the iPod, an MP3 player with the unheard-of storage capacity of 5 gigabytes. Six iPod generations later, the iPod plays songs, movies, games and photo slideshows, and you can store up to 160 GB of any type of file you want. The evolution has been a lesson in consumer electronics marketing and development: Millions of people are so hooked on the iPod, they continue to buy it and its coordinating Apple products despite quick battery death and difficult repairs.&lt;br /&gt;&lt;br /&gt;The 2007 iPod release, the sixth-generation iPod classic, is a digital audio player, video player, photo viewer and portable hard drive, making it a full-fledged portable media center. It's available in 80-GB and 160-GB capacities and has a color LCD screen. In addition to the iPod classic, there are several other devices in the current generation of iPod players:&lt;br /&gt;&lt;br /&gt;  * iPod touch, announced in September 2007, is a touch-screen iPod with an 8-GB or 16-GB capacity. It looks a lot like an iPhone, and it uses the iPhone's multi-touch user interface. You can learn all about the technology in How the iPhone Works.&lt;br /&gt;  * iPod shuffle, with a 1-GB capacity, plays only songs and has no display.&lt;br /&gt;  * iPod nano plays digital audio, displays digital photos and comes in 4- and 8-GB capacities. It has a 2-inch display screen and a smaller form factor than the iPod video.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://static.howstuffworks.com/gif/ipod-nano.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 240px;" src="http://static.howstuffworks.com/gif/ipod-nano.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Although the iPod is an Apple product, it works with both Mac and Windows machines. Since it's the top-selling media player in the United States, probably the big question is: What makes it different from any other &lt;span style="text-decoration: underline;"&gt;digital media player&lt;/span&gt; The answer will differ depending on who you ask. Some might say it's the form factor -- the 80-GB iPod classic is less than half an inch (1.4 centimeters) deep and weighs about 4.9 ounces (140 grams) . For comparison, the Zen Portable Media Center from Creative is 1.06 inches (2.7 centimeters) deep, weighs 12 ounces (340 grams) and has only 20 GB of hard drive space.&lt;br /&gt;&lt;p&gt; Other people might tell you it's the Apple Click Wheel, a  wheel that makes it incredibly easy to navigate through the various menus and options with just a thumb. According to Apple CEO Steve Jobs in a &lt;span style="text-decoration: underline;"&gt;Newsweek interview&lt;/span&gt;, "It was developed out of necessity for the Mini, because there wasn't enough room [for the buttons]. But the minute we experienced it we just thought, 'My God, why didn't we think of this sooner?'" And then, some might tell you the greatest thing in the world is the super-tight iPod/&lt;span style="text-decoration: underline;"&gt;iTunes&lt;/span&gt; integration (which, ironically, others will curse until t
