<?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:blogger='http://schemas.google.com/blogger/2008' 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-8953490625351031216</id><updated>2024-09-07T21:37:30.139+03:00</updated><category term="News"/><category term="Programming"/><category term="Advance Computing"/><category term="Science"/><category term="Linux"/><category term="Technology"/><category term="Artificial Intelligence"/><category term="C"/><category term="C++"/><category term="Internet"/><category term="Web Dev Stuff"/><category term="Hacking"/><category term="Academic stuff"/><category term="PHP"/><category term="Video"/><category term="web"/><category term="Databases"/><category term="MySQL"/><category term="Networks"/><category term="Neural Networks"/><category term="SQL"/><category term="Android"/><category term="Computing"/><category term="Framework"/><category term="Google"/><category term="MAc"/><category term="Mathematics"/><category term="Physics"/><category term="Portfolio"/><category term="Trinity-FMW"/><category term="c\c++"/><title type='text'>Eternity Belongs to Science</title><subtitle type='html'>Science.. The Mentor of Informatics</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://b-giar.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8953490625351031216/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://b-giar.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/8953490625351031216/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/01359356128419832182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>66</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8953490625351031216.post-6102488272988769339</id><published>2011-10-02T15:10:00.001+03:00</published><updated>2011-10-02T15:10:17.983+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android"/><category scheme="http://www.blogger.com/atom/ns#" term="Computing"/><category scheme="http://www.blogger.com/atom/ns#" term="MAc"/><category scheme="http://www.blogger.com/atom/ns#" term="Programming"/><title type='text'>ADB doesn&amp;#39;t recognize my Android Phone under Mac OS X 10.6.x</title><content type='html'>&lt;div class=&#39;posterous_autopost&#39;&gt;&lt;p&gt;In numerous forums and even more in &lt;a href=&quot;http://stackoverflow.com/questions/tagged/android&quot; title=&quot;http://stackoverflow.com/questions/tagged/android&quot; target=&quot;_blank&quot;&gt;www.stackoverflow.com&lt;/a&gt;&amp;nbsp;are posted unresolved questions regarding ADB&#39;s luck of device recognition under Mac OS X 10.6.x. After facing the same problem with my Nexus S I start experimenting.&lt;/p&gt;  &lt;p&gt;I noticed that indeed ADB weren&#39;t listed my device with the ./adb devices command.&lt;/p&gt;  &lt;blockquote class=&quot;posterous_short_quote&quot;&gt;  &lt;p&gt;$ ./adb devices&lt;/p&gt;  &lt;/blockquote&gt;  &lt;p&gt;Though, system profiler.app was successfully listing my phone, as other services such as tethering and fastboot (&amp;nbsp;fastboot:Yes I tried Everything..!! ). Moreover, reinstalls and restarts of adb server was also a drop to space. So that made me curious regarding this as the same phone was working under Linux and Windows systems and also tethering was a succes under Mac OS X.&lt;/p&gt;  &lt;p&gt;The answer was simple, the service of tethering that was running in my Mac was blocking ADB server to communicate with the device, so the listing was a failure.&amp;nbsp;&lt;/p&gt;  &lt;p&gt;So in simple steps, before you plug-in your device for debugging purposes you should first unload the&amp;nbsp;EasyTetherUSBEthernet service. You may achieve that by submitting this command to your terminal:&lt;/p&gt;  &lt;blockquote class=&quot;posterous_short_quote&quot;&gt;  &lt;p&gt;$ sudo kextunload /System/Library/Extensions/EasyTetherUSBEthernet.kext&lt;/p&gt;  &lt;/blockquote&gt;  &lt;p&gt;Then plug-in your device and then submit the known-unknow command, by first having changed your directory to the android-sdk/tools folder&lt;/p&gt;  &lt;blockquote class=&quot;posterous_short_quote&quot;&gt;  &lt;p&gt;$ ./adb devices&lt;/p&gt;  &lt;/blockquote&gt;  &lt;p&gt;or just&lt;/p&gt;  &lt;blockquote class=&quot;posterous_short_quote&quot;&gt;  &lt;p&gt;$ adb devices&lt;/p&gt;  &lt;/blockquote&gt;  &lt;p&gt;in case you have set the android-sdk to you environment profile. If you didn&#39;t then you should! Just under your Home directory locate the .bash_profile file and at the PATH variable add the android-sdk/tools directory.&lt;/p&gt;  &lt;p&gt;Furthermore, in case you wish to reload the&amp;nbsp;EasyTetherUSBEthernet service just submit this:&lt;/p&gt;  &lt;blockquote class=&quot;posterous_short_quote&quot;&gt;  &lt;p&gt;&amp;nbsp;$ sudo kextload /System/Library/Extensions/EasyTetherUSBEthernet.kext&amp;nbsp;&lt;/p&gt;  &lt;/blockquote&gt;  &lt;p&gt;And in any case wanting to remove the&amp;nbsp;EasyTetherUSBEthernet&lt;span style=&quot;font-family: Arial, Liberation Sans, DejaVu Sans, sans-serif; font-size: 14px; line-height: 18px;&quot;&gt;&amp;nbsp;submit ( witch I don&#39;t Recommend)&lt;/span&gt;&lt;/p&gt;  &lt;blockquote&gt;  &lt;p&gt;&lt;span style=&quot;font-family: Arial, Liberation Sans, DejaVu Sans, sans-serif;&quot;&gt;&lt;span style=&quot;font-size: 14px; line-height: 18px;&quot;&gt;$ sudo kextunload /System/Library/Extensions/EasyTetherUSBEthernet.kext&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style=&quot;font-family: Arial, Liberation Sans, DejaVu Sans, sans-serif;&quot;&gt;&lt;span style=&quot;font-size: 14px; line-height: 18px;&quot;&gt;$ sudo rm -rf /System/Library/Extensions/EasyTetherUSBEthernet.kext&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;/blockquote&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&lt;span style=&quot;font-family: Arial, Liberation Sans, DejaVu Sans, sans-serif;&quot;&gt;&lt;span style=&quot;font-size: 14px; line-height: 18px;&quot;&gt;That&#39;s all folks, I hope you enjoy it as much it helped you. :)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style=&quot;font-family: Arial, Liberation Sans, DejaVu Sans, sans-serif;&quot;&gt;&lt;span style=&quot;font-size: 14px; line-height: 18px;&quot;&gt;Thanks for reading it!&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://b-giar.blogspot.com/feeds/6102488272988769339/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://b-giar.blogspot.com/2011/10/adb-doesn-recognize-my-android-phone.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8953490625351031216/posts/default/6102488272988769339'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8953490625351031216/posts/default/6102488272988769339'/><link rel='alternate' type='text/html' href='http://b-giar.blogspot.com/2011/10/adb-doesn-recognize-my-android-phone.html' title='ADB doesn&amp;#39;t recognize my Android Phone under Mac OS X 10.6.x'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/01359356128419832182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8953490625351031216.post-6063307623209229004</id><published>2011-09-10T12:00:00.001+03:00</published><updated>2011-09-10T12:00:13.403+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="News"/><title type='text'>Quantum computing with light</title><content type='html'>&lt;div class=&#39;posterous_autopost&#39;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;A switch that lets one photon alter the quantum state of another could point the way to both practical quantum computers and a quantum Internet.&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #555555; font-size: 14px;&quot;&gt;Larry Hardesty, MIT News Office -&lt;/span&gt;&lt;span style=&quot;line-height: 16px;&quot;&gt;&amp;nbsp;&lt;a href=&quot;http://web.mit.edu/newsoffice/2011/quantum-light-0909.html&quot; title=&quot;SOURCE&quot; target=&quot;_blank&quot; style=&quot;&quot;&gt;SOURCE&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style=&quot;line-height: 16px;&quot;&gt;Quantum computers are largely theoretical devices that would exploit the weird properties of matter at extremely small scales to perform calculations, in some cases much more rapidly than conventional computers can. To date, the most promising approach to building quantum computers has been to use ions trapped in electric fields. Using photons instead would have many advantages, but it&#39;s notoriously difficult to get photons to interact: Two photons that collide in a vacuum simply pass through each other.&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style=&quot;line-height: 16px;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;  &lt;p style=&quot;&quot;&gt;In&amp;nbsp;&lt;em&gt;Science&lt;/em&gt;, researchers at the Massachusetts Institute of Technology (MIT) and Harvard University&lt;a href=&quot;http://www.sciencemag.org/content/early/2011/08/03/science.1208066.abstract&quot; target=&quot;_blank&quot; style=&quot;&quot;&gt;describe an experiment&lt;/a&gt;&amp;nbsp;that allows a single photon to control the quantum state of another photon. The result could have wide-ranging consequences for quantum computing and quantum communication, the quantum analog to conventional telecommunications.&lt;/p&gt;  &lt;p&gt;&lt;span style=&quot;line-height: 16px;&quot;&gt;  &lt;p style=&quot;&quot;&gt;A quantum particle has the odd property that it can be in &quot;superposition,&quot; meaning it&#39;s in two different states at the same time: Fire a single photon at a barrier with two slits in it, for instance, and it will, in some sense, pass through both of them. Where the bits in an ordinary computer can represent either zero or one, a bit made from a qubit could thus represent both zero and one at the same time.&lt;/p&gt;  &lt;p style=&quot;&quot;&gt;For this reason, a string of only 16 qubits could represent 64,000 different numbers simultaneously. It&#39;s because a quantum computer could, in principle, evaluate possible solutions to the same problem in parallel that quantum computing promises major increases in computational speed.&lt;/p&gt;  &lt;p style=&quot;&quot;&gt;But one of the difficulties in building quantum computers is that superpositions of states can be very fragile: Any interaction with its environment can cause a subatomic particle to snap into just one of its possible states. Photons are much more resistant to outside influences than subatomic particles, but that also makes them harder to control; over the course of a computation, a quantum computer needs to repeatedly alter the states of qubits.&lt;/p&gt;  &lt;p style=&quot;&quot;&gt;The MIT and Harvard researchers&#39; new paper points toward a quantum computer that offers the best of both worlds: stability and control. Moreover, photons in superposition could carry information stored as qubits rather than as ordinary bits, opening the possibility of a quantum Internet.&lt;/p&gt;  &lt;p style=&quot;&quot;&gt;&lt;strong&gt;Slowing light&lt;/strong&gt;&lt;br /&gt;Vladan Vuletic, the Lester Wolfe Professor of Physics at MIT; his student, Haruka Tanji-Suzuki, a member of the MIT-Harvard Center for Ultracold Atoms (CUA); Wenlan Chen, an MIT graduate student, and Renate Landig, a visiting student, both at CUA; and Jonathan Simon, a postdoc at Harvard, developed an optical switch that consists of a small cluster of cesium atoms suspended between two tiny mirrors in a vacuum cavity. &quot;The only way to make two photons interact with one another is to use atoms as a mediator,&quot; Vuletic says. &quot;The [first] photon changes the state of the atom, and therefore it modifies the atom&amp;rsquo;s interaction with the other photon.&quot;&lt;/p&gt;  &lt;p style=&quot;&quot;&gt;When a photon enters the cavity, it begins bouncing back and forth between the mirrors, delaying its emission on the other side. If another photon has already struck the cesium atoms, then each pass through them delays this second photon even more. The delay induced by a single pass through the atoms would be imperceptible, but the mirror-lined cavity, Vuletic explains, &quot;allows us to pass the photon many, many times through the atoms. In our case, it&amp;rsquo;s like passing the photon 40,000 times through the atoms.&quot;&lt;/p&gt;  &lt;p style=&quot;&quot;&gt;When it emerges from the cavity, the second photon thus has two possible states&amp;mdash;delayed or extra-delayed&amp;mdash;depending on whether another photon has preceded it. With these two states, it could, in principle, represent a bit of information. And if the first photon was in some weird quantum state, where it can&#39;t be said to have struck the atoms or not, the second photon will be both extra-delayed and not extra-delayed at the same time. The cavity would thus serve as a quantum switch, the fundamental building block of a quantum computer.&lt;/p&gt;  &lt;p style=&quot;&quot;&gt;&lt;strong&gt;Counting photons&lt;/strong&gt;&lt;br /&gt;Currently, the extra delay is not quite long enough that delayed and extra-delayed photons can be entirely distinguished, but if the researchers can increase its duration, the switch could have other uses as well. Many potential applications of quantum optics, such as quantum cryptography, quantum communication, and quantum-enhanced imaging, require photons that are emitted in definite numbers&amp;mdash;usually one or two. But the most practical method of emitting small numbers of photons&amp;mdash;a very weak laser&amp;mdash;can promise only an average of one photon at a time: There might sometimes be two, or three, or none. The CUA researchers&#39; switch could be tailored to separate photons into groups of one, two, or three and route them onto different paths.&lt;/p&gt;  &lt;p style=&quot;&quot;&gt;Because the switch allows the state of one photon to determine that of another, it could also serve as an amplifier in a quantum Internet, increasing the strength of an optical signal without knocking the individual photons out of superposition. By the same token, it could serve as a probe that detects photons without knocking them out of superposition, improving the efficiency of quantum computation.&lt;/p&gt;  &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://b-giar.blogspot.com/feeds/6063307623209229004/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://b-giar.blogspot.com/2011/09/quantum-computing-with-light.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8953490625351031216/posts/default/6063307623209229004'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8953490625351031216/posts/default/6063307623209229004'/><link rel='alternate' type='text/html' href='http://b-giar.blogspot.com/2011/09/quantum-computing-with-light.html' title='Quantum computing with light'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/01359356128419832182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8953490625351031216.post-708450589800367978</id><published>2011-09-06T22:24:00.002+03:00</published><updated>2011-09-06T22:56:52.706+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Academic stuff"/><category scheme="http://www.blogger.com/atom/ns#" term="Advance Computing"/><category scheme="http://www.blogger.com/atom/ns#" term="Programming"/><category scheme="http://www.blogger.com/atom/ns#" term="Web Dev Stuff"/><title type='text'>Why Golden Ratio Matter&amp;#39;s Computer Science</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;div class=&quot;posterous_autopost&quot;&gt;&lt;span style=&quot;font-family: Times; font-size: medium;&quot;&gt;  &lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;background-color: white; color: black; font-family: Arial, Helvetica, sans-serif; font-size: 13px; margin: 8px;&quot;&gt;&lt;div class=&quot;p1&quot;&gt;&lt;span style=&quot;font-size: xx-small;&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;Author: Evangelos Pappas – evalon.gr&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;p2&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Golden ratio is a mathematic constant that is often used to describe the perfect symmetry. This value is being implemented in a various ways and sciences. It is inspired by nature and so it creates the illusion of the beauty. Though it is scientific improved computer scientist has barely implement this ratio, and when its done it doesn’t follows exactly the symmetry as it should. As it follows this theory will be barely described as an implementation in a web application. At this point it should be mentioned that the pages that follows are not a tutorial rather than an article.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;p3&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;p4&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;strong&gt;Introduction&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;p3&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;p5&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;As a Scientist fetish I love mathematics. Maybe I&#39;m not a Mathematician or a Physicist, though mathematics has found numerous applications in Computer Science. As mathematics are all around us as computer algorithms are also. Problems in every day life can be described in an algorithmic way resulting a more optimized way of achieving them.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;p5&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Now what is the golden ratio and what does it have to do with all this science? The answer is simple.&amp;nbsp;This number, which is represented by the Greek letter Phi (Φ), has inspire nature in many ways such as biology, mechanics and architecture. It basically represents the perfect symmetry in many ways. That symmetry results the beauty or as I like to call it “beauty Simplicity”, it achieves its beauty by simple generating symmetric descendants.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;p5&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;I have seen this number’s value applications variant from 1.61 to 1.63 though its accepted form is at ~1.618. Moreover, Golden ratio is usually messed with Fibonacci’s sequence. This sequence should be already known to most of you, though if you haven’t heard of this ( then you must be at the first year of B.Sc. of CS or a non-related-computer-scientist at all&amp;nbsp;&lt;span class=&quot;s1&quot;&gt;J&lt;/span&gt;&amp;nbsp;) then go to&amp;nbsp;&lt;a href=&quot;http://en.wikipedia.org/wiki/Fibonnacci_sequence&quot;&gt;&lt;span class=&quot;s2&quot;&gt;Wikipedia&lt;/span&gt;&lt;/a&gt;&amp;nbsp;article which cover it pretty well.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;p6&quot; style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;img alt=&quot; \frac{a+b}{a} = \frac{a}{b} \equiv \varphi\,.&quot; src=&quot;http://upload.wikimedia.org/math/b/2/7/b2712d8ae5598f7d8b7c115d2b31cdfb.png&quot; style=&quot;border-color: initial;&quot; /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;p7&quot; style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;Figure 1&lt;/span&gt;&amp;nbsp;This equation explains how the golden ratio is resulted by the generation of the new element which depends from its previous (from&amp;nbsp;&lt;a href=&quot;http://en.wikipedia.org/wiki/Golden_ratio&quot;&gt;&lt;span class=&quot;s2&quot;&gt;Wikipedia&lt;/span&gt;&lt;/a&gt;)&lt;span class=&quot;s3&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;p3&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;p4&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;strong&gt;Matters, Web&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;p5&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Web designing &amp;amp; developing maybe is one of the most fancy arcitectuall designing applications of Computer Science. Such applications that affect the most User’s Interaction and browsing. So the most critical part of these applications is the best architectuall design in order to be eye friendly and fast browsing.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;p5&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;I have been thinking and found that the best way to achieve somthing like that (a user &amp;amp; eye friendly enviroment) should mimic the nature. As nature is the most human friendly enviroment so computer applications should be.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;p5&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Now, enough with the much talk! How this could be implemented. The answer is still simple. It is already implemented. Many web-site aproach this implementation at its most of its percentance without knowing it. Though there were no theory explaining it why does this happen. Watch this layout:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;p6&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;p3&quot; style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;img alt=&quot;screen shot&quot; src=&quot;http://s1.postimage.org/qigv4tc4/screen_shot.jpg?noCache=1315336776&quot; style=&quot;border-color: initial;&quot; /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;p7&quot; style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;Figure 2&lt;/span&gt;&amp;nbsp;a simple example of web page layout that follows the described theory&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;p8&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;p5&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;By viewing this schema, its obvious the size’s expansion of each element comparing it with their near elements. By assuming that the “title” element is being divided in two, the next element, the “logo” has expand its both width &amp;amp; height size by the Golden ration.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;p5&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;A great schema that describes my theory is being publish at&amp;nbsp;&lt;a href=&quot;http://en.wikipedia.org/wiki/File:FibonacciBlocks.svg&quot;&gt;&lt;span class=&quot;s2&quot;&gt;Wikipedia&lt;/span&gt;&lt;/a&gt;&amp;nbsp;:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;p6&quot; style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://upload.wikimedia.org/wikipedia/commons/thumb/9/95/FibonacciBlocks.svg/180px-FibonacciBlocks.svg.png&quot; style=&quot;border-color: initial;&quot; /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;p7&quot; style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;Figure 3&lt;/span&gt;&amp;nbsp;a Shape representation of Fibonacci sequence. Shows aligned rectangles expanding their size according to the golden ratio&lt;span class=&quot;s3&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;p3&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;p3&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;p4&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;strong&gt;Matters, edges&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;p2&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;There is a trend in recent web developments that has expanded and inspires the web development community. I am referring to the edge rounding. A great example of what I am referring to is being described here:&amp;nbsp;&lt;a href=&quot;http://www.css3.info/preview/rounded-border/&quot;&gt;&lt;span class=&quot;s2&quot;&gt;http://www.css3.info/preview/rounded-border/&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;p2&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;As we, humans are used to like rounded things so in a Graphic environment in our computer we would like too. Imagining in the schema above ( figure 3 ) a string line that is drew from the corners of each rectangle then a snail shell like schema will be figured.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;p2&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;This new figure will follow the principles of the golden spiral or as most known as&amp;nbsp;&lt;a href=&quot;http://en.wikipedia.org/wiki/Logarithmic_spiral&quot;&gt;&lt;span class=&quot;s2&quot;&gt;Logarithmic spiral&lt;/span&gt;&lt;/a&gt;.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;p6&quot; style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://upload.wikimedia.org/wikipedia/commons/thumb/2/29/FakeRealLogSprial.svg/350px-FakeRealLogSprial.svg.png&quot; style=&quot;border-color: initial;&quot; /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;p7&quot; style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;Figure 4&lt;/span&gt;&amp;nbsp;The golden Spiral&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;p2&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;In web developing, in order to implement this in a block element we have to set its style. In order to keep the symmetry of our layout the “em” scalable unit will be used. “Em” unit generates the size of the described element according to the already set size of the inherited elements. So if we have set in our div a font size to 12px the 1em sets the size to the character to 12px.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;p2&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;The code that implements this rule to a block element follows:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;p9&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp; &amp;nbsp; webkit-border-radius: 0.81em 1.61em 2.59em 4.17em;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;p9&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp; &amp;nbsp; -moz-border-radius: 0.81em 1.61em 2.59em 4.17em;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;p9&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp; &amp;nbsp; border-radius: 0.81em 1.61em 2.59em 4.17em;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;p5&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;p10&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;p2&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;This theory should not be mentioned as radical rather than a notice to Computer Scientists. It does not prove something new or not even developed something really innovated. It just proposes a better statured layout that follows principles and theories of mathematics.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;p2&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Thank you very much for your interest and reading :)&amp;nbsp;.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;p3&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;p3&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;p3&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;p3&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;p3&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;p5&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;p5&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;p5&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span class=&quot;s4&quot; style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;
&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;p5&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;p3&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;p5&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;p3&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://b-giar.blogspot.com/feeds/708450589800367978/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://b-giar.blogspot.com/2011/09/why-golden-ratio-matter-computer.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8953490625351031216/posts/default/708450589800367978'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8953490625351031216/posts/default/708450589800367978'/><link rel='alternate' type='text/html' href='http://b-giar.blogspot.com/2011/09/why-golden-ratio-matter-computer.html' title='Why Golden Ratio Matter&amp;#39;s Computer Science'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/01359356128419832182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8953490625351031216.post-863685868990694767</id><published>2011-08-22T23:11:00.001+03:00</published><updated>2011-08-22T23:11:36.950+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Academic stuff"/><category scheme="http://www.blogger.com/atom/ns#" term="c\c++"/><category scheme="http://www.blogger.com/atom/ns#" term="Programming"/><title type='text'>Tip: C\C++ Logical Error on Division</title><content type='html'>&lt;div class=&#39;posterous_autopost&#39;&gt;&lt;p&gt;Logical errors are the worst nightmare, even for a senior programmer. As experience is gained such issues are getting more and more familiar to recognize and avoid them. Though tips should be always welcomed, especially for the newcomers.&lt;/p&gt;  &lt;p&gt;Enough with the much talk! take &amp;nbsp;good look at this:&lt;/p&gt;  &lt;div class=&quot;CodeRay&quot;&gt; &lt;div class=&quot;code&quot;&gt;&lt;pre&gt;void main() { float n=0; n=7/3; printf(&amp;quot;%f&amp;quot;, n); }&lt;/pre&gt;&lt;/div&gt; &lt;/div&gt;   &lt;p&gt;So what the printf() you think would print?&lt;/p&gt;  &lt;p&gt;The most of you expect something like 2.333..&lt;/p&gt;  &lt;p&gt;Though theory is pretty strict!&lt;/p&gt;  &lt;p&gt;Your Co. Sci. Teacher:&amp;nbsp;&lt;/p&gt;  &lt;blockquote class=&quot;posterous_short_quote&quot;&gt;  &lt;p&gt;&quot;You may not have a float result by dividing two integers, not even when the result is stored in a float variable.&quot;&lt;/p&gt;  &lt;/blockquote&gt;  &lt;p&gt;and so you should have printed: 2&lt;/p&gt;  &lt;p&gt;The reason of this failure lays to your integer/integer division.&amp;nbsp;&lt;/p&gt;  &lt;p&gt;So in order to&amp;nbsp;achieve&amp;nbsp;a float result, you should write:&lt;/p&gt;  &lt;div class=&quot;CodeRay&quot;&gt; &lt;div class=&quot;code&quot;&gt;&lt;pre&gt;void main() { float n=0; n=7.0/3.0; printf(&amp;quot;%f&amp;quot;, n); }&lt;/pre&gt;&lt;/div&gt; &lt;/div&gt;   &lt;p&gt;Always note:&lt;p /&gt;&amp;nbsp; &amp;nbsp; int/int == int&lt;br /&gt;&amp;nbsp; &amp;nbsp; float/int == float&lt;br /&gt;&amp;nbsp; &amp;nbsp; int/float == float&lt;br /&gt;&amp;nbsp; &amp;nbsp; float/float == float&lt;p /&gt;Have fun! :)&amp;nbsp;&lt;/p&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://b-giar.blogspot.com/feeds/863685868990694767/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://b-giar.blogspot.com/2011/08/tip-cc-logical-error-on-division.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8953490625351031216/posts/default/863685868990694767'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8953490625351031216/posts/default/863685868990694767'/><link rel='alternate' type='text/html' href='http://b-giar.blogspot.com/2011/08/tip-cc-logical-error-on-division.html' title='Tip: C\C++ Logical Error on Division'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/01359356128419832182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8953490625351031216.post-1116730031970977986</id><published>2011-08-02T10:42:00.001+03:00</published><updated>2011-08-02T10:42:10.544+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Advance Computing"/><category scheme="http://www.blogger.com/atom/ns#" term="Artificial Intelligence"/><category scheme="http://www.blogger.com/atom/ns#" term="Neural Networks"/><category scheme="http://www.blogger.com/atom/ns#" term="Programming"/><title type='text'>Hopfield nets can reconstruct distorted patterns and undo noise</title><content type='html'>&lt;div class=&#39;posterous_autopost&#39;&gt;&lt;p&gt;&lt;span style=&quot;font-family: arial, sans-serif; font-size: 12px;&quot;&gt;&lt;strong&gt;Summary:&lt;/strong&gt;&amp;nbsp; Hopfield nets are one of the easier neural net models to understand -- and they can be useful, too. The main ability of the Hopfield net is to undo noise and reconstruct known patterns. Python programmer Andrew Blais is your guide to learning more about Hopfield nets, and exploring his net.py application.&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style=&quot;font-family: arial, sans-serif;&quot;&gt;&lt;span style=&quot;font-size: 12px;&quot;&gt;&lt;span style=&quot;font-family: Times New Roman; font-size: medium;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;&lt;span style=&quot;font-family: Times New Roman; font-size: medium;&quot;&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;Hot things cool, obviously. The house gets messy, frustratingly. In much the same way, messages are distorted. Short-term strategies for reversing these things include, respectively, reheating, cleaning, and the Hopfield net. This article introduces you to the last of these three, an algorithm that can, within certain parameters, undo noise. A very simple Python implementation, net.py, will show you how its basic parts fit together, and why a Hopfield net can sometimes retrieve a pattern from its distortion. This implementation, while limited, will still enable you to perform a number of instructive and revealing experiments on the Hopfield net.&lt;/p&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;&lt;a name=&quot;N10052&quot;&gt;&lt;span class=&quot;atitle&quot; style=&quot;font-size: 1.5em; font-weight: bold;&quot;&gt;What is your quest?&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;I assume that you are reading this because you have some computational problem. You have been advised that some neural net algorithm might provide a solution. Specifically, the suggestion is that you might employ a Hopfield net. I suppose further that you need a precis of the idea so you can decide whether the suggestion is feasible and warrants more exploration. The following broadly sketched application of the Hopfield net may get you started solving your problem.&lt;/p&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;Your problem begins with a base set of patterns that are encoded with -1s and +1s. They can be encoded in 0s and +1s, if necessary. These patterns could be normalized binary images of postage stamps (see&amp;nbsp;&lt;a href=&quot;http://www.ibm.com/developerworks/library/l-neurnet/#resources&quot; style=&quot;color: #4c6e94;&quot;&gt;Resources&lt;/a&gt;). The next element is a set of patterns that deviate from this base. Your quest is to create code that inputs a deviant pattern and outputs just one base pattern. Your quest then would be an algorithm that can input an encoded representation of a particular stamp, and output just one base stamp pattern. You&#39;re not searching for certainty. There is an acceptable failure rate that does not adversely affect your enterprise. For you, there is a rate at which stamps can be misrecognized that doesn&#39;t significantly interfere with your project.&lt;/p&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;If this reminds you of your problem, the following might be the beginning of the development of your solution. By the end, you should be better able to answer the basic questions.&amp;nbsp;&lt;em&gt;What is this Hopfield thing? How does it work? What are its limitations? What can it do for me? Do I want to spend more time investigating this?&lt;/em&gt;&lt;/p&gt;  &lt;p class=&quot;ibm-ind-link ibm-back-to-top&quot; style=&quot;font-family: arial, sans-serif; font-size: 0.76em; clear: both; text-align: right; height: 15px; padding: 5px; margin: 0px;&quot;&gt;&amp;nbsp;&lt;/p&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;&lt;a name=&quot;N10067&quot;&gt;&lt;span class=&quot;atitle&quot; style=&quot;font-size: 1.5em; font-weight: bold;&quot;&gt;Patterns and their distortion&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;Let&#39;s begin with five arbitrary patterns patterns that will be distorted and subsequently retrieved. Visually, they can be represented as ten-by-ten matrices of black and white squares. Figure 1 shows the first pattern, p1.&lt;/p&gt;  &lt;p&gt;&lt;br /&gt;&lt;a name=&quot;N10072&quot;&gt;&lt;strong style=&quot;font-size: 0.76em; font-weight: bold; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-family: arial, sans-serif;&quot;&gt;Figure 1. Visual representation of p1&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;img src=&quot;http://www.ibm.com/developerworks/library/l-neurnet/fig1.jpg&quot; height=&quot;301&quot; alt=&quot;Visual representation of p1&quot; width=&quot;301&quot; style=&quot;padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px;&quot; /&gt;&amp;nbsp;&lt;/p&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;Clicking on any of&amp;nbsp;&lt;strong style=&quot;font-size: 1em; font-weight: bold;&quot;&gt;p2&lt;/strong&gt;&amp;nbsp;through&amp;nbsp;&lt;strong style=&quot;font-size: 1em; font-weight: bold;&quot;&gt;p5&lt;/strong&gt;&amp;nbsp;in net.py displays the other patterns. For coding purposes, these five patterns are initially represented as Python lists. So, the first pattern, for example, is represented in Listing 1.&lt;/p&gt;  &lt;p&gt;&lt;br /&gt;&lt;a name=&quot;N1008A&quot;&gt;&lt;strong style=&quot;font-size: 0.76em; font-weight: bold; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-family: arial, sans-serif;&quot;&gt;Listing 1. Pattern p1&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;table border=&quot;0&quot; width=&quot;100%&quot;&gt;    &lt;tr&gt;  &lt;td class=&quot;code-outline&quot; style=&quot;font-family: arial, sans-serif; background-color: #f7f7f7 !important; padding-top: 2px; padding-right: 2px; padding-bottom: 5px; padding-left: 2px; font-size: 0.75em; border: 1px solid #cccccc;&quot;&gt;  &lt;div class=&quot;CodeRay&quot;&gt; &lt;div class=&quot;code&quot;&gt;&lt;pre&gt;p1 = [ [1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [-1, -1, -1, -1, -1, -1, -1, -1, 1, 1], [-1, -1, -1, -1, -1, -1, -1, -1, 1, 1], [-1, -1, -1, -1, -1, -1, -1, -1, 1, 1], [-1, -1, -1, -1, -1, -1, -1, -1, 1, 1], [-1, -1, -1, -1, -1, -1, -1, -1, 1, 1], [-1, -1, -1, -1, -1, -1, -1, -1, 1, 1], [-1, -1, -1, -1, -1, -1, -1, -1, 1, 1], [-1, -1, -1, -1, -1, -1, -1, -1, 1, 1], [-1, -1, -1, -1, -1, -1, -1, -1, 1, 1] ]&lt;/pre&gt;&lt;/div&gt; &lt;/div&gt;   &lt;/td&gt;  &lt;/tr&gt;    &lt;/table&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;&lt;span style=&quot;font-family: Times New Roman; font-size: medium;&quot;&gt;&lt;br /&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;Black and white squares correspond to -1 and +1, respectively. Such a list is subsequently converted into an array. (See&lt;a href=&quot;http://www.ibm.com/developerworks/library/l-neurnet/#resources&quot; style=&quot;color: #4c6e94;&quot;&gt;Resources&lt;/a&gt;&amp;nbsp;for references to the Python libraries that I utilized.) For each element in such a pattern, a -1 or +1, there is a node object in an array of nodes.&lt;/p&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;A node object has three central attributes:&lt;/p&gt;  &lt;ul style=&quot;margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-right: 5px; padding-bottom: 5px; font-size: 0.76em;&quot;&gt;  &lt;li style=&quot;font-family: arial, sans-serif; margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-right: 5px; padding-bottom: 3px;&quot;&gt;A node object has a value that is an element in the pattern.&lt;/li&gt;  &lt;li style=&quot;font-family: arial, sans-serif; margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-right: 5px; padding-bottom: 3px;&quot;&gt;A node also has an address, that is, the address of its position in an array.&lt;/li&gt;  &lt;li style=&quot;font-family: arial, sans-serif; margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-right: 5px; padding-bottom: 3px;&quot;&gt;Each node also has a color that makes it possible to display it.&lt;/li&gt;  &lt;/ul&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;As noted, one function of a Hopfield net is to undo noise. To implement this, there needs to be a way to introduce patter into a pattern. Clicking&amp;nbsp;&lt;strong style=&quot;font-size: 1em; font-weight: bold;&quot;&gt;Add Noise&lt;/strong&gt;&amp;nbsp;does precisely this. Adding noise to p1 produced Figure 2.&lt;/p&gt;  &lt;p&gt;&lt;br /&gt;&lt;a name=&quot;N100B2&quot;&gt;&lt;strong style=&quot;font-size: 0.76em; font-weight: bold; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-family: arial, sans-serif;&quot;&gt;Figure 2. A distortion of p1&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;img src=&quot;http://www.ibm.com/developerworks/library/l-neurnet/fig2.jpg&quot; height=&quot;301&quot; alt=&quot;Visual representation of p1&quot; width=&quot;301&quot; style=&quot;padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px;&quot; /&gt;&amp;nbsp;&lt;/p&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;To introduce noise into a pattern, the Hopfield net visits each address in the array of nodes. It then picks a random number in [0,1), that is, in the interval from zero inclusive to one exclusive. If the number is below some fixed level, the net changes the node&#39;s value and color, else it leaves it undisturbed. By default, this level is set to 0.20, and so there is a twenty percent probability that any given node will change its value and color. You can use the slider to vary this probability. At zero, there is no noise, and at one hundred, the node array is simply inverted. In between, there are all the other usual suspects. Each introduces a specific degree of noise into a pattern. Because the Hopfield net is an algorithm for undoing noise, it is able to input a distorted pattern such as the one in Figure 2 and then output its original in Figure 1.&lt;/p&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;Although sometimes obscured by bad exposition, the pertinent algorithms are fairly simple to implement. In what follows, I&#39;ll walk you through an implementation of the algorithm, and then I&#39;ll explain briefly why these algorithms can undo noise.&lt;/p&gt;  &lt;p class=&quot;ibm-ind-link ibm-back-to-top&quot; style=&quot;font-family: arial, sans-serif; font-size: 0.76em; clear: both; text-align: right; height: 15px; padding: 5px; margin: 0px;&quot;&gt;&amp;nbsp;&lt;/p&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;&lt;a name=&quot;N100C7&quot;&gt;&lt;span class=&quot;atitle&quot; style=&quot;font-size: 1.5em; font-weight: bold;&quot;&gt;Weights&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;As David Mertz and I wrote in a previous developerWorks article,&amp;nbsp;&lt;a href=&quot;http://www.ibm.com/developerworks/library/l-neural/&quot; style=&quot;color: #4c6e94;&quot;&gt;An introduction to neural nets&lt;/a&gt;, the human brain consists of about one hundred billion neurons, and each is, on average, connected to several thousand other neurons. Neurons both send and receive varying quantities of energy. An important feature of neurons is that they don&#39;t react immediately to the reception of energy. Instead, they sum their received energies, and they send their own quantities of energy to other neurons only when this sum has reached a certain critical threshold.&lt;/p&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;When the brain is learning, it is tempting to say that it is adjusting the number and strength of these connections. There is no doubt that this is an extreme simplification of the biological facts. Simplifications can be useful, especially when they serve as a model, in this case, for implementing cybernetic neural nets. The transition from the biological to the algorithmic is achieved by translating connections into weights. (A perceptron utilizes weights in a different and perhaps more intuitive way. Before you read on here, you might want to review&amp;nbsp;&lt;a href=&quot;http://www.ibm.com/developerworks/library/l-neural/&quot; style=&quot;color: #4c6e94;&quot;&gt;An introduction to neural nets&lt;/a&gt;.&lt;/p&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;A weight object primarily encapsulates a numerical value that represents the weight between one node and another. A weight object also possesses an address and a color. The address is its location in the weight array. The color is for visualization. Figure 3 is one possible visual representation of a weight array. Net.py (see&amp;nbsp;&lt;a href=&quot;http://www.ibm.com/developerworks/library/l-neurnet/#resources&quot; style=&quot;color: #4c6e94;&quot;&gt;Resources&lt;/a&gt;&amp;nbsp;for a link) keeps track of the lowest and greatest weights, and it will display a key to the numerical values of the colors in the weight display.&lt;/p&gt;  &lt;p&gt;&lt;br /&gt;&lt;a name=&quot;N100E4&quot;&gt;&lt;strong style=&quot;font-size: 0.76em; font-weight: bold; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-family: arial, sans-serif;&quot;&gt;Figure 3. One visual representation of a weight array&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;img src=&quot;http://www.ibm.com/developerworks/library/l-neurnet/fig3.jpg&quot; height=&quot;345&quot; alt=&quot;Figure 3. One visual representation of a weight array&quot; width=&quot;345&quot; style=&quot;padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px;&quot; /&gt;&amp;nbsp;&lt;/p&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;On each row of the weight array, there is a list of all the weights between one given node and all the others. The Hopfield net has two forms. One form of node has a weight to itself, and the other doesn&#39;t. Experimenting with this via net.py shows that when nodes aren&#39;t self-weighted, node arrays don&#39;t always reconstruct to themselves. Select the&amp;nbsp;&lt;strong style=&quot;font-size: 1em; font-weight: bold;&quot;&gt;No Self Weight&lt;/strong&gt;&amp;nbsp;option, and try reconstructing p3 or p5. There are one hundred nodes, and so there are ten thousand often redundant weights. When nodes are self-weighted, which is the default, then there are 5050 non-redundant weights, else there are just 4950.&lt;/p&gt;  &lt;p&gt;&lt;br /&gt;&lt;a name=&quot;N100FB&quot;&gt;&lt;strong style=&quot;font-size: 0.76em; font-weight: bold; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-family: arial, sans-serif;&quot;&gt;Figure 4. The genesis of a weight&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;img src=&quot;http://www.ibm.com/developerworks/library/l-neurnet/fig4.gif&quot; height=&quot;300&quot; alt=&quot;Figure 4. The genesis of a weight&quot; width=&quot;420&quot; style=&quot;padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px;&quot; /&gt;&amp;nbsp;&lt;p /&gt;&lt;a name=&quot;N1010A&quot;&gt;&lt;strong style=&quot;font-size: 0.76em; font-weight: bold; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-family: arial, sans-serif;&quot;&gt;Listing 2. Weight generation algorithm&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;table border=&quot;0&quot; width=&quot;100%&quot;&gt;    &lt;tr&gt;  &lt;td class=&quot;code-outline&quot; style=&quot;font-family: arial, sans-serif; background-color: #f7f7f7 !important; padding-top: 2px; padding-right: 2px; padding-bottom: 5px; padding-left: 2px; font-size: 0.75em; border: 1px solid #cccccc;&quot;&gt;  &lt;div class=&quot;CodeRay&quot;&gt; &lt;div class=&quot;code&quot;&gt;&lt;pre&gt;PAT = { x: x is a RxC pattern } WA = { x: x is a (R*C)x(R*C) weight array }  For all (i,j) and (a,b) in the range of R and C: SUM = 0 For p in PAT: SUM += p(i,j) * p(a,b) WA( (R*i)+j, (C*a)+b ) = SUM&lt;/pre&gt;&lt;/div&gt; &lt;/div&gt;   &lt;/td&gt;  &lt;/tr&gt;    &lt;/table&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;&lt;span style=&quot;font-family: Times New Roman; font-size: medium;&quot;&gt;&lt;br /&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;The biologically inspired concept that underlies the Hopfield net was explored in 1949 by Donald Hebb. He conjectured that if a pair of nodes are simultaneously sending their energy to one another, then the weight between them is greater than if just one sent its energy. He wrote, &quot;When an axon of cell A is near enough to excite B and repeatedly or persistently takes part in firing it, some growth process or metabolic change takes place in one or both cells such that A&#39;s efficiency, as one of the cells firing B, is increased&quot; (see&amp;nbsp;&lt;a href=&quot;http://www.ibm.com/developerworks/library/l-neurnet/#resources&quot; style=&quot;color: #4c6e94;&quot;&gt;Resources&lt;/a&gt;&amp;nbsp;for details). In terms of the Hopfield net, when a pair of nodes has the same value, in other words, -1 or +1, the weight between them is stronger. The sum of the products of the values of all possible node pairs determines the content of the weight array. When they are the same, their product is positive and the sum is increased. In the case of different values, this sum is decreased.&lt;/p&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;Where, more specifically, do weights come from? To begin with, the Hopfield net must have access to a library or set of basic patterns. Here, these are p1 through p5. A weight&#39;s genesis begins with the Hopfield net choosing a pair of coordinates within the bounds of a basic pattern matrix. It then visits the corresponding nodes in each pattern. At each stop, it augments an ongoing sum with the product of the values of the nodes (see Figure 4). When the net has visited each pattern, it sets the value of a weight object to this sum. Given a pair of nodes at (i,j) and (a,b), it sets the value of the weight object at (i*10+j,a*10+b) in the weight array.&lt;/p&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;That is how the array of weights is constructed, but how does it function in the larger Hopfield algorithm? How does it function in pattern reconstruction?&lt;/p&gt;  &lt;p class=&quot;ibm-ind-link ibm-back-to-top&quot; style=&quot;font-family: arial, sans-serif; font-size: 0.76em; clear: both; text-align: right; height: 15px; padding: 5px; margin: 0px;&quot;&gt;&amp;nbsp;&lt;/p&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;&lt;a name=&quot;N10121&quot;&gt;&lt;span class=&quot;atitle&quot; style=&quot;font-size: 1.5em; font-weight: bold;&quot;&gt;Reconstruction&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;With a weight array and a distorted or noisy pattern in hand, the Hopfield net can sometimes output the original pattern. There are no guarantees, but the net is right a surprising percent of the time. It can do this either synchronously or asynchronously.&lt;/p&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;To do this asynchronously, the net traverses the distorted pattern, and at each node, N, it asks whether N&#39;s value should be set to -1 or +1.&lt;/p&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;To ascertain this, the net traverses the row in the weight array that contains all of the weights between N and the other nodes. Keep in mind that nodes may or may not be self-weighted.&lt;/p&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;At each stop in this second traversal, it forms the product of (1) the weight between N and the other node and (2) the value of the other node. As you&#39;d expect, the net keeps an ongoing tally of these products.&lt;/p&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;Now, the net is in a position to decide. In the present implementation at least, if this sum is less than zero, the net sets the node to -1, and if it is greater than or equal to zero, the net sets the node to +1.&lt;/p&gt;  &lt;p&gt;&lt;br /&gt;&lt;a name=&quot;N10138&quot;&gt;&lt;strong style=&quot;font-size: 0.76em; font-weight: bold; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-family: arial, sans-serif;&quot;&gt;Figure 5. Reconstruction: No node left behind&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;img src=&quot;http://www.ibm.com/developerworks/library/l-neurnet/fig5.gif&quot; height=&quot;195&quot; alt=&quot;Figure 5. Reconstruction: No node left behind&quot; width=&quot;369&quot; style=&quot;padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px;&quot; /&gt;&amp;nbsp;&lt;p /&gt;&lt;a name=&quot;N10147&quot;&gt;&lt;strong style=&quot;font-size: 0.76em; font-weight: bold; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-family: arial, sans-serif;&quot;&gt;Listing 3. Reconstruction&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;table border=&quot;0&quot; width=&quot;100%&quot;&gt;    &lt;tr&gt;  &lt;td class=&quot;code-outline&quot; style=&quot;font-family: arial, sans-serif; background-color: #f7f7f7 !important; padding-top: 2px; padding-right: 2px; padding-bottom: 5px; padding-left: 2px; font-size: 0.75em; border: 1px solid #cccccc;&quot;&gt;  &lt;div class=&quot;CodeRay&quot;&gt; &lt;div class=&quot;code&quot;&gt;&lt;pre&gt;For every node, N, in pattern P. SUM = 0 For every node, A, in P: W = weight between N and A V = value of A SUM += W * V if SUM &amp;lt; 0: set N&#39;s value to -1 else: set N&#39;s value to +1&lt;/pre&gt;&lt;/div&gt; &lt;/div&gt;   &lt;/td&gt;  &lt;/tr&gt;    &lt;/table&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;&lt;span style=&quot;font-family: Times New Roman; font-size: medium;&quot;&gt;&lt;br /&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;The default update is asynchronous, because the net sets a node&#39;s value just after it decides what this value should be. It would be synchronous if the net set the values of the nodes after it had made all of its decisions. In this case, it would store its decisions, and then update the array of nodes after its last decision. In net.py (see&amp;nbsp;&lt;a href=&quot;http://www.ibm.com/developerworks/library/l-neurnet/#resources&quot; style=&quot;color: #4c6e94;&quot;&gt;Resources&lt;/a&gt;), reconstruction is, by default, asynchronous, but note the option for&amp;nbsp;&lt;em&gt;synchronous reconstruction&lt;/em&gt;.&lt;/p&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;When you experiment with net.py, and when reconstruction is successful, the Hopfield net&#39;s behavior startles. One such behavior is that even when the weight array is severely degraded, it can reconstruct patterns. My simple implementation&#39;s Degrade Weights traverses the weight array and randomly sets weights to zero. Displaying the weight array provides one view of the extent of the damage. Correct reconstruction illustrates here that a Hopfield net can be far more fault-tolerant than the brain. How does it work? The mathematical story is not short. Here instead is a plot summary.&lt;/p&gt;  &lt;p class=&quot;ibm-ind-link ibm-back-to-top&quot; style=&quot;font-family: arial, sans-serif; font-size: 0.76em; clear: both; text-align: right; height: 15px; padding: 5px; margin: 0px;&quot;&gt;&amp;nbsp;&lt;/p&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;&lt;a name=&quot;N1015E&quot;&gt;&lt;span class=&quot;atitle&quot; style=&quot;font-size: 1.5em; font-weight: bold;&quot;&gt;What goes on&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;The algorithmic details of the Hopfield net suggest why it can sometimes undo noise. As is often true in algorithm analysis, the devil is in the mathematical details. In the present case, these are difficult to picture or imagine. There are, fortunately, some closely related phenomena whose analysis sheds light on the workings of the Hopfield net.&lt;/p&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;When a marble drops into a simply curved bowl, it rolls to the lowest point. The bowl&#39;s curvature is like a rule that inputs the marble&#39;s entry point and returns the lowest point, the bottom of the bowl. A more complicated curvature would be like a function that inputs an entry point and returns one of several local lowest points.&lt;/p&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;Energy is an essential part of these simple phenomena. In both the simple and complicated cases, the entering marble has a certain degree of energy. Over time, this energy decreases. Eventually, it reaches a stable state in which it can&#39;t diminish any further. In the complicated case, there may be a lower energy level, but the marble can&#39;t reach it.&lt;/p&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;Analogously, a pattern, distorted or not, can be thought of as having a certain degree of energy. So, patterns p1 through p5 have energy levels.&lt;/p&gt;  &lt;div class=&quot;ibm-container ibm-alt-header dw-container-sidebar&quot; style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 1.2em; margin-left: 10px; float: right;&quot;&gt;  &lt;h2&gt;Pattern energy levels&lt;/h2&gt;  &lt;/div&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;table border=&quot;0&quot; width=&quot;100%&quot; style=&quot;padding-top: 0px; padding-right: 5px; padding-bottom: 0px; padding-left: 5px;&quot;&gt;    &lt;tr valign=&quot;top&quot;&gt;  &lt;td style=&quot;font-family: arial, sans-serif; font-size: 0.75em;&quot;&gt;&lt;strong style=&quot;font-size: 1em; font-weight: bold;&quot;&gt;Pattern&lt;/strong&gt;&lt;/td&gt;  &lt;td style=&quot;font-family: arial, sans-serif; font-size: 0.75em;&quot;&gt;&lt;strong style=&quot;font-size: 1em; font-weight: bold;&quot;&gt;Energy&lt;/strong&gt;&lt;/td&gt;  &lt;td style=&quot;font-family: arial, sans-serif; font-size: 0.75em;&quot;&gt;&lt;strong style=&quot;font-size: 1em; font-weight: bold;&quot;&gt;Rank&lt;/strong&gt;&lt;/td&gt;  &lt;/tr&gt;  &lt;tr valign=&quot;top&quot;&gt;  &lt;td style=&quot;font-family: arial, sans-serif; font-size: 0.75em;&quot;&gt;p1&lt;/td&gt;  &lt;td style=&quot;font-family: arial, sans-serif; font-size: 0.75em;&quot;&gt;-9600.0&lt;/td&gt;  &lt;td style=&quot;font-family: arial, sans-serif; font-size: 0.75em;&quot;&gt;1&lt;/td&gt;  &lt;/tr&gt;  &lt;tr valign=&quot;top&quot;&gt;  &lt;td style=&quot;font-family: arial, sans-serif; font-size: 0.75em;&quot;&gt;p2&lt;/td&gt;  &lt;td style=&quot;font-family: arial, sans-serif; font-size: 0.75em;&quot;&gt;-7104.0&lt;/td&gt;  &lt;td style=&quot;font-family: arial, sans-serif; font-size: 0.75em;&quot;&gt;3&lt;/td&gt;  &lt;/tr&gt;  &lt;tr valign=&quot;top&quot;&gt;  &lt;td style=&quot;font-family: arial, sans-serif; font-size: 0.75em;&quot;&gt;p3&lt;/td&gt;  &lt;td style=&quot;font-family: arial, sans-serif; font-size: 0.75em;&quot;&gt;-6848.0&lt;/td&gt;  &lt;td style=&quot;font-family: arial, sans-serif; font-size: 0.75em;&quot;&gt;4&lt;/td&gt;  &lt;/tr&gt;  &lt;tr valign=&quot;top&quot;&gt;  &lt;td style=&quot;font-family: arial, sans-serif; font-size: 0.75em;&quot;&gt;p4&lt;/td&gt;  &lt;td style=&quot;font-family: arial, sans-serif; font-size: 0.75em;&quot;&gt;-9472.0&lt;/td&gt;  &lt;td style=&quot;font-family: arial, sans-serif; font-size: 0.75em;&quot;&gt;2&lt;/td&gt;  &lt;/tr&gt;  &lt;tr valign=&quot;top&quot;&gt;  &lt;td style=&quot;font-family: arial, sans-serif; font-size: 0.75em;&quot;&gt;p5&lt;/td&gt;  &lt;td style=&quot;font-family: arial, sans-serif; font-size: 0.75em;&quot;&gt;-6408.0&lt;/td&gt;  &lt;td style=&quot;font-family: arial, sans-serif; font-size: 0.75em;&quot;&gt;5&lt;/td&gt;  &lt;/tr&gt;    &lt;/table&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;&lt;span style=&quot;font-family: Times New Roman; font-size: medium;&quot;&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;The computation of a pattern&#39;s energy level is not complicated. For every possible pair of nodes, the Hopfield net calculates the product of their values and the weight between them. The pattern&#39;s energy level is the result of dividing the sum of these products by negative two.&amp;nbsp;&lt;a href=&quot;http://www.ibm.com/developerworks/library/l-neurnet/#resources&quot; style=&quot;color: #4c6e94;&quot;&gt;Net.py&lt;/a&gt;&amp;nbsp;displays the energy level of any given pattern or node array. As you reconstruct a pattern, I expect and hope that you will see the pattern&#39;s energy level decrease.&lt;/p&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;In reconstruction, the net&#39;s decision to flip a node is based on the sum of the products of the values of the other nodes and the weights between them. When the sum is less than zero, the node is set to -1, else it is set to +1. When the product of value and weight is positive, it contributes to pushing the sum above zero. But this pushes the net in the direction of deciding to set the node&#39;s value to +1. When this product is negative, the sum is pushed to or below zero. So, the net is pushed in the direction of setting the node&#39;s value to -1. The variation in weights introduces variation into the degree to and direction in which the net is pushed in making its decision. A pattern can be so distorted that the net isn&#39;t pushed in the direction of correct decisions. Positively put, the net can be pushed to a correct decision an impressively large percent of the time.&lt;/p&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;If you reconstruct any of the five patterns, you will see that each reconstructs to itself. This is as it should be, since each pattern already occupies a local lowest energy point. There is no reconstructive process that can lower the pattern&#39;s energy level. If you succeed in reconstructing a distorted pattern, the Hopfield has reduced the pattern&#39;s energy level to the level of one of the patterns. When it fails, it has reduced the distorted pattern&#39;s energy level to a spurious local low point. In either case, the energy level cannot be reduced any further. In has, in other words, reached a stable state. Describing the Hopfield net in terms of energy has an interesting and important consequence. On this basis, it can be mathematically established that repeated application of the reconstruction algorithm will eventually result in a stable pattern. (See&amp;nbsp;&lt;a href=&quot;http://www.ibm.com/developerworks/library/l-neurnet/#resources&quot; style=&quot;color: #4c6e94;&quot;&gt;Resources&lt;/a&gt;&amp;nbsp;for details.)&lt;/p&gt;  &lt;p class=&quot;ibm-ind-link ibm-back-to-top&quot; style=&quot;font-family: arial, sans-serif; font-size: 0.76em; clear: both; text-align: right; height: 15px; padding: 5px; margin: 0px;&quot;&gt;&lt;a href=&quot;http://www.ibm.com/developerworks/library/l-neurnet/#ibm-pcon&quot; class=&quot;ibm-anchor-up-link&quot;&gt;Back to top&lt;/a&gt;&lt;/p&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;&lt;a name=&quot;N101D7&quot;&gt;&lt;span class=&quot;atitle&quot; style=&quot;font-size: 1.5em; font-weight: bold;&quot;&gt;Summary&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;You should be aware of the limitations on Hopfield nets. An obvious already-cited limitation is that its patterns must be encodable in an array of either -1s and +1s, or 0s and +1s. You already know that a Hopfield can stabilize at a spurious local low. This more significant limitation is that the probability that the net will stabilize at some spurious local low increases when the number of patterns exceeds approximately 14 percent of the number of nodes in the node array. In other words, for each additional base pattern, there must be about 7 more nodes. Despite such limitations, the pattern reconstruction discussed here may serve as an illustrative guide to resolving your particular computing problem. You now have the precis of the Hopfield algorithm initially promised. Should it address your requirements, you now know the superstructure of forging your own implementations. This includes the algorithms for computing a weight array, the way to reconstruct distorted patterns, and the algorithm for computing a pattern&#39;s energy level.&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;&lt;a name=&quot;resources&quot;&gt;&lt;span class=&quot;atitle&quot; style=&quot;font-size: 1.5em; font-weight: bold;&quot;&gt;Resources&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;  &lt;ul style=&quot;margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-right: 5px; padding-bottom: 5px; font-size: 0.76em;&quot;&gt;  &lt;li style=&quot;font-family: arial, sans-serif; margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-right: 5px; padding-bottom: 3px;&quot;&gt;Download the&amp;nbsp;&lt;a href=&quot;https://sourceforge.net/projects/neuralnetlab/&quot; style=&quot;color: #4c6e94;&quot;&gt;Net.py source code&lt;/a&gt;&amp;nbsp;from SourceForge.&lt;p /&gt;&lt;/li&gt;  &lt;li style=&quot;font-family: arial, sans-serif; margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-right: 5px; padding-bottom: 3px;&quot;&gt;Andrew implemented the Hopfield net in&amp;nbsp;&lt;a href=&quot;http://www.python.org/&quot; style=&quot;color: #4c6e94;&quot;&gt;Python&lt;/a&gt;&amp;nbsp;using the&amp;nbsp;&lt;a href=&quot;http://www.python.org/topics/tkinter/&quot; style=&quot;color: #4c6e94;&quot;&gt;Tkinter&lt;/a&gt;&amp;nbsp;and&amp;nbsp;&lt;a href=&quot;http://sourceforge.net/projects/numpy&quot; style=&quot;color: #4c6e94;&quot;&gt;Numeric&lt;/a&gt;&amp;nbsp;libraries. Python lets you focus on algorithms by removing the need to focus on arcane and Byzantine syntax.&lt;p /&gt;&lt;/li&gt;  &lt;li style=&quot;font-family: arial, sans-serif; margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-right: 5px; padding-bottom: 3px;&quot;&gt;Andrew Blais and David Mertz wrote an introductory article,&amp;nbsp;&lt;a href=&quot;http://www.ibm.com/developerworks/linux/library/l-neural/&quot; style=&quot;color: #4c6e94;&quot;&gt;An introduction to neural networks&lt;/a&gt;&amp;nbsp;(developerWorks, July 2001), that focuses on the perceptron.&amp;nbsp;&lt;a href=&quot;http://www.cs.dartmouth.edu/~brd/Teaching/AI/Lectures/NN/clark.html&quot; style=&quot;color: #4c6e94;&quot;&gt;David W. Clark&#39;s paper of the same name&lt;/a&gt;&amp;nbsp;includes a table comparing neural networks with digital computers. See also&amp;nbsp;&lt;a href=&quot;http://en.wikipedia.org/wiki/Neural_network&quot; style=&quot;color: #4c6e94;&quot;&gt;the Wikipedia Neural network article&lt;/a&gt;.&amp;nbsp;&lt;p /&gt;&lt;/li&gt;  &lt;li style=&quot;font-family: arial, sans-serif; margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-right: 5px; padding-bottom: 3px;&quot;&gt;Consult&amp;nbsp;&lt;a href=&quot;http://www.attrasoft.com/&quot; style=&quot;color: #4c6e94;&quot;&gt;Attrasoft&lt;/a&gt;&amp;nbsp;on&amp;nbsp;&lt;a href=&quot;http://www.attrasoft.com/imagefinder42/postage.html&quot; style=&quot;color: #4c6e94;&quot;&gt;stamp classification&lt;/a&gt;&amp;nbsp;and&amp;nbsp;&lt;a href=&quot;http://attrasoft.com/imagefinder42/stamp.html&quot; style=&quot;color: #4c6e94;&quot;&gt;stamp recognition&lt;/a&gt;. For&amp;nbsp;&lt;a href=&quot;http://www.boomahtrix.btinternet.co.uk/mainsite/ds.htm&quot; style=&quot;color: #4c6e94;&quot;&gt;fingerprint recognition&lt;/a&gt;, see the design study by Nick D&#39;Arcy. For the use of&amp;nbsp;&lt;a href=&quot;http://www.csd.abdn.ac.uk/~tnordlan/Publications/Artificial_Intelligence_in_Business.pdf&quot; style=&quot;color: #4c6e94;&quot;&gt;artificial intelligence in business&lt;/a&gt;&amp;nbsp;(PDF document), see the study by Tomas Nordlander.&amp;nbsp;&lt;p /&gt;&lt;/li&gt;  &lt;li style=&quot;font-family: arial, sans-serif; margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-right: 5px; padding-bottom: 3px;&quot;&gt;&lt;a href=&quot;http://documents.wolfram.com/applications/neuralnetworks/NeuralNetworkTheory/2.7.0.html&quot; style=&quot;color: #4c6e94;&quot;&gt;Neural Networks Documentation&lt;/a&gt;&amp;nbsp;from Wolfram Research gives background on Hopfield and Hopfield nets; clicking through to&amp;nbsp;&lt;a href=&quot;http://documents.wolfram.com/applications/neuralnetworks/HopfieldNetworks/9.2.0.html&quot; style=&quot;color: #4c6e94;&quot;&gt;Section 9.2&lt;/a&gt;&amp;nbsp;at the end of the document (and then clicking the Next button) leads you to an interesting discussion of using Hopfield for character recognition. Or just see&amp;nbsp;&lt;a href=&quot;http://richardbowles.tripod.com/neural/hopfield/hopfield.htm&quot; style=&quot;color: #4c6e94;&quot;&gt;the Hopfield Net entry&lt;/a&gt;&amp;nbsp;in&amp;nbsp;&lt;a href=&quot;http://richardbowles.tripod.com/neural/neural.htm&quot; style=&quot;color: #4c6e94;&quot;&gt;An Idiot&#39;s Guide to Neural Networks&lt;/a&gt;.&amp;nbsp;&lt;p /&gt;&lt;/li&gt;  &lt;li style=&quot;font-family: arial, sans-serif; margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-right: 5px; padding-bottom: 3px;&quot;&gt;The biologically inspired concept that underlies the Hopfield net was explored in 1949 by&amp;nbsp;&lt;a href=&quot;http://en.wikipedia.org/wiki/Donald_Olding_Hebb&quot; style=&quot;color: #4c6e94;&quot;&gt;Donald Hebb&lt;/a&gt;. See also&amp;nbsp;&lt;a href=&quot;http://www.cpa.ca/Psynopsis/special_eng.html&quot; style=&quot;color: #4c6e94;&quot;&gt;The Hebb Legacy&lt;/a&gt;&amp;nbsp;(&lt;em&gt;Canadian Journal of Experimental Psychology&lt;/em&gt;). The study of Donald Hebb&#39;s&amp;nbsp;&lt;em&gt;The Organization of Behavior&lt;/em&gt;(Wiley, 1949) repays the required heavy lifting.&amp;nbsp;&lt;p /&gt;&lt;/li&gt;  &lt;li style=&quot;font-family: arial, sans-serif; margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-right: 5px; padding-bottom: 3px;&quot;&gt;You can read&amp;nbsp;&lt;a href=&quot;http://neuron.princeton.edu/~john/&quot; style=&quot;color: #4c6e94;&quot;&gt;JJ Hopfield&lt;/a&gt;&#39;s 1982 paper,&amp;nbsp;&lt;a href=&quot;http://www.pubmedcentral.nih.gov/articlerender.fcgi?artid=346238&quot; style=&quot;color: #4c6e94;&quot;&gt;Neural networks and physical systems with emergent collective computational abilities&lt;/a&gt;&amp;nbsp;(&lt;em&gt;Proceedings of the National Academy of Sciences of the United States of America&lt;/em&gt;, 1982) online in PDF format. You can also see&amp;nbsp;&lt;a href=&quot;http://www.princeton.edu/~psych/PsychSite/ns_hopfield.html&quot; style=&quot;color: #4c6e94;&quot;&gt;what interests Professor Hopfield today&lt;/a&gt;.&amp;nbsp;&lt;p /&gt;&lt;/li&gt;  &lt;li style=&quot;font-family: arial, sans-serif; margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-right: 5px; padding-bottom: 3px;&quot;&gt;Begin your excursion into the mathematics of the Hopfield net with these resources:   &lt;ul style=&quot;margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-right: 5px; padding-bottom: 5px; font-size: 1em;&quot;&gt;  &lt;li style=&quot;font-family: arial, sans-serif; margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-right: 5px; padding-bottom: 3px;&quot;&gt;Kevin Gurney&#39;s excellent&amp;nbsp;&lt;a href=&quot;https://ecommerce.tandf.co.uk/catalogue/DetailedDisplay.asp?ISBN=1857286731&amp;amp;ResourceCentre=SEARCH&amp;amp;RedirectPage=PerformSearch%2Easp&amp;amp;curpage=1&quot; style=&quot;color: #4c6e94;&quot;&gt;&lt;em&gt;An Introduction to Neural Networks&lt;/em&gt;&lt;/a&gt;&amp;nbsp;(Routledge, 1997) focuses on building the intuitions that underlay the mathematics. See Chapter 7 for a discussion of the proof that iterated application of the reconstruction algorithm results in a stable pattern. Also see&amp;nbsp;&lt;a href=&quot;http://www.shef.ac.uk/psychology/gurney/notes/contents.html&quot; style=&quot;color: #4c6e94;&quot;&gt;Neural Nets&lt;/a&gt;&amp;nbsp;for an early online version.&lt;/li&gt;  &lt;li style=&quot;font-family: arial, sans-serif; margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-right: 5px; padding-bottom: 3px;&quot;&gt;&lt;a href=&quot;http://isbndb.com/d/book/neural_computing.html&quot; style=&quot;color: #4c6e94;&quot;&gt;&lt;em&gt;Neural Computing: An Introduction&lt;/em&gt;&lt;/a&gt;&amp;nbsp;(Hilger, 1990), by R. Beal and T. Jackson, is also very good at developing your sense of what is going on in neural nets. In particular, see Chapter 6.&lt;/li&gt;  &lt;/ul&gt;  &lt;/li&gt;  &lt;/ul&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://b-giar.blogspot.com/feeds/1116730031970977986/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://b-giar.blogspot.com/2011/08/hopfield-nets-can-reconstruct-distorted.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8953490625351031216/posts/default/1116730031970977986'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8953490625351031216/posts/default/1116730031970977986'/><link rel='alternate' type='text/html' href='http://b-giar.blogspot.com/2011/08/hopfield-nets-can-reconstruct-distorted.html' title='Hopfield nets can reconstruct distorted patterns and undo noise'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/01359356128419832182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8953490625351031216.post-2182791175168852225</id><published>2011-08-02T10:38:00.001+03:00</published><updated>2011-08-02T10:38:34.384+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Advance Computing"/><category scheme="http://www.blogger.com/atom/ns#" term="Artificial Intelligence"/><category scheme="http://www.blogger.com/atom/ns#" term="Neural Networks"/><category scheme="http://www.blogger.com/atom/ns#" term="Programming"/><title type='text'>Pattern learning with the back-propagation algorithm</title><content type='html'>&lt;div class=&#39;posterous_autopost&#39;&gt;&lt;p&gt;&lt;span style=&quot;font-family: arial, sans-serif; font-size: 12px;&quot;&gt;&lt;strong&gt;Summary:&lt;/strong&gt;&amp;nbsp; Neural nets may be the future of computing. A good way to understand them is with a puzzle that neural nets can be used to solve. Suppose that you are given 500 characters of code that you know to be C, C++, Java, or Python. Now, construct a program that identifies the code&#39;s language. One solution is to construct a neural net that learns to identify these languages. This article discusses the basic features of neural nets and approaches to constructing them so you can apply them in your own coding.&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style=&quot;font-family: Times New Roman; font-size: medium;&quot;&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;According to a simplified account, the human brain consists of about ten billion neurons -- and a neuron is, on average, connected to several thousand other neurons. By way of these connections, neurons both send and receive varying quantities of energy. One very important feature of neurons is that they don&#39;t react immediately to the reception of energy. Instead, they sum their received energies, and they send their own quantities of energy to other neurons only when this sum has reached a certain critical threshold. The brain learns by adjusting the number and strength of these connections. Even though this picture is a simplification of the biological facts, it is sufficiently powerful to serve as a model for the neural net.&lt;/p&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;&lt;a name=&quot;h11965&quot;&gt;&lt;span class=&quot;atitle&quot; style=&quot;font-size: 1.5em; font-weight: bold;&quot;&gt;Threshold logic units (TLUs)&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;The first step toward understanding neural nets is to abstract from the biological neuron, and to focus on its character as a&lt;em&gt;threshold logic unit (TLU)&lt;/em&gt;. A TLU is an object that inputs an array of weighted quantities, sums them, and if this sum meets or surpasses some threshold, outputs a quantity. Let&#39;s label these features. First, there are the inputs and their weights: X&lt;sub&gt;1&lt;/sub&gt;,X&lt;sub&gt;2&lt;/sub&gt;, ..., X&lt;sub&gt;n&lt;/sub&gt;and W&lt;sub&gt;1&lt;/sub&gt;, W&lt;sub&gt;2&lt;/sub&gt;, ...,W&lt;sub&gt;n&lt;/sub&gt;. Then, there are the X&lt;sub&gt;i&lt;/sub&gt;*W&lt;sub&gt;i&lt;/sub&gt;&amp;nbsp;that are summed, which yields the activation level a, in other words:&lt;/p&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;&amp;Acirc;&amp;nbsp;a = (X1 * W1)+(X2 * W2)+...+(Xi * Wi)+...+ (Xn * Wn)&lt;/p&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;The threshold is called theta. Lastly, there is the output: y. When a &amp;gt;= theta, y=1, else y=0. Notice that the output doesn&#39;t need to be discontinuous, since it could also be determined by a squashing function, s (or sigma), whose argument is a, and whose value is between 0 and 1. Then, y=s(a).&lt;/p&gt;  &lt;p&gt;&lt;br /&gt;&lt;a name=&quot;4162&quot;&gt;&lt;strong style=&quot;font-size: 0.76em; font-weight: bold; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-family: arial, sans-serif;&quot;&gt;Figure 1. Threshold logic unit, with sigma function (top) and cutoff function (bottom)&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;img src=&quot;http://www.ibm.com/developerworks/library/l-neural/mp.gif&quot; border=&quot;0&quot; height=&quot;275&quot; alt=&quot;Threshhold Logic Unit&quot; width=&quot;300&quot; style=&quot;padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px;&quot; /&gt;&lt;/p&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;A TLU can classify. Imagine a TLU that has two inputs, whose weights equal 1, and whose theta equals 1.5. When this TLU inputs &amp;lt;0,0&amp;gt;, &amp;lt;0,1&amp;gt;, &amp;lt;1,0&amp;gt;, and &amp;lt;1,1&amp;gt;, it outputs 0, 0, 0, and 1 respectively. This TLU classifies these inputs into two groups: the 1 group and the 0 group. Insofar as a human brain that knows about logical conjunction (Boolean AND) would similarly classify logically conjoined sentences, this TLU knows something like logical conjunction.&lt;/p&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;This TLU has a geometric interpretation that clarifies what is happening. Its four possible inputs correspond to four points on a Cartesian graph. From X&lt;sub&gt;1&lt;/sub&gt;*W&lt;sub&gt;1&lt;/sub&gt;+ X&lt;sub&gt;2&lt;/sub&gt;*W&lt;sub&gt;2&lt;/sub&gt;&amp;nbsp;= theta, in other words, the point at which the TLU switches its classificatory behavior, it follows that X&lt;sub&gt;2&lt;/sub&gt;&amp;nbsp;= -X&lt;sub&gt;1&lt;/sub&gt;&amp;nbsp;+ 1.5. The graph of this equation cuts the four possible inputs into two spaces that correspond to the TLU&#39;s classifications. This is an instance of a more general principle about TLUs. In the case of a TLU with an arbitrary number of inputs, N, the set of possible inputs corresponds to a set of points in N-dimensional space. If these points can be cut by a hyperplane -- in other words, an N-dimensional geometric figure corresponding to the line in the above example -- then there is a set of weights and a threshold that define a TLU whose classifications match this cut.&lt;/p&gt;  &lt;p class=&quot;ibm-ind-link ibm-back-to-top&quot; style=&quot;font-family: arial, sans-serif; font-size: 0.76em; clear: both; text-align: right; height: 15px; padding: 5px; margin: 0px;&quot;&gt;&amp;nbsp;&lt;/p&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;&lt;a name=&quot;h14898&quot;&gt;&lt;span class=&quot;atitle&quot; style=&quot;font-size: 1.5em; font-weight: bold;&quot;&gt;How a TLU learns&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;Since TLUs can classify, they know stuff. Neural nets are also supposed to learn. Their learning mechanism is modeled on the brain&#39;s adjustments of its neural connections. A TLU learns by changing its weights and threshold. Actually, the weight-threshold distinction is somewhat arbitrary from a mathematical point of view. Recall that the critical point at which a TLU outputs 1 instead of 0 is when the SUM(Xi * Wi) &amp;gt;= theta. This is equivalent to saying that the critical point is when the SUM(X&lt;sub&gt;i&lt;/sub&gt;&amp;nbsp;* W&lt;sub&gt;i&lt;/sub&gt;)+ (-1 * theta) &amp;gt;= 0. So, it is possible to treat -1 as a constant input whose weight, theta, is adjusted in learning, or, to use the technical term,&lt;em&gt;training&lt;/em&gt;. In this case, y=1 when SUM(X&lt;sub&gt;i&lt;/sub&gt;&amp;nbsp;* W&lt;sub&gt;i&lt;/sub&gt;)+ (-1 * theta) &amp;gt;= 0, else y=0.&lt;/p&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;During training, a neural net inputs:&lt;/p&gt;  &lt;ol style=&quot;margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-right: 5px; padding-bottom: 5px; font-size: 0.76em;&quot;&gt;  &lt;li style=&quot;font-family: arial, sans-serif; margin-top: 0px; margin-bottom: 0px; padding-top: 5px; padding-right: 5px; padding-bottom: 3px;&quot;&gt;A series of examples of the items to be classified&lt;/li&gt;  &lt;li style=&quot;font-family: arial, sans-serif; margin-top: 0px; margin-bottom: 0px; padding-top: 5px; padding-right: 5px; padding-bottom: 3px;&quot;&gt;Their proper classifications or targets&lt;/li&gt;  &lt;/ol&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;Such input can be viewed as a vector: &amp;lt;X&lt;sub&gt;1&lt;/sub&gt;, X&lt;sub&gt;2&lt;/sub&gt;, ...,X&lt;sub&gt;n&lt;/sub&gt;, theta, t&amp;gt;, where t is the target or true classification. The neural net uses these to modify its weights, and it aims to match its classifications with the targets in the training set. More precisely, this is supervised training, as opposed to unsupervised training. The former is based on examples accompanied by targets, whereas the latter is based on statistical analysis (see&amp;nbsp;&lt;a href=&quot;http://www.ibm.com/developerworks/library/l-neural/#resources&quot; style=&quot;color: #4c6e94;&quot;&gt;Resources&lt;/a&gt;&amp;nbsp;later in this article). Weight modification follows a learning rule. One idealized learning algorithm goes something like this:&lt;/p&gt;  &lt;p&gt;&lt;br /&gt;&lt;a name=&quot;c1&quot;&gt;&lt;strong style=&quot;font-size: 0.76em; font-weight: bold; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-family: arial, sans-serif;&quot;&gt;Listing 1. Idealized learning algorithm&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;table border=&quot;0&quot; width=&quot;100%&quot;&gt;    &lt;tr&gt;  &lt;td class=&quot;code-outline&quot; style=&quot;font-family: arial, sans-serif; background-color: #f7f7f7 !important; padding-top: 2px; padding-right: 2px; padding-bottom: 5px; padding-left: 2px; font-size: 0.75em; border: 1px solid #cccccc;&quot;&gt;  &lt;div class=&quot;CodeRay&quot;&gt; &lt;div class=&quot;code&quot;&gt;&lt;pre&gt;fully_trained = FALSE DO UNTIL (fully_trained): fully_trained = TRUE FOR EACH training_vector = &amp;lt;X1, X2, ..., Xn, theta, target&amp;gt;:: # Weights compared to theta a = (X1 * W1)+(X2 * W2)+...+(Xn * Wn) - theta y = sigma(a) IF y != target: fully_trained = FALSE FOR EACH Wi: MODIFY_WEIGHT(Wi)                  # According to the training rule IF (fully_trained): BREAK&lt;/pre&gt;&lt;/div&gt; &lt;/div&gt;   &lt;/td&gt;  &lt;/tr&gt;    &lt;/table&gt;  &lt;p&gt;&lt;span style=&quot;font-family: Times New Roman; font-size: medium;&quot;&gt;&lt;br /&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;You&#39;re probably wondering, &quot;What training rule?&quot; There are many, but one plausible rule is based on the idea that weight and threshold modification should be determined by a fraction of (t - y). This is accomplished by introducing alpha (0 &amp;lt; alpha &amp;lt; 1), which is called the&amp;nbsp;&lt;em&gt;learning rate&lt;/em&gt;. The change in W&lt;sub&gt;i&lt;/sub&gt;&amp;nbsp;equals (alpha * (t - y) * Xi). When alpha is close to 0, the neural net will engage in more conservative weight modifications, and when it is close to 1, it will make more radical weight modifications. A neural net that uses this rule is known as a&amp;nbsp;&lt;em&gt;perceptron&lt;/em&gt;, and this rule is called the&amp;nbsp;&lt;em&gt;perceptron learning rule&lt;/em&gt;. One result about perceptrons, due to Rosenblatt, 1962 (see&amp;nbsp;&lt;a href=&quot;http://www.ibm.com/developerworks/library/l-neural/#resources&quot; style=&quot;color: #4c6e94;&quot;&gt;Resources&lt;/a&gt;), is that if a set of points in N-space is cut by a hyperplane, then the application of the perceptron training algorithm will eventually result in a weight distribution that defines a TLU whose hyperplane makes the wanted cut. Of course, to recall Keynes, eventually, we&#39;re all dead, but more than computational time is at stake, since we may want our neural net to make more than one cut in the space of possible inputs.&lt;/p&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;Our initial puzzle illustrates this. Suppose that you were given N characters of code that you knew to be either C, C++, Java, or Python. The puzzle is to construct a program that identifies the code&#39;s language. A TLU that could do this would need to make more than one cut in the space of possible inputs. It would need to cut this space into four regions, one for each language. This would be accomplished by training a neural net to make two cuts. One cut would divide the C/C++ from the Java/Python, and the other cut would divide the C/Java from the C++/Python. A net that could make these cuts could also identify the language of a source code sample. However, this requires our net to have a different structure. Before we describe this difference, let&#39;s briefly turn to practical considerations.&lt;/p&gt;  &lt;p&gt;&lt;br /&gt;&lt;a name=&quot;f2&quot;&gt;&lt;strong style=&quot;font-size: 0.76em; font-weight: bold; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-family: arial, sans-serif;&quot;&gt;Figure 2. Preliminary (and insufficient) Perceptron Learning Model&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;img src=&quot;http://www.ibm.com/developerworks/library/l-neural/lr.gif&quot; border=&quot;0&quot; height=&quot;300&quot; alt=&quot;&quot; width=&quot;430&quot; style=&quot;padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px;&quot; /&gt;&lt;/p&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;Considerations of computational time rule out taking N-character chunks of code, counting the frequency of the visible ASCII characters, 32 through 127, and training our neural net on the basis of these counts and target information about the code&#39;s language. Our way around this was to limit our character counts to the twenty most frequently occurring non-alphanumeric characters in a pool of C, C++, Java, and Python code. For reasons that concern the implementation of floating point arithmetic, we decided to train our net with these twenty counts divided by a normalizing factor. Clearly, one structural difference is that our net has twenty input nodes, but this should not be surprising, since our description has already suggested this possibility. A more interesting difference is a pair of intermediary nodes, N1 and N2, and an increase in the number of output nodes from two to four, O1-O4.&lt;/p&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;N1 would be trained so that upon seeing C or C++, it would set y1=1, and upon seeing Java or Python, it would set y1=0. N2 would be similarly trained. Upon seeing C or Java, N2 would set y2=1, and upon seeing C++ or Python, it would set y2=0. Furthermore, N1 and N2 would output 1 or 0 to the Oi. Now, if N1 sees C or C++, and N2 sees C or Java, then the code in question is C. Moreover, if N1 sees C or C++, and N2 sees C++ or Python, the code is C++. The pattern is obvious. So, suppose that the Oi were trained to output 1 or 0 on the basis of the following table:&lt;/p&gt;  &lt;p&gt;&lt;br /&gt;&lt;a name=&quot;t1&quot;&gt;&lt;strong style=&quot;font-size: 0.76em; font-weight: bold; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-family: arial, sans-serif;&quot;&gt;Intermediate nodes mapped to output (as Boolean functions)&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;table class=&quot;ibm-data-table&quot; border=&quot;1&quot; style=&quot;border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; border-top-width: 0px; border-top-color: initial;&quot;&gt;    &lt;tr valign=&quot;TOP&quot;&gt;  &lt;td align=&quot;center&quot; width=&quot;17%&quot; style=&quot;font-family: arial, sans-serif; border-top-color: #cccccc; border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top; font-size: 0.7em;&quot;&gt;N1&lt;/td&gt;  &lt;td align=&quot;center&quot; width=&quot;17%&quot; style=&quot;font-family: arial, sans-serif; border-top-color: #cccccc; border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top; font-size: 0.7em;&quot;&gt;N2&lt;/td&gt;  &lt;td align=&quot;center&quot; width=&quot;17%&quot; style=&quot;font-family: arial, sans-serif; border-top-color: #cccccc; border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top; font-size: 0.7em;&quot;&gt;O1 (C)&lt;/td&gt;  &lt;td align=&quot;center&quot; width=&quot;17%&quot; style=&quot;font-family: arial, sans-serif; border-top-color: #cccccc; border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top; font-size: 0.7em;&quot;&gt;O2 (C++)&lt;/td&gt;  &lt;td align=&quot;center&quot; width=&quot;17%&quot; style=&quot;font-family: arial, sans-serif; border-top-color: #cccccc; border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top; font-size: 0.7em;&quot;&gt;O3 (Java)&lt;/td&gt;  &lt;td width=&quot;17%&quot; style=&quot;font-family: arial, sans-serif; border-top-color: #cccccc; border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top; font-size: 0.7em;&quot;&gt;O4 (Python)&lt;/td&gt;  &lt;/tr&gt;  &lt;tr valign=&quot;BOTTOM&quot;&gt;  &lt;td align=&quot;center&quot; width=&quot;17%&quot; style=&quot;font-family: arial, sans-serif; border-top-color: #cccccc; border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top; font-size: 0.7em;&quot;&gt;0&lt;/td&gt;  &lt;td align=&quot;center&quot; width=&quot;17%&quot; style=&quot;font-family: arial, sans-serif; border-top-color: #cccccc; border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top; font-size: 0.7em;&quot;&gt;0&lt;/td&gt;  &lt;td align=&quot;center&quot; width=&quot;17%&quot; style=&quot;font-family: arial, sans-serif; border-top-color: #cccccc; border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top; font-size: 0.7em;&quot;&gt;0&lt;/td&gt;  &lt;td align=&quot;center&quot; width=&quot;17%&quot; style=&quot;font-family: arial, sans-serif; border-top-color: #cccccc; border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top; font-size: 0.7em;&quot;&gt;0&lt;/td&gt;  &lt;td align=&quot;center&quot; width=&quot;17%&quot; style=&quot;font-family: arial, sans-serif; border-top-color: #cccccc; border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top; font-size: 0.7em;&quot;&gt;0&lt;/td&gt;  &lt;td align=&quot;center&quot; width=&quot;17%&quot; style=&quot;font-family: arial, sans-serif; border-top-color: #cccccc; border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top; font-size: 0.7em;&quot;&gt;1&lt;/td&gt;  &lt;/tr&gt;  &lt;tr valign=&quot;BOTTOM&quot;&gt;  &lt;td align=&quot;center&quot; width=&quot;17%&quot; style=&quot;font-family: arial, sans-serif; border-top-color: #cccccc; border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top; font-size: 0.7em;&quot;&gt;0&lt;/td&gt;  &lt;td align=&quot;center&quot; width=&quot;17%&quot; style=&quot;font-family: arial, sans-serif; border-top-color: #cccccc; border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top; font-size: 0.7em;&quot;&gt;1&lt;/td&gt;  &lt;td align=&quot;center&quot; width=&quot;17%&quot; style=&quot;font-family: arial, sans-serif; border-top-color: #cccccc; border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top; font-size: 0.7em;&quot;&gt;0&lt;/td&gt;  &lt;td align=&quot;center&quot; width=&quot;17%&quot; style=&quot;font-family: arial, sans-serif; border-top-color: #cccccc; border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top; font-size: 0.7em;&quot;&gt;0&lt;/td&gt;  &lt;td align=&quot;center&quot; width=&quot;17%&quot; style=&quot;font-family: arial, sans-serif; border-top-color: #cccccc; border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top; font-size: 0.7em;&quot;&gt;1&lt;/td&gt;  &lt;td align=&quot;center&quot; width=&quot;17%&quot; style=&quot;font-family: arial, sans-serif; border-top-color: #cccccc; border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top; font-size: 0.7em;&quot;&gt;0&lt;/td&gt;  &lt;/tr&gt;  &lt;tr valign=&quot;BOTTOM&quot;&gt;  &lt;td align=&quot;center&quot; width=&quot;17%&quot; style=&quot;font-family: arial, sans-serif; border-top-color: #cccccc; border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top; font-size: 0.7em;&quot;&gt;1&lt;/td&gt;  &lt;td align=&quot;center&quot; width=&quot;17%&quot; style=&quot;font-family: arial, sans-serif; border-top-color: #cccccc; border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top; font-size: 0.7em;&quot;&gt;0&lt;/td&gt;  &lt;td align=&quot;center&quot; width=&quot;17%&quot; style=&quot;font-family: arial, sans-serif; border-top-color: #cccccc; border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top; font-size: 0.7em;&quot;&gt;0&lt;/td&gt;  &lt;td align=&quot;center&quot; width=&quot;17%&quot; style=&quot;font-family: arial, sans-serif; border-top-color: #cccccc; border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top; font-size: 0.7em;&quot;&gt;1&lt;/td&gt;  &lt;td align=&quot;center&quot; width=&quot;17%&quot; style=&quot;font-family: arial, sans-serif; border-top-color: #cccccc; border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top; font-size: 0.7em;&quot;&gt;0&lt;/td&gt;  &lt;td align=&quot;center&quot; width=&quot;17%&quot; style=&quot;font-family: arial, sans-serif; border-top-color: #cccccc; border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top; font-size: 0.7em;&quot;&gt;0&lt;/td&gt;  &lt;/tr&gt;  &lt;tr valign=&quot;BOTTOM&quot;&gt;  &lt;td align=&quot;center&quot; width=&quot;17%&quot; style=&quot;font-family: arial, sans-serif; border-top-color: #cccccc; border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top; font-size: 0.7em;&quot;&gt;1&lt;/td&gt;  &lt;td align=&quot;center&quot; width=&quot;17%&quot; style=&quot;font-family: arial, sans-serif; border-top-color: #cccccc; border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top; font-size: 0.7em;&quot;&gt;1&lt;/td&gt;  &lt;td align=&quot;center&quot; width=&quot;17%&quot; style=&quot;font-family: arial, sans-serif; border-top-color: #cccccc; border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top; font-size: 0.7em;&quot;&gt;1&lt;/td&gt;  &lt;td align=&quot;center&quot; width=&quot;17%&quot; style=&quot;font-family: arial, sans-serif; border-top-color: #cccccc; border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top; font-size: 0.7em;&quot;&gt;0&lt;/td&gt;  &lt;td align=&quot;center&quot; width=&quot;17%&quot; style=&quot;font-family: arial, sans-serif; border-top-color: #cccccc; border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top; font-size: 0.7em;&quot;&gt;0&lt;/td&gt;  &lt;td align=&quot;center&quot; width=&quot;17%&quot; style=&quot;font-family: arial, sans-serif; border-top-color: #cccccc; border-top-style: solid; border-top-width: 1px; padding-top: 8px; padding-right: 5px; padding-bottom: 8px; padding-left: 5px; vertical-align: top; font-size: 0.7em;&quot;&gt;0&lt;/td&gt;  &lt;/tr&gt;    &lt;/table&gt;  &lt;p&gt;&lt;span style=&quot;font-family: Times New Roman; font-size: medium;&quot;&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;If this worked, our net could identify the language of a code sample. It is a pretty idea, and its practical ramifications seem to be incredibly far reaching. However, this solution presupposes that the C/C++ and the Java/Python inputs are cut by one hyperplane, and that the C/Java and the C++/Python inputs are cut by the other. There is an approach to net training that bypasses this kind of assumption about the input space.&lt;/p&gt;  &lt;p class=&quot;ibm-ind-link ibm-back-to-top&quot; style=&quot;font-family: arial, sans-serif; font-size: 0.76em; clear: both; text-align: right; height: 15px; padding: 5px; margin: 0px;&quot;&gt;&amp;nbsp;&lt;/p&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;&lt;a name=&quot;h25048&quot;&gt;&lt;span class=&quot;atitle&quot; style=&quot;font-size: 1.5em; font-weight: bold;&quot;&gt;The delta rule&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;Another training rule is the delta rule. The perceptron training rule is based on the idea that weight modification is best determined by some fraction of the difference between target and output. The&amp;nbsp;&lt;em&gt;delta rule&lt;/em&gt;&amp;nbsp;is based on the idea of gradient descent. This difficult mathematical concept has a prosaic illustration. From some given point, a Southward path may be steeper than an Eastward path. Walking East may take you off a cliff, while walking South may only take you along its gently sloping edge. West would take you up a steep hill, and North leads to level ground. All you want is a leisurely walk, so you seek ground where the overall steepness of your options is minimized. Similarly, in weight modification, a neural net can seek a weight distribution that minimizes error.&lt;/p&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;Limiting ourselves to nets with no hidden nodes, but possibly having more than one output node, let p be an element in a training set, and t(p,n) be the corresponding target of output node n. However, let y(p,n) be determined by the squashing function, s, mentioned above, where a(p,n) is n&#39;s activation relative to p, y(p,n) = s( a(p,n) ) or the squashed activation of node n relative to p. Setting the weights (each Wi) for a net also sets the difference between t(p,n) and y(p,n) for every p and n, and this means setting the net&#39;s overall error for every p. Therefore, for any set of weights, there is an average error. However, the delta rule rests on refinements in the notions of average and error. Instead of discussing the minutiae, we shall just say that the error relative to some p and n is: &amp;amp;frac12; * square( t(p,n) - y(p,n) ) (see&amp;nbsp;&lt;a href=&quot;http://www.ibm.com/developerworks/library/l-neural/#resources&quot; style=&quot;color: #4c6e94;&quot;&gt;Resources&lt;/a&gt;). Now, for each Wi, there is an average error defined as:&lt;/p&gt;  &lt;p&gt;&lt;br /&gt;&lt;a name=&quot;c2&quot;&gt;&lt;strong style=&quot;font-size: 0.76em; font-weight: bold; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-family: arial, sans-serif;&quot;&gt;Listing 2: Finding the average error&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;table border=&quot;0&quot; width=&quot;100%&quot;&gt;    &lt;tr&gt;  &lt;td class=&quot;code-outline&quot; style=&quot;font-family: arial, sans-serif; background-color: #f7f7f7 !important; padding-top: 2px; padding-right: 2px; padding-bottom: 5px; padding-left: 2px; font-size: 0.75em; border: 1px solid #cccccc;&quot;&gt;  &lt;div class=&quot;CodeRay&quot;&gt; &lt;div class=&quot;code&quot;&gt;&lt;pre&gt;sum = 0 FOR p = 1 TO M:         # M is number of training vectors FOR n = 1 TO N:     # N is number of output nodes sum = sum + (1/2 * (t(p,n)-y(p,n))^2) average = 1/M * sum&lt;/pre&gt;&lt;/div&gt; &lt;/div&gt;   &lt;/td&gt;  &lt;/tr&gt;    &lt;/table&gt;  &lt;p&gt;&lt;span style=&quot;font-family: Times New Roman; font-size: medium;&quot;&gt;&lt;br /&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;The delta rule is defined in terms of this definition of error. Because error is explained in terms of all the training vectors, the delta rule is an algorithm for taking a particular set of weights and a particular vector, and yielding weight changes that would take the neural net on the path to minimal error. We won&#39;t discuss the calculus underpinning this algorithm. Suffice it to say that the change to any Wi is:&lt;/p&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;&amp;Acirc;&amp;nbsp;alpha * s&#39;(a(p,n)) * (t(p,n) - y(p,n)) * X(p,i,n).&lt;/p&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;X(p,i,n) is the i&lt;sup&gt;th&lt;/sup&gt;&amp;nbsp;element in p that is input into node n, and alpha is the already noted learning rate. Finally, s&#39;( a(p,n) ) is the rate of change (derivative) of the squashing function at the activation of the n&lt;sup&gt;th&lt;/sup&gt;&amp;nbsp;node relative to p. This is the delta rule, and Widrow and Stearns (see&amp;nbsp;&lt;a href=&quot;http://www.ibm.com/developerworks/library/l-neural/#resources&quot; style=&quot;color: #4c6e94;&quot;&gt;Resources&lt;/a&gt;) showed that when alpha is sufficiently small, the weight vector approaches a vector that minimizes error. A delta rule-based algorithm for weight modification looks like this.&lt;/p&gt;  &lt;p&gt;&lt;br /&gt;&lt;a name=&quot;c3&quot;&gt;&lt;strong style=&quot;font-size: 0.76em; font-weight: bold; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-family: arial, sans-serif;&quot;&gt;Downward slope (follow until error is suitably small)&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;table border=&quot;0&quot; width=&quot;100%&quot;&gt;    &lt;tr&gt;  &lt;td class=&quot;code-outline&quot; style=&quot;font-family: arial, sans-serif; background-color: #f7f7f7 !important; padding-top: 2px; padding-right: 2px; padding-bottom: 5px; padding-left: 2px; font-size: 0.75em; border: 1px solid #cccccc;&quot;&gt;  &lt;div class=&quot;CodeRay&quot;&gt; &lt;div class=&quot;code&quot;&gt;&lt;pre&gt;step 1: for each training vector, p, find a(p) step 2: for each i, change Wi by: alpha * s&#39;(a(p,n)) * (t(p,n)-y(p,n)) * X(p,i,n)&lt;/pre&gt;&lt;/div&gt; &lt;/div&gt;   &lt;/td&gt;  &lt;/tr&gt;    &lt;/table&gt;  &lt;p&gt;&lt;span style=&quot;font-family: Times New Roman; font-size: medium;&quot;&gt;&lt;br /&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;There are important differences from the perceptron algorithm. Clearly, there are quite different analyses underlying the weight change formulae. The delta rule algorithm always makes a change in weights, and it is based on activation as opposed to output. Lastly, it isn&#39;t clear how this applies to nets with hidden nodes.&lt;/p&gt;  &lt;p class=&quot;ibm-ind-link ibm-back-to-top&quot; style=&quot;font-family: arial, sans-serif; font-size: 0.76em; clear: both; text-align: right; height: 15px; padding: 5px; margin: 0px;&quot;&gt;&amp;nbsp;&lt;/p&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;&lt;a name=&quot;h29265&quot;&gt;&lt;span class=&quot;atitle&quot; style=&quot;font-size: 1.5em; font-weight: bold;&quot;&gt;Back-propagation&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;&lt;em&gt;Back-propagation&lt;/em&gt;&amp;nbsp;is an algorithm that extends the analysis that underpins the delta rule to neural nets with hidden nodes. To see the problem, imagine that Bob tells Alice a story, and then Alice tells Ted. Ted checks the facts, and finds that the story is erroneous. Now, Ted needs to find out how much of the error is due to Bob and how much to Alice. When output nodes take their inputs from hidden nodes, and the net finds that it is in error, its weight adjustments require an algorithm that will pick out how much the various nodes contributed to its overall error. The net needs to ask, &quot;Who led me astray? By how much? And, how do I fix this?&quot; What&#39;s a net to do?&lt;/p&gt;  &lt;p&gt;&lt;br /&gt;&lt;a name=&quot;17071&quot;&gt;&lt;strong style=&quot;font-size: 0.76em; font-weight: bold; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-family: arial, sans-serif;&quot;&gt;Figure 3. &quot;Code Recognizer&quot; back-propagation neural network&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;img src=&quot;http://www.ibm.com/developerworks/library/l-neural/code_recognizer.gif&quot; border=&quot;0&quot; height=&quot;437&quot; alt=&quot;&quot; width=&quot;464&quot; style=&quot;padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px;&quot; /&gt;&lt;/p&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;The back-propagation algorithm also rests on the idea of gradient descent, and so the only change in the analysis of weight modification concerns the difference between t(p,n) and y(p,n). Generally, the change to W&lt;sub&gt;i&lt;/sub&gt;&amp;nbsp;is:&lt;/p&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;&amp;Acirc;&amp;nbsp;alpha * s&#39;(a(p,n)) * d(n) * X(p,i,n)&lt;/p&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;where d(n) for a hidden node n, turns on (1) how much n influences any given output node; and (2) how much that output node itself influences the overall error of the net. On the one hand, the more n influences an output node, the more n affects the net&#39;s overall error. On the other hand, if the output node influences the overall error less, then n&#39;s influence correspondingly diminishes. Where d(j) is output node j&#39;s contribution to the net&#39;s overall error, and W(n,j) is the influence that n has on j, d(j) * W(n,j) is the combination of these two influences. However, n almost always influences more than one output node, and it may influence every output node. So, d(n) is:&lt;/p&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;&amp;Acirc;&amp;nbsp;SUM(d(j)*W(n,j)), for all j&lt;/p&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;where j is an output node that takes input from n. Putting this together gives us a training rule. First part: the weight change between hidden and output nodes, n and j, is:&lt;/p&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;&amp;Acirc;&amp;nbsp;alpha * s&#39;(a(p,n))*(t(p,n) - y(p,n)) * X(p,n,j)&lt;/p&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;Second part: the weight change between input and output nodes, i and n, is:&lt;/p&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;&amp;Acirc;&amp;nbsp;alpha * s&#39;(a(p,n)) * sum(d(j) * W(n,j)) * X(p,i,n)&lt;/p&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;where j varies over all the output nodes that receive input from n. Moreover, the basic outline of a back-propagation algorithm runs like this.&lt;/p&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;Initialize Wi to small random values.&lt;/p&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;&lt;a name=&quot;m1&quot;&gt;&lt;span class=&quot;smalltitle&quot; style=&quot;font-size: 1.2em; font-weight: bold;&quot;&gt;Steps to follow until error is suitably small&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;Step 1: Input training vector.&lt;br /&gt;Step 2: Hidden nodes calculate their outputs.&lt;br /&gt;Step 3: Output nodes calculate their outputs on the basis of Step 2.&lt;br /&gt;Step 4: Calculate the differences between the results of Step 3 and targets.&lt;br /&gt;Step 5: Apply the first part of the training rule using the results of Step 4.&lt;br /&gt;Step 6: For each hidden node, n, calculate d(n).&lt;br /&gt;Step 7: Apply the second part of the training rule using the results of Step 6.&lt;/p&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;Steps 1 through 3 are often called the&amp;nbsp;&lt;em&gt;forward pass&lt;/em&gt;, and steps 4 through 7 are often called the&amp;nbsp;&lt;em&gt;backward pass&lt;/em&gt;. Hence, the name: back-propagation.&lt;/p&gt;  &lt;p class=&quot;ibm-ind-link ibm-back-to-top&quot; style=&quot;font-family: arial, sans-serif; font-size: 0.76em; clear: both; text-align: right; height: 15px; padding: 5px; margin: 0px;&quot;&gt;&amp;nbsp;&lt;/p&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;&lt;a name=&quot;h32929&quot;&gt;&lt;span class=&quot;atitle&quot; style=&quot;font-size: 1.5em; font-weight: bold;&quot;&gt;Recognizing success&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;With the back-propagation algorithm in hand, we can turn to our puzzle of identifying the language of source code samples. To do this, our solution extends Neil Schemenauer&#39;s Python module&amp;nbsp;&lt;em&gt;bpnn&lt;/em&gt;&amp;nbsp;(see&amp;nbsp;&lt;a href=&quot;http://www.ibm.com/developerworks/library/l-neural/#resources&quot; style=&quot;color: #4c6e94;&quot;&gt;Resources&lt;/a&gt;). Using his module is amazingly simple. We customized the class&amp;nbsp;&lt;code style=&quot;font-family: monospace; font-size: small !important;&quot;&gt;&lt;em&gt;NN&lt;/em&gt;&lt;/code&gt;&amp;nbsp;in our class&amp;nbsp;&lt;code style=&quot;font-family: monospace; font-size: small !important;&quot;&gt;&lt;em&gt;NN2&lt;/em&gt;&lt;/code&gt;, but our changes only modify the presentation and output of the process, nothing algorithmic. The basic code looks like:&lt;/p&gt;  &lt;p&gt;&lt;br /&gt;&lt;a name=&quot;c4&quot;&gt;&lt;strong style=&quot;font-size: 0.76em; font-weight: bold; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-family: arial, sans-serif;&quot;&gt;Listing 3: Setting up a neural network with bpnn.py&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;table border=&quot;0&quot; width=&quot;100%&quot;&gt;    &lt;tr&gt;  &lt;td class=&quot;code-outline&quot; style=&quot;font-family: arial, sans-serif; background-color: #f7f7f7 !important; padding-top: 2px; padding-right: 2px; padding-bottom: 5px; padding-left: 2px; font-size: 0.75em; border: 1px solid #cccccc;&quot;&gt;  &lt;div class=&quot;CodeRay&quot;&gt; &lt;div class=&quot;code&quot;&gt;&lt;pre&gt;# Create the network (number of input, hidden, and training nodes) net = NN2(INPUTS, HIDDEN, OUTPUTS)   # create the training and testing data trainpat = []   testpat = []   for n in xrange(TRAINSIZE+TESTSIZE):   #... add vectors to each set  # train it with some patterns net.train(trainpat, iterations=ITERATIONS, N=LEARNRATE, M=MOMENTUM)    # test it  net.test(testpat)    # report trained weights  net.weights()&lt;/pre&gt;&lt;/div&gt; &lt;/div&gt;   &lt;/td&gt;  &lt;/tr&gt;    &lt;/table&gt;  &lt;p&gt;&lt;span style=&quot;font-family: Times New Roman; font-size: medium;&quot;&gt;&lt;br /&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;Of course, we need input data. Our utility code2data.py provides this. Its interface is straightforward: just put a bunch of source files with various extensions into a subdirectory called ./code , and then run the utility listing these extensions as options, for example:&lt;/p&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;&amp;Acirc;&amp;nbsp;&amp;Acirc;&amp;nbsp;&amp;Acirc;&amp;nbsp; python code2data.py py c java&lt;/p&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;What you get is a bunch of vectors on STDOUT , which you can pipe to another process or redirect to a file.&amp;Acirc;&amp;nbsp; This output looks something like:&lt;/p&gt;  &lt;p&gt;&lt;br /&gt;&lt;a name=&quot;c5&quot;&gt;&lt;strong style=&quot;font-size: 0.76em; font-weight: bold; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-family: arial, sans-serif;&quot;&gt;Listing 4: Code2Data output vectors&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;table border=&quot;0&quot; width=&quot;100%&quot;&gt;    &lt;tr&gt;  &lt;td class=&quot;code-outline&quot; style=&quot;font-family: arial, sans-serif; background-color: #f7f7f7 !important; padding-top: 2px; padding-right: 2px; padding-bottom: 5px; padding-left: 2px; font-size: 0.75em; border: 1px solid #cccccc;&quot;&gt;  &lt;div class=&quot;CodeRay&quot;&gt; &lt;div class=&quot;code&quot;&gt;&lt;pre&gt;0.15 0.01 0.01 0.04 0.07 0.00 0.00 0.03 0.01 0.00 0.00 0.00 0.05 0.00 &amp;gt; 1 0 0 0.14 0.00 0.00 0.05 0.13 0.00 0.00 0.00 0.02 0.00 0.00 0.00 0.13 0.00 &amp;gt; 1 0 0 [...]&lt;/pre&gt;&lt;/div&gt; &lt;/div&gt;   &lt;/td&gt;  &lt;/tr&gt;    &lt;/table&gt;  &lt;p&gt;&lt;span style=&quot;font-family: Times New Roman; font-size: medium;&quot;&gt;&lt;br /&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;Recall that the input values are normalized numbers of occurrences of various special characters. The target values (after the greater than sign) are YES/NO representing the type of source code file containing these characters. But there is nothing very obvious about what is what. That&#39;s the great thing, the data could by&amp;nbsp;&lt;em&gt;anything&amp;nbsp;&lt;/em&gt;that you can generate input and targets for.&lt;/p&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;The next step is to run the actual code_recognizer.py program. This takes (on STDIN ) a collection of vectors like those above. The program has a wrapper that deduces how many input nodes (count and target) are needed, based on the actual input file. Choosing the number of hidden nodes is trickier. For source code recognition, 6 to 8 hidden nodes seem to work very well. You can override all the parameters on the command line, if you want to experiment with the net to discover how it does with various options -- each run might take a while, though. It is worth noting that code_recognizer.py sends its (large) test result file to STDOUT , but puts some friendly messages on STDERR . So most of the time, you will want to direct STDOUT to a file for safe keeping, and watch STDERR for progress and result summaries.&lt;/p&gt;  &lt;p&gt;&lt;br /&gt;&lt;a name=&quot;c6&quot;&gt;&lt;strong style=&quot;font-size: 0.76em; font-weight: bold; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-family: arial, sans-serif;&quot;&gt;Listing 5: Running code_recognizer.py&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;table border=&quot;0&quot; width=&quot;100%&quot;&gt;    &lt;tr&gt;  &lt;td class=&quot;code-outline&quot; style=&quot;font-family: arial, sans-serif; background-color: #f7f7f7 !important; padding-top: 2px; padding-right: 2px; padding-bottom: 5px; padding-left: 2px; font-size: 0.75em; border: 1px solid #cccccc;&quot;&gt;  &lt;div class=&quot;CodeRay&quot;&gt; &lt;div class=&quot;code&quot;&gt;&lt;pre&gt;&amp;gt; code2data.py py c java | code_recognizer.py &amp;gt; test_results.txt  Total bytes of py-source: 457729  Total bytes of c-source: 245197  Total bytes of java-source: 709858  Input set: ) ( _ . = ; &amp;quot; , &#39; * / { } : - 0 + 1 [ ]  HIDDEN = 8  LEARNRATE = 0.5  ITERATIONS = 1000  TRAINSIZE = 500  OUTPUTS = 3  MOMENTUM = 0.1  ERROR_CUTOFF = 0.01  TESTSIZE = 500  INPUTS = 20  error -&amp;gt; 95.519... 23.696... 19.727... 14.012... 11.058... 9.652...   8.858... 8.236... 7.637... 7.065... 6.398... 5.413... 4.508...   3.860... 3.523... 3.258... 3.026... 2.818... 2.631... 2.463...   2.313... 2.180... 2.065... 1.965... 1.877... 1.798... 1.725...   [...]  0.113... 0.110... 0.108... 0.106... 0.104... 0.102... 0.100...   0.098... 0.096... 0.094... 0.093... 0.091... 0.089... 0.088...   0.086... 0.085... 0.084...  Success rate against test data: 92.60%&lt;/pre&gt;&lt;/div&gt; &lt;/div&gt;   &lt;/td&gt;  &lt;/tr&gt;    &lt;/table&gt;  &lt;p&gt;&lt;span style=&quot;font-family: Times New Roman; font-size: medium;&quot;&gt;&lt;br /&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;The decreasing error is a nice reminder, and acts as a sort of progress meter during long runs. But, the final result is what is impressive. The net does a quite respectable job, in our opinion, of recognizing code -- we would love to hear how it does on your data vectors.&lt;/p&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;&amp;nbsp;&lt;/p&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;&amp;nbsp;&lt;/p&gt;  &lt;p style=&quot;font-family: arial, sans-serif; padding-top: 0.3em; padding-right: 5px; padding-bottom: 0.7em; padding-left: 5px; font-size: 0.76em; margin: 0px;&quot;&gt;Source:&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://www.ibm.com/developerworks/library/l-neural/&quot;&gt;http://www.ibm.com/developerworks/library/l-neural/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://b-giar.blogspot.com/feeds/2182791175168852225/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://b-giar.blogspot.com/2011/08/pattern-learning-with-back-propagation.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8953490625351031216/posts/default/2182791175168852225'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8953490625351031216/posts/default/2182791175168852225'/><link rel='alternate' type='text/html' href='http://b-giar.blogspot.com/2011/08/pattern-learning-with-back-propagation.html' title='Pattern learning with the back-propagation algorithm'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/01359356128419832182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8953490625351031216.post-3310797754966396411</id><published>2011-07-26T12:16:00.001+03:00</published><updated>2011-07-26T12:16:49.760+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Advance Computing"/><category scheme="http://www.blogger.com/atom/ns#" term="Artificial Intelligence"/><title type='text'>Crowd Simulation - Intelligent Agents Simulation</title><content type='html'>&lt;div class=&#39;posterous_autopost&#39;&gt;&lt;p&gt;&lt;iframe allowfullscreen=&quot;true&quot; src=&quot;http://www.youtube.com/embed/Cw1b_RYi784&quot; frameborder=&quot;0&quot; height=&quot;349&quot; width=&quot;425&quot;&gt;&lt;/iframe&gt;&lt;/p&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://b-giar.blogspot.com/feeds/3310797754966396411/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://b-giar.blogspot.com/2011/07/crowd-simulation-intelligent-agents.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8953490625351031216/posts/default/3310797754966396411'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8953490625351031216/posts/default/3310797754966396411'/><link rel='alternate' type='text/html' href='http://b-giar.blogspot.com/2011/07/crowd-simulation-intelligent-agents.html' title='Crowd Simulation - Intelligent Agents Simulation'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/01359356128419832182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/Cw1b_RYi784/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8953490625351031216.post-7147342702945437125</id><published>2011-07-25T16:31:00.001+03:00</published><updated>2011-07-25T16:31:54.054+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Programming"/><category scheme="http://www.blogger.com/atom/ns#" term="web"/><category scheme="http://www.blogger.com/atom/ns#" term="Web Dev Stuff"/><title type='text'>Camera Flash Effect With JQuery</title><content type='html'>&lt;div class=&#39;posterous_autopost&#39;&gt;&lt;p&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;span style=&quot;color: #333333; font-family: Droid Sans, sans-serif; font-size: small;&quot;&gt;&lt;span style=&quot;line-height: 22px;&quot;&gt;You can see the &lt;a href=&quot;http://motyarblog.000space.com/soundmanager-20041003a/camera_flash_effect_Jquery.html&quot; title=&quot;http://motyarblog.000space.com/soundmanager-20041003a/camera_flash_effect_Jquery.html&quot;&gt;working demo here.&lt;/a&gt; Go to the page and Click anywhere to generate the effect.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style=&quot;color: #333333; font-family: Droid Sans, sans-serif; font-size: small;&quot;&gt;&lt;span style=&quot;line-height: 22px;&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;h3 style=&quot;font: inherit; font-size: 16px; vertical-align: baseline; font-family: Droid Serif, serif; font-weight: normal; padding: 0px; margin: 0px;&quot;&gt;&lt;span style=&quot;color: #333333; font-family: Droid Sans, sans-serif; font-size: small;&quot;&gt;&lt;span style=&quot;font-size: x-large;&quot;&gt;&lt;strong&gt;Code&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;  &lt;p&gt;&lt;span style=&quot;color: #333333; font-family: Droid Sans, sans-serif; font-size: small;&quot;&gt;&lt;span style=&quot;font-size: x-large;&quot;&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style=&quot;color: #333333; font-family: Droid Sans, sans-serif; font-size: small;&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;strong&gt;Include SoundManager for Sound&lt;/strong&gt;&lt;/span&gt;&lt;p /&gt;&lt;/span&gt;&lt;/p&gt;  &lt;div class=&quot;CodeRay&quot;&gt; &lt;div class=&quot;code&quot;&gt;&lt;pre&gt;&amp;lt;script type=&#39;text/javascript&#39; src=&#39;script/soundmanager.js&#39;&amp;gt;&amp;lt;/script&amp;amp;gt; &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;soundManagerInit();&amp;lt;/script&amp;gt; &lt;/pre&gt;&lt;/div&gt; &lt;/div&gt;   &lt;div class=&quot;CodeRay&quot;&gt; &lt;div class=&quot;code&quot;&gt;&lt;pre&gt;  &lt;/pre&gt;&lt;/div&gt; &lt;/div&gt;   &lt;p&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;a href=&quot;http://motyar.blogspot.com/2010/07/play-sounds-on-web-with-soundmanager.html&quot; style=&quot;font: inherit; font-size: 16px; vertical-align: baseline; text-decoration: none; color: #9400d3; padding: 0px; margin: 0px;&quot;&gt;Learn more about it.&lt;/a&gt;&lt;/span&gt;&lt;p /&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;strong&gt;CSS&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;  &lt;div class=&quot;CodeRay&quot;&gt; &lt;div class=&quot;code&quot;&gt;&lt;pre&gt;  body{&lt;/pre&gt;&lt;/div&gt; &lt;/div&gt;   &lt;div class=&quot;CodeRay&quot;&gt; &lt;div class=&quot;code&quot;&gt;&lt;pre&gt;    background:black; }  .flashDiv{ &lt;/pre&gt;&lt;/div&gt; &lt;/div&gt;   &lt;div class=&quot;CodeRay&quot;&gt; &lt;div class=&quot;code&quot;&gt;&lt;pre&gt;    position:fixed;  top:0;&lt;/pre&gt;&lt;/div&gt; &lt;/div&gt;   &lt;div class=&quot;CodeRay&quot;&gt; &lt;div class=&quot;code&quot;&gt;&lt;pre&gt;    left:0;&lt;/pre&gt;&lt;/div&gt; &lt;/div&gt;   &lt;div class=&quot;CodeRay&quot;&gt; &lt;div class=&quot;code&quot;&gt;&lt;pre&gt;    width:100%;&lt;/pre&gt;&lt;/div&gt; &lt;/div&gt;   &lt;div class=&quot;CodeRay&quot;&gt; &lt;div class=&quot;code&quot;&gt;&lt;pre&gt;    height:100%;&lt;/pre&gt;&lt;/div&gt; &lt;/div&gt;   &lt;div class=&quot;CodeRay&quot;&gt; &lt;div class=&quot;code&quot;&gt;&lt;pre&gt;    background-color:#fff;&lt;/pre&gt;&lt;/div&gt; &lt;/div&gt;   &lt;div class=&quot;CodeRay&quot;&gt; &lt;div class=&quot;code&quot;&gt;&lt;pre&gt; }   &lt;/pre&gt;&lt;/div&gt; &lt;/div&gt;   &lt;p&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;p /&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;strong&gt;JavaScript&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #007700; font-family: Inconsolata, Courier New, monospace; font-size: 16px;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt; &lt;/span&gt;&lt;/p&gt;  &lt;div class=&quot;CodeRay&quot;&gt; &lt;div class=&quot;code&quot;&gt;&lt;pre&gt;function flash(e)&lt;/pre&gt;&lt;/div&gt; &lt;/div&gt;   &lt;p&gt;&lt;span style=&quot;font-size: small;&quot;&gt;  &lt;div class=&quot;CodeRay&quot;&gt; &lt;div class=&quot;code&quot;&gt;&lt;pre&gt;{&lt;/pre&gt;&lt;/div&gt; &lt;/div&gt;   &lt;div class=&quot;CodeRay&quot;&gt; &lt;div class=&quot;code&quot;&gt;&lt;pre&gt;$(&#39;.flashDiv&#39;) .show()  //show the hidden div .animate({opacity: 0.5}, 300)  .fadeOut(300)&lt;/pre&gt;&lt;/div&gt; &lt;/div&gt;   &lt;div class=&quot;CodeRay&quot;&gt; &lt;div class=&quot;code&quot;&gt;&lt;pre&gt;        .css({&#39;opacity&#39;: 1});     //play the sound    &lt;/pre&gt;&lt;/div&gt; &lt;/div&gt;   &lt;div class=&quot;CodeRay&quot;&gt; &lt;div class=&quot;code&quot;&gt;&lt;pre&gt;    soundManager.play(&#39;capture&#39;); }&lt;/pre&gt;&lt;/div&gt; &lt;/div&gt;   &lt;div class=&quot;CodeRay&quot;&gt; &lt;div class=&quot;code&quot;&gt;&lt;pre&gt;$(document).ready(function() &lt;/pre&gt;&lt;/div&gt; &lt;/div&gt;   &lt;div class=&quot;CodeRay&quot;&gt; &lt;div class=&quot;code&quot;&gt;&lt;pre&gt;{         $(&#39;.flashDiv&#39;).hide();  &lt;/pre&gt;&lt;/div&gt; &lt;/div&gt;   &lt;div class=&quot;CodeRay&quot;&gt; &lt;div class=&quot;code&quot;&gt;&lt;pre&gt;    $(document).mouseup(function(e) { flash(e); }) });   &lt;/pre&gt;&lt;/div&gt; &lt;/div&gt;   &lt;br /&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;strong&gt;HTML&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;Include this div to the body&lt;/span&gt;&lt;br /&gt;  &lt;div class=&quot;CodeRay&quot;&gt; &lt;div class=&quot;code&quot;&gt;&lt;pre&gt;&amp;lt;div class=&#39;flashDiv&#39;&amp;gt;&amp;lt;/div&amp;gt;&lt;/pre&gt;&lt;/div&gt; &lt;/div&gt;   &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://b-giar.blogspot.com/feeds/7147342702945437125/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://b-giar.blogspot.com/2011/07/camera-flash-effect-with-jquery.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8953490625351031216/posts/default/7147342702945437125'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8953490625351031216/posts/default/7147342702945437125'/><link rel='alternate' type='text/html' href='http://b-giar.blogspot.com/2011/07/camera-flash-effect-with-jquery.html' title='Camera Flash Effect With JQuery'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/01359356128419832182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8953490625351031216.post-7201713482250336697</id><published>2011-07-10T19:56:00.001+03:00</published><updated>2011-07-10T19:56:02.119+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="News"/><title type='text'>Freelance Freedom</title><content type='html'>&lt;div class=&#39;posterous_autopost&#39;&gt;&lt;p&gt;&lt;img src=&quot;http://freelanceswitch.com/wp-content/uploads/2008/03/ff43_portfoliopiece.jpg&quot; alt=&quot;&quot; style=&quot;display: block; margin-left: auto; margin-right: auto;&quot; /&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style=&quot;text-decoration: underline; font-size: medium;&quot;&gt;&lt;strong&gt;Resources:&lt;/strong&gt;&lt;/span&gt;&amp;nbsp;&lt;a href=&quot;http://freelanceswitch.com/freelance-freedom/freelance-freedom-43/&quot; title=&quot;http://freelanceswitch.com/freelance-freedom/freelance-freedom-43/&quot; target=&quot;_blank&quot;&gt;Freelance Freedom&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://b-giar.blogspot.com/feeds/7201713482250336697/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://b-giar.blogspot.com/2011/07/freelance-freedom.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8953490625351031216/posts/default/7201713482250336697'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8953490625351031216/posts/default/7201713482250336697'/><link rel='alternate' type='text/html' href='http://b-giar.blogspot.com/2011/07/freelance-freedom.html' title='Freelance Freedom'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/01359356128419832182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8953490625351031216.post-5699772664007355424</id><published>2011-07-10T19:45:00.004+03:00</published><updated>2011-07-10T19:47:14.429+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="News"/><category scheme="http://www.blogger.com/atom/ns#" term="Science"/><title type='text'>Inner eye Project</title><content type='html'>&lt;div class=&quot;posterous_autopost&quot;&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Times New Roman&#39;;&quot;&gt;While Microsoft tend to support more Natural User Interface (NUI) projects, as most celebrated example its early NUI work is the Kinect Xbox body motion sensor, there’s also quite a bit of focus by Microsoft’s NUI researchers on the intersection between NUI and healthcare. There are a number of Microsoft Research projects exploring the NUI-health connection. One of these projects, named “Inner Eye” is focused on &amp;nbsp;the medical automation analysis of Computed Tomography ( CT ) scans, using modern machine learning techniques as 3D model navigation and visualization. &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Times New Roman&#39;;&quot;&gt;InnerEye takes advantage of advances in computer-human interactions that have put computers on a path to work for us and collaborate with us. The development of a natural user interface (NUI) enables computers to adapt to you and be more integrated into your environment via speech, touch, and gesture. As NUI systems become more powerful and are imbued with more situational awareness, they can provide beneficial, real-time interactions that will be seamless and naturally suited to your context—in short, systems will understand where you are and what you’re doing&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Times New Roman&#39;;&quot;&gt;Antonio Criminisi, as a leader of the research group of Microsoft’s Research center in Cambridge, who develop the system that will make it easier for doctors to work with databases of medical imagery. This system indexes the images generated during the scans. It automatically recognizes organs, and they are working to train the system to detect certain kinds of brain tumors.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Times New Roman&#39;;&quot;&gt;This software snaps a collection of 2D and 3D images and index them all together.&lt;/span&gt;&lt;span style=&quot;color: #555555; font-family: Helvetica;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-family: &#39;Times New Roman&#39;;&quot;&gt;After combining them all together, medical imaging databases are created using the text comments linked to the image for doctors to search. This gives them the ability to search, but it takes time because not all of the results are relevant. These kinds of systems will allow doctors to easily navigate from new images to old images in the same patient, side-by-side. It will also allow doctors to easily pull up images from other patients for comparison.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Times New Roman&#39;;&quot;&gt;Criminisi’s team is also working on embedding the technology found in Kinect. This will give surgeons the ability to navigate through the images with gestures. This will give them access to the images mid-procedure without them having to touch a mouse, keyboard, or even a touch screen. As these are all things that could compromise the sterility of the operation, this will be a very useful tool. The team plans for this tool to be implemented at a large scale, making automatic indexes of images as they are scanned and tying them into the greater database seamlessly.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Times New Roman&#39;;&quot;&gt;Using Kinect technology, they would only have to motion their hands to access the parts they need to focus on. The potential Microsoft solution is quicker and slicker: And it could help to save lives. Criminisi said: “&lt;em&gt;Our solution enables surgeons to wave at the screen and access the patients images without touching any physical device, thus maintaining asepsis. By gesturing in mid-air surgeons can zoom in on specific organs or lesions and manipulate 3D views; they can also search for images of other patients with similar conditions. It’s amazing how such images can offer clues of disease and potential cure. Pre-filtering patient data can be an important tool for doctors and surgeons.&lt;/em&gt;”&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Times New Roman&#39;;&quot;&gt;Although needs in each hospitals different and levels of sophistication, the general outcome was sufficiently encouraging to drive scientific research towards a new, efficient tool to aid surgery.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;img alt=&quot;&quot; src=&quot;http://www.technologyreview.com/files/57607/microsoftscanning_x582.jpg&quot; /&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Times New Roman&#39;;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;strong&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;Resources:&amp;nbsp;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.technologyreview.com/computing/35076/?p1=A2&amp;amp;a=f&quot; target=&quot;_blank&quot; title=&quot;http://www.technologyreview.com/computing/35076/?p1=A2&amp;amp;a=f&quot;&gt;Tecnology Review&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Pappas Evangelos. 30/03/2010 - Assesment for CO3 6th Semester Academic English. University of Wales&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://b-giar.blogspot.com/feeds/5699772664007355424/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://b-giar.blogspot.com/2011/07/inner-eye-project.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8953490625351031216/posts/default/5699772664007355424'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8953490625351031216/posts/default/5699772664007355424'/><link rel='alternate' type='text/html' href='http://b-giar.blogspot.com/2011/07/inner-eye-project.html' title='Inner eye Project'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/01359356128419832182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8953490625351031216.post-8305615555893419902</id><published>2011-07-10T13:48:00.001+03:00</published><updated>2011-07-10T13:48:22.740+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Advance Computing"/><category scheme="http://www.blogger.com/atom/ns#" term="Hacking"/><category scheme="http://www.blogger.com/atom/ns#" term="Programming"/><category scheme="http://www.blogger.com/atom/ns#" term="Web Dev Stuff"/><title type='text'>JavaScript Attack/Defend</title><content type='html'>&lt;div class=&#39;posterous_autopost&#39;&gt;    &lt;p style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; padding: 0px;&quot;&gt;As developers and designers we work hard to build visually attractive, fast and easy to maintain applications. Our goals are to make sure the applications we build stick to users and keep them coming back for more. Security is not always at the forefront of our minds. No one intentionally builds insecure software but often a lack of security knowledge leads developers to build vulnerabilities into their applications. In this article we are going to examine two web security attacks, how they are executed and how to defend against them. By the end of this article you will have a few techniques in your security tool belt to help you build more secure web applications.&lt;/p&gt;  &lt;p style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; padding: 0px;&quot;&gt;The Open Web Application Security Project (OWASP) is a global organization that focuses on improving web application security and security awareness among the developer community. OWASP maintains a list of what are considered the most serious top ten security threats to web applications: the&amp;nbsp;&lt;a href=&quot;https://www.owasp.org/index.php/Category:OWASP_Top_Ten_Project&quot; style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; color: #0066dd; cursor: pointer; text-decoration: none; padding: 0px; margin: 0px;&quot;&gt;OWASP Top Ten&lt;/a&gt;&amp;nbsp;project. We are going to examine two attacks from the Top Ten list, Cross Site Scripting (XSS) and Cross Site Request Forgery (CSRF). These attacks are both widespread and can be easily overlooked when developing an application. The good news is that finding these attacks is simple and building mitigations for them is just as easy.&lt;/p&gt;  &lt;h2 style=&quot;font-weight: bold; font-style: inherit; font-family: inherit; margin-top: 4px; margin-right: 0px; margin-bottom: 4px; margin-left: 0px; color: #3a3e43; line-height: 25px; font-size: 20px; padding: 0px;&quot;&gt;Cross Site Scripting (XSS)&lt;/h2&gt;  &lt;p style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; padding: 0px;&quot;&gt;Many web applications today allow users to generate content to share with other users. To find examples of this look no further than a corporate blog. Many companies use blogs to communicate with their customers by writing about new products, ad campaigns, or just the everyday happenings of the business. To encourage a conversation between the customer and company, these blogs permit comments. Comments are user generated content that is posted to the blog for others to see, including the company&amp;rsquo;s blog administrator. In this scenario, Cross Site Scripting attacks occur when a user leaves a comment on the blog with the intent to execute a malicious payload against another user.&lt;/p&gt;  &lt;p style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; padding: 0px;&quot;&gt;Cross Site Scripting (XSS) is an exploitation of the trust that the user has with the web site where the attack is hosted. When a user is interacting with a site that they trust they do not expect that a malicious user has poisoned the site against them. Anywhere in a site that allows input from a user opens the door for a possible XSS attack. The malicious input is often in the form of some client side script (usually JavaScript but it could also be VBScript, ActionScript, etc&amp;hellip;) that executes when the user performs an action such as clicking a link or loading the page.&lt;/p&gt;  &lt;h3 style=&quot;font-weight: bold; font-style: inherit; font-family: inherit; margin-top: 3px; margin-right: 0px; margin-bottom: 3px; margin-left: 0px; color: #3a3e43; line-height: 25px; font-size: 18px; padding: 0px;&quot;&gt;Three Types of XSS&lt;/h3&gt;  &lt;p style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; padding: 0px;&quot;&gt;Three Types of XSS There are three types of XSS attacks:&lt;/p&gt;  &lt;ul style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; margin-top: 12px; margin-right: 0px; margin-bottom: 12px; margin-left: 24px; line-height: 19px; padding: 0px;&quot;&gt;  &lt;li style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; padding-top: 0px; padding-right: 0px; padding-bottom: 3px; padding-left: 0px; margin: 0px;&quot;&gt;Stored: The attack is saved into a persistent storage medium such as a database or file.&lt;/li&gt;  &lt;li style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; padding-top: 0px; padding-right: 0px; padding-bottom: 3px; padding-left: 0px; margin: 0px;&quot;&gt;Reflected: Non-persistent attacks needing a delivery method to initiate the attack such an email or malicious form.&lt;/li&gt;  &lt;li style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; padding-top: 0px; padding-right: 0px; padding-bottom: 3px; padding-left: 0px; margin: 0px;&quot;&gt;DOM based XSS: This attack manipulates the DOM to execute the attack payload.&lt;/li&gt;  &lt;/ul&gt;  &lt;p style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; padding: 0px;&quot;&gt;For this article we will be referring to Reflected XSS in our examples but the defenses we will cover work for all the flavors of XSS. More information can be found at: &lt;a href=&quot;https://www.owasp.org/index.php/Cross-site_Scripting_(XSS)XSS&quot;&gt;https://www.owasp.org/index.php/Cross-site_Scripting_(XSS)XSS&lt;/a&gt; attacks can impact your users in a variety of ways. The attack can steal information from the user, perform unintended actions in the application or even load malicious software to the user&amp;rsquo;s machine. A XSS attack can also have significant impacts on your web application as well. Once the attack is exposed, users will lose faith in the safety of your application causing damage to your company&amp;rsquo;s reputation.&lt;/p&gt;  &lt;h2 style=&quot;font-weight: bold; font-style: inherit; font-family: inherit; margin-top: 4px; margin-right: 0px; margin-bottom: 4px; margin-left: 0px; color: #3a3e43; line-height: 25px; font-size: 20px; padding: 0px;&quot;&gt;XSS Attack&lt;/h2&gt;  &lt;p style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; padding: 0px;&quot;&gt;So how does a XSS attack work? Here is an example of a very simple Reflected XSS attack:&lt;/p&gt;  &lt;div class=&quot;CodeHighlighter&quot; style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; padding: 0px; margin: 0px;&quot;&gt;  &lt;div class=&quot;CodeRay&quot;&gt; &lt;div class=&quot;code&quot;&gt;&lt;pre&gt;&lt;/pre&gt;&lt;/div&gt; &lt;/div&gt; &lt;ol style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; margin-top: 12px; margin-right: 0px; margin-bottom: 12px; margin-left: 24px; line-height: 19px; padding: 0px;&quot;&gt;&lt;li style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; padding-top: 0px; padding-right: 0px; padding-bottom: 3px; padding-left: 0px; margin: 0px;&quot;&gt;&lt;span class=&quot;html__tag_start&quot; style=&quot;font-weight: bold; font-style: inherit; font-family: inherit; color: navy; padding: 0px; margin: 0px;&quot;&gt;&amp;lt;span&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;html__attr_name&quot; style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; color: green; padding: 0px; margin: 0px;&quot;&gt;id&lt;/span&gt;=&lt;span class=&quot;html__attr_value&quot; style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; color: maroon; padding: 0px; margin: 0px;&quot;&gt;&quot;message-text&quot;&lt;/span&gt;&lt;span class=&quot;html__tag_start&quot; style=&quot;font-weight: bold; font-style: inherit; font-family: inherit; color: navy; padding: 0px; margin: 0px;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;&lt;li style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; padding-top: 0px; padding-right: 0px; padding-bottom: 3px; padding-left: 0px; margin: 0px;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;%=Request.QueryString[&quot;msg&quot;]%&amp;gt;&lt;/li&gt;&lt;li style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; padding-top: 0px; padding-right: 0px; padding-bottom: 3px; padding-left: 0px; margin: 0px;&quot;&gt;&lt;span class=&quot;html__tag_end&quot; style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; color: navy; padding: 0px; margin: 0px;&quot;&gt;&amp;lt;/span&amp;gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;  &lt;/div&gt;  &lt;p style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; padding: 0px;&quot;&gt;This quick code snippet grabs a string from the query string variable named &amp;ldquo;msg&amp;rdquo; and writes it directly to the HTML element &amp;ldquo;message-text&amp;rdquo;. Imagine the query string variable was the following:&lt;/p&gt;  &lt;div class=&quot;CodeHighlighter&quot; style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; padding: 0px; margin: 0px;&quot;&gt;  &lt;div class=&quot;CodeRay&quot;&gt; &lt;div class=&quot;code&quot;&gt;&lt;pre&gt;&lt;/pre&gt;&lt;/div&gt; &lt;/div&gt; &lt;ol style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; margin-top: 12px; margin-right: 0px; margin-bottom: 12px; margin-left: 24px; line-height: 19px; padding: 0px;&quot;&gt;&lt;li style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; padding-top: 0px; padding-right: 0px; padding-bottom: 3px; padding-left: 0px; margin: 0px;&quot;&gt;&amp;lt;script&amp;gt;alert(&lt;span class=&quot;js__string&quot; style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; color: teal; padding: 0px; margin: 0px;&quot;&gt;&#39;123&#39;&lt;/span&gt;);&amp;lt;/script&amp;gt;&lt;/li&gt;&lt;/ol&gt;  &lt;/div&gt;  &lt;p style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; padding: 0px;&quot;&gt;&amp;nbsp;This would load the script tag and execute the alert message to the HTML of message-text.&lt;/p&gt;  &lt;p style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; padding: 0px;&quot;&gt;While this example is very simplistic, XSS attacks can become more difficult to find when they are invoked from an Ajax request or when created during a data binding expression. When the attack is brought to the page from a database or other stored data, which is called a Stored XSS Attack. The example of the corporate blog is a Stored XSS attack as the malicious user has left the code to perform the XSS attack in the corporate blog Comments database.&lt;/p&gt;  &lt;h3 style=&quot;font-weight: bold; font-style: inherit; font-family: inherit; margin-top: 3px; margin-right: 0px; margin-bottom: 3px; margin-left: 0px; color: #3a3e43; line-height: 25px; font-size: 18px; padding: 0px;&quot;&gt;XSS Defense&lt;/h3&gt;  &lt;p style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; padding: 0px;&quot;&gt;To defend against XSS attacks you must be conscious of input to your application. Input can come from many different sources such as configuration files, databases, web services, and any other source that populates the application with data. With this in mind, the best defense against XSS is sanitizing data as it is input into your application.&lt;/p&gt;  &lt;p style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; padding: 0px;&quot;&gt;Fortunately sanitizing your input is simple using tools like the Microsoft AntiXSS Library (available for download at&amp;nbsp;&lt;a href=&quot;http://www.microsoft.com/downloads/en/details.aspx?FamilyID=f4cd231b-7e06-445b-bec7-343e5884e651&quot; style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; color: #0066dd; cursor: pointer; text-decoration: none; padding: 0px; margin: 0px;&quot;&gt;http://www.microsoft.com/downloads/en/details.aspx?FamilyID=f4cd231b-7e06-445b-bec7-343e5884e651&lt;/a&gt;). This code library makes it very easy to sanitize code on the server side. Using the AntiXSS library for our above example, we would update the code to be the following:&lt;/p&gt;  &lt;div class=&quot;CodeHighlighter&quot; style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; padding: 0px; margin: 0px;&quot;&gt;  &lt;div class=&quot;CodeRay&quot;&gt; &lt;div class=&quot;code&quot;&gt;&lt;pre&gt;&lt;/pre&gt;&lt;/div&gt; &lt;/div&gt; &lt;ol style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; margin-top: 12px; margin-right: 0px; margin-bottom: 12px; margin-left: 24px; line-height: 19px; padding: 0px;&quot;&gt;&lt;li style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; padding-top: 0px; padding-right: 0px; padding-bottom: 3px; padding-left: 0px; margin: 0px;&quot;&gt;&lt;span class=&quot;html__tag_start&quot; style=&quot;font-weight: bold; font-style: inherit; font-family: inherit; color: navy; padding: 0px; margin: 0px;&quot;&gt;&amp;lt;span&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;html__attr_name&quot; style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; color: green; padding: 0px; margin: 0px;&quot;&gt;id&lt;/span&gt;=&lt;span class=&quot;html__attr_value&quot; style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; color: maroon; padding: 0px; margin: 0px;&quot;&gt;&quot;message-text&quot;&lt;/span&gt;&lt;span class=&quot;html__tag_start&quot; style=&quot;font-weight: bold; font-style: inherit; font-family: inherit; color: navy; padding: 0px; margin: 0px;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;&lt;li style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; padding-top: 0px; padding-right: 0px; padding-bottom: 3px; padding-left: 0px; margin: 0px;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;%=Microsoft.Security.Application.Encoder.HtmlEncode(Request.QueryString[&quot;msg&quot;])%&amp;gt;&lt;/li&gt;&lt;li style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; padding-top: 0px; padding-right: 0px; padding-bottom: 3px; padding-left: 0px; margin: 0px;&quot;&gt;&lt;span class=&quot;html__tag_end&quot; style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; color: navy; padding: 0px; margin: 0px;&quot;&gt;&amp;lt;/span&amp;gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;  &lt;/div&gt;  &lt;p style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; padding: 0px;&quot;&gt;The library offers a multitude of encoding options including JavaScript, CSS, and XML encoding among others. Using the Anti-XSS Library, you can clean the input going in to your data store and sanitize the output coming through your application. While this library is an excellent resource for server side coding, sometimes you need a client side sanitizer to make sure the data you retrieve in JavaScript is clean.&lt;/p&gt;  &lt;p style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; padding: 0px;&quot;&gt;The OWASP Enterprise Security API (ESAPI) is one of the many projects available on the OWASP site. This API allows developers to wrap output into encoder methods for most development platforms. The JavaScript ESAPI library can be found at&lt;a href=&quot;https://www.owasp.org/index.php/Category:OWASP_Enterprise_Security_API#tab=JavaScript&quot; style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; color: #0066dd; cursor: pointer; text-decoration: none; padding: 0px; margin: 0px;&quot;&gt;https://www.owasp.org/index.php/Category:OWASP_Enterprise_Security_API#tab=JavaScript&lt;/a&gt;. Encoding with the ESAPI JavaScript library is just as simple as using the AntiXSS encoder. Here is an example:&lt;/p&gt;  &lt;div class=&quot;CodeHighlighter&quot; style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; padding: 0px; margin: 0px;&quot;&gt;  &lt;div class=&quot;CodeRay&quot;&gt; &lt;div class=&quot;code&quot;&gt;&lt;pre&gt;&lt;/pre&gt;&lt;/div&gt; &lt;/div&gt; &lt;ol style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; margin-top: 12px; margin-right: 0px; margin-bottom: 12px; margin-left: 24px; line-height: 19px; padding: 0px;&quot;&gt;&lt;li style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; padding-top: 0px; padding-right: 0px; padding-bottom: 3px; padding-left: 0px; margin: 0px;&quot;&gt;&amp;lt;script&amp;nbsp;src=&lt;span class=&quot;js__string&quot; style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; color: teal; padding: 0px; margin: 0px;&quot;&gt;&quot;Scripts/jquery-1.4.1.js&quot;&lt;/span&gt;&amp;nbsp;type=&lt;span class=&quot;js__string&quot; style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; color: teal; padding: 0px; margin: 0px;&quot;&gt;&quot;text/javascript&quot;&lt;/span&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/li&gt;&lt;li style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; padding-top: 0px; padding-right: 0px; padding-bottom: 3px; padding-left: 0px; margin: 0px;&quot;&gt;&amp;nbsp;&lt;/li&gt;&lt;li style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; padding-top: 0px; padding-right: 0px; padding-bottom: 3px; padding-left: 0px; margin: 0px;&quot;&gt;&amp;lt;!--&amp;nbsp;ESAPI&amp;nbsp;requirements&amp;nbsp;--&amp;gt;&lt;/li&gt;&lt;li style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; padding-top: 0px; padding-right: 0px; padding-bottom: 3px; padding-left: 0px; margin: 0px;&quot;&gt;&amp;lt;script&amp;nbsp;src=&lt;span class=&quot;js__string&quot; style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; color: teal; padding: 0px; margin: 0px;&quot;&gt;&quot;Scripts/lib/log4js.js&quot;&lt;/span&gt;&amp;nbsp;type=&lt;span class=&quot;js__string&quot; style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; color: teal; padding: 0px; margin: 0px;&quot;&gt;&quot;text/javascript&quot;&lt;/span&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/li&gt;&lt;li style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; padding-top: 0px; padding-right: 0px; padding-bottom: 3px; padding-left: 0px; margin: 0px;&quot;&gt;&amp;lt;script&amp;nbsp;src=&lt;span class=&quot;js__string&quot; style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; color: teal; padding: 0px; margin: 0px;&quot;&gt;&quot;Scripts/esapi.js&quot;&lt;/span&gt;&amp;nbsp;type=&lt;span class=&quot;js__string&quot; style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; color: teal; padding: 0px; margin: 0px;&quot;&gt;&quot;text/javascript&quot;&lt;/span&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/li&gt;&lt;li style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; padding-top: 0px; padding-right: 0px; padding-bottom: 3px; padding-left: 0px; margin: 0px;&quot;&gt;&amp;lt;script&amp;nbsp;src=&lt;span class=&quot;js__string&quot; style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; color: teal; padding: 0px; margin: 0px;&quot;&gt;&quot;Scripts/resources/i18n/ESAPI_Standard_en_US.properties.js&quot;&lt;/span&gt;&amp;nbsp;type=&lt;span class=&quot;js__string&quot; style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; color: teal; padding: 0px; margin: 0px;&quot;&gt;&quot;text/javascript&quot;&lt;/span&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/li&gt;&lt;li style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; padding-top: 0px; padding-right: 0px; padding-bottom: 3px; padding-left: 0px; margin: 0px;&quot;&gt;&amp;lt;script&amp;nbsp;src=&lt;span class=&quot;js__string&quot; style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; color: teal; padding: 0px; margin: 0px;&quot;&gt;&quot;Scripts/resources/Base.esapi.properties.js&quot;&lt;/span&gt;&amp;nbsp;type=&lt;span class=&quot;js__string&quot; style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; color: teal; padding: 0px; margin: 0px;&quot;&gt;&quot;text/javascript&quot;&lt;/span&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/li&gt;&lt;li style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; padding-top: 0px; padding-right: 0px; padding-bottom: 3px; padding-left: 0px; margin: 0px;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/li&gt;&lt;li style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; padding-top: 0px; padding-right: 0px; padding-bottom: 3px; padding-left: 0px; margin: 0px;&quot;&gt;&amp;lt;!--&amp;nbsp;ESAPI&amp;nbsp;usage&amp;nbsp;--&amp;gt;&lt;/li&gt;&lt;li style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; padding-top: 0px; padding-right: 0px; padding-bottom: 3px; padding-left: 0px; margin: 0px;&quot;&gt;&amp;lt;script&amp;nbsp;language=&lt;span class=&quot;js__string&quot; style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; color: teal; padding: 0px; margin: 0px;&quot;&gt;&quot;javascript&quot;&lt;/span&gt;&amp;nbsp;type=&lt;span class=&quot;js__string&quot; style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; color: teal; padding: 0px; margin: 0px;&quot;&gt;&quot;text/javascript&quot;&lt;/span&gt;&amp;gt;&lt;/li&gt;&lt;li style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; padding-top: 0px; padding-right: 0px; padding-bottom: 3px; padding-left: 0px; margin: 0px;&quot;&gt;&lt;span class=&quot;js__operator&quot; style=&quot;font-weight: bold; font-style: inherit; font-family: inherit; color: #4169e1; padding: 0px; margin: 0px;&quot;&gt;function&lt;/span&gt;&amp;nbsp;cleanData()&amp;nbsp;&lt;span class=&quot;js__brace&quot; style=&quot;font-weight: bold; font-style: inherit; font-family: inherit; color: red; padding: 0px; margin: 0px;&quot;&gt;{&lt;/span&gt;&lt;/li&gt;&lt;li style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; padding-top: 0px; padding-right: 0px; padding-bottom: 3px; padding-left: 0px; margin: 0px;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;org.owasp.esapi.ESAPI.initialize();&lt;/li&gt;&lt;li style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; padding-top: 0px; padding-right: 0px; padding-bottom: 3px; padding-left: 0px; margin: 0px;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;js__statement&quot; style=&quot;font-weight: bold; font-style: inherit; font-family: inherit; color: navy; padding: 0px; margin: 0px;&quot;&gt;var&lt;/span&gt;&amp;nbsp;cleanedInput&amp;nbsp;=&amp;nbsp;$ESAPI.encoder().encodeForHTML(&lt;span class=&quot;js__string&quot; style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; color: teal; padding: 0px; margin: 0px;&quot;&gt;&quot;&amp;lt;script&amp;gt;alert(&#39;123&#39;);&amp;lt;//script&amp;gt;&quot;&lt;/span&gt;);&lt;/li&gt;&lt;li style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; padding-top: 0px; padding-right: 0px; padding-bottom: 3px; padding-left: 0px; margin: 0px;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$(&lt;span class=&quot;js__string&quot; style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; color: teal; padding: 0px; margin: 0px;&quot;&gt;&quot;#message-text&quot;&lt;/span&gt;).html(cleanedInput);&lt;/li&gt;&lt;li style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; padding-top: 0px; padding-right: 0px; padding-bottom: 3px; padding-left: 0px; margin: 0px;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;js__brace&quot; style=&quot;font-weight: bold; font-style: inherit; font-family: inherit; color: red; padding: 0px; margin: 0px;&quot;&gt;}&lt;/span&gt;&lt;/li&gt;&lt;li style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; padding-top: 0px; padding-right: 0px; padding-bottom: 3px; padding-left: 0px; margin: 0px;&quot;&gt;&amp;lt;/script&amp;gt;&lt;/li&gt;&lt;/ol&gt;  &lt;/div&gt;  &lt;p style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; padding: 0px;&quot;&gt;Using the $ESAPI object, we can encode the malicious string to be treated like text data and not interpreted like HTML tags. The ESAPI encoder is an excellent tool to ensure clean data from Mashups or the results of an Ajax call.&lt;/p&gt;  &lt;p style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; padding: 0px;&quot;&gt;Libraries like the Anti-XSS library and ESAPI do have a downside, performance. By channeling all your data through a sanitization library, you incur some overhead in the application. The security benefit from using these libraries far outweighs the slight performance hit as XSS attacks can damage not just your company&amp;rsquo;s image but also your user&amp;rsquo;s information.&lt;/p&gt;  &lt;h2 style=&quot;font-weight: bold; font-style: inherit; font-family: inherit; margin-top: 4px; margin-right: 0px; margin-bottom: 4px; margin-left: 0px; color: #3a3e43; line-height: 25px; font-size: 20px; padding: 0px;&quot;&gt;Cross Site Request Forgery (CSRF)&lt;/h2&gt;  &lt;p style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; padding: 0px;&quot;&gt;While XSS exploits the user&amp;rsquo;s trust in a specific web site, Cross Site Request Forgery (CSRF) exploits a user&amp;rsquo;s trust in how their Web Browser works. A CSRF attack happens when an attacker crafts a malicious HTTP request and then tricks the user into executing the request. When an HTTP request is sent to a web site all the cookies, session and header information are sent as well. With this in mind, using CSRF an attacker could execute commands against a site posing as the user.&lt;/p&gt;  &lt;p style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; padding: 0px;&quot;&gt;Let&amp;rsquo;s look at an example of this attack. One day a user is checking their bank balance online using the new XYZBank.com website. The user makes a few transfers moving money around different accounts. Leaving the site, the user clicks around on the web until they land on the corporate blog we discussed in the XSS example. The user reads the latest blog entry and looks at the various comments. One of the comments was left by a malicious user who has setup an invisible image tag whose SRC attribute is an HTTP request to transfer money from the users account to the attacker&amp;rsquo;s account. Since the user was already authenticated to the XYZBank.com website, the browser and server assume this is a valid request from the user and executes the money transfer. The next time the user goes to XYZBank.com and sees they are missing money; it is likely they will assume their account was hacked and not connect the loss to the corporate blog.&lt;/p&gt;  &lt;h3 style=&quot;font-weight: bold; font-style: inherit; font-family: inherit; margin-top: 3px; margin-right: 0px; margin-bottom: 3px; margin-left: 0px; color: #3a3e43; line-height: 25px; font-size: 18px; padding: 0px;&quot;&gt;CSRF Attack&lt;/h3&gt;  &lt;p style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; padding: 0px;&quot;&gt;Building a CSRF attack requires a lot of homework. The first step of any attack is building a profile on the target, in this case XYZBank.com. By using the banking site, the attacker can learn what cookies are stored, what fields perform what actions, how data flows through the site, etc&amp;hellip; By creating an account on XYZBank.com and using the site, our attacker has learned the following items:&lt;/p&gt;  &lt;ul style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; margin-top: 12px; margin-right: 0px; margin-bottom: 12px; margin-left: 24px; line-height: 19px; padding: 0px;&quot;&gt;  &lt;li style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; padding-top: 0px; padding-right: 0px; padding-bottom: 3px; padding-left: 0px; margin: 0px;&quot;&gt;Primary account number is stored in a cookie to save the user from selecting which account is their primary account on each visit.&lt;/li&gt;  &lt;li style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; padding-top: 0px; padding-right: 0px; padding-bottom: 3px; padding-left: 0px; margin: 0px;&quot;&gt;On the money transfer page there are three fields required to transfer money:&lt;br /&gt;  &lt;ul style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; margin-top: 12px; margin-right: 0px; margin-bottom: 12px; margin-left: 24px; line-height: 19px; padding: 0px;&quot;&gt;  &lt;li style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; padding-top: 0px; padding-right: 0px; padding-bottom: 3px; padding-left: 0px; margin: 0px;&quot;&gt;Source Account Number: Where the money is coming from. If the value is blank, the site assumes the use of the Primary Account.&lt;/li&gt;  &lt;li style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; padding-top: 0px; padding-right: 0px; padding-bottom: 3px; padding-left: 0px; margin: 0px;&quot;&gt;Destination Account Number: Where the money is going to&lt;/li&gt;  &lt;li style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; padding-top: 0px; padding-right: 0px; padding-bottom: 3px; padding-left: 0px; margin: 0px;&quot;&gt;Dollar amount: How much is being transferred&lt;/li&gt;  &lt;/ul&gt;  &lt;/li&gt;  &lt;li style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; padding-top: 0px; padding-right: 0px; padding-bottom: 3px; padding-left: 0px; margin: 0px;&quot;&gt;The site also uses query string parameters for persisting data between HTTP requests.&lt;/li&gt;  &lt;/ul&gt;  &lt;p style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; padding: 0px;&quot;&gt;Using this information, the attacker can create the following image tag:&lt;/p&gt;  &lt;div class=&quot;CodeHighlighter&quot; style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; padding: 0px; margin: 0px;&quot;&gt;  &lt;div class=&quot;CodeRay&quot;&gt; &lt;div class=&quot;code&quot;&gt;&lt;pre&gt;&lt;/pre&gt;&lt;/div&gt; &lt;/div&gt; &lt;ol style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; margin-top: 12px; margin-right: 0px; margin-bottom: 12px; margin-left: 24px; line-height: 19px; padding: 0px;&quot;&gt;&lt;li style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; padding-top: 0px; padding-right: 0px; padding-bottom: 3px; padding-left: 0px; margin: 0px;&quot;&gt;&lt;span class=&quot;html__tag_start&quot; style=&quot;font-weight: bold; font-style: inherit; font-family: inherit; color: navy; padding: 0px; margin: 0px;&quot;&gt;&amp;lt;img&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;html__attr_name&quot; style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; color: green; padding: 0px; margin: 0px;&quot;&gt;src&lt;/span&gt;=&lt;span class=&quot;html__attr_value&quot; style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; color: maroon; padding: 0px; margin: 0px;&quot;&gt;&quot;https://www.xyzbank.com/transfer.php?txtSource=&amp;amp;txtDest=[Attacker&#39;s&amp;nbsp;Account]&amp;amp;txtAmount=1500&quot;&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;html__attr_name&quot; style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; color: green; padding: 0px; margin: 0px;&quot;&gt;width&lt;/span&gt;=&lt;span class=&quot;html__attr_value&quot; style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; color: maroon; padding: 0px; margin: 0px;&quot;&gt;&quot;0&quot;&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;html__attr_name&quot; style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; color: green; padding: 0px; margin: 0px;&quot;&gt;height&lt;/span&gt;=&lt;span class=&quot;html__attr_value&quot; style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; color: maroon; padding: 0px; margin: 0px;&quot;&gt;&quot;0&quot;&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;html__tag_start&quot; style=&quot;font-weight: bold; font-style: inherit; font-family: inherit; color: navy; padding: 0px; margin: 0px;&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;  &lt;/div&gt;  &lt;p style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; padding: 0px;&quot;&gt;This zero height, zero width image would be invisible to the user but when the image is called by the Browser, the SRC attribute will send the transfer request to XYZBank.com. When the request is sent, the cookies and session for any existing connections to XYZBank.com will be sent as well making the website think that the request is legitimate. CSRF attacks can use images as in the example above or they could use anything that can make an HTTP request.&lt;/p&gt;  &lt;h3 style=&quot;font-weight: bold; font-style: inherit; font-family: inherit; margin-top: 3px; margin-right: 0px; margin-bottom: 3px; margin-left: 0px; color: #3a3e43; line-height: 25px; font-size: 18px; padding: 0px;&quot;&gt;CSRF Defense&lt;/h3&gt;  &lt;p style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; padding: 0px;&quot;&gt;While XSS defense is simply a matter of cleaning data in your system, CSRF exploits how an Internet Browser is supposed to work. The good news is that there are multiple defenses that you can put in place to protect your application against CSRF. We will examine a few server side options first and then discuss some best practices to present to your users on how they can defend against CSRF on other sites.&lt;/p&gt;  &lt;p style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; padding: 0px;&quot;&gt;Our goal is to create multiple layers of defense against a CSRF attack. The first step to this is to try and validate that the request is coming from your own site (in this case, a request to XYZBank.com is coming from XYZBank.com). Checking the HTTP Referrer Header can usually tell you where a request is coming from. This HTTP Header keeps track of where the HTTP request originatedfrom&amp;nbsp;(for more information about the HTTP Referrer Header see:&lt;a href=&quot;http://www.w3.org/Protocols/HTTP/HTRQ_Headers.html#z14&quot; style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; color: #0066dd; cursor: pointer; text-decoration: none; padding: 0px; margin: 0px;&quot;&gt;http://www.w3.org/Protocols/HTTP/HTRQ_Headers.html#z14&lt;/a&gt;). If the request originates from XYZBank.com then the HTTP Referrer will be XYZBank.com. Unfortunately, the Referrer Header can be spoofed and is not always present for every HTTP request. Checking the Referrer is simply an added layer of validation that you can use.&lt;/p&gt;  &lt;p style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; padding: 0px;&quot;&gt;A much more reliable method for preventing CSRF attacks is to use the Synchronizer Token Pattern. This design pattern uses a randomly generated token that is associated with a user&amp;rsquo;s session to ensure that the request originated from the site. The random token is then stored in a hidden field and checked on each request. Using this method, the attacker would not be able to guess the random token (as it is only stored in a hidden field) and thus the request would be rejected. Using this method we would setup a Hidden Field on the HTML page and populate it with a random token:&lt;/p&gt;  &lt;div class=&quot;CodeHighlighter&quot; style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; padding: 0px; margin: 0px;&quot;&gt;  &lt;div class=&quot;CodeRay&quot;&gt; &lt;div class=&quot;code&quot;&gt;&lt;pre&gt;&lt;/pre&gt;&lt;/div&gt; &lt;/div&gt; &lt;ol style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; margin-top: 12px; margin-right: 0px; margin-bottom: 12px; margin-left: 24px; line-height: 19px; padding: 0px;&quot;&gt;&lt;li style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; padding-top: 0px; padding-right: 0px; padding-bottom: 3px; padding-left: 0px; margin: 0px;&quot;&gt;&amp;lt;input&amp;nbsp;type=&lt;span class=&quot;js__string&quot; style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; color: teal; padding: 0px; margin: 0px;&quot;&gt;&quot;hidden&quot;&lt;/span&gt;&amp;nbsp;id=&lt;span class=&quot;js__string&quot; style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; color: teal; padding: 0px; margin: 0px;&quot;&gt;&quot;hdn1&quot;&lt;/span&gt;&amp;nbsp;value=&lt;span class=&quot;js__string&quot; style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; color: teal; padding: 0px; margin: 0px;&quot;&gt;&quot;29ldfoa9210129041jljfmcaoj39141&quot;&lt;/span&gt;&amp;nbsp;/&amp;gt;&lt;/li&gt;&lt;/ol&gt;  &lt;/div&gt;  &lt;p style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; padding: 0px;&quot;&gt;Now, for our banking site we would be expecting another parameter in the query string. The requested URL would now look like the following:&lt;/p&gt;  &lt;p style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; padding: 0px;&quot;&gt;&lt;em style=&quot;font-weight: inherit; font-style: italic; font-family: inherit; padding: 0px; margin: 0px;&quot;&gt;&lt;a href=&quot;https://www.xyzbank.com/transfer.php?txtSource=&amp;amp;txtDest=&quot;&gt;https://www.xyzbank.com/transfer.php?txtSource=&amp;amp;txtDest=&lt;/a&gt;[Attacker&#39;s Account]&amp;amp;txtAmount=1500&amp;amp;hdn1=29ldfoa9210129041jljfmcaoj39141&lt;/em&gt;&lt;/p&gt;  &lt;p style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; padding: 0px;&quot;&gt;When the request arrives at the transfer.php page, we can check the value of &amp;ldquo;hdn1&amp;rdquo; against what has been stored in the Session. If the values match, then the request is valid and can continue. If not, then the request is rejected and an error message presented to the user.&lt;/p&gt;  &lt;p style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; padding: 0px;&quot;&gt;For ASP.NET developers, ViewState already validates the requests coming in to the server but it is possible to forge or copy a ViewState with known valid data. By default, ViewState is not tied to a particular user but by using the Page.ViewStateUserKey, developers can bind a ViewState to a specific user or session. Setting the ViewStateUserKey to the SessionID will make the ViewState valid only for that SessionID so if an attacker attempts to reuse/forge the ViewState value, the ASP.NET application will see the request as invalid. Enabling this ViewState feature is simple. Add the following to the Page_PreInit method of your ASP.NET page:&lt;/p&gt;  &lt;div class=&quot;CodeHighlighter&quot; style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; padding: 0px; margin: 0px;&quot;&gt;  &lt;p /&gt; &lt;ol style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; margin-top: 12px; margin-right: 0px; margin-bottom: 12px; margin-left: 24px; line-height: 19px; padding: 0px;&quot;&gt;&lt;li style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; padding-top: 0px; padding-right: 0px; padding-bottom: 3px; padding-left: 0px; margin: 0px;&quot;&gt;&lt;span class=&quot;js__operator&quot; style=&quot;font-weight: bold; font-style: inherit; font-family: inherit; color: #4169e1; padding: 0px; margin: 0px;&quot;&gt;void&lt;/span&gt;&amp;nbsp;Page_PreInit(object&amp;nbsp;sender,&amp;nbsp;EventArgs&amp;nbsp;e)&lt;/li&gt;&lt;li style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; padding-top: 0px; padding-right: 0px; padding-bottom: 3px; padding-left: 0px; margin: 0px;&quot;&gt;&lt;span class=&quot;js__brace&quot; style=&quot;font-weight: bold; font-style: inherit; font-family: inherit; color: red; padding: 0px; margin: 0px;&quot;&gt;{&lt;/span&gt;&lt;/li&gt;&lt;li style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; padding-top: 0px; padding-right: 0px; padding-bottom: 3px; padding-left: 0px; margin: 0px;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Page.ViewStateUserKey&amp;nbsp;=&amp;nbsp;Session.SessionID;&lt;/li&gt;&lt;li style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; padding-top: 0px; padding-right: 0px; padding-bottom: 3px; padding-left: 0px; margin: 0px;&quot;&gt;&lt;span class=&quot;js__brace&quot; style=&quot;font-weight: bold; font-style: inherit; font-family: inherit; color: red; padding: 0px; margin: 0px;&quot;&gt;}&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;  &lt;/div&gt;  &lt;p style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; padding: 0px;&quot;&gt;You could use other properties such as User ID but whatever data point you use, it must be unique per user. Otherwise, it totally defeats the purpose of the ViewStateUserKey and opens your application to ViewState forgery.&lt;/p&gt;  &lt;p style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; padding: 0px;&quot;&gt;The best defense against CSRF is an easy tactic that your users can do&amp;hellip;just log out. Most CSRF attacks leverage actions that are available to authenticated users. Encourage your users to log out from your site and others when they are finished. Learn more about all of these defenses and more on the&amp;nbsp;&lt;a href=&quot;https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)_Prevention_Cheat_Sheet&quot; style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; color: #0066dd; cursor: pointer; text-decoration: none; padding: 0px; margin: 0px;&quot;&gt;OWASP CSRF Prevention Cheat Sheet&lt;/a&gt;.&lt;/p&gt;  &lt;h2 style=&quot;font-weight: bold; font-style: inherit; font-family: inherit; margin-top: 4px; margin-right: 0px; margin-bottom: 4px; margin-left: 0px; color: #3a3e43; line-height: 25px; font-size: 20px; padding: 0px;&quot;&gt;Tip of the iceberg&lt;/h2&gt;  &lt;p style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; padding: 0px;&quot;&gt;The two attacks we examined in this article, Cross Site Scripting (XSS) and Cross Site Request Forgery (CSRF), are common attacks but not the only security threats on the web. OWASP&amp;rsquo;s Top Ten list is an excellent resource to start your web application security training. Correcting XSS and CSRF vulnerabilities on your site is an excellent starting point on your application security journey. By increasing your security awareness implementing some of the mitigations presented in this article, you will be well on your way to protecting your user&amp;rsquo;s data and the reputation of your application.&lt;/p&gt;  &lt;p style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; padding: 0px;&quot;&gt;&amp;nbsp;&lt;/p&gt;  &lt;p style=&quot;font-weight: inherit; font-style: inherit; font-family: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 12px; margin-left: 0px; padding: 0px;&quot;&gt;&lt;span style=&quot;text-decoration: underline; font-size: medium;&quot;&gt;&lt;strong&gt;Reference:&lt;/strong&gt;&lt;/span&gt;&amp;nbsp; &lt;a href=&quot;http://msdn.microsoft.com/en-us/scriptjunkie/hh243615.aspx&quot; title=&quot;http://msdn.microsoft.com/en-us/scriptjunkie/hh243615.aspx&quot; target=&quot;_blank&quot;&gt;ScriptJunkie&lt;/a&gt;&amp;nbsp;By &lt;a href=&quot;http://seccode.blogspot.com/&quot; title=&quot;http://seccode.blogspot.com/&quot; target=&quot;_blank&quot;&gt;Tim Kulp&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://b-giar.blogspot.com/feeds/8305615555893419902/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://b-giar.blogspot.com/2011/07/javascript-attackdefend.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8953490625351031216/posts/default/8305615555893419902'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8953490625351031216/posts/default/8305615555893419902'/><link rel='alternate' type='text/html' href='http://b-giar.blogspot.com/2011/07/javascript-attackdefend.html' title='JavaScript Attack/Defend'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/01359356128419832182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8953490625351031216.post-4823682678215743286</id><published>2011-07-10T13:33:00.001+03:00</published><updated>2011-07-10T13:33:50.707+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Advance Computing"/><category scheme="http://www.blogger.com/atom/ns#" term="Hacking"/><category scheme="http://www.blogger.com/atom/ns#" term="Networks"/><category scheme="http://www.blogger.com/atom/ns#" term="web"/><title type='text'>How to Crack a Wi-Fi Network.</title><content type='html'>&lt;div class=&#39;posterous_autopost&#39;&gt;&lt;p&gt;&lt;span style=&quot;font-family: tahoma, arial, sans-serif;&quot;&gt;&lt;strong&gt;&lt;em&gt;You already know that if you want to lock down your Wi-Fi network, you should opt for WPA encryption because WEP is easy to crack. But did you know how easy? Take a look.&lt;/em&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span style=&quot;font-family: tahoma, arial, sans-serif;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;  &lt;div class=&quot;post-bodycopy clearfix&quot; style=&quot;display: block;&quot;&gt;  &lt;p style=&quot;margin-top: 1em; margin-bottom: 1em; margin-right: 0px; margin-left: 0px; display: block; padding: 0px;&quot;&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&lt;strong&gt;&lt;em&gt;This tutorial is for information purposes only, and I do not endorse any of the activities discussed within this guide. I nor anyone hosting this guide can be held responsible for anything you do after reading this. What you do with your day lies on your shoulders.&lt;/em&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;  &lt;h2 style=&quot;margin-top: 1em; margin-bottom: 0.2em; padding-top: 0px; padding-bottom: 0px; font-size: 28px; line-height: 1.3; margin-right: 0px; margin-left: 0px;&quot;&gt;1.Black Track&lt;/h2&gt;  &lt;p style=&quot;margin-top: 1em; margin-bottom: 1em; margin-right: 0px; margin-left: 0px; display: block; padding: 0px;&quot;&gt;Today we&amp;rsquo;re going to run down, step-by-step, how to crack a Wi-Fi network with WEP security turned on.&amp;nbsp;&lt;strong&gt;But first, a word: Knowledge is power, but power doesn&amp;rsquo;t mean you should be a jerk, or do anything illegal. Knowing how to pick a lock doesn&amp;rsquo;t make you a thief. Consider this post educational, or a proof-of-concept intellectual exercise.&lt;/strong&gt;&lt;/p&gt;  &lt;p style=&quot;margin-top: 1em; margin-bottom: 1em; margin-right: 0px; margin-left: 0px; display: block; padding: 0px;&quot;&gt;Dozens of tutorials on how to crack WEP are already all over the internet using this method. Seriously&amp;mdash;Google it. This ain&amp;rsquo;t what you&amp;rsquo;d call &amp;ldquo;news.&amp;rdquo; But what is surprising is that someone like me, with minimal networking experience, can get this done with free software and a cheap Wi-Fi adapter. Here&amp;rsquo;s how it goes.&lt;/p&gt;  &lt;p style=&quot;margin-top: 1em; margin-bottom: 1em; margin-right: 0px; margin-left: 0px; display: block; padding: 0px;&quot;&gt;&lt;strong&gt;What You&amp;rsquo;ll Need.&lt;/strong&gt;&lt;/p&gt;  &lt;p style=&quot;margin-top: 1em; margin-bottom: 1em; margin-right: 0px; margin-left: 0px; display: block; padding: 0px;&quot;&gt;Unless you&amp;rsquo;re a computer security and networking ninja, chances are you don&amp;rsquo;t have all the tools on hand to get this job done. Here&amp;rsquo;s what you&amp;rsquo;ll need:&lt;/p&gt;  &lt;p style=&quot;margin-top: 1em; margin-bottom: 1em; margin-right: 0px; margin-left: 0px; display: block; padding: 0px;&quot;&gt;* A compatible wireless adapter&amp;mdash;This is the biggest requirement. You&amp;rsquo;ll need a wireless adapter that&amp;rsquo;s capable of packet injection, and chances are the one in your computer is not. After consulting with my friendly neighborhood security expert, I purchased an Alfa AWUS050NH USB adapter, pictured here, and it set me back about $50 on Amazon. Update: Don&amp;rsquo;t do what I did. Get the Alfa AWUS036H, not the US050NH, instead. The guy in this video below is using a $12 model he bought on Ebay (and is even selling his router of choice). There are plenty of resources on getting aircrack-compatible adapters out there.&lt;/p&gt;  &lt;p style=&quot;margin-top: 1em; margin-bottom: 1em; margin-right: 0px; margin-left: 0px; display: block; padding: 0px;&quot;&gt;*&amp;nbsp;&lt;a href=&quot;http://www.remote-exploit.org/backtrack_download.html&quot; target=&quot;_blank&quot; style=&quot;color: #666666; font-weight: bold; text-decoration: none;&quot;&gt;A BackTrack 3 Live CD.&lt;/a&gt;&amp;nbsp;We already took you on a full screenshot tour of how to install and use BackTrack 3, the Linux Live CD that lets you do all sorts of security testing and tasks. Download yourself a copy of the CD and burn it, or load it up in VMware to get started. (I tried the BackTrack 4 pre-release, and it didn&amp;rsquo;t work as well as BT3. Do yourself a favor and stick with BackTrack 3 for now.)&lt;/p&gt;  &lt;p style=&quot;margin-top: 1em; margin-bottom: 1em; margin-right: 0px; margin-left: 0px; display: block; padding: 0px;&quot;&gt;* A nearby WEP-enabled Wi-Fi network. The signal should be strong and ideally people are using it, connecting and disconnecting their devices from it. The more use it gets while you collect the data you need to run your crack, the better your chances of success.&lt;/p&gt;  &lt;p style=&quot;margin-top: 1em; margin-bottom: 1em; margin-right: 0px; margin-left: 0px; display: block; padding: 0px;&quot;&gt;* Patience with the command line. This is an ten-step process that requires typing in long, arcane commands and waiting around for your Wi-Fi card to collect data in order to crack the password. Like the doctor said to the short person, be a little patient.&lt;/p&gt;  &lt;p style=&quot;margin-top: 1em; margin-bottom: 1em; margin-right: 0px; margin-left: 0px; display: block; padding: 0px;&quot;&gt;&lt;strong&gt;Crack That WEP&lt;/strong&gt;&lt;/p&gt;  &lt;p style=&quot;margin-top: 1em; margin-bottom: 1em; margin-right: 0px; margin-left: 0px; display: block; padding: 0px;&quot;&gt;To crack WEP, you&amp;rsquo;ll need to launch Konsole, BackTrack&amp;rsquo;s built-in command line. It&amp;rsquo;s right there on the taskbar in the lower left corner, second button to the right. Now, the commands.&lt;/p&gt;  &lt;p style=&quot;margin-top: 1em; margin-bottom: 1em; margin-right: 0px; margin-left: 0px; display: block; padding: 0px;&quot;&gt;First run the following to get a list of your network interfaces:&lt;/p&gt;  &lt;p style=&quot;margin-top: 1em; margin-bottom: 1em; margin-right: 0px; margin-left: 0px; display: block; padding: 0px;&quot;&gt;&lt;em&gt;airmon-ng&lt;/em&gt;&lt;/p&gt;  &lt;p style=&quot;margin-top: 1em; margin-bottom: 1em; margin-right: 0px; margin-left: 0px; display: block; padding: 0px;&quot;&gt;The only one I&amp;rsquo;ve got there is labeled ra0. Yours may be different; take note of the label and write it down. From here on in, substitute it in everywhere a command includes (interface).&lt;/p&gt;  &lt;p style=&quot;margin-top: 1em; margin-bottom: 1em; margin-right: 0px; margin-left: 0px; display: block; padding: 0px;&quot;&gt;Now, run the following four commands. See the output that I got for them in the screenshot below.&lt;/p&gt;  &lt;p style=&quot;margin-top: 1em; margin-bottom: 1em; margin-right: 0px; margin-left: 0px; display: block; padding: 0px;&quot;&gt;&lt;em&gt;airmon-ng stop (interface)&lt;br /&gt;ifconfig (interface) down&lt;br /&gt;macchanger &amp;ndash;mac 00:11:22:33:44:55 (interface)&lt;br /&gt;airmon-ng start (interface)&lt;br /&gt;&lt;/em&gt;&lt;br /&gt;If you don&amp;rsquo;t get the same results from these commands as pictured here, most likely your network adapter won&amp;rsquo;t work with this particular crack. If you do, you&amp;rsquo;ve successfully &amp;ldquo;faked&amp;rdquo; a new MAC address on your network interface, 00:11:22:33:44:55.&lt;/p&gt;  &lt;p style=&quot;margin-top: 1em; margin-bottom: 1em; margin-right: 0px; margin-left: 0px; display: block; padding: 0px;&quot;&gt;Now it&amp;rsquo;s time to pick your network. Run:&lt;/p&gt;  &lt;p style=&quot;margin-top: 1em; margin-bottom: 1em; margin-right: 0px; margin-left: 0px; display: block; padding: 0px;&quot;&gt;&lt;em&gt;airodump-ng (interface)&lt;/em&gt;&lt;/p&gt;  &lt;p style=&quot;margin-top: 1em; margin-bottom: 1em; margin-right: 0px; margin-left: 0px; display: block; padding: 0px;&quot;&gt;To see a list of wireless networks around you. When you see the one you want, hit Ctrl+C to stop the list. Highlight the row pertaining to the network of interest, and take note of two things: its BSSID and its channel (in the column labeled CH), . Obviously the network you want to crack should have WEP encryption (in the ENC) column, not WPA or anything else.&lt;/p&gt;  &lt;p style=&quot;margin-top: 1em; margin-bottom: 1em; margin-right: 0px; margin-left: 0px; display: block; padding: 0px;&quot;&gt;Like I said, hit Ctrl+C to stop this listing. (I had to do this once or twice to find the network I was looking for.) Once you&amp;rsquo;ve got it, highlight the BSSID and copy it to your clipboard for reuse in the upcoming commands.&lt;/p&gt;  &lt;p style=&quot;margin-top: 1em; margin-bottom: 1em; margin-right: 0px; margin-left: 0px; display: block; padding: 0px;&quot;&gt;Now we&amp;rsquo;re going to watch what&amp;rsquo;s going on with that network you chose and capture that information to a file. Run:&lt;/p&gt;  &lt;p style=&quot;margin-top: 1em; margin-bottom: 1em; margin-right: 0px; margin-left: 0px; display: block; padding: 0px;&quot;&gt;&lt;em&gt;airodump-ng -c (channel) -w (file name) &amp;ndash;bssid (bssid) (interface)&lt;/em&gt;&lt;/p&gt;  &lt;p style=&quot;margin-top: 1em; margin-bottom: 1em; margin-right: 0px; margin-left: 0px; display: block; padding: 0px;&quot;&gt;Where (channel) is your network&amp;rsquo;s channel, and (bssid) is the BSSID you just copied to clipboard. You can use the Shift+Insert key combination to paste it into the command. Enter anything descriptive for (file name). I chose &amp;ldquo;yoyo,&amp;rdquo; which is the network&amp;rsquo;s name I&amp;rsquo;m cracking.&lt;/p&gt;  &lt;p style=&quot;margin-top: 1em; margin-bottom: 1em; margin-right: 0px; margin-left: 0px; display: block; padding: 0px;&quot;&gt;You&amp;rsquo;ll get output like what&amp;rsquo;s in the window in the background pictured below. Leave that one be. Open a new Konsole window in the foreground, and enter this command:&lt;/p&gt;  &lt;p style=&quot;margin-top: 1em; margin-bottom: 1em; margin-right: 0px; margin-left: 0px; display: block; padding: 0px;&quot;&gt;&lt;em&gt;aireplay-ng -1 0 -a (bssid) -h 00:11:22:33:44:55 -e (essid) (interface)&lt;/em&gt;&lt;/p&gt;  &lt;p style=&quot;margin-top: 1em; margin-bottom: 1em; margin-right: 0px; margin-left: 0px; display: block; padding: 0px;&quot;&gt;Here the ESSID is the access point&amp;rsquo;s SSID name, which in my case is yoyo. What you want to get after this command is the reassuring &amp;ldquo;Association successful&amp;rdquo; message with that smiley face.&lt;/p&gt;  &lt;p style=&quot;margin-top: 1em; margin-bottom: 1em; margin-right: 0px; margin-left: 0px; display: block; padding: 0px;&quot;&gt;You&amp;rsquo;re almost there. Now it&amp;rsquo;s time for:&lt;/p&gt;  &lt;p style=&quot;margin-top: 1em; margin-bottom: 1em; margin-right: 0px; margin-left: 0px; display: block; padding: 0px;&quot;&gt;&lt;em&gt;aireplay-ng -3 -b (bssid) -h 00:11:22:33:44:55 (interface)&lt;/em&gt;&lt;/p&gt;  &lt;p style=&quot;margin-top: 1em; margin-bottom: 1em; margin-right: 0px; margin-left: 0px; display: block; padding: 0px;&quot;&gt;Here we&amp;rsquo;re creating router traffic to capture more throughput faster to speed up our crack. After a few minutes, that front window will start going crazy with read/write packets. (Also, I was unable to surf the web with the yoyo network on a separate computer while this was going on.) Here&amp;rsquo;s the part where you might have to grab yourself a cup of coffee or take a walk. Basically you want to wait until enough data has been collected to run your crack. Watch the number in the &amp;ldquo;#Data&amp;rdquo; column&amp;mdash;you want it to go above 10,000. (Pictured below it&amp;rsquo;s only at 854.)&lt;/p&gt;  &lt;p style=&quot;margin-top: 1em; margin-bottom: 1em; margin-right: 0px; margin-left: 0px; display: block; padding: 0px;&quot;&gt;Depending on the power of your network (mine is inexplicably low at -32 in that screenshot, even though the yoyo AP was in the same room as my adapter), this process could take some time. Wait until that #Data goes over 10k, though&amp;mdash;because the crack won&amp;rsquo;t work if it doesn&amp;rsquo;t. In fact, you may need more than 10k, though that seems to be a working threshold for many.&lt;/p&gt;  &lt;p style=&quot;margin-top: 1em; margin-bottom: 1em; margin-right: 0px; margin-left: 0px; display: block; padding: 0px;&quot;&gt;Once you&amp;rsquo;ve collected enough data, it&amp;rsquo;s the moment of truth. Launch a third Konsole window and run the following to crack that data you&amp;rsquo;ve collected:&lt;/p&gt;  &lt;p style=&quot;margin-top: 1em; margin-bottom: 1em; margin-right: 0px; margin-left: 0px; display: block; padding: 0px;&quot;&gt;&lt;em&gt;aircrack-ng -b (bssid) (file name-01.cap)&lt;/em&gt;&lt;/p&gt;  &lt;p style=&quot;margin-top: 1em; margin-bottom: 1em; margin-right: 0px; margin-left: 0px; display: block; padding: 0px;&quot;&gt;Here the filename should be whatever you entered above for (file name). You can browse to your Home directory to see it; it&amp;rsquo;s the one with .cap as the extension.&lt;/p&gt;  &lt;p style=&quot;margin-top: 1em; margin-bottom: 1em; margin-right: 0px; margin-left: 0px; display: block; padding: 0px;&quot;&gt;If you didn&amp;rsquo;t get enough data, aircrack will fail and tell you to try again with more. If it&lt;/p&gt;  &lt;p style=&quot;margin-top: 1em; margin-bottom: 1em; margin-right: 0px; margin-left: 0px; display: block; padding: 0px;&quot;&gt;&lt;strong&gt;Problems Along the Way&lt;/strong&gt;&lt;/p&gt;  &lt;p style=&quot;margin-top: 1em; margin-bottom: 1em; margin-right: 0px; margin-left: 0px; display: block; padding: 0px;&quot;&gt;With this article I set out to prove that cracking WEP is a relatively &amp;ldquo;easy&amp;rdquo; process for someone determined and willing to get the hardware and software going. I still think that&amp;rsquo;s true, but unlike the guy in the video below, I had several difficulties along the way. In fact, you&amp;rsquo;ll notice that the last screenshot up there doesn&amp;rsquo;t look like the others&amp;mdash;it&amp;rsquo;s because it&amp;rsquo;s not mine. Even though the AP which I was cracking was my own and in the same room as my Alfa, the power reading on the signal was always around -30, and so the data collection was very slow, and BackTrack would consistently crash before it was complete. After about half a dozen attempts (and trying BackTrack on both my Mac and PC, as a live CD and a virtual machine), I still haven&amp;rsquo;t captured enough data for aircrack to decrypt the key.&lt;/p&gt;  &lt;p style=&quot;margin-top: 1em; margin-bottom: 1em; margin-right: 0px; margin-left: 0px; display: block; padding: 0px;&quot;&gt;So while this process is easy in theory, your mileage may vary depending on your hardware, proximity to the AP point, and the way the planets are aligned. Oh yeah, and if you&amp;rsquo;re on deadline&amp;mdash;Murphy&amp;rsquo;s Law almost guarantees it won&amp;rsquo;t work if you&amp;rsquo;re on deadline.&lt;/p&gt;  &lt;p style=&quot;margin-top: 1em; margin-bottom: 1em; margin-right: 0px; margin-left: 0px; display: block; padding: 0px;&quot;&gt;&lt;strong&gt;&lt;a&gt;Video.&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;h2 style=&quot;margin-top: 1em; margin-bottom: 0.2em; padding-top: 0px; padding-bottom: 0px; font-size: 28px; line-height: 1.3; margin-right: 0px; margin-left: 0px;&quot;&gt;&lt;strong&gt;2.Comm View For WiFi&lt;br /&gt;&lt;/strong&gt;&lt;/h2&gt;  &lt;p style=&quot;margin-top: 1em; margin-bottom: 1em; margin-right: 0px; margin-left: 0px; display: block; padding: 0px;&quot;&gt;CommView for&amp;nbsp;&lt;strong&gt;WiFi&lt;/strong&gt;&amp;nbsp;is a powerful&amp;nbsp;&lt;strong&gt;wireless network monitor and analyzer&lt;/strong&gt;&amp;nbsp;for 802.11 a/b/g/n networks. Loaded with many user-friendly features, CommView for WiFi combines performance and flexibility with an ease of use unmatched in the industry.&lt;/p&gt;  &lt;p style=&quot;margin-top: 1em; margin-bottom: 1em; margin-right: 0px; margin-left: 0px; display: block; padding: 0px;&quot;&gt;CommView for WiFi captures every packet on the air to display important information such as the list of&amp;nbsp;&lt;strong&gt;access points&lt;/strong&gt;&amp;nbsp;and&amp;nbsp;&lt;strong&gt;stations&lt;/strong&gt;, per-node and per-channel&amp;nbsp;&lt;strong&gt;statistics&lt;/strong&gt;,&amp;nbsp;&lt;strong&gt;signal strength&lt;/strong&gt;, a list of packets and network&amp;nbsp;&lt;strong&gt;connections&lt;/strong&gt;, protocol distribution&amp;nbsp;&lt;strong&gt;charts&lt;/strong&gt;, etc. By providing this information, CommView for WiFi can help you view and examine packets, pinpoint network problems, and troubleshoot software and hardware.&lt;/p&gt;  &lt;p style=&quot;margin-top: 1em; margin-bottom: 1em; margin-right: 0px; margin-left: 0px; display: block; padding: 0px;&quot;&gt;CommView for WiFi includes a&amp;nbsp;&lt;a href=&quot;http://www.tamos.com/products/voip-analyzer/&quot; style=&quot;color: #666666; font-weight: bold; text-decoration: none;&quot;&gt;&lt;strong&gt;VoIP&lt;/strong&gt;&amp;nbsp;module&lt;/a&gt;&amp;nbsp;for in-depth analysis, recording, and playback of SIP and H.323 voice communications.&lt;/p&gt;  &lt;p style=&quot;margin-top: 1em; margin-bottom: 1em; margin-right: 0px; margin-left: 0px; display: block; padding: 0px;&quot;&gt;Packets can be decrypted utilizing user-defined&amp;nbsp;&lt;strong&gt;WEP or WPA-PSK&lt;/strong&gt;&amp;nbsp;keys and are decoded down to the lowest layer. With&amp;nbsp;&lt;strong&gt;over 70 supported protocols&lt;/strong&gt;, this network analyzer allows you to see every detail of a captured packet using a convenient tree-like structure to display protocol layers and packet headers. Additionally, the product provides an open interface for plugging in custom decoding modules.&amp;nbsp;&lt;a href=&quot;http://www.tamos.com/products/wepkr/&quot; style=&quot;color: #666666; font-weight: bold; text-decoration: none;&quot;&gt;WEP and WPA key retrieval add-ons&lt;/a&gt;&amp;nbsp;are available subject to terms and conditions.&lt;/p&gt;  &lt;p style=&quot;margin-top: 1em; margin-bottom: 1em; margin-right: 0px; margin-left: 0px; display: block; padding: 0px;&quot;&gt;A number of&amp;nbsp;&lt;a href=&quot;http://www.tamos.com/products/case-studies/&quot; style=&quot;color: #666666; font-weight: bold; text-decoration: none;&quot;&gt;&lt;strong&gt;case studies&lt;/strong&gt;&lt;/a&gt;&amp;nbsp;describe real-world applications of CommView for WiFi in business, government, and education sectors.&lt;/p&gt;  &lt;p style=&quot;margin-top: 1em; margin-bottom: 1em; margin-right: 0px; margin-left: 0px; display: block; padding: 0px;&quot;&gt;CommView for WiFi is a comprehensive and affordable tool for wireless LAN administrators, security professionals, network programmers, or anyone who wants to have a full picture of the WLAN traffic. This application runs under Windows XP/2003/Vista/2008/7 and requires a compatible wireless network adapter. To view the list of the adapters that have been tested and are compatible with CommView for WiFi, click on the link below:&lt;/p&gt;  &lt;p style=&quot;margin-top: 1em; margin-bottom: 1em; margin-right: 0px; margin-left: 0px; display: block; padding: 0px;&quot;&gt;SUPPORTED ADAPTERS&lt;/p&gt;  &lt;p style=&quot;margin-top: 1em; margin-bottom: 1em; margin-right: 0px; margin-left: 0px; display: block; padding: 0px;&quot;&gt;If your wireless card is not on the list, please click&amp;nbsp;&lt;a href=&quot;http://www.tamos.com/products/commwifi/faq.php#q30&quot; style=&quot;color: #666666; font-weight: bold; text-decoration: none;&quot;&gt;here&lt;/a&gt;&amp;nbsp;for the technical information, or take advantage of our&amp;nbsp;&lt;a href=&quot;http://www.tamos.com/order/freecard.php&quot; style=&quot;color: #666666; font-weight: bold; text-decoration: none;&quot;&gt;special offer&lt;/a&gt;&amp;nbsp;and get a compatible adapter free of charge!&lt;/p&gt;  &lt;p style=&quot;margin-top: 1em; margin-bottom: 1em; margin-right: 0px; margin-left: 0px; display: block; padding: 0px;&quot;&gt;&lt;span&gt;What you can do with CommView for WiFi&lt;/span&gt;&lt;/p&gt;  &lt;ul style=&quot;margin-top: 10px; margin-bottom: 10px; padding-top: 0px; padding-bottom: 0px;&quot;&gt;  &lt;li&gt;Scan the air for WiFi stations and access points.&lt;/li&gt;  &lt;li&gt;Capture 802.11a, 802.11b, 802.11g, and 802.11n WLAN traffic.&lt;/li&gt;  &lt;li&gt;Specify WEP or WPA keys to decrypt encrypted packets.&lt;/li&gt;  &lt;li&gt;View detailed per-node and per-channel statistics.&lt;/li&gt;  &lt;li&gt;View detailed IP connections statistics: IP addresses, ports, sessions, etc.&lt;/li&gt;  &lt;li&gt;Reconstruct TCP sessions.&lt;/li&gt;  &lt;li&gt;Configure alarms that can notify you about important events, such as suspicious packets, high bandwidth utilization, unknown addresses, rogue access points, etc.&lt;/li&gt;  &lt;li&gt;View protocol &amp;ldquo;pie&amp;rdquo; charts.&lt;/li&gt;  &lt;li&gt;Monitor bandwidth utilization.&lt;/li&gt;  &lt;li&gt;Browse captured and decoded packets in real time.&lt;/li&gt;  &lt;li&gt;Search for strings or hex data in captured packet contents.&lt;/li&gt;  &lt;li&gt;Log individual or all packets to files.&lt;/li&gt;  &lt;li&gt;Load and view capture files offline.&lt;/li&gt;  &lt;li&gt;Import and export packets in Sniffer&amp;reg;, EtherPeek&amp;trade;, AiroPeek&amp;trade;, Observer&amp;reg;, NetMon, Tcpdump, hex, and text formats.&lt;/li&gt;  &lt;li&gt;Export any IP address to&amp;nbsp;&lt;a href=&quot;http://www.tamos.com/products/smartwhois/&quot; style=&quot;color: #666666; font-weight: bold; text-decoration: none;&quot;&gt;SmartWhois&lt;/a&gt;&amp;nbsp;for quick, easy&amp;nbsp;&lt;a href=&quot;http://www.tamos.com/products/smartwhois/&quot; style=&quot;color: #666666; font-weight: bold; text-decoration: none;&quot;&gt;IP lookup&lt;/a&gt;.&lt;/li&gt;  &lt;li&gt;&lt;a href=&quot;http://www.tamos.com/htmlhelp/commwifi/multi_channel_capturing.htm&quot; style=&quot;color: #666666; font-weight: bold; text-decoration: none;&quot;&gt;Capture data from multiple channels&lt;/a&gt;&amp;nbsp;simultaneously using several USB adapters.&lt;/li&gt;  &lt;li&gt;&lt;a href=&quot;http://www.tamos.com/htmlhelp/commwifi/capturing_a_mpdu_and_a_msdu_pa.htm&quot; style=&quot;color: #666666; font-weight: bold; text-decoration: none;&quot;&gt;Capture A-MPDU and A-MSDU&lt;/a&gt;&amp;nbsp;packets.&lt;/li&gt;  &lt;li&gt;And much more!&lt;/li&gt;  &lt;/ul&gt;  &lt;p style=&quot;margin-top: 1em; margin-bottom: 1em; margin-right: 0px; margin-left: 0px; display: block; padding: 0px;&quot;&gt;&lt;span&gt;Who needs CommView for WiFi&lt;/span&gt;&lt;/p&gt;  &lt;ul style=&quot;margin-top: 10px; margin-bottom: 10px; padding-top: 0px; padding-bottom: 0px;&quot;&gt;  &lt;li&gt;WLAN administrators.&lt;/li&gt;  &lt;li&gt;Security professionals.&lt;/li&gt;  &lt;li&gt;Home users who are interested in monitoring their WLAN traffic.&lt;/li&gt;  &lt;li&gt;Programmers developing software for wireless networks.&lt;/li&gt;  &lt;/ul&gt;  &lt;p style=&quot;margin-top: 1em; margin-bottom: 1em; margin-right: 0px; margin-left: 0px; display: block; padding: 0px;&quot;&gt;An evaluation version is available in the&amp;nbsp;&lt;a href=&quot;http://www.tamos.com/download/main/&quot; style=&quot;color: #666666; font-weight: bold; text-decoration: none;&quot;&gt;Download Area&lt;/a&gt;.&lt;/p&gt;  &lt;p style=&quot;margin-top: 1em; margin-bottom: 1em; margin-right: 0px; margin-left: 0px; display: block; padding: 0px;&quot;&gt;To purchase this product, add it to the shopping cart (see the link at the top right corner of this page) or visit the&amp;nbsp;&lt;a href=&quot;http://www.tamos.com/order/&quot; style=&quot;color: #666666; font-weight: bold; text-decoration: none;&quot;&gt;Product Catalog&lt;/a&gt;. If you purchased this product in the past and would like to purchase an upgrade to the latest version, please visit the&lt;a href=&quot;http://www.tamos.com/order/upgrade/&quot; style=&quot;color: #666666; font-weight: bold; text-decoration: none;&quot;&gt;Upgrades&lt;/a&gt;&amp;nbsp;page.&lt;/p&gt;  &lt;h2 style=&quot;margin-top: 1em; margin-bottom: 0.2em; padding-top: 0px; padding-bottom: 0px; font-size: 28px; line-height: 1.3; margin-right: 0px; margin-left: 0px;&quot;&gt;3. AirCrack NG&lt;/h2&gt;  &lt;p style=&quot;margin-top: 1em; margin-bottom: 1em; margin-right: 0px; margin-left: 0px; display: block; padding: 0px;&quot;&gt;Aircrack-ng is an 802.11 WEP and WPA-PSK keys cracking program that can recover keys once enough data packets have been captured. It implements the standard FMS attack along with some optimizations like KoreK attacks, as well as the all-new PTW attack, thus making the attack much faster compared to other WEP cracking tools.In fact, Aircrack-ng is a set of tools for auditing wireless networks.&lt;/p&gt;  &lt;p style=&quot;margin-top: 1em; margin-bottom: 1em; margin-right: 0px; margin-left: 0px; display: block; padding: 0px;&quot;&gt;&lt;strong&gt;Packet injection on a phone&lt;/strong&gt;&amp;nbsp;Aircrack-ng suite now fully works with the internal card of the Nokia N900, including packet injection.&lt;/p&gt;  &lt;h4 style=&quot;margin-top: 1.33em; margin-bottom: 0.2em; padding-top: 0px; padding-bottom: 0px; font-size: 19px; margin-right: 0px; margin-left: 0px;&quot;&gt;Sources&lt;/h4&gt;  &lt;ul style=&quot;margin-top: 10px; margin-bottom: 10px; padding-top: 0px; padding-bottom: 0px;&quot;&gt;  &lt;li&gt;&lt;a href=&quot;http://download.aircrack-ng.org/aircrack-ng-1.1.tar.gz&quot; title=&quot;1.1 sources&quot; style=&quot;color: #666666; font-weight: bold; text-decoration: none;&quot;&gt;Aircrack-ng 1.1&lt;/a&gt;&lt;br /&gt;SHA1: 16eed1a8cf06eb8274ae382150b56589b23adf77&lt;br /&gt;MD5: f7a24ed8fad122c4187d06bfd6f998b4&lt;/li&gt;  &lt;/ul&gt;  &lt;ul style=&quot;margin-top: 10px; margin-bottom: 10px; padding-top: 0px; padding-bottom: 0px;&quot;&gt;  &lt;li&gt;Development sources:  &lt;ul style=&quot;margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-bottom: 0px;&quot;&gt;  &lt;li&gt;Aircrack-ng:&amp;nbsp;&lt;code style=&quot;font-family: Courier New, Courier, monospace; font-size: 1em;&quot;&gt;svn co&amp;nbsp;&lt;a href=&quot;http://trac.aircrack-ng.org/svn/trunk/&quot; title=&quot;Aircrack-ng svn trunk&quot; style=&quot;color: #666666; font-weight: bold; text-decoration: none;&quot;&gt;http://trac.aircrack-ng.org/svn/trunk/&lt;/a&gt;&amp;nbsp;aircrack-ng&lt;/code&gt;&lt;/li&gt;  &lt;li&gt;Airoscript-ng:&amp;nbsp;&lt;code style=&quot;font-family: Courier New, Courier, monospace; font-size: 1em;&quot;&gt;svn co&amp;nbsp;&lt;a href=&quot;http://trac.aircrack-ng.org/svn/branch/airoscript-ng/&quot; title=&quot;Airoscript-ng&quot; style=&quot;color: #666666; font-weight: bold; text-decoration: none;&quot;&gt;http://trac.aircrack-ng.org/svn/branch/airoscript-ng/&lt;/a&gt;&amp;nbsp;airoscript-ng&lt;/code&gt;&lt;/li&gt;  &lt;/ul&gt;  &lt;/li&gt;  &lt;/ul&gt;  &lt;h4 style=&quot;margin-top: 1.33em; margin-bottom: 0.2em; padding-top: 0px; padding-bottom: 0px; font-size: 19px; margin-right: 0px; margin-left: 0px;&quot;&gt;Binaries&lt;/h4&gt;  &lt;ul style=&quot;margin-top: 10px; margin-bottom: 10px; padding-top: 0px; padding-bottom: 0px;&quot;&gt;  &lt;li&gt;&lt;a href=&quot;http://download.aircrack-ng.org/aircrack-ng-1.1-win.zip&quot; title=&quot;1.1 Windows binaries and sources&quot; style=&quot;color: #666666; font-weight: bold; text-decoration: none;&quot;&gt;Aircrack-ng 1.1 (Windows)&lt;/a&gt;&lt;br /&gt;SHA1: 043ac7346cfd4878eb3af9783554873fbb5c28d4&lt;br /&gt;MD5: 407e342f01f6d46886a9f908b241d53a  &lt;p style=&quot;margin-top: 1em; margin-bottom: 1em; margin-right: 0px; margin-left: 0px; display: block; padding: 0px;&quot;&gt;&amp;nbsp;&lt;/p&gt;  &lt;div&gt;Important information:&lt;/div&gt;  &lt;div&gt;This version requires you to develop your own DLLs to link aircrack-ng to your wireless card (it will not work without).&lt;br /&gt;The required DLLs are not provided in the download and there will be no support for them.&lt;/div&gt;  &lt;/li&gt;  &lt;/ul&gt;  &lt;ul style=&quot;margin-top: 10px; margin-bottom: 10px; padding-top: 0px; padding-bottom: 0px;&quot;&gt;  &lt;li&gt;&lt;a href=&quot;http://download.aircrack-ng.org/aircrack-ng-0.9.3-win.zip&quot; title=&quot;0.9.3 Windows binaries and sources (supports airpcap devices)&quot; style=&quot;color: #666666; font-weight: bold; text-decoration: none;&quot;&gt;Aircrack-ng 0.9.3 (Windows, supports airpcap devices)&lt;/a&gt;&lt;br /&gt;SHA1: 590d3e8fd09a21b93908d84057959cb13e73d378&lt;br /&gt;MD5: cbcb23c55ed6933a48b8af5665104fb6&lt;/li&gt;  &lt;/ul&gt;  &lt;ul style=&quot;margin-top: 10px; margin-bottom: 10px; padding-top: 0px; padding-bottom: 0px;&quot;&gt;  &lt;li&gt;Linux packages can be found&amp;nbsp;&lt;a href=&quot;http://www.aircrack-ng.org/doku.php?id=downloads#linux_packages&quot; title=&quot;Linux packages&quot; style=&quot;color: #666666; font-weight: bold; text-decoration: none;&quot;&gt;here&lt;/a&gt;.&lt;/li&gt;  &lt;/ul&gt;  &lt;h4 style=&quot;margin-top: 1.33em; margin-bottom: 0.2em; padding-top: 0px; padding-bottom: 0px; font-size: 19px; margin-right: 0px; margin-left: 0px;&quot;&gt;Previous versions&lt;/h4&gt;  &lt;ul style=&quot;margin-top: 10px; margin-bottom: 10px; padding-top: 0px; padding-bottom: 0px;&quot;&gt;  &lt;li&gt;Previous versions of Aircrack-ng can be found&amp;nbsp;&lt;a href=&quot;http://archive.aircrack-ng.org/aircrack-ng/&quot; title=&quot;Previous version of Aircrack-ng&quot; style=&quot;color: #666666; font-weight: bold; text-decoration: none;&quot;&gt;here&lt;/a&gt;.&lt;/li&gt;  &lt;li&gt;A backup of the original versions (from Christophe Devine) are available&amp;nbsp;&lt;a href=&quot;http://archive.aircrack-ng.org/aircrack-old/&quot; title=&quot;aircrack (from Christophe Devine)&quot; style=&quot;color: #666666; font-weight: bold; text-decoration: none;&quot;&gt;here&lt;/a&gt;.&lt;/li&gt;  &lt;li&gt;Previous versions of Slitaz Aircrack-ng can be found&amp;nbsp;&lt;a href=&quot;http://archive.aircrack-ng.org/slitaz/&quot; title=&quot;Previous version of Slitaz Aircrack-ng&quot; style=&quot;color: #666666; font-weight: bold; text-decoration: none;&quot;&gt;here&lt;/a&gt;.&lt;/li&gt;  &lt;li&gt;Previous versions of our VMWare appliance can be found&amp;nbsp;&lt;a href=&quot;http://archive.aircrack-ng.org/vmware/&quot; title=&quot;Previous version of our VMWare appliance&quot; style=&quot;color: #666666; font-weight: bold; text-decoration: none;&quot;&gt;here&lt;/a&gt;.&lt;/li&gt;  &lt;/ul&gt;  &lt;h4 style=&quot;margin-top: 1.33em; margin-bottom: 0.2em; padding-top: 0px; padding-bottom: 0px; font-size: 19px; margin-right: 0px; margin-left: 0px;&quot;&gt;Other downloads&lt;/h4&gt;  &lt;ul style=&quot;margin-top: 10px; margin-bottom: 10px; padding-top: 0px; padding-bottom: 0px;&quot;&gt;  &lt;li&gt;&lt;a href=&quot;http://download.aircrack-ng.org/vmware-aircrack-ng-v4.7z&quot; title=&quot;Aircrack-ng VMware image v4&quot; style=&quot;color: #666666; font-weight: bold; text-decoration: none;&quot;&gt;Aircrack-ng VMware image v4&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;&lt;a href=&quot;http://download.aircrack-ng.org/TransRT73.zip&quot; title=&quot;VMware image (RT73 devices only)&quot; style=&quot;color: #666666; font-weight: bold; text-decoration: none;&quot;&gt;Transmission Mini VM Appliance&lt;/a&gt;&amp;nbsp;&amp;ndash; Very light VMware image (15Mb) for rt73 devices only (More information in the&amp;nbsp;&lt;a href=&quot;http://forum.aircrack-ng.org/index.php?topic=2204.0&quot; title=&quot;Forum Thread: Transmission Mini VM Appliance&quot; style=&quot;color: #666666; font-weight: bold; text-decoration: none;&quot;&gt;forum&lt;/a&gt;)&lt;/li&gt;  &lt;li&gt;&lt;a href=&quot;http://download.aircrack-ng.org/slitaz-aircrack-ng-20091124.iso&quot; title=&quot;Slitaz Aircrack-ng Live CD (24 November 2009)&quot; style=&quot;color: #666666; font-weight: bold; text-decoration: none;&quot;&gt;Slitaz Aircrack-ng Live CD (24 November 2009)&lt;/a&gt;&lt;/li&gt;  &lt;/ul&gt;  &lt;h4 style=&quot;margin-top: 1.33em; margin-bottom: 0.2em; padding-top: 0px; padding-bottom: 0px; font-size: 19px; margin-right: 0px; margin-left: 0px;&quot;&gt;Sample files&lt;/h4&gt;  &lt;ul style=&quot;margin-top: 10px; margin-bottom: 10px; padding-top: 0px; padding-bottom: 0px;&quot;&gt;  &lt;li&gt;&lt;a href=&quot;http://download.aircrack-ng.org/test.ivs&quot; title=&quot;test.ivs&quot; style=&quot;color: #666666; font-weight: bold; text-decoration: none;&quot;&gt;test.ivs&lt;/a&gt;&amp;nbsp;&amp;ndash; This is a 128 bit WEP key file. The key is&amp;nbsp;&lt;em&gt;AE:5B:7F:3A:03:D0:AF:9B:F6:8D:A5:E2:C7&lt;/em&gt;.&lt;/li&gt;  &lt;li&gt;&lt;a href=&quot;http://download.aircrack-ng.org/ptw.cap&quot; title=&quot;ptw.cap&quot; style=&quot;color: #666666; font-weight: bold; text-decoration: none;&quot;&gt;ptw.cap&lt;/a&gt;&amp;nbsp;&amp;ndash; This is a 64 bit WEP key file suitable for the PTW method. The key is&amp;nbsp;&lt;em&gt;1F:1F:1F:1F:1F&lt;/em&gt;.&lt;/li&gt;  &lt;/ul&gt;  &lt;h4 style=&quot;margin-top: 1.33em; margin-bottom: 0.2em; padding-top: 0px; padding-bottom: 0px; font-size: 19px; margin-right: 0px; margin-left: 0px;&quot;&gt;Changelog&lt;/h4&gt;  &lt;ul style=&quot;margin-top: 10px; margin-bottom: 10px; padding-top: 0px; padding-bottom: 0px;&quot;&gt;  &lt;li&gt;&lt;a href=&quot;http://www.aircrack-ng.org/doku.php?id=changelog&quot; title=&quot;Aircrack-ng changelog&quot; style=&quot;color: #666666; font-weight: bold; text-decoration: none;&quot;&gt;Aircrack-ng complete changelog&lt;/a&gt;&lt;/li&gt;  &lt;/ul&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;/div&gt;  &lt;p&gt;&lt;span style=&quot;font-family: tahoma, arial, sans-serif;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&lt;span style=&quot;font-family: tahoma, arial, sans-serif; font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-family: tahoma, arial, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;References&lt;/span&gt;:&amp;nbsp;&lt;/strong&gt;&lt;a href=&quot;http://www.aagneyam.com/blog/?p=623&quot; title=&quot;http://www.aagneyam.com/blog/?p=623&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color: #666666; font-size: x-small;&quot;&gt;&lt;span style=&quot;&quot;&gt;&lt;strong&gt;Arrow Webzine&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;font-size: small;&quot;&gt;&amp;amp;&amp;nbsp;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;a href=&quot;http://www.aagneyam.com/blog/?p=623&quot; title=&quot;http://www.aagneyam.com/blog/?p=623&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;font-family: tahoma, arial, sans-serif;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: tahoma, arial, sans-serif;&quot;&gt;Nyjil George&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;div class=&quot;post-bodycopy clearfix&quot; style=&quot;display: block;&quot;&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;/div&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://b-giar.blogspot.com/feeds/4823682678215743286/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://b-giar.blogspot.com/2011/07/how-to-crack-wi-fi-network.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8953490625351031216/posts/default/4823682678215743286'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8953490625351031216/posts/default/4823682678215743286'/><link rel='alternate' type='text/html' href='http://b-giar.blogspot.com/2011/07/how-to-crack-wi-fi-network.html' title='How to Crack a Wi-Fi Network.'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/01359356128419832182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8953490625351031216.post-7034573541716686232</id><published>2011-07-10T13:25:00.001+03:00</published><updated>2011-07-10T13:25:45.431+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="News"/><category scheme="http://www.blogger.com/atom/ns#" term="Science"/><category scheme="http://www.blogger.com/atom/ns#" term="web"/><title type='text'>Academic Search Engines: Beyond Google Scholar</title><content type='html'>&lt;div class=&#39;posterous_autopost&#39;&gt;    &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://www.scirus.com/srsapp/&quot; title=&quot;http://www.scirus.com/srsapp/&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;text-decoration: underline; font-size: medium;&quot;&gt;&lt;strong&gt;Scirus&lt;/strong&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&lt;span style=&quot;font-family: Lucida Grande, Verdana, sans-serif;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;  &lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; font-size: 13px; vertical-align: baseline; line-height: 1.5; color: #333333; text-align: center; padding: 0px;&quot;&gt;&lt;img class=&quot;aligncenter&quot; src=&quot;http://main.makeuseoflimited.netdna-cdn.com/wp-content/uploads/2010/03/Search-Engine09.png?54167&quot; height=&quot;209&quot; alt=&quot;how to use the invisible web&quot; style=&quot;margin-top: 0px; margin-bottom: 0px; font-size: 13px; vertical-align: baseline; float: left; padding: 0px;&quot; width=&quot;280&quot; /&gt;&lt;/p&gt;  &lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; font-size: 13px; vertical-align: baseline; line-height: 1.5; color: #333333; padding: 0px;&quot;&gt;Scirus has a pure scientific focus. It is a far reaching research engine that can scour journals, scientists&amp;rsquo; homepages, courseware, pre-print server material, patents and institutional intranets.&lt;/p&gt;  &lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; font-size: 13px; vertical-align: baseline; line-height: 1.5; color: #333333; text-align: left; padding: 0px;&quot;&gt;&amp;nbsp;&lt;/p&gt;  &lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; font-size: 13px; vertical-align: baseline; line-height: 1.5; color: #333333; text-align: left; padding: 0px;&quot;&gt;&amp;nbsp;&lt;/p&gt;  &lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; font-size: 13px; vertical-align: baseline; line-height: 1.5; color: #333333; text-align: left; padding: 0px;&quot;&gt;&amp;nbsp;&lt;/p&gt;  &lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; font-size: 13px; vertical-align: baseline; line-height: 1.5; color: #333333; text-align: left; padding: 0px;&quot;&gt;&amp;nbsp;&lt;/p&gt;  &lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; font-size: 13px; vertical-align: baseline; line-height: 1.5; color: #333333; text-align: left; padding: 0px;&quot;&gt;&amp;nbsp;&lt;/p&gt;  &lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; font-size: 13px; vertical-align: baseline; line-height: 1.5; color: #333333; text-align: left; padding: 0px;&quot;&gt;&amp;nbsp;&lt;/p&gt;  &lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; font-size: 13px; vertical-align: baseline; line-height: 1.5; color: #333333; text-align: left; padding: 0px;&quot;&gt;&amp;nbsp;&lt;/p&gt;  &lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; font-size: 13px; vertical-align: baseline; line-height: 1.5; color: #333333; text-align: left; padding: 0px;&quot;&gt;&amp;nbsp;&lt;/p&gt;  &lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; font-size: 13px; vertical-align: baseline; line-height: 1.5; color: #333333; text-align: left; padding: 0px;&quot;&gt;&lt;a href=&quot;http://infomine.ucr.edu/&quot; title=&quot;http://infomine.ucr.edu/&quot;&gt;&lt;span style=&quot;text-decoration: underline; font-size: large;&quot;&gt;&lt;strong&gt;InfoMine&lt;/strong&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; font-size: 13px; vertical-align: baseline; line-height: 1.5; color: #333333; text-align: center; padding: 0px;&quot;&gt;&lt;img class=&quot;aligncenter&quot; src=&quot;http://main.makeuseoflimited.netdna-cdn.com/wp-content/uploads/2010/03/Search-Engine01.png?54167&quot; height=&quot;200&quot; alt=&quot;invisible web search engines&quot; style=&quot;margin-top: 0px; margin-bottom: 0px; font-size: 13px; vertical-align: baseline; float: left; padding: 0px;&quot; width=&quot;280&quot; /&gt;&lt;/p&gt;  &lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; font-size: 13px; vertical-align: baseline; line-height: 1.5; color: #333333; padding: 0px;&quot;&gt;Infomine has been built by a pool of libraries in the United States. Some of them are University of California, Wake Forest University, California State University, and the University of Detroit. Infomine &amp;ldquo;&amp;tilde;mines&amp;rsquo; information from databases, electronic journals, electronic books, bulletin boards, mailing lists, online library card catalogs, articles, directories of researchers, and many other resources.&lt;/p&gt;  &lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; font-size: 13px; vertical-align: baseline; line-height: 1.5; color: #333333; padding: 0px;&quot;&gt;You can search by subject category and further tweak your search using the search options. Infomine is not only a standalone search engine for the Deep Web but also a staging point for a lot of other reference information. Check out its&amp;nbsp;&lt;em style=&quot;font-size: 13px; vertical-align: baseline; padding: 0px; margin: 0px;&quot;&gt;Other Search Tools&lt;/em&gt;&amp;nbsp;and&amp;nbsp;&lt;em style=&quot;font-size: 13px; vertical-align: baseline; padding: 0px; margin: 0px;&quot;&gt;General Reference&lt;/em&gt;&amp;nbsp;links at the bottom.&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;a href=&quot;http://vlib.org/&quot; title=&quot;http://vlib.org/&quot; target=&quot;_blank&quot;&gt;The WWW Virtual Library&lt;/a&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&lt;span style=&quot;font-family: Lucida Grande, Verdana, sans-serif;&quot;&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; font-size: 13px; vertical-align: baseline; line-height: 1.5; color: #333333; text-align: center; padding: 0px;&quot;&gt;&lt;img class=&quot;aligncenter&quot; src=&quot;http://main.makeuseoflimited.netdna-cdn.com/wp-content/uploads/2010/03/Search-Engine02.png?54167&quot; height=&quot;284&quot; alt=&quot;invisible web search engines&quot; style=&quot;margin-top: 0px; margin-bottom: 0px; font-size: 13px; vertical-align: baseline; float: left; padding: 0px;&quot; width=&quot;280&quot; /&gt;&lt;/p&gt;  &lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; font-size: 13px; vertical-align: baseline; line-height: 1.5; color: #333333; text-align: left; padding: 0px;&quot;&gt;This is considered to be the&amp;nbsp;&lt;em style=&quot;font-size: 13px; vertical-align: baseline; padding: 0px; margin: 0px;&quot;&gt;oldest catalog&lt;/em&gt;&amp;nbsp;on the web and was started by started by Tim Berners-Lee, the creator of the web. So, isn&amp;rsquo;t it strange that it finds a place in the list of Invisible Web resources? Maybe, but the WWW Virtual Library lists quite a lot of relevant resources on quite a lot of subjects. You can go vertically into the categories or use the search bar. The screenshot shows the alphabetical arrangement of subjects covered at the site.&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://www.deeppeep.org/&quot; title=&quot;http://www.deeppeep.org/&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;DeepPeep&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&lt;span style=&quot;font-family: Lucida Grande, Verdana, sans-serif;&quot;&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; font-size: 13px; vertical-align: baseline; line-height: 1.5; color: #333333; text-align: center; padding: 0px;&quot;&gt;&lt;img class=&quot;aligncenter&quot; src=&quot;http://main.makeuseoflimited.netdna-cdn.com/wp-content/uploads/2010/03/Search-Engine06.png?54167&quot; height=&quot;215&quot; alt=&quot;search invisible web&quot; style=&quot;margin-top: 0px; margin-bottom: 0px; font-size: 13px; vertical-align: baseline; float: left; padding: 0px;&quot; width=&quot;280&quot; /&gt;&lt;/p&gt;  &lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; font-size: 13px; vertical-align: baseline; line-height: 1.5; color: #333333; padding: 0px;&quot;&gt;DeepPeep aims to enter the Invisible Web through forms that query databases and web services for information. Typed queries open up dynamic but short lived results which cannot be indexed by normal search engines. By indexing databases, DeepPeep hopes to track 45,000 forms across 7 domains.&lt;/p&gt;  &lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; font-size: 13px; vertical-align: baseline; line-height: 1.5; color: #333333; padding: 0px;&quot;&gt;The domains covered by DeepPeep (Beta) are Auto, Airfare, Biology, Book, Hotel, Job, and Rental. Being a beta service, there are occasional glitches as some results don&amp;rsquo;t load in the browser.&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;strong&gt;Reference:&amp;nbsp;&lt;/strong&gt;&lt;/span&gt;&lt;span style=&quot;color: #2d2d2d; font-family: Lucida Grande, Verdana, sans-serif; font-weight: bold; font-size: small;&quot;&gt;&lt;a href=&quot;http://www.makeuseof.com/tag/10-search-engines-explore-deep-invisible-web/&quot; title=&quot;http://www.makeuseof.com/tag/10-search-engines-explore-deep-invisible-web/&quot; target=&quot;_blank&quot;&gt;10 Search Engines to Explore the Invisible Web&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://b-giar.blogspot.com/feeds/7034573541716686232/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://b-giar.blogspot.com/2011/07/academic-search-engines-beyond-google.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8953490625351031216/posts/default/7034573541716686232'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8953490625351031216/posts/default/7034573541716686232'/><link rel='alternate' type='text/html' href='http://b-giar.blogspot.com/2011/07/academic-search-engines-beyond-google.html' title='Academic Search Engines: Beyond Google Scholar'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/01359356128419832182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8953490625351031216.post-7143263392377163052</id><published>2011-07-10T13:11:00.001+03:00</published><updated>2011-07-10T13:11:22.679+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="News"/><category scheme="http://www.blogger.com/atom/ns#" term="Science"/><title type='text'>Evolution machine: Genetic engineering on fast forward</title><content type='html'>&lt;div class=&#39;posterous_autopost&#39;&gt;&lt;p&gt;&lt;span style=&quot;font-family: arial, sans-serif;&quot;&gt;  &lt;p class=&quot;infuse&quot; style=&quot;margin-top: 0px; margin-right: 20px; margin-bottom: 20px; margin-left: 10px; font-size: 1em; line-height: 18px; padding: 0px;&quot;&gt;Source: &lt;a href=&quot;http://www.newscientist.com/article/mg21028181.700-evolution-machine-genetic-engineering-on-fast-forward.html?full=true&quot;&gt;NewScientist&lt;/a&gt;&lt;/p&gt;  &lt;p class=&quot;infuse&quot; style=&quot;margin-top: 0px; margin-right: 20px; margin-bottom: 20px; margin-left: 10px; font-size: 1em; line-height: 18px; padding: 0px;&quot;&gt;&lt;em style=&quot;padding: 0px; margin: 0px;&quot;&gt;Automated genetic tinkering is just the start &amp;ndash; this machine could be used to rewrite the language of life and create new species of humans&lt;/em&gt;&lt;/p&gt;  &lt;p class=&quot;infuse&quot; style=&quot;margin-top: 0px; margin-right: 20px; margin-bottom: 20px; margin-left: 10px; font-size: 1em; line-height: 18px; padding: 0px;&quot;&gt;IT IS a strange combination of clumsiness and beauty. Sitting on a cheap-looking worktop is a motley ensemble of flasks, trays and tubes squeezed onto a home-made frame. Arrays of empty pipette tips wait expectantly. Bunches of black and grey wires adorn its corners. On the top, robotic arms slide purposefully back and forth along metal tracks, dropping liquids from one compartment to another in an intricately choreographed dance. Inside, bacteria are shunted through slim plastic tubes, and alternately coddled, chilled and electrocuted. The whole assembly is about a metre and a half across, and controlled by an ordinary computer.&lt;/p&gt;  &lt;p class=&quot;infuse&quot; style=&quot;margin-top: 0px; margin-right: 20px; margin-bottom: 20px; margin-left: 10px; font-size: 1em; line-height: 18px; padding: 0px;&quot;&gt;Say hello to the evolution machine. It can achieve in days what takes genetic engineers years. So far it is just a prototype, but if its proponents are to be believed, future versions could revolutionise biology, allowing us to evolve new organisms or rewrite whole genomes with ease. It might even transform humanity itself.&lt;/p&gt;  &lt;p class=&quot;infuse&quot; style=&quot;margin-top: 0px; margin-right: 20px; margin-bottom: 20px; margin-left: 10px; font-size: 1em; line-height: 18px; padding: 0px;&quot;&gt;These days everything from your food and clothes to the medicines you take may well come from genetically modified plants or bacteria. The first generation of engineered organisms has been a huge hit with farmers and manufacturers - if not consumers. And this is just the start. So far organisms have only been changed in relatively crude and simple ways, often involving just one or two genes. To achieve their grander ambitions, such as creating algae capable of churning out fuel for cars, genetic engineers are now trying to make far more sweeping changes.&lt;/p&gt;  &lt;h3 class=&quot;crosshead&quot; style=&quot;margin-top: 0px; margin-right: 20px; margin-bottom: 10px; margin-left: 10px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 1px; border-left-width: 0px; border-color: initial; font-size: 1.1em; border-bottom-style: solid; border-bottom-color: #00759a; color: #717171; line-height: 19px; padding: 0px;&quot;&gt;Grand ambitions&lt;/h3&gt;  &lt;p class=&quot;infuse&quot; style=&quot;margin-top: 0px; margin-right: 20px; margin-bottom: 20px; margin-left: 10px; font-size: 1em; line-height: 18px; padding: 0px;&quot;&gt;Yet changing even a handful of genes takes huge amounts of time and money. For instance,&amp;nbsp;&lt;a href=&quot;http://www.newscientist.com/article/dn14059-synthetic-yeast-to-brew-up-vital-malaria-drug.html&quot; style=&quot;text-decoration: none; color: #00759a; padding: 0px; margin: 0px;&quot;&gt;a yeast engineered to churn out the antimalarial drug artemisinin&lt;/a&gt;&amp;nbsp;has been hailed as one of the great success stories of synthetic biology. However, it took 150 person-years and cost $25 million to add or tweak around a dozen genes - and commercial production has yet to begin.&lt;/p&gt;  &lt;p class=&quot;infuse&quot; style=&quot;margin-top: 0px; margin-right: 20px; margin-bottom: 20px; margin-left: 10px; font-size: 1em; line-height: 18px; padding: 0px;&quot;&gt;The task is so difficult and time-consuming because biological systems are so complex. Even simple traits usually involve networks of many different genes, which can behave in unpredictable ways. Changes often do not have the desired effect, and tweaking one gene after another to get things working can be a very slow and painstaking process.&lt;/p&gt;  &lt;p class=&quot;infuse&quot; style=&quot;margin-top: 0px; margin-right: 20px; margin-bottom: 20px; margin-left: 10px; font-size: 1em; line-height: 18px; padding: 0px;&quot;&gt;Many biologists think the answer is to try to eliminate the guesswork. They are creating&amp;nbsp;&lt;a href=&quot;http://www.newscientist.com/article/mg19826603.600-synthetic-biology-rewriting-the-code-for-life.html&quot; style=&quot;text-decoration: none; color: #00759a; padding: 0px; margin: 0px;&quot;&gt;libraries of ready-made &quot;plug-and-play&quot; components&lt;/a&gt;&amp;nbsp;that should behave in a reliable way when put together to create biologicial circuits. But George Church, a geneticist at Harvard Medical School in Boston, thinks there is a far quicker way: let evolution do all the hard work for us. Instead of trying to design every aspect of the genetic circuitry involved in a particular trait down to the last DNA letter, his idea is to come up with a relatively rough design, create lots of variants on this design and select the ones that work best.&lt;/p&gt;  &lt;p class=&quot;infuse&quot; style=&quot;margin-top: 0px; margin-right: 20px; margin-bottom: 20px; margin-left: 10px; font-size: 1em; line-height: 18px; padding: 0px;&quot;&gt;The basic idea is hardly original; various forms of directed evolution are already used to design things as diverse as proteins and boats. Church&#39;s group, however, has developed a machine for &quot;evolving&quot; entire organisms - and it works at an unprecedented scale and speed. The system has the potential to add, change or switch off thousands of genes at a time - Church calls this &quot;multiplexing&quot; - and it can generate billions of new strains in days.&lt;/p&gt;  &lt;p class=&quot;infuse&quot; style=&quot;margin-top: 0px; margin-right: 20px; margin-bottom: 20px; margin-left: 10px; font-size: 1em; line-height: 18px; padding: 0px;&quot;&gt;Of course, there are already plenty of ways to generate mutations in cells, from zapping them with radiation to exposing them to dangerous chemicals. What&#39;s different about Church&#39;s machine is that it can target the genes that affect a particular characteristic and alter them in specific ways. That greatly increases the odds of success. Effectively, rather than spending years introducing one set of specific changes, bioengineers can try out thousands of combinations at once. Peter Carr, a bioengineer at MIT Media Lab who is part of the group developing the technology, describes it as &quot;highly directed evolution&quot;.&lt;/p&gt;  &lt;p class=&quot;infuse&quot; style=&quot;margin-top: 0px; margin-right: 20px; margin-bottom: 20px; margin-left: 10px; font-size: 1em; line-height: 18px; padding: 0px;&quot;&gt;The first &quot;evolution machine&quot; was built by Harris Wang, a graduate student in Church&#39;s lab. To prove it worked, he started with a strain of the&amp;nbsp;&lt;em style=&quot;padding: 0px; margin: 0px;&quot;&gt;E. coli&lt;/em&gt;bacterium that produced small quantities of lycopene, the pigment that makes tomatoes red. The strain was also modified to produce some viral enzymes. Next, he synthesised 50,000 DNA strands with sequences that almost matched parts of the 24 genes involved in lycopene production, but with a range of variations that he hoped would affect the amount of lycopene produced. The DNA and the bacteria were then put into the evolution machine.&lt;/p&gt;  &lt;p class=&quot;infuse&quot; style=&quot;margin-top: 0px; margin-right: 20px; margin-bottom: 20px; margin-left: 10px; font-size: 1em; line-height: 18px; padding: 0px;&quot;&gt;The machine let the&amp;nbsp;&lt;em style=&quot;padding: 0px; margin: 0px;&quot;&gt;E. coli&lt;/em&gt;&amp;nbsp;multiply, mixed them with the DNA strands, and applied an electric shock to open up the bacterial cells and let the DNA get inside. There,&amp;nbsp;&lt;a href=&quot;http://www.newscientist.com/article/mg19025551.100-genetic-tools-you-can-trust.html&quot; style=&quot;text-decoration: none; color: #00759a; padding: 0px; margin: 0px;&quot;&gt;some of the added DNA was swapped with the matching target sequences in the cells&#39; genomes&lt;/a&gt;. This process, called homologous recombination, is usually very rare, which is where the viral enzymes come in. They trick cells into treating the added DNA as its own, greatly increasing the chance of homologous recombination.&lt;/p&gt;  &lt;p class=&quot;infuse&quot; style=&quot;margin-top: 0px; margin-right: 20px; margin-bottom: 20px; margin-left: 10px; font-size: 1em; line-height: 18px; padding: 0px;&quot;&gt;The effect was to create new variants of the targeted genes while leaving the rest of the genome untouched. It was unlikely that all 24 genes would be altered simultaneously in any one bacterium, so the cycle was repeated over and over to increase the proportion of cells with mutations in all 24 genes.&lt;/p&gt;  &lt;p class=&quot;infuse&quot; style=&quot;margin-top: 0px; margin-right: 20px; margin-bottom: 20px; margin-left: 10px; font-size: 1em; line-height: 18px; padding: 0px;&quot;&gt;Repeating the cycle 35 times generated an estimated 15 billion new strains, each with a different combination of changes in the target genes. Some made five times as much lycopene as the original strain, Wang&#39;s team reported in 2009 (&lt;a href=&quot;http://dx.doi.org/10.1038/nature08187&quot; target=&quot;nsarticle&quot; style=&quot;text-decoration: none; color: #00759a; padding: 0px; margin: 0px;&quot;&gt;&amp;nbsp;&lt;em style=&quot;padding: 0px; margin: 0px;&quot;&gt;Nature&lt;/em&gt;, vol 460, p 894&lt;/a&gt;).&lt;/p&gt;  &lt;p class=&quot;infuse&quot; style=&quot;margin-top: 0px; margin-right: 20px; margin-bottom: 20px; margin-left: 10px; font-size: 1em; line-height: 18px; padding: 0px;&quot;&gt;It took Wang just three days to do better than&amp;nbsp;&lt;a href=&quot;http://dx.doi.org/10.1016/j.procbio.2009.04.018&quot; target=&quot;nsarticle&quot; style=&quot;text-decoration: none; color: #00759a; padding: 0px; margin: 0px;&quot;&gt;the biosynthesis industry has managed&lt;/a&gt;&amp;nbsp;in years. And it was no one-off - he has since repeated the trick for the textile dye indigo.&lt;/p&gt;  &lt;p class=&quot;infuse&quot; style=&quot;margin-top: 0px; margin-right: 20px; margin-bottom: 20px; margin-left: 10px; font-size: 1em; line-height: 18px; padding: 0px;&quot;&gt;Church calls this bold approach multiplex automated genome engineering, or MAGE. In essence, he has applied the key principles that have led to the astonishing advances in DNA sequencing - parallel processing and automation - to genetic engineering. And since Church was one of the founders of the human genome project and helped develop modern sequencing methods, he knows what he is doing.&lt;/p&gt;  &lt;p class=&quot;infuse&quot; style=&quot;margin-top: 0px; margin-right: 20px; margin-bottom: 20px; margin-left: 10px; font-size: 1em; line-height: 18px; padding: 0px;&quot;&gt;Just as labs all over the world now buy thousands of automated DNA sequencing machines, so Church envisions them buying automated evolution machines. He hopes to sell them relatively cheaply, at around $90,000 apiece. &quot;We&#39;re dedicated to bringing the price down for everybody, rather than doing some really big project that nobody can repeat,&quot; Church says.&lt;/p&gt;  &lt;p class=&quot;infuse&quot; style=&quot;margin-top: 0px; margin-right: 20px; margin-bottom: 20px; margin-left: 10px; font-size: 1em; line-height: 18px; padding: 0px;&quot;&gt;He hopes the machines will greatly accelerate the process of producing novel microbes. LS9, a biofuels company based near San Francisco that was co-founded by Church, has said it hopes to use MAGE to engineer&amp;nbsp;&lt;em style=&quot;padding: 0px; margin: 0px;&quot;&gt;E. coli&lt;/em&gt;&amp;nbsp;that can produce renewable fuels. Church and colleagues are also adapting the approach for use with other useful bacteria, including&amp;nbsp;&lt;em style=&quot;padding: 0px; margin: 0px;&quot;&gt;Shewanella&lt;/em&gt;, which can convert toxic metals such as uranium into an insoluble form, and cyanobacteria which can extract energy from light using photosynthesis.&lt;/p&gt;  &lt;h3 class=&quot;crosshead&quot; style=&quot;margin-top: 0px; margin-right: 20px; margin-bottom: 10px; margin-left: 10px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 1px; border-left-width: 0px; border-color: initial; font-size: 1.1em; border-bottom-style: solid; border-bottom-color: #00759a; color: #717171; line-height: 19px; padding: 0px;&quot;&gt;A big revolution&lt;/h3&gt;  &lt;p class=&quot;infuse&quot; style=&quot;margin-top: 0px; margin-right: 20px; margin-bottom: 20px; margin-left: 10px; font-size: 1em; line-height: 18px; padding: 0px;&quot;&gt;In principle, the technique should work with plant and animal cells as well as microbes. New methods will have to be developed for coaxing cells to swap in tailored DNA for each type of organism, but Church and his colleagues say that progress has already been made in yeast and mammalian cells.&lt;/p&gt;  &lt;p class=&quot;infuse&quot; style=&quot;margin-top: 0px; margin-right: 20px; margin-bottom: 20px; margin-left: 10px; font-size: 1em; line-height: 18px; padding: 0px;&quot;&gt;&quot;I think it is a big revolution in genome engineering,&quot; says Kristala Jones Prather, a bioengineer at the Massachusetts Institute of Technology who is not part of Church&#39;s collaboration. &quot;You don&#39;t have to already know what the answer is. You can manipulate multiple things at a time, and let the cell find a solution for you.&quot;&lt;/p&gt;  &lt;p class=&quot;infuse&quot; style=&quot;margin-top: 0px; margin-right: 20px; margin-bottom: 20px; margin-left: 10px; font-size: 1em; line-height: 18px; padding: 0px;&quot;&gt;Because biological systems are so complex, it is a huge advantage to be able to tweak lots of genes simultaneously, rather than one at a time, she says. &quot;In almost every case you&#39;ll get a different solution that&#39;s a better solution.&quot;&lt;/p&gt;  &lt;p class=&quot;infuse&quot; style=&quot;margin-top: 0px; margin-right: 20px; margin-bottom: 20px; margin-left: 10px; font-size: 1em; line-height: 18px; padding: 0px;&quot;&gt;The disadvantage of Church&#39;s approach is that the &quot;better solution&quot; is mixed up with millions of poorer solutions. Prather points out that the technique is limited by how easy it is to screen for the characteristics that you want. Wang selected good lycopene producers by growing 100,000 of the strains he had created in culture dishes and simply picking out the brightest red colonies. &quot;Essentially nothing that we use in my lab can be screened so easily,&quot; Prather says.&lt;/p&gt;  &lt;p class=&quot;infuse&quot; style=&quot;margin-top: 0px; margin-right: 20px; margin-bottom: 20px; margin-left: 10px; font-size: 1em; line-height: 18px; padding: 0px;&quot;&gt;By automating selection and using a few tricks, though, it should be practical to screen for far more subtle characteristics. For instance, biosensors that light up when a particular substance is produced could be built into the starting strain. &quot;The power going forward will have to do with clever selections and screens,&quot; says Church.&lt;/p&gt;  &lt;p class=&quot;infuse&quot; style=&quot;margin-top: 0px; margin-right: 20px; margin-bottom: 20px; margin-left: 10px; font-size: 1em; line-height: 18px; padding: 0px;&quot;&gt;As revolutionary as this approach is, Church thinks MAGE&#39;s most far-reaching potential lies elsewhere. He reckons it will be possible to use the evolution machine to make many thousands of specific changes to a cell&#39;s DNA: essentially, to rewrite genomes.&lt;/p&gt;  &lt;p class=&quot;infuse&quot; style=&quot;margin-top: 0px; margin-right: 20px; margin-bottom: 20px; margin-left: 10px; font-size: 1em; line-height: 18px; padding: 0px;&quot;&gt;At the moment, making extensive changes to even the smallest genome is extremely costly and laborious. Last year, the biologist and entrepreneur Craig Venter announced that his team&amp;nbsp;&lt;a href=&quot;http://www.newscientist.com/article/mg20627622.600-special-report-where-next-for-synthetic-life.html&quot; style=&quot;text-decoration: none; color: #00759a; padding: 0px; margin: 0px;&quot;&gt;had replaced a bacterium&#39;s genome with a custom-written one&lt;/a&gt;&amp;nbsp;(&lt;em style=&quot;padding: 0px; margin: 0px;&quot;&gt;Science&lt;/em&gt;, vol 329, p 52). His team synthesised small pieces of DNA with a specific sequence, and then joined them together to create an entire genome. It was an awesome achievement, but it took 400 person-years of labour and cost around $40 million.&lt;/p&gt;  &lt;p class=&quot;infuse&quot; style=&quot;margin-top: 0px; margin-right: 20px; margin-bottom: 20px; margin-left: 10px; font-size: 1em; line-height: 18px; padding: 0px;&quot;&gt;MAGE can do the same job far more cheaply and efficiently by rewriting existing genomes, Church thinks. The idea is that instead of putting DNA strands into the machine with a range of different mutations, you add only DNA with the specific changes you want. Even if you are trying to change hundreds or thousands of genes at once, after a few cycles in the machine, a good proportion of the cells should have all the desired changes. This can be checked by sequencing.&lt;/p&gt;  &lt;p class=&quot;infuse&quot; style=&quot;margin-top: 0px; margin-right: 20px; margin-bottom: 20px; margin-left: 10px; font-size: 1em; line-height: 18px; padding: 0px;&quot;&gt;If the idea works it would make feasible some visionary projects that are currently impossibly difficult. Church, needless to say, has something suitably ambitious in mind. In fact, it is the reason he devised MAGE in the first place.&lt;/p&gt;  &lt;p class=&quot;infuse&quot; style=&quot;margin-top: 0px; margin-right: 20px; margin-bottom: 20px; margin-left: 10px; font-size: 1em; line-height: 18px; padding: 0px;&quot;&gt;In 2004 he had joined forces with Joseph Jacobson, an engineer at the MIT Media Lab, best known as inventor of the e-ink technology used in e-readers. Searching for a &quot;grand goal&quot; in bioengineering, the pair hit upon the idea of altering life&#39;s genetic code. Rather than just alter the sequence of DNA, they want to change the very language in which the instructions for life are written(see diagram).&lt;/p&gt;  &lt;p class=&quot;infuse&quot; style=&quot;margin-top: 0px; margin-right: 20px; margin-bottom: 20px; margin-left: 10px; font-size: 1em; line-height: 18px; padding: 0px;&quot;&gt;This is not as alarming as it might sound. Because all existing life uses essentially the same genetic code, organisms that translate DNA using a different code would be behind a &quot;genetic firewall&quot;, unable to swap DNA with any normal living thing. If they escaped into the wild, they would not be able to spread any engineered components. Nor would they be able to receive any genes from natural bacteria that would endow them with antibiotic resistance or the ability to make toxins. &quot;Any new DNA coming in or any DNA coming out doesn&#39;t work,&quot; says Church. &quot;We&#39;re hoping that people who are concerned, including us, about escape from industrial processes, will find these safer.&quot;&lt;/p&gt;  &lt;p class=&quot;infuse&quot; style=&quot;margin-top: 0px; margin-right: 20px; margin-bottom: 20px; margin-left: 10px; font-size: 1em; line-height: 18px; padding: 0px;&quot;&gt;There is another huge advantage: organisms with an altered genetic code would be immune to viruses, which rely on the protein-making machinery of the cells they infect to make copies of themselves. In a cell that uses a different genetic code, the viral blueprints will be mistranslated, and any resulting proteins will be garbled and unable to form new viruses.&lt;/p&gt;  &lt;p class=&quot;infuse&quot; style=&quot;margin-top: 0px; margin-right: 20px; margin-bottom: 20px; margin-left: 10px; font-size: 1em; line-height: 18px; padding: 0px;&quot;&gt;Doing this in bacteria or cell lines used for growing chemicals would be of huge importance to industry, where viral infections can shut down entire production lines. And the approach is not necessarily limited to single cells. &quot;It&#39;s conceivable that it could be done in animals,&quot; says Carr.&lt;/p&gt;  &lt;h3 class=&quot;crosshead&quot; style=&quot;margin-top: 0px; margin-right: 20px; margin-bottom: 10px; margin-left: 10px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 1px; border-left-width: 0px; border-color: initial; font-size: 1.1em; border-bottom-style: solid; border-bottom-color: #00759a; color: #717171; line-height: 19px; padding: 0px;&quot;&gt;Completely virus-proof&lt;/h3&gt;  &lt;p class=&quot;infuse&quot; style=&quot;margin-top: 0px; margin-right: 20px; margin-bottom: 20px; margin-left: 10px; font-size: 1em; line-height: 18px; padding: 0px;&quot;&gt;Carr and his colleagues have already begun eliminating redundant codons from the genome of&amp;nbsp;&lt;em style=&quot;padding: 0px; margin: 0px;&quot;&gt;E. coli&lt;/em&gt;. They are starting with the rarest, the stop codon TAG, which appears 314 times. Each instance will be replaced by a different stop codon, TAA. So far they have used MAGE to create 32&amp;nbsp;&lt;em style=&quot;padding: 0px; margin: 0px;&quot;&gt;E. coli&lt;/em&gt;&amp;nbsp;strains that each have around 10 of the necessary changes, and are now combining them to create a single strain with all the changes. Carr says this should be completed within the next few months, after which he hopes to start replacing another 12 redundant codons. To make a bacterium completely virus-proof will probably require replacing tens of thousands of redundant codons, he says, as well as modifying the protein-making factories so they no longer recognise these codons.&lt;/p&gt;  &lt;p class=&quot;infuse&quot; style=&quot;margin-top: 0px; margin-right: 20px; margin-bottom: 20px; margin-left: 10px; font-size: 1em; line-height: 18px; padding: 0px;&quot;&gt;To ensure novel genes cannot be translated if they get passed on to other organisms, the team would have to go a step further and reassign the freed-up codons so a different amino acid to normal is added to a protein when they occur. This could include amino acids that do not exist in nature, opening the door to new types of chemistry in living cells. Artificial amino acids could be used to create proteins that do not degrade as easily, for example, which could be useful in industry and medicine.&lt;/p&gt;  &lt;p class=&quot;infuse&quot; style=&quot;margin-top: 0px; margin-right: 20px; margin-bottom: 20px; margin-left: 10px; font-size: 1em; line-height: 18px; padding: 0px;&quot;&gt;There are potential dangers in making organisms virus-proof, though. Most obviously, they might have an advantage over competing species if they escaped into the wild, allowing them to dominate environments with potentially destructive effects. In the case of&amp;nbsp;&lt;em style=&quot;padding: 0px; margin: 0px;&quot;&gt;E. coli&lt;/em&gt;, those environments could include our guts.&lt;/p&gt;  &lt;p class=&quot;infuse&quot; style=&quot;margin-top: 0px; margin-right: 20px; margin-bottom: 20px; margin-left: 10px; font-size: 1em; line-height: 18px; padding: 0px;&quot;&gt;&quot;We want to be very careful. The goal is to isolate these organisms from part of the natural sphere with which they normally interact,&quot; says Carr. &quot;We shouldn&#39;t pretend that we understand all possible ramifications, and we need to study these modified organisms carefully.&quot; But he points out that we deal with similar issues already, such as invasive species running riot in countries where they have no natural predators. Additional safeguards could be built in, such as making modified organisms dependent on nutrients they can get only in a lab or factory. And if the worst came to the worst, biologists could create viruses capable of killing their errant organisms. Such viruses would not be able to infect normal cells.&lt;/p&gt;  &lt;p class=&quot;infuse&quot; style=&quot;margin-top: 0px; margin-right: 20px; margin-bottom: 20px; margin-left: 10px; font-size: 1em; line-height: 18px; padding: 0px;&quot;&gt;Church argues that with proper safety and regulatory controls, there is no reason why the approach shouldn&#39;t be used widely. &quot;I think that to some extent you&#39;d like every organism to be multi-virus resistant,&quot; he says. &quot;Or at least industrial microbes, agricultural species and humans.&quot;&lt;/p&gt;  &lt;p class=&quot;infuse&quot; style=&quot;margin-top: 0px; margin-right: 20px; margin-bottom: 20px; margin-left: 10px; font-size: 1em; line-height: 18px; padding: 0px;&quot;&gt;Yes, humans. Church is already adapting MAGE for genetically modifying human stem cell lines. The work, funded by the US National Human Genome Research Institute, aims to create human cell lines with subtly different genomes in order to test ideas about which mutations cause disease and how. &quot;Sequencing is now a million times cheaper, and there are a million times as many hypotheses being generated,&quot; he says. &quot;We&#39;d like to develop the resources so that people can quickly test hypotheses about the human genome by synthesising new versions.&quot;&lt;/p&gt;  &lt;p class=&quot;infuse&quot; style=&quot;margin-top: 0px; margin-right: 20px; margin-bottom: 20px; margin-left: 10px; font-size: 1em; line-height: 18px; padding: 0px;&quot;&gt;As the technology improves and becomes routine, says Church, it could also be used to alter the cells used for cell-based therapies. Tissue-engineered livers grown from stem cells, say, could have their genetic code altered so that they would be immune to liver-destroying viruses such as hepatitis C.&lt;/p&gt;  &lt;p class=&quot;infuse&quot; style=&quot;margin-top: 0px; margin-right: 20px; margin-bottom: 20px; margin-left: 10px; font-size: 1em; line-height: 18px; padding: 0px;&quot;&gt;&quot;Everybody getting stem cell therapies will be given a choice of doing ordinary stem cell therapy - either with their cells or donor cells - or doing stem cells that are resistant to viruses,&quot; he says. &quot;There will have to be all kinds of safety checks and FDA approval and so forth, but most people faced with two fairly safe choices, one of which is virus-sensitive and one of which is virus-resistant, are going to take the virus-resistant one.&quot;&lt;/p&gt;  &lt;p class=&quot;infuse&quot; style=&quot;margin-top: 0px; margin-right: 20px; margin-bottom: 20px; margin-left: 10px; font-size: 1em; line-height: 18px; padding: 0px;&quot;&gt;Of course, there would be enormous experimental and safety hurdles to overcome. Not least the fact that&amp;nbsp;&lt;a href=&quot;http://www.newscientist.com/article/mg19025551.100-genetic-tools-you-can-trust.html&quot; style=&quot;text-decoration: none; color: #00759a; padding: 0px; margin: 0px;&quot;&gt;gene targeting using homologous recombination or any other method is not perfect&lt;/a&gt;&amp;nbsp;- the added DNA is sometimes inserted into the wrong place in the genome, and the process can trigger other kinds of mutations too. Such off-target changes might be a big problem when making hundreds of targeted changes at a time.&lt;/p&gt;  &lt;p class=&quot;infuse&quot; style=&quot;margin-top: 0px; margin-right: 20px; margin-bottom: 20px; margin-left: 10px; font-size: 1em; line-height: 18px; padding: 0px;&quot;&gt;So not surprisingly, Carr describes the move to humans as &quot;fraught with peril&quot;. But if we do get to a point where there are lots of people walking around with virus-resistant tissues or organs, and lots of farm animals that are completely virus-resistant, Church thinks it is only a matter of time before clinics create virus-resistant babies. &quot;If it works really well, somebody somewhere will decide to try it in the next generation.&quot;&lt;/p&gt;  &lt;p class=&quot;infuse&quot; style=&quot;margin-top: 0px; margin-right: 20px; margin-bottom: 20px; margin-left: 10px; font-size: 1em; line-height: 18px; padding: 0px;&quot;&gt;Making changes to the genomes of humans that will get passed on to their children has long been seen as taboo. But Church points out that there was strong resistance to techniques such as&amp;nbsp;&lt;a href=&quot;http://www.newscientist.com/article/mg19225741.200-reproduction-revolution-the-conceivable-future.html&quot; style=&quot;text-decoration: none; color: #00759a; padding: 0px; margin: 0px;&quot;&gt;in vitro fertilisation&lt;/a&gt;&amp;nbsp;and organ transplants when they were new; yet as soon as they were shown to work, they were quickly accepted. &quot;Many technologies start out that way,&quot; he says. &quot;But once they work really well, everybody says it&#39;s unethical not to use them.&quot;&lt;/p&gt;  &lt;p class=&quot;infuse&quot; style=&quot;margin-top: 0px; margin-right: 20px; margin-bottom: 20px; margin-left: 10px; font-size: 1em; line-height: 18px; padding: 0px;&quot;&gt;Arthur Caplan, a bioethicist at the University of Pennsylvania in Philadelphia who advises the US government on reproductive technologies, is sceptical about the idea of making virus-resistant people, because anyone modified in this way would only be able to conceive children naturally with a partner whose genome had been altered in exactly the same way. &quot;You would be denying a hugely important choice to a future modified human.&quot;&lt;/p&gt;  &lt;p class=&quot;infuse&quot; style=&quot;margin-top: 0px; margin-right: 20px; margin-bottom: 20px; margin-left: 10px; font-size: 1em; line-height: 18px; padding: 0px;&quot;&gt;But, he says, if MAGE really can be used to edit the genome of human cells, it would provide a way to fix the mutations that cause inherited disease. It could be the technology that opens the door to the genetic engineering of humans. We should start debating now how best to use it, Caplan says. Should it be limited to preventing disease, or used for enhancement too? What sort of regulation is needed? Who should be eligible?&lt;/p&gt;  &lt;p class=&quot;infuse&quot; style=&quot;margin-top: 0px; margin-right: 20px; margin-bottom: 20px; margin-left: 10px; font-size: 1em; line-height: 18px; padding: 0px;&quot;&gt;This prospect might seem a long way off, but Caplan argues that if the technique works well in other species, it could become feasible to attempt to engineer humans in as little as 10 years. &quot;If you learn to do this in microbes and then in animals, you&#39;ll find yourself wondering how we got to humans so fast,&quot; he says. &quot;You&#39;ve got to pay attention to what&#39;s going on in lower creatures because that&#39;s the steady march to people.&quot;&lt;/p&gt;  &lt;p class=&quot;infuse&quot; style=&quot;margin-top: 0px; margin-right: 20px; margin-bottom: 20px; margin-left: 10px; font-size: 1em; line-height: 18px; padding: 0px;&quot;&gt;If all this sounds wildly implausible, bear in mind that the idea of sequencing an entire human genome in days seemed nigh on impossible just a few years ago. Now it&#39;s fast becoming routine. Most biologists would probably agree that it is just a matter of time before we develop the technology needed to rewrite the DNA of living creatures at will. If Church succeeds, this future will happen faster than any imagined.&lt;/p&gt;  &lt;/span&gt;&lt;/p&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://b-giar.blogspot.com/feeds/7143263392377163052/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://b-giar.blogspot.com/2011/07/evolution-machine-genetic-engineering.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8953490625351031216/posts/default/7143263392377163052'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8953490625351031216/posts/default/7143263392377163052'/><link rel='alternate' type='text/html' href='http://b-giar.blogspot.com/2011/07/evolution-machine-genetic-engineering.html' title='Evolution machine: Genetic engineering on fast forward'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/01359356128419832182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8953490625351031216.post-6795376032211248464</id><published>2011-07-06T01:27:00.002+03:00</published><updated>2011-07-06T02:08:43.038+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Framework"/><category scheme="http://www.blogger.com/atom/ns#" term="PHP"/><category scheme="http://www.blogger.com/atom/ns#" term="Portfolio"/><category scheme="http://www.blogger.com/atom/ns#" term="Programming"/><category scheme="http://www.blogger.com/atom/ns#" term="Trinity-FMW"/><title type='text'>Trinity-FMW</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;div class=&quot;posterous_autopost&quot;&gt;&lt;div style=&quot;background-color: white; margin: 8px;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Regarding frameworks are&amp;nbsp;undeniable&amp;nbsp;the most&amp;nbsp;loveable&amp;nbsp;modules of comercial programming. The ability of using already-developed parts or even expand them to your needs is shared. Moreover, regarding software engineering frameworks are the sharping edge of the&amp;nbsp;satellite. The way of developing abstract methods and classes and messing with the real&amp;nbsp;implementation&amp;nbsp;describes&amp;nbsp;the magic of their use.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Trinity-FMW is a framework, which is developed in php and JQuery. It had been started as a personal attempt to bridge applications that need to connect with distributed server-side services such as Databases. This attempt were included&amp;nbsp;features&amp;nbsp;as PHP to server-side-services&amp;nbsp;connection&amp;nbsp;and interaction with the distributed client&#39;s application no matter what its developing&amp;nbsp;features. This interaction were including XML, Port and HTTP GET/POST connection.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;So as a client&#39;s application were following the interaction protocol Trinity-FMW could be the proxy-agent to serve any query. Though Trinity-FMW had implemented ways of connections with services in general, it was sharing the ability to the developer to expand its abilities and reach a more inductive&amp;nbsp;implementation.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;As the Abilities of the Trinity-FMW were&amp;nbsp;expanding&amp;nbsp;it reached the edge of its first developing purpose. Then Trinity-FMW had the ability to expand PHP in a better Object Oriented Programming (OOP) way. Since then it has a new goal to achieve, Trinity-FMW shares the ability to program in &amp;nbsp;PHP with the Principles of Java&#39;s OOP.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;As a Software Engineer I though that this is a great advantage of PHP since PHP&#39;s reaction time in serving the queries is really fast and OOP principles are the fetish of every OOP developer.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;In addition, Trinity-FMW tries to implement abstract methods to result a better and easier AJAX applications by using the JQuery.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;JQuery has the&amp;nbsp;philosophy&amp;nbsp;of Trinity_FMW. It tires to mess the Time-reaction abilities of Javascript with the OOP way of developing. This&amp;nbsp;attempt&amp;nbsp;results a bunch of applications that were really hard to be developed with a pure native code.&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Furthermore, Trinity-FMW is shared as Open source. That is a personal&amp;nbsp;decision&amp;nbsp;wich were gained as I am an open source community member. Moreover, such attempt needs a lot of community&#39;s help in order to be&amp;nbsp;achieved&amp;nbsp;and release a stable version.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&amp;nbsp;&lt;/span&gt;Trinity-FMW is hosted in git-hub and I would be really pleased if you could fork me.&lt;br /&gt;
More news to come regarding Trinity-FMW. Stay tuned :)&lt;br /&gt;
&lt;a href=&quot;https://github.com/BagosGiAr/Trinity-FMW&quot; target=&quot;_blank&quot; title=&quot;Trinity-FMW&quot;&gt;Trinity-FMW on Git-Hub&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://b-giar.blogspot.com/feeds/6795376032211248464/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://b-giar.blogspot.com/2011/07/trinity-fmw.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8953490625351031216/posts/default/6795376032211248464'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8953490625351031216/posts/default/6795376032211248464'/><link rel='alternate' type='text/html' href='http://b-giar.blogspot.com/2011/07/trinity-fmw.html' title='Trinity-FMW'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/01359356128419832182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8953490625351031216.post-9080773967296792408</id><published>2011-07-05T13:09:00.001+03:00</published><updated>2011-07-05T13:09:05.071+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Advance Computing"/><category scheme="http://www.blogger.com/atom/ns#" term="Artificial Intelligence"/><category scheme="http://www.blogger.com/atom/ns#" term="Video"/><title type='text'>Lecture: Getting Computers To Learn, Part 4 of 4</title><content type='html'>&lt;div class=&#39;posterous_autopost&#39;&gt;&lt;p&gt;&lt;iframe src=&quot;http://www.youtube.com/embed/yPNljjW6FzI&quot; frameborder=&quot;0&quot; height=&quot;349&quot; width=&quot;560&quot;&gt;&lt;/iframe&gt;&lt;/p&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://b-giar.blogspot.com/feeds/9080773967296792408/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://b-giar.blogspot.com/2011/07/lecture-getting-computers-to-learn-part_2969.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8953490625351031216/posts/default/9080773967296792408'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8953490625351031216/posts/default/9080773967296792408'/><link rel='alternate' type='text/html' href='http://b-giar.blogspot.com/2011/07/lecture-getting-computers-to-learn-part_2969.html' title='Lecture: Getting Computers To Learn, Part 4 of 4'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/01359356128419832182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/yPNljjW6FzI/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8953490625351031216.post-129685427013135509</id><published>2011-07-05T13:07:00.001+03:00</published><updated>2011-07-05T13:07:32.913+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Advance Computing"/><category scheme="http://www.blogger.com/atom/ns#" term="Artificial Intelligence"/><category scheme="http://www.blogger.com/atom/ns#" term="Video"/><title type='text'>Lecture: Getting Computers To Learn, Part 3 of 4</title><content type='html'>&lt;div class=&#39;posterous_autopost&#39;&gt;&lt;p&gt;&lt;iframe src=&quot;http://www.youtube.com/embed/ApDMSsnXDIc&quot; frameborder=&quot;0&quot; height=&quot;349&quot; width=&quot;560&quot;&gt;&lt;/iframe&gt;&lt;/p&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://b-giar.blogspot.com/feeds/129685427013135509/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://b-giar.blogspot.com/2011/07/lecture-getting-computers-to-learn-part_6193.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8953490625351031216/posts/default/129685427013135509'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8953490625351031216/posts/default/129685427013135509'/><link rel='alternate' type='text/html' href='http://b-giar.blogspot.com/2011/07/lecture-getting-computers-to-learn-part_6193.html' title='Lecture: Getting Computers To Learn, Part 3 of 4'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/01359356128419832182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/ApDMSsnXDIc/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8953490625351031216.post-5359148354229038281</id><published>2011-07-05T13:04:00.001+03:00</published><updated>2011-07-05T13:04:43.724+03:00</updated><title type='text'>Lecture: Getting Computers To Learn, Part 2 of 4</title><content type='html'>&lt;div class=&#39;posterous_autopost&#39;&gt;&lt;p&gt;&lt;span style=&quot;font-family: arial, sans-serif; line-height: 18px;&quot;&gt;An introduction to machine learning, and some of the mathematics underlying machine learning algorithms.&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&lt;span style=&quot;font-family: arial, sans-serif; line-height: 18px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;iframe src=&quot;http://www.youtube.com/embed/6GvSkuw4py8&quot; frameborder=&quot;0&quot; height=&quot;349&quot; width=&quot;560&quot;&gt;&lt;/iframe&gt;&lt;/p&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://b-giar.blogspot.com/feeds/5359148354229038281/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://b-giar.blogspot.com/2011/07/lecture-getting-computers-to-learn-part_05.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8953490625351031216/posts/default/5359148354229038281'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8953490625351031216/posts/default/5359148354229038281'/><link rel='alternate' type='text/html' href='http://b-giar.blogspot.com/2011/07/lecture-getting-computers-to-learn-part_05.html' title='Lecture: Getting Computers To Learn, Part 2 of 4'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/01359356128419832182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/6GvSkuw4py8/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8953490625351031216.post-6094151129572004591</id><published>2011-07-05T13:01:00.001+03:00</published><updated>2011-07-05T13:01:06.170+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Advance Computing"/><category scheme="http://www.blogger.com/atom/ns#" term="Artificial Intelligence"/><category scheme="http://www.blogger.com/atom/ns#" term="Video"/><title type='text'>Lecture: Getting Computers To Learn, Part 1 of 4</title><content type='html'>&lt;div class=&#39;posterous_autopost&#39;&gt;&lt;p&gt;&lt;span style=&quot;font-family: arial, sans-serif; line-height: 18px;&quot;&gt;An introduction to machine learning, and some of the mathematics underlying machine learning algorithms.&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style=&quot;font-family: arial, sans-serif;&quot;&gt;&lt;span style=&quot;line-height: 18px;&quot;&gt;&lt;iframe allowfullscreen=&quot;true&quot; src=&quot;http://www.youtube.com/embed/Y_H15BWMvcU&quot; frameborder=&quot;0&quot; height=&quot;349&quot; width=&quot;560&quot;&gt;&lt;/iframe&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://b-giar.blogspot.com/feeds/6094151129572004591/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://b-giar.blogspot.com/2011/07/lecture-getting-computers-to-learn-part.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8953490625351031216/posts/default/6094151129572004591'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8953490625351031216/posts/default/6094151129572004591'/><link rel='alternate' type='text/html' href='http://b-giar.blogspot.com/2011/07/lecture-getting-computers-to-learn-part.html' title='Lecture: Getting Computers To Learn, Part 1 of 4'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/01359356128419832182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/Y_H15BWMvcU/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8953490625351031216.post-5164301838204105163</id><published>2011-07-05T11:43:00.001+03:00</published><updated>2011-07-05T11:43:04.583+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Academic stuff"/><category scheme="http://www.blogger.com/atom/ns#" term="Physics"/><category scheme="http://www.blogger.com/atom/ns#" term="Science"/><title type='text'>Q: According to relativity, two moving observers always see the other moving through time slower. Isn’t that a contradiction? Doesn’t one have to be faster?</title><content type='html'>&lt;div class=&#39;posterous_autopost&#39;&gt;&lt;p&gt;&lt;span style=&quot;color: #333333; font-family: Georgia, Bitstream Charter, serif; font-size: 16px; line-height: 24px;&quot;&gt;  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;&lt;strong style=&quot;background-color: transparent; vertical-align: baseline; font-weight: bold; padding: 0px; margin: 0px;&quot;&gt;Physicist&lt;/strong&gt;: They definitely&amp;nbsp;&lt;span style=&quot;background-color: transparent; vertical-align: baseline; text-decoration: underline; padding: 0px; margin: 0px;&quot;&gt;both&lt;/span&gt;&amp;nbsp;experience time dilation.&amp;nbsp; That is to say, they both see the&amp;nbsp;&lt;em style=&quot;background-color: transparent; vertical-align: baseline; font-style: italic; padding: 0px; margin: 0px;&quot;&gt;other&lt;/em&gt;&amp;nbsp;person moving through time slower (you will always see your own clock running normally, in all circumstances).&amp;nbsp; The short resolution to the &amp;ldquo;paradox&amp;rdquo; is: if you&amp;rsquo;re flying past each other, and never come back to the same place again to compare clocks, what&amp;rsquo;s the problem?&amp;nbsp; You may both observe the other person&amp;rsquo;s clock running slower, but that&amp;rsquo;s not a contradiction in any &amp;ldquo;physical sense&amp;rdquo;.&lt;/p&gt;  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;Of course if you do meet up again, then you&amp;rsquo;ve got the &amp;ldquo;twin paradox&amp;rdquo;, which&amp;nbsp;&lt;em style=&quot;background-color: transparent; vertical-align: baseline; font-style: italic; padding: 0px; margin: 0px;&quot;&gt;still&lt;/em&gt;&amp;nbsp;isn&amp;rsquo;t a problem (or a paradox).&amp;nbsp; One of the most frustrating things about the universe is that there is no such thing as &amp;ldquo;&lt;a href=&quot;http://en.wikipedia.org/wiki/Absolute_time_and_space&quot; style=&quot;background-color: transparent; vertical-align: baseline; color: #0066cc; padding: 0px; margin: 0px;&quot;&gt;absolute time&lt;/a&gt;&amp;ldquo;, which would allow you to say &amp;ldquo;who&amp;rsquo;s right&amp;rdquo;.&amp;nbsp; If you could ask the universe &amp;ldquo;what time is it?&amp;rdquo; the universe&amp;rsquo;s best answer would be &amp;ldquo;that depends on who&amp;rsquo;s asking&amp;rdquo;.&amp;nbsp; The universe is kind of a smart ass.&lt;/p&gt;  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;There&amp;rsquo;s a halfway decent explanation the twin paradox here: &amp;ldquo;&lt;a href=&quot;http://www.askamathematician.com/?p=3731&quot; style=&quot;background-color: transparent; vertical-align: baseline; color: #0066cc; padding: 0px; margin: 0px;&quot;&gt;Q: How does the twin paradox work?&lt;/a&gt;&amp;rdquo; and there&amp;rsquo;s a quarterway decent, possibly simpler, explanation of why movement makes time pass slower here: &amp;ldquo;&lt;a href=&quot;http://www.askamathematician.com/?p=1541&quot; style=&quot;background-color: transparent; vertical-align: baseline; color: #0066cc; padding: 0px; margin: 0px;&quot;&gt;Q: Why does going fast or being lower make time slow down?&lt;/a&gt;&amp;ldquo;.&amp;nbsp; Personally, I think the question of this post is far more profound.&lt;/p&gt;  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;I should note here that the language physicists use makes the situation sound subjective; &amp;ldquo;the observer sees&amp;hellip;&amp;rdquo;, &amp;ldquo;the person experiences&amp;hellip;&amp;rdquo;, etc.&amp;nbsp; However, none of the effects (covered in a minute) are due to observer based effects, like the delay caused by the time it takes light to get from place to place.&amp;nbsp; Everything here is literal and physically real.&lt;/p&gt;  &lt;div class=&quot;wp-caption aligncenter&quot; style=&quot;background-color: #f1f1f1; margin-top: 0px; margin-right: auto; margin-bottom: 20px; margin-left: auto; vertical-align: baseline; clear: both; display: block; line-height: 18px; text-align: center; padding: 4px;&quot;&gt;&lt;a href=&quot;http://www.askamathematician.com/wp-content/uploads/2010/12/awsomeexample.jpg&quot; style=&quot;background-color: transparent; vertical-align: baseline; color: #0066cc; padding: 0px; margin: 0px;&quot;&gt;&lt;img class=&quot;size-full wp-image-4756&quot; title=&quot;awsomeexample&quot; src=&quot;http://www.askamathematician.com/wp-content/uploads/2010/12/awsomeexample.jpg&quot; height=&quot;445&quot; alt=&quot;&quot; style=&quot;background-color: transparent; margin-top: 5px; margin-right: 5px; margin-bottom: 0px; margin-left: 5px; vertical-align: baseline; height: auto; padding: 0px;&quot; width=&quot;462&quot; /&gt;&lt;/a&gt;  &lt;p class=&quot;wp-caption-text&quot; style=&quot;background-color: transparent; margin-top: 5px; margin-right: 5px; margin-bottom: 24px; margin-left: 5px; vertical-align: baseline; font-family: Helvetica Neue, Arial, Helvetica, Nimbus Sans L, sans-serif; color: #888888; font-size: 12px; padding: 0px;&quot;&gt;You don&#39;t see an event when it happens, you see it when the light from the event gets to you. But you can easily figure out when it did happen by dividing the distance to the event by C, giving you the time delay.&lt;/p&gt;  &lt;/div&gt;  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;This diagram is pretty standard physicist fare.&amp;nbsp; If you want to draw a picture of something happening in 4 dimensional spacetime, you just drop two of the spacial dimensions.&amp;nbsp; So here, time is up, space is left/right, the red arrow is a person (it doesn&amp;rsquo;t have to be a person) sitting still and moving forward in time (like you&amp;rsquo;re doing right now, in all likelihood).&amp;nbsp; The yellow triangle is a lightning strike (at the bottom) and the light expanding out from it.&amp;nbsp; The picture should make sense; the longer after the lightning strike (the higher on the picture) the farther the light from the strike has traveled (wider to the left and right).&amp;nbsp; &amp;ldquo;Lightning&amp;rdquo; is a common example of an event, because it hits in a definite place at a very definite time.&amp;nbsp; Plus, (spoiler alert) lightning is bright so, unlike most small instantaneous things, it makes sense that everyone should be able to see them.&lt;/p&gt;  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;Now let&amp;rsquo;s say you&amp;rsquo;ve got two people;&amp;nbsp;&lt;strong style=&quot;background-color: transparent; vertical-align: baseline; font-weight: bold; padding: 0px; margin: 0px;&quot;&gt;&lt;span style=&quot;background-color: transparent; vertical-align: baseline; color: #ff0000; padding: 0px; margin: 0px;&quot;&gt;Alice&lt;/span&gt;&lt;/strong&gt;, who likes to hang out by the train tracks, and&lt;strong style=&quot;background-color: transparent; vertical-align: baseline; font-weight: bold; padding: 0px; margin: 0px;&quot;&gt;&lt;span style=&quot;background-color: transparent; vertical-align: baseline; color: #3366ff; padding: 0px; margin: 0px;&quot;&gt;Bob&lt;/span&gt;&lt;/strong&gt;, who likes to ride trains on said tracks.&lt;/p&gt;  &lt;div class=&quot;wp-caption aligncenter&quot; style=&quot;background-color: #f1f1f1; margin-top: 0px; margin-right: auto; margin-bottom: 20px; margin-left: auto; vertical-align: baseline; clear: both; display: block; line-height: 18px; text-align: center; padding: 4px;&quot;&gt;&lt;a href=&quot;http://www.askamathematician.com/wp-content/uploads/2010/12/tracks.jpg&quot; style=&quot;background-color: transparent; vertical-align: baseline; color: #0066cc; padding: 0px; margin: 0px;&quot;&gt;&lt;img class=&quot;size-full wp-image-4760&quot; title=&quot;Don&#39;t high five your relativistic friends.  My friend Lefty (really, more of an acquaintance) could tell you stories...&quot; src=&quot;http://www.askamathematician.com/wp-content/uploads/2010/12/tracks.jpg&quot; height=&quot;447&quot; alt=&quot;&quot; style=&quot;background-color: transparent; margin-top: 5px; margin-right: 5px; margin-bottom: 0px; margin-left: 5px; vertical-align: baseline; height: auto; padding: 0px;&quot; width=&quot;467&quot; /&gt;&lt;/a&gt;  &lt;p class=&quot;wp-caption-text&quot; style=&quot;background-color: transparent; margin-top: 5px; margin-right: 5px; margin-bottom: 24px; margin-left: 5px; vertical-align: baseline; font-family: Helvetica Neue, Arial, Helvetica, Nimbus Sans L, sans-serif; color: #888888; font-size: 12px; padding: 0px;&quot;&gt;A train car (light blue) moves to the right. Right when Alice and Bob are eye-to-eye the front and back of the train car are hit by lightning. This moment, that Alice calls &quot;Now!&quot;, is the red line.&lt;/p&gt;  &lt;/div&gt;  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;As the train, with Bob sitting in the exact center, passes Alice they&amp;nbsp;&lt;a href=&quot;http://www.highfive.me.uk/history/&quot; style=&quot;background-color: transparent; vertical-align: baseline; color: #0066cc; padding: 0px; margin: 0px;&quot;&gt;high-five&lt;/a&gt;&amp;nbsp;each other.&amp;nbsp; Suddenly, both ends of the train are struck by lightning.&amp;nbsp; Alice knows this because,&amp;nbsp;&lt;span style=&quot;background-color: transparent; vertical-align: baseline; text-decoration: underline; padding: 0px; margin: 0px;&quot;&gt;very&lt;/span&gt;soon after the lightning strikes, the light from them get to her.&amp;nbsp; Being smart, she realizes that the strikes must have happened at the same time, because they happened equally far away from her, and the light took the same amount of time to get to her (see picture).&amp;nbsp; Moreover, really milking her cleverness, she predicts that Bob will see the lightning bolt at the front of the train first, and the lightning bolt at the back of the train second (see picture, some more).&lt;/p&gt;  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;The speed of light, C, is an absolute.&amp;nbsp; No matter where you are, or how fast you&amp;rsquo;re moving, C stays exactly the same.&amp;nbsp; So Alice&amp;rsquo;s reasoning is completely solid, and she&amp;rsquo;s right when she says that the lightning bolts happened at the same time.&lt;/p&gt;  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;When you say that two things are &amp;ldquo;happening at the same moment&amp;rdquo;, or &amp;ldquo;happening now&amp;rdquo; you&amp;rsquo;re saying that they&amp;rsquo;re on the same spacetime plane, that I&amp;rsquo;ll call a &amp;ldquo;moment plane&amp;rdquo;.&amp;nbsp; In the same way that a regular&amp;nbsp; 2D plane is a big, flat subset of regular 3D space, the moment planes are big flat 3D subsets of 4D spacetime.&lt;/p&gt;  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;So the high five, the lightning strikes, and everything else in the universe at that moment, are all in the same &amp;ldquo;moment plane&amp;rdquo;.&amp;nbsp; However, that doesn&amp;rsquo;t necessarily mean that everything in that plane happens at the same time (although they do for someone, in this case Alice).&lt;/p&gt;  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; text-align: center; padding: 0px;&quot;&gt;&amp;nbsp;&lt;/p&gt;  &lt;div class=&quot;wp-caption aligncenter&quot; style=&quot;background-color: #f1f1f1; margin-top: 0px; margin-right: auto; margin-bottom: 20px; margin-left: auto; vertical-align: baseline; clear: both; display: block; line-height: 18px; text-align: center; padding: 4px;&quot;&gt;&lt;a href=&quot;http://www.askamathematician.com/wp-content/uploads/2010/12/train.jpg&quot; style=&quot;background-color: transparent; vertical-align: baseline; color: #0066cc; padding: 0px; margin: 0px;&quot;&gt;&lt;img class=&quot;size-full wp-image-4761 &quot; title=&quot;Interestingly, I know two people named named Lefty, but none named &amp;quot;Righty&amp;quot;.&quot; src=&quot;http://www.askamathematician.com/wp-content/uploads/2010/12/train.jpg&quot; height=&quot;443&quot; alt=&quot;&quot; style=&quot;background-color: transparent; margin-top: 5px; margin-right: 5px; margin-bottom: 0px; margin-left: 5px; vertical-align: baseline; height: auto; padding: 0px;&quot; width=&quot;467&quot; /&gt;&lt;/a&gt;  &lt;p class=&quot;wp-caption-text&quot; style=&quot;background-color: transparent; margin-top: 5px; margin-right: 5px; margin-bottom: 24px; margin-left: 5px; vertical-align: baseline; font-family: Helvetica Neue, Arial, Helvetica, Nimbus Sans L, sans-serif; color: #888888; font-size: 12px; padding: 0px;&quot;&gt;Same situation from the perspective of the train. Bob sees the lightning at the front of the train first, and the lightning at the back of the train second, and can even figure out that Alice will see them at the same time. However, he disagrees with Alice about when things happen.&lt;/p&gt;  &lt;/div&gt;  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;Around 1900 the&amp;nbsp;&lt;a href=&quot;http://en.wikipedia.org/wiki/Michelson%E2%80%93Morley_experiment&quot; style=&quot;background-color: transparent; vertical-align: baseline; color: #0066cc; padding: 0px; margin: 0px;&quot;&gt;Michelson Morley experiment&lt;/a&gt;&amp;nbsp;(among others) was demonstrating that the speed of light seemed to be the same to everyone, regardless of whether or not they&amp;rsquo;re moving.&amp;nbsp; Einstein&amp;rsquo;s great insight was &amp;ldquo;Hey everybody, if the speed of light&amp;nbsp;&lt;em style=&quot;background-color: transparent; vertical-align: baseline; font-style: italic; padding: 0px; margin: 0px;&quot;&gt;seems&lt;/em&gt;to be the same regardless of the observers movement, then maybe it really&amp;nbsp;&lt;em style=&quot;background-color: transparent; vertical-align: baseline; font-style: italic; padding: 0px; margin: 0px;&quot;&gt;is&lt;/em&gt;?&amp;rdquo;&amp;nbsp; He was a staggering genius.&amp;nbsp; Also, he was exactly right.&lt;/p&gt;  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;So, Alice was right about Bob seeing the front bolt first, and the back bolt second.&amp;nbsp; However, as far as Bob&amp;rsquo;s concerned, she was wrong about why.&amp;nbsp; Using the same reasoning Alice did, he figures that the speed of light is fixed (whether or not you&amp;rsquo;re moving), and the distance from him to the front and back of the train is the same, so since he saw the front bolt before the back, it must have happened first.&amp;nbsp; And he&amp;rsquo;s right.&amp;nbsp; Moreover, he thinks that the reason that Alice saw both at the same time is that she&amp;rsquo;s moving to the left, away from the first bolt and toward the second (picture).&lt;/p&gt;  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;The first thing that most people say when the hear about the train thought experiment is &amp;ldquo;Isn&amp;rsquo;t the person on the tracks correct, since they really are sitting still?&amp;rdquo;&amp;nbsp; Nope!&amp;nbsp; The tracks may be bigger, but (as Dr. V. E. Kilmer discovered experimentally)&amp;nbsp;&lt;a href=&quot;http://www.youtube.com/watch?v=akLC_JMjpjA&quot; style=&quot;background-color: transparent; vertical-align: baseline; color: #0066cc; padding: 0px; margin: 0px;&quot;&gt;there&amp;rsquo;s no physical way to say who&amp;rsquo;s moving and who&amp;rsquo;s not&lt;/a&gt;.&lt;/p&gt;  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;Both Alice and Bob are completely correct.&amp;nbsp; What&amp;rsquo;s very strange is that the ideas we intuitively have about &amp;ldquo;nowness&amp;rdquo; are wrong.&amp;nbsp; As soon as two people are moving with respect to each other, the set of points that they consider &amp;ldquo;now&amp;rdquo; are no longer the same (different moment planes).&amp;nbsp; Alice&amp;rsquo;s &amp;ldquo;now&amp;rdquo; is the same red line above, but Bob&amp;rsquo;s sees it as &amp;ldquo;tilted&amp;rdquo;.&lt;/p&gt;  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;After all of that, what you should take away is: &amp;ldquo;a things&amp;rsquo;s moment planes tilts up in the direction of its movement&amp;rdquo; (picture above).&amp;nbsp; If this is the first time you&amp;rsquo;ve seen this sort of stuff, you shouldn&amp;rsquo;t really believe any of it.&amp;nbsp; Or at least, you shouldn&amp;rsquo;t have internalized it.&lt;/p&gt;  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;This stuff isn&amp;rsquo;t terribly&amp;nbsp;&lt;em style=&quot;background-color: transparent; vertical-align: baseline; font-style: italic; padding: 0px; margin: 0px;&quot;&gt;complicated&lt;/em&gt;, but it is really&amp;nbsp;&lt;em style=&quot;background-color: transparent; vertical-align: baseline; font-style: italic; padding: 0px; margin: 0px;&quot;&gt;mind-bending&lt;/em&gt;, so take a moment.&lt;/p&gt;  &lt;div class=&quot;wp-caption aligncenter&quot; style=&quot;background-color: #f1f1f1; margin-top: 0px; margin-right: auto; margin-bottom: 20px; margin-left: auto; vertical-align: baseline; clear: both; display: block; line-height: 18px; text-align: center; padding: 4px;&quot;&gt;&lt;a href=&quot;http://www.askamathematician.com/wp-content/uploads/2010/12/cute_bunny.jpg&quot; style=&quot;background-color: transparent; vertical-align: baseline; color: #0066cc; padding: 0px; margin: 0px;&quot;&gt;&lt;img class=&quot;size-full wp-image-4791&quot; title=&quot;cute_bunny&quot; src=&quot;http://www.askamathematician.com/wp-content/uploads/2010/12/cute_bunny.jpg&quot; height=&quot;286&quot; alt=&quot;&quot; style=&quot;background-color: transparent; margin-top: 5px; margin-right: 5px; margin-bottom: 0px; margin-left: 5px; vertical-align: baseline; height: auto; padding: 0px;&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;  &lt;p class=&quot;wp-caption-text&quot; style=&quot;background-color: transparent; margin-top: 5px; margin-right: 5px; margin-bottom: 24px; margin-left: 5px; vertical-align: baseline; font-family: Helvetica Neue, Arial, Helvetica, Nimbus Sans L, sans-serif; color: #888888; font-size: 12px; padding: 0px;&quot;&gt;Physically tilted &quot;nows&quot; are difficult to wrap your mind around. To encourage the reader to pause or go back a little bit; consider the above.&lt;/p&gt;  &lt;/div&gt;  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;Finally, to actually answer the question, imagine the situation from the point of view of someone in between Alice and Bob, who sees them flying off at equal speeds in opposite directions.&amp;nbsp; This puts Alice and Bob on equal footing, and there&amp;rsquo;s no questions about &amp;ldquo;who&amp;rsquo;s right&amp;rdquo; or &amp;ldquo;who&amp;rsquo;s moving&amp;rdquo;.&lt;/p&gt;  &lt;div class=&quot;wp-caption aligncenter&quot; style=&quot;background-color: #f1f1f1; margin-top: 0px; margin-right: auto; margin-bottom: 20px; margin-left: auto; vertical-align: baseline; clear: both; display: block; line-height: 18px; text-align: center; padding: 4px;&quot;&gt;&lt;a href=&quot;http://www.askamathematician.com/wp-content/uploads/2010/12/nows.jpg&quot; style=&quot;background-color: transparent; vertical-align: baseline; color: #0066cc; padding: 0px; margin: 0px;&quot;&gt;&lt;img class=&quot;size-full wp-image-4768&quot; title=&quot;nows&quot; src=&quot;http://www.askamathematician.com/wp-content/uploads/2010/12/nows.jpg&quot; height=&quot;426&quot; alt=&quot;&quot; style=&quot;background-color: transparent; margin-top: 5px; margin-right: 5px; margin-bottom: 0px; margin-left: 5px; vertical-align: baseline; height: auto; padding: 0px;&quot; width=&quot;462&quot; /&gt;&lt;/a&gt;  &lt;p class=&quot;wp-caption-text&quot; style=&quot;background-color: transparent; margin-top: 5px; margin-right: 5px; margin-bottom: 24px; margin-left: 5px; vertical-align: baseline; font-family: Helvetica Neue, Arial, Helvetica, Nimbus Sans L, sans-serif; color: #888888; font-size: 12px; padding: 0px;&quot;&gt;Alice and Bob&#39;s now planes at various times. If you were to ask Alice &quot;how much time has passed for Bob now?&quot; the answer will always be &quot;less time than for Alice.&quot; The situation with Bob is exactly symmetrical.&lt;/p&gt;  &lt;/div&gt;  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;Since the moment planes of each person &amp;ldquo;tilts up in the direction of movement&amp;rdquo;, each person is always trailing behind the other in time.&amp;nbsp; When they pass each other they each start their stopwatches.&amp;nbsp; For that one moment they can agree that T=0 for both of them.&amp;nbsp; But that&amp;rsquo;s where the agreement ends.&amp;nbsp; If you ask Bob about what set of points in the universe (both position and time) correspond to T=7, he&amp;rsquo;ll have no trouble telling you.&amp;nbsp; Specifically, he&amp;rsquo;ll tell you &amp;ldquo;right now my stopwatch reads &amp;lsquo;T=7&amp;prime; and, F.Y.I., Alice&amp;rsquo;s stopwatch reads &amp;lsquo;T=5&amp;prime;&amp;rdquo;.&amp;nbsp; Bob recognizes that this is because her clock is running slower, and he&amp;rsquo;s right.&amp;nbsp; At least, he&amp;rsquo;s right in terms of how time is flowing for him.&lt;/p&gt;  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;If you were to run over to Alice at the moment that her stop watch reads 5 (using a&lt;a href=&quot;http://en.wikipedia.org/wiki/TARDIS&quot; style=&quot;background-color: transparent; vertical-align: baseline; color: #0066cc; padding: 0px; margin: 0px;&quot;&gt;TARDIS&lt;/a&gt;&amp;nbsp;or something), she would say &amp;ldquo;right now my stopwatch reads &amp;lsquo;T=5&amp;prime; and Bob&amp;rsquo;s reads &amp;lsquo;T=3.5&amp;prime;&amp;rdquo;.&amp;nbsp; Also being clever, she realizes that this is because Bob&amp;rsquo;s clock is running slower, and she&amp;rsquo;s right.&amp;nbsp; Notice she doesn&amp;rsquo;t say &amp;ldquo;T=7&amp;Prime;.&amp;nbsp; Once again, this is because they disagree on what &amp;ldquo;now&amp;rdquo; means, since their moment planes aren&amp;rsquo;t the same.&lt;/p&gt;  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;The first question that should be coming to mind is something like &amp;ldquo;Well, what&amp;rsquo;s&amp;nbsp;&lt;em style=&quot;background-color: transparent; vertical-align: baseline; font-style: italic; padding: 0px; margin: 0px;&quot;&gt;really&lt;/em&gt;happening?&amp;rdquo; or &amp;ldquo;How is time&amp;nbsp;&lt;em style=&quot;background-color: transparent; vertical-align: baseline; font-style: italic; padding: 0px; margin: 0px;&quot;&gt;actually&lt;/em&gt;&amp;nbsp;passing?&amp;rdquo;.&amp;nbsp; Sadly, time is a strictly local phenomena.&amp;nbsp; How it flows is determined (defined really) by relative position and relative velocity.&amp;nbsp; That is to say, there is no &amp;ldquo;universal clock&amp;rdquo; that describes how time passes overall.&amp;nbsp; The only reason that there seems to be some kind of universal clock is that we (&lt;a href=&quot;http://www.britannica.com/EBchecked/topic/275376/human-being&quot; style=&quot;background-color: transparent; vertical-align: baseline; color: #0066cc; padding: 0px; margin: 0px;&quot;&gt;people&lt;/a&gt;) are all moving at very nearly the same speed.&amp;nbsp; Or equivalently, we&amp;rsquo;re all sitting still in very much the same way.&amp;nbsp; Our time, length, and speed scale are all just too small.&lt;/p&gt;  &lt;/span&gt;&lt;/p&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://b-giar.blogspot.com/feeds/5164301838204105163/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://b-giar.blogspot.com/2011/07/q-according-to-relativity-two-moving.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8953490625351031216/posts/default/5164301838204105163'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8953490625351031216/posts/default/5164301838204105163'/><link rel='alternate' type='text/html' href='http://b-giar.blogspot.com/2011/07/q-according-to-relativity-two-moving.html' title='Q: According to relativity, two moving observers always see the other moving through time slower. Isn’t that a contradiction? Doesn’t one have to be faster?'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/01359356128419832182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8953490625351031216.post-1694018631012769580</id><published>2011-07-05T11:38:00.001+03:00</published><updated>2011-07-05T11:38:59.691+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Academic stuff"/><category scheme="http://www.blogger.com/atom/ns#" term="Mathematics"/><category scheme="http://www.blogger.com/atom/ns#" term="Science"/><title type='text'>0^0 = ? ( Zero raised to the zeroth power ) equal? dilemma</title><content type='html'>&lt;div class=&#39;posterous_autopost&#39;&gt;&lt;p&gt;&lt;span style=&quot;color: #333333; font-family: Georgia, Bitstream Charter, serif; font-size: 16px; line-height: 24px;&quot;&gt;  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;&lt;strong style=&quot;background-color: transparent; vertical-align: baseline; font-weight: bold; padding: 0px; margin: 0px;&quot;&gt;Clever student:&lt;/strong&gt;&lt;/p&gt;  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;&amp;nbsp;&lt;/p&gt;  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;I know!&lt;/p&gt;  &lt;img class=&quot;latex&quot; title=&quot;x^{0}&quot; src=&quot;http://s.wordpress.com/latex.php?latex=x%5E%7B0%7D&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;x^{0}&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;&amp;nbsp;= &amp;nbsp;&lt;img class=&quot;latex&quot; title=&quot;x^{1-1}&quot; src=&quot;http://s.wordpress.com/latex.php?latex=x%5E%7B1-1%7D&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;x^{1-1}&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;&amp;nbsp;=&amp;nbsp;&lt;img class=&quot;latex&quot; title=&quot;x^{1} x^{-1}&quot; src=&quot;http://s.wordpress.com/latex.php?latex=x%5E%7B1%7D%20x%5E%7B-1%7D&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;x^{1} x^{-1}&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;&amp;nbsp;=&amp;nbsp;&lt;img class=&quot;latex&quot; title=&quot;\frac{x}{x}&quot; src=&quot;http://s.wordpress.com/latex.php?latex=%5Cfrac%7Bx%7D%7Bx%7D&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;\frac{x}{x}&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;&amp;nbsp;=&amp;nbsp;&lt;img class=&quot;latex&quot; title=&quot;1&quot; src=&quot;http://s.wordpress.com/latex.php?latex=1&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;1&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;.  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;&amp;nbsp;&lt;/p&gt;  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;Now we just plug in x=0, and we see that zero to the zero is one!&lt;/p&gt;  &lt;hr style=&quot;background-color: #e7e7e7; clear: both; height: 1px; margin-bottom: 24px;&quot; /&gt;  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;&lt;strong style=&quot;background-color: transparent; vertical-align: baseline; font-weight: bold; padding: 0px; margin: 0px;&quot;&gt;Cleverer student:&lt;/strong&gt;&lt;/p&gt;  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;&amp;nbsp;&lt;/p&gt;  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;No, you&amp;rsquo;re wrong! You&amp;rsquo;re not allowed to divide by zero, which you did in the last step. This is how to do it:&lt;/p&gt;  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;&lt;img class=&quot;latex&quot; title=&quot;0^{x}&quot; src=&quot;http://s.wordpress.com/latex.php?latex=0%5E%7Bx%7D&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;0^{x}&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;&amp;nbsp;=&amp;nbsp;&lt;img class=&quot;latex&quot; title=&quot;0^{1+x-1}&quot; src=&quot;http://s.wordpress.com/latex.php?latex=0%5E%7B1%2Bx-1%7D&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;0^{1+x-1}&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;&amp;nbsp;=&amp;nbsp;&lt;img class=&quot;latex&quot; title=&quot;0^{1} \times 0^{x-1}&quot; src=&quot;http://s.wordpress.com/latex.php?latex=0%5E%7B1%7D%20%5Ctimes%200%5E%7Bx-1%7D&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;0^{1} \times 0^{x-1}&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;&amp;nbsp;=&amp;nbsp;&lt;img class=&quot;latex&quot; title=&quot;0 \times 0^{x-1}&quot; src=&quot;http://s.wordpress.com/latex.php?latex=0%20%5Ctimes%200%5E%7Bx-1%7D&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;0 \times 0^{x-1}&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;=&amp;nbsp;&lt;img class=&quot;latex&quot; title=&quot;0&quot; src=&quot;http://s.wordpress.com/latex.php?latex=0&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;0&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;&lt;/p&gt;  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;which is true since anything times 0 is 0. That means that&lt;/p&gt;  &lt;img class=&quot;latex&quot; title=&quot;0^{0}&quot; src=&quot;http://s.wordpress.com/latex.php?latex=0%5E%7B0%7D&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;0^{0}&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;&amp;nbsp;=&amp;nbsp;&lt;img class=&quot;latex&quot; title=&quot;0&quot; src=&quot;http://s.wordpress.com/latex.php?latex=0&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;0&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;.  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;&amp;nbsp;&lt;/p&gt;  &lt;hr style=&quot;background-color: #e7e7e7; clear: both; height: 1px; margin-bottom: 24px;&quot; /&gt;  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;&lt;strong style=&quot;background-color: transparent; vertical-align: baseline; font-weight: bold; padding: 0px; margin: 0px;&quot;&gt;Cleverest student :&lt;/strong&gt;&lt;/p&gt;  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;&amp;nbsp;&lt;/p&gt;  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;That doesn&amp;rsquo;t work either, because if&amp;nbsp;&lt;img class=&quot;latex&quot; title=&quot;x=0&quot; src=&quot;http://s.wordpress.com/latex.php?latex=x%3D0&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;x=0&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;&amp;nbsp;then&lt;/p&gt;  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;&lt;img class=&quot;latex&quot; title=&quot;0^{x-1}&quot; src=&quot;http://s.wordpress.com/latex.php?latex=0%5E%7Bx-1%7D&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;0^{x-1}&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;&amp;nbsp;is&amp;nbsp;&lt;img class=&quot;latex&quot; title=&quot;0^{-1} = \frac{1}{0}&quot; src=&quot;http://s.wordpress.com/latex.php?latex=0%5E%7B-1%7D%20%3D%20%5Cfrac%7B1%7D%7B0%7D&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;0^{-1} = \frac{1}{0}&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;&lt;/p&gt;  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;so your third step also involves dividing by zero which isn&amp;rsquo;t allowed! Instead, we can think about the function&amp;nbsp;&lt;img class=&quot;latex&quot; title=&quot;x^{x}&quot; src=&quot;http://s.wordpress.com/latex.php?latex=x%5E%7Bx%7D&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;x^{x}&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;&amp;nbsp;and see what happens as x&amp;gt;0 gets small. We have:&lt;/p&gt;  &lt;img class=&quot;latex&quot; title=&quot;\lim_{x \to 0^{+}} x^{x} &quot; src=&quot;http://s.wordpress.com/latex.php?latex=%5Clim_%7Bx%20%5Cto%200%5E%7B%2B%7D%7D%20x%5E%7Bx%7D%20&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;\lim_{x \to 0^{+}} x^{x} &quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;&amp;nbsp;=&amp;nbsp;&lt;img class=&quot;latex&quot; title=&quot;\lim_{x \to 0^{+}} \exp(\log(x^{x})) &quot; src=&quot;http://s.wordpress.com/latex.php?latex=%5Clim_%7Bx%20%5Cto%200%5E%7B%2B%7D%7D%20%5Cexp%28%5Clog%28x%5E%7Bx%7D%29%29%20&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;\lim_{x \to 0^{+}} \exp(\log(x^{x})) &quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;=&amp;nbsp;&lt;img class=&quot;latex&quot; title=&quot;\lim_{x \to 0^{+}} \exp(x \log(x)) &quot; src=&quot;http://s.wordpress.com/latex.php?latex=%5Clim_%7Bx%20%5Cto%200%5E%7B%2B%7D%7D%20%5Cexp%28x%20%5Clog%28x%29%29%20&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;\lim_{x \to 0^{+}} \exp(x \log(x)) &quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;&lt;/p&gt;  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;=&amp;nbsp;&lt;img class=&quot;latex&quot; title=&quot;\exp( \lim_{x \to 0^{+} } x \log(x) ) &quot; src=&quot;http://s.wordpress.com/latex.php?latex=%5Cexp%28%20%5Clim_%7Bx%20%5Cto%200%5E%7B%2B%7D%20%7D%20x%20%5Clog%28x%29%20%29%20&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;\exp( \lim_{x \to 0^{+} } x \log(x) ) &quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;&lt;/p&gt;  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;=&amp;nbsp;&lt;img class=&quot;latex&quot; title=&quot;\exp( \lim_{x \to 0^{+} } \frac{\log(x)}{ x^{-1} } ) &quot; src=&quot;http://s.wordpress.com/latex.php?latex=%5Cexp%28%20%5Clim_%7Bx%20%5Cto%200%5E%7B%2B%7D%20%7D%20%5Cfrac%7B%5Clog%28x%29%7D%7B%20x%5E%7B-1%7D%20%7D%20%29%20&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;\exp( \lim_{x \to 0^{+} } \frac{\log(x)}{ x^{-1} } ) &quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;&lt;/p&gt;  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;=&amp;nbsp;&lt;img class=&quot;latex&quot; title=&quot;\exp( \lim_{x \to 0^{+} } \frac{ \frac{d}{dx} \log(x) }{ \frac{d}{dx} x^{-1} } ) &quot; src=&quot;http://s.wordpress.com/latex.php?latex=%5Cexp%28%20%5Clim_%7Bx%20%5Cto%200%5E%7B%2B%7D%20%7D%20%5Cfrac%7B%20%5Cfrac%7Bd%7D%7Bdx%7D%20%5Clog%28x%29%20%7D%7B%20%5Cfrac%7Bd%7D%7Bdx%7D%20x%5E%7B-1%7D%20%7D%20%29%20&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;\exp( \lim_{x \to 0^{+} } \frac{ \frac{d}{dx} \log(x) }{ \frac{d}{dx} x^{-1} } ) &quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;&lt;/p&gt;  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;=&amp;nbsp;&lt;img class=&quot;latex&quot; title=&quot;\exp( \lim_{x \to 0^{+} } \frac{x^{-1}}{- x^{-2}} ) &quot; src=&quot;http://s.wordpress.com/latex.php?latex=%5Cexp%28%20%5Clim_%7Bx%20%5Cto%200%5E%7B%2B%7D%20%7D%20%5Cfrac%7Bx%5E%7B-1%7D%7D%7B-%20x%5E%7B-2%7D%7D%20%29%20&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;\exp( \lim_{x \to 0^{+} } \frac{x^{-1}}{- x^{-2}} ) &quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;&lt;/p&gt;  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;=&amp;nbsp;&lt;img class=&quot;latex&quot; title=&quot;\exp( \lim_{x \to 0^{+} } -x ) &quot; src=&quot;http://s.wordpress.com/latex.php?latex=%5Cexp%28%20%5Clim_%7Bx%20%5Cto%200%5E%7B%2B%7D%20%7D%20-x%20%29%20&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;\exp( \lim_{x \to 0^{+} } -x ) &quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;&lt;/p&gt;  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;=&amp;nbsp;&lt;img class=&quot;latex&quot; title=&quot;\exp( 0) &quot; src=&quot;http://s.wordpress.com/latex.php?latex=%5Cexp%28%200%29%20&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;\exp( 0) &quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;&lt;/p&gt;  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;=&amp;nbsp;&lt;img class=&quot;latex&quot; title=&quot;1&quot; src=&quot;http://s.wordpress.com/latex.php?latex=1&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;1&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;&lt;/p&gt;  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;So, since &amp;nbsp;&lt;img class=&quot;latex&quot; title=&quot;\lim_{x \to 0^{+}} x^{x} &quot; src=&quot;http://s.wordpress.com/latex.php?latex=%5Clim_%7Bx%20%5Cto%200%5E%7B%2B%7D%7D%20x%5E%7Bx%7D%20&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;\lim_{x \to 0^{+}} x^{x} &quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;&amp;nbsp;= 1, that means that&amp;nbsp;&lt;img class=&quot;latex&quot; title=&quot;0^{0}&quot; src=&quot;http://s.wordpress.com/latex.php?latex=0%5E%7B0%7D&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;0^{0}&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;&amp;nbsp;= 1.&lt;/p&gt;  &lt;hr style=&quot;background-color: #e7e7e7; clear: both; height: 1px; margin-bottom: 24px;&quot; /&gt;  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;&lt;strong style=&quot;background-color: transparent; vertical-align: baseline; font-weight: bold; padding: 0px; margin: 0px;&quot;&gt;High School Teacher:&lt;/strong&gt;&lt;/p&gt;  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;&amp;nbsp;&lt;/p&gt;  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;Showing that&amp;nbsp;&lt;img class=&quot;latex&quot; title=&quot;x^{x}&quot; src=&quot;http://s.wordpress.com/latex.php?latex=x%5E%7Bx%7D&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;x^{x}&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;&amp;nbsp;approaches 1 as the positive value x gets arbitrarily close to zero does not prove that&amp;nbsp;&lt;img class=&quot;latex&quot; title=&quot;0^{0} = 1&quot; src=&quot;http://s.wordpress.com/latex.php?latex=0%5E%7B0%7D%20%3D%201&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;0^{0} = 1&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;. The variable x having a value close to zero is different than it having a value of exactly zero.&amp;nbsp;It turns out that&amp;nbsp;&lt;img class=&quot;latex&quot; title=&quot;0^{0}&quot; src=&quot;http://s.wordpress.com/latex.php?latex=0%5E%7B0%7D&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;0^{0}&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;&amp;nbsp;is undefined.&amp;nbsp;&lt;img class=&quot;latex&quot; title=&quot;0^{0}&quot; src=&quot;http://s.wordpress.com/latex.php?latex=0%5E%7B0%7D&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;0^{0}&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;&amp;nbsp;does not have a value.&lt;/p&gt;  &lt;hr style=&quot;background-color: #e7e7e7; clear: both; height: 1px; margin-bottom: 24px;&quot; /&gt;  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;&lt;strong style=&quot;background-color: transparent; vertical-align: baseline; font-weight: bold; padding: 0px; margin: 0px;&quot;&gt;Calculus Teacher:&lt;/strong&gt;&lt;/p&gt;  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;&amp;nbsp;&lt;/p&gt;  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;For all&amp;nbsp;&lt;img class=&quot;latex&quot; title=&quot;x&amp;gt;0&quot; src=&quot;http://s.wordpress.com/latex.php?latex=x%3E0&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;x&amp;gt;0&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;, we have&lt;/p&gt;  &lt;img class=&quot;latex&quot; title=&quot;0^{x} = 0&quot; src=&quot;http://s.wordpress.com/latex.php?latex=0%5E%7Bx%7D%20%3D%200&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;0^{x} = 0&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;.  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;&amp;nbsp;&lt;/p&gt;  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;Hence,&lt;/p&gt;  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;&lt;img class=&quot;latex&quot; title=&quot;\lim_{x \to 0^{+}} 0^{x} = 0&quot; src=&quot;http://s.wordpress.com/latex.php?latex=%5Clim_%7Bx%20%5Cto%200%5E%7B%2B%7D%7D%200%5E%7Bx%7D%20%3D%200&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;\lim_{x \to 0^{+}} 0^{x} = 0&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;&lt;/p&gt;  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;That is, as x gets arbitrarily close to&amp;nbsp;&lt;img class=&quot;latex&quot; title=&quot;0&quot; src=&quot;http://s.wordpress.com/latex.php?latex=0&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;0&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;&amp;nbsp;(but remains positive),&amp;nbsp;&lt;img class=&quot;latex&quot; title=&quot;0^{x}&quot; src=&quot;http://s.wordpress.com/latex.php?latex=0%5E%7Bx%7D&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;0^{x}&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;&amp;nbsp;stays at&amp;nbsp;&lt;img class=&quot;latex&quot; title=&quot;0&quot; src=&quot;http://s.wordpress.com/latex.php?latex=0&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;0&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;.&lt;/p&gt;  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;On the other hand, for real numbers y such that&amp;nbsp;&lt;img class=&quot;latex&quot; title=&quot;y \ne 0&quot; src=&quot;http://s.wordpress.com/latex.php?latex=y%20%5Cne%200&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;y \ne 0&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;, we have that&lt;/p&gt;  &lt;img class=&quot;latex&quot; title=&quot;y^{0} = 1&quot; src=&quot;http://s.wordpress.com/latex.php?latex=y%5E%7B0%7D%20%3D%201&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;y^{0} = 1&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;.  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;&amp;nbsp;&lt;/p&gt;  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;Hence,&lt;/p&gt;  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;&lt;img class=&quot;latex&quot; title=&quot;\lim_{y \to 0} y^{0} = 1&quot; src=&quot;http://s.wordpress.com/latex.php?latex=%5Clim_%7By%20%5Cto%200%7D%20y%5E%7B0%7D%20%3D%201&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;\lim_{y \to 0} y^{0} = 1&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;&lt;/p&gt;  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;That is, as y gets arbitrarily close to&amp;nbsp;&lt;img class=&quot;latex&quot; title=&quot;0&quot; src=&quot;http://s.wordpress.com/latex.php?latex=0&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;0&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;,&amp;nbsp;&lt;img class=&quot;latex&quot; title=&quot;y^{0}&quot; src=&quot;http://s.wordpress.com/latex.php?latex=y%5E%7B0%7D&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;y^{0}&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;&amp;nbsp;stays at&amp;nbsp;&lt;img class=&quot;latex&quot; title=&quot;1&quot; src=&quot;http://s.wordpress.com/latex.php?latex=1&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;1&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;.&lt;/p&gt;  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;Therefore, we see that the function&amp;nbsp;&lt;img class=&quot;latex&quot; title=&quot;f(x,y) = y^{x}&quot; src=&quot;http://s.wordpress.com/latex.php?latex=f%28x%2Cy%29%20%3D%20y%5E%7Bx%7D&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;f(x,y) = y^{x}&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;&amp;nbsp;has a discontinuity at the point&amp;nbsp;&lt;img class=&quot;latex&quot; title=&quot;(x,y) = (0,0)&quot; src=&quot;http://s.wordpress.com/latex.php?latex=%28x%2Cy%29%20%3D%20%280%2C0%29&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;(x,y) = (0,0)&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;. In particular, when we approach (0,0) along the line with x=0&amp;nbsp;we get&lt;/p&gt;  &lt;img class=&quot;latex&quot; title=&quot;\lim_{y \to 0} f(0,y) = 1&quot; src=&quot;http://s.wordpress.com/latex.php?latex=%5Clim_%7By%20%5Cto%200%7D%20f%280%2Cy%29%20%3D%201&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;\lim_{y \to 0} f(0,y) = 1&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;but when we approach (0,0) along the line segment with y=0 and x&amp;gt;0 we get&lt;/p&gt;  &lt;img class=&quot;latex&quot; title=&quot;\lim_{x \to 0^{+}} f(x,0) = 0&quot; src=&quot;http://s.wordpress.com/latex.php?latex=%5Clim_%7Bx%20%5Cto%200%5E%7B%2B%7D%7D%20f%28x%2C0%29%20%3D%200&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;\lim_{x \to 0^{+}} f(x,0) = 0&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;.  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;&amp;nbsp;&lt;/p&gt;  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;Therefore, the value of&amp;nbsp;&lt;img class=&quot;latex&quot; title=&quot;\lim_{(x,y) \to (0,0)} y^{x} &quot; src=&quot;http://s.wordpress.com/latex.php?latex=%5Clim_%7B%28x%2Cy%29%20%5Cto%20%280%2C0%29%7D%20y%5E%7Bx%7D%20&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;\lim_{(x,y) \to (0,0)} y^{x} &quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;&amp;nbsp;is going to depend on the direction that we take the limit. This means that there is no way to define&amp;nbsp;&lt;img class=&quot;latex&quot; title=&quot;0^{0}&quot; src=&quot;http://s.wordpress.com/latex.php?latex=0%5E%7B0%7D&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;0^{0}&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;&amp;nbsp;that will make the function&amp;nbsp;&lt;img class=&quot;latex&quot; title=&quot;y^{x}&quot; src=&quot;http://s.wordpress.com/latex.php?latex=y%5E%7Bx%7D&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;y^{x}&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;continuous at the point&amp;nbsp;&lt;img class=&quot;latex&quot; title=&quot;(x,y) = (0,0)&quot; src=&quot;http://s.wordpress.com/latex.php?latex=%28x%2Cy%29%20%3D%20%280%2C0%29&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;(x,y) = (0,0)&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;.&lt;/p&gt;  &lt;hr style=&quot;background-color: #e7e7e7; clear: both; height: 1px; margin-bottom: 24px;&quot; /&gt;  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;&lt;strong style=&quot;background-color: transparent; vertical-align: baseline; font-weight: bold; padding: 0px; margin: 0px;&quot;&gt;Mathematician:&amp;nbsp;&lt;/strong&gt;Zero raised to the zero power is one. Why? Because mathematicians said so. No really, it&amp;rsquo;s true.&lt;/p&gt;  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;&amp;nbsp;&lt;/p&gt;  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;Let&amp;rsquo;s consider the problem of defining the function&amp;nbsp;&lt;img class=&quot;latex&quot; title=&quot;f(x,y) = y^x&quot; src=&quot;http://s.wordpress.com/latex.php?latex=f%28x%2Cy%29%20%3D%20y%5Ex&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;f(x,y) = y^x&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;&amp;nbsp;for positive integers y and x. There are a number of definitions that all give identical results.&amp;nbsp;For example, one idea is to use for our definition:&lt;/p&gt;  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;&lt;img class=&quot;latex&quot; title=&quot;y^x&quot; src=&quot;http://s.wordpress.com/latex.php?latex=y%5Ex&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;y^x&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;&amp;nbsp;:=&amp;nbsp;&lt;img class=&quot;latex&quot; title=&quot;1 \times y \times y \cdots \times y&quot; src=&quot;http://s.wordpress.com/latex.php?latex=1%20%5Ctimes%20y%20%5Ctimes%20y%20%5Ccdots%20%5Ctimes%20y&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;1 \times y \times y \cdots \times y&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;&lt;/p&gt;  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;where the y is repeated x times. In that case, when x is one, the y is repeated just one time, so we get&lt;/p&gt;  &lt;img class=&quot;latex&quot; title=&quot;y^{x}&quot; src=&quot;http://s.wordpress.com/latex.php?latex=y%5E%7Bx%7D&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;y^{x}&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;&amp;nbsp;=&amp;nbsp;&lt;img class=&quot;latex&quot; title=&quot;1 \times y&quot; src=&quot;http://s.wordpress.com/latex.php?latex=1%20%5Ctimes%20y&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;1 \times y&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;.  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;&amp;nbsp;&lt;/p&gt;  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;However, this definition extends quite naturally from the positive integers to the non-negative integers, so that when x is zero, y is repeated zero times, giving&lt;/p&gt;  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;&lt;img class=&quot;latex&quot; title=&quot;y^{0}&quot; src=&quot;http://s.wordpress.com/latex.php?latex=y%5E%7B0%7D&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;y^{0}&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;&amp;nbsp;=&amp;nbsp;&lt;img class=&quot;latex&quot; title=&quot;1&quot; src=&quot;http://s.wordpress.com/latex.php?latex=1&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;1&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;&lt;/p&gt;  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;which holds for any y. Hence, when y is zero, we have&lt;/p&gt;  &lt;img class=&quot;latex&quot; title=&quot;0^0 = 1&quot; src=&quot;http://s.wordpress.com/latex.php?latex=0%5E0%20%3D%201&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;0^0 = 1&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;.  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;&amp;nbsp;&lt;/p&gt;  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;Look, we&amp;rsquo;ve just proved that&amp;nbsp;&lt;img class=&quot;latex&quot; title=&quot;0^0 = 1&quot; src=&quot;http://s.wordpress.com/latex.php?latex=0%5E0%20%3D%201&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;0^0 = 1&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;! But this is only for one possible definition of&amp;nbsp;&lt;img class=&quot;latex&quot; title=&quot;y^x&quot; src=&quot;http://s.wordpress.com/latex.php?latex=y%5Ex&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;y^x&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;. What if we used another definition? For example, suppose that we decide to define&amp;nbsp;&lt;img class=&quot;latex&quot; title=&quot;y^x&quot; src=&quot;http://s.wordpress.com/latex.php?latex=y%5Ex&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;y^x&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;&amp;nbsp;as&lt;/p&gt;  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;&lt;img class=&quot;latex&quot; title=&quot;y^x&quot; src=&quot;http://s.wordpress.com/latex.php?latex=y%5Ex&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;y^x&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;&amp;nbsp;:=&amp;nbsp;&lt;img class=&quot;latex&quot; title=&quot;\lim_{z \to x^{+}} y^{z}&quot; src=&quot;http://s.wordpress.com/latex.php?latex=%5Clim_%7Bz%20%5Cto%20x%5E%7B%2B%7D%7D%20y%5E%7Bz%7D&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;\lim_{z \to x^{+}} y^{z}&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;.&lt;/p&gt;  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;In words, that means that the value of&amp;nbsp;&lt;img class=&quot;latex&quot; title=&quot;y^x&quot; src=&quot;http://s.wordpress.com/latex.php?latex=y%5Ex&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;y^x&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;&amp;nbsp;is whatever&amp;nbsp;&lt;img class=&quot;latex&quot; title=&quot;y^z&quot; src=&quot;http://s.wordpress.com/latex.php?latex=y%5Ez&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;y^z&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;&amp;nbsp;approaches as the real number z gets smaller and smaller approaching the value x arbitrarily closely.&lt;/p&gt;  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;&lt;em style=&quot;background-color: transparent; vertical-align: baseline; font-style: italic; padding: 0px; margin: 0px;&quot;&gt;&lt;span style=&quot;background-color: transparent; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px;&quot;&gt;[Clarification:&amp;nbsp;&lt;/span&gt;&lt;/em&gt;&lt;span style=&quot;background-color: transparent; vertical-align: baseline; color: #000000; padding: 0px; margin: 0px;&quot;&gt;a reader asked how it is possible that we can use&amp;nbsp;&lt;img class=&quot;latex&quot; title=&quot;y^z&quot; src=&quot;http://s.wordpress.com/latex.php?latex=y%5Ez&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;y^z&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;&amp;nbsp;in our definition of&amp;nbsp;&lt;img class=&quot;latex&quot; title=&quot;y^x&quot; src=&quot;http://s.wordpress.com/latex.php?latex=y%5Ex&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;y^x&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;, which seems to be recursive. The reason it is okay is because we are working here only with&amp;nbsp;&lt;img class=&quot;latex&quot; title=&quot;z&amp;gt;0&quot; src=&quot;http://s.wordpress.com/latex.php?latex=z%3E0&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;z&amp;gt;0&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;, and everyone agrees about what&amp;nbsp;&lt;img class=&quot;latex&quot; title=&quot;y^z&quot; src=&quot;http://s.wordpress.com/latex.php?latex=y%5Ez&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;y^z&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;&amp;nbsp;equals in this case. Essentially, we are using the known cases to construct a function that has a value for the more difficult x=0 and y=0 case.]&lt;/span&gt;&lt;/p&gt;  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;Interestingly, using this definition, we would have&lt;/p&gt;  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;&lt;img class=&quot;latex&quot; title=&quot;0^0&quot; src=&quot;http://s.wordpress.com/latex.php?latex=0%5E0&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;0^0&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;&amp;nbsp;=&amp;nbsp;&lt;img class=&quot;latex&quot; title=&quot;\lim_{x \to 0^{+}} 0^{x}&quot; src=&quot;http://s.wordpress.com/latex.php?latex=%5Clim_%7Bx%20%5Cto%200%5E%7B%2B%7D%7D%200%5E%7Bx%7D&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;\lim_{x \to 0^{+}} 0^{x}&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;&amp;nbsp;=&amp;nbsp;&lt;img class=&quot;latex&quot; title=&quot;\lim_{x \to 0^{+}} 0&quot; src=&quot;http://s.wordpress.com/latex.php?latex=%5Clim_%7Bx%20%5Cto%200%5E%7B%2B%7D%7D%200&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;\lim_{x \to 0^{+}} 0&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;&amp;nbsp;=&amp;nbsp;&lt;img class=&quot;latex&quot; title=&quot;0&quot; src=&quot;http://s.wordpress.com/latex.php?latex=0&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;0&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;&lt;/p&gt;  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;Hence, we would find that&amp;nbsp;&lt;img class=&quot;latex&quot; title=&quot;0^0 = 0&quot; src=&quot;http://s.wordpress.com/latex.php?latex=0%5E0%20%3D%200&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;0^0 = 0&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;&amp;nbsp;rather than&amp;nbsp;&lt;img class=&quot;latex&quot; title=&quot;0^0 = 1&quot; src=&quot;http://s.wordpress.com/latex.php?latex=0%5E0%20%3D%201&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;0^0 = 1&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;. Granted, this definition we&#39;ve just used feels rather unnatural, but it does agree with the common sense notion of what&amp;nbsp;&lt;img class=&quot;latex&quot; title=&quot;y^x&quot; src=&quot;http://s.wordpress.com/latex.php?latex=y%5Ex&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;y^x&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;means for all positive real numbers x and y, and it does preserve continuity of the function as we approach x=0 and y=0 along a certain line.&lt;/p&gt;  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;So which of these two definitions (if either of them) is right? What is&amp;nbsp;&lt;img class=&quot;latex&quot; title=&quot;0^0&quot; src=&quot;http://s.wordpress.com/latex.php?latex=0%5E0&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;0^0&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;&amp;nbsp;&lt;em style=&quot;background-color: transparent; vertical-align: baseline; font-style: italic; padding: 0px; margin: 0px;&quot;&gt;really&lt;/em&gt;? Well, for x&amp;gt;0 and y&amp;gt;0 we know what we mean by&amp;nbsp;&lt;img class=&quot;latex&quot; title=&quot;y^x&quot; src=&quot;http://s.wordpress.com/latex.php?latex=y%5Ex&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;y^x&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;. But when x=0 and y=0, the formula doesn&#39;t have an obvious meaning. The value of&amp;nbsp;&lt;img class=&quot;latex&quot; title=&quot;y^x&quot; src=&quot;http://s.wordpress.com/latex.php?latex=y%5Ex&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;y^x&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;&amp;nbsp;is going to depend on our preferred choice of definition for what we mean by that statement, and our intuition about what&amp;nbsp;&lt;img class=&quot;latex&quot; title=&quot;y^x&quot; src=&quot;http://s.wordpress.com/latex.php?latex=y%5Ex&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;y^x&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;&amp;nbsp;means for positive values is not enough to conclude what it means for zero values.&lt;/p&gt;  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;But if this is the case, then how can mathematicians claim that&amp;nbsp;&lt;img class=&quot;latex&quot; title=&quot;0^0=1&quot; src=&quot;http://s.wordpress.com/latex.php?latex=0%5E0%3D1&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;0^0=1&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;? Well, merely because it is useful to do so. Some very important formulas become less elegant to write down if we instead use&amp;nbsp;&lt;img class=&quot;latex&quot; title=&quot;0^0=0&quot; src=&quot;http://s.wordpress.com/latex.php?latex=0%5E0%3D0&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;0^0=0&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;&amp;nbsp;or if we say that&amp;nbsp;&lt;img class=&quot;latex&quot; title=&quot;0^0&quot; src=&quot;http://s.wordpress.com/latex.php?latex=0%5E0&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;0^0&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;&amp;nbsp;is undefined. For example, consider the&lt;a href=&quot;http://en.wikipedia.org/wiki/Binomial_theorem&quot; style=&quot;background-color: transparent; vertical-align: baseline; color: #0066cc; padding: 0px; margin: 0px;&quot;&gt;binomial theorem&lt;/a&gt;, which says that:&lt;/p&gt;  &lt;img class=&quot;latex&quot; title=&quot;(a+b)^x&quot; src=&quot;http://s.wordpress.com/latex.php?latex=%28a%2Bb%29%5Ex&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;(a+b)^x&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;&amp;nbsp;=&amp;nbsp;&lt;img class=&quot;latex&quot; title=&quot;\sum_{k=0}^{\infty} \binom{x}{k} a^k b^{x-k} &quot; src=&quot;http://s.wordpress.com/latex.php?latex=%5Csum_%7Bk%3D0%7D%5E%7B%5Cinfty%7D%20%5Cbinom%7Bx%7D%7Bk%7D%20a%5Ek%20b%5E%7Bx-k%7D%20&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;\sum_{k=0}^{\infty} \binom{x}{k} a^k b^{x-k} &quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;&amp;nbsp;&lt;/p&gt;  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;where&amp;nbsp;&lt;img class=&quot;latex&quot; title=&quot;\binom{x}{k}&quot; src=&quot;http://s.wordpress.com/latex.php?latex=%5Cbinom%7Bx%7D%7Bk%7D&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;\binom{x}{k}&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;&amp;nbsp;means the binomial coefficients.&lt;/p&gt;  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;Now, setting a=0 on both sides and assuming&amp;nbsp;&lt;img class=&quot;latex&quot; title=&quot;b \ne 0&quot; src=&quot;http://s.wordpress.com/latex.php?latex=b%20%5Cne%200&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;b \ne 0&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;&amp;nbsp;we get&lt;/p&gt;  &lt;img class=&quot;latex&quot; title=&quot;b^x&quot; src=&quot;http://s.wordpress.com/latex.php?latex=b%5Ex&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;b^x&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;=&amp;nbsp;&lt;img class=&quot;latex&quot; title=&quot;(0+b)^x&quot; src=&quot;http://s.wordpress.com/latex.php?latex=%280%2Bb%29%5Ex&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;(0+b)^x&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;&amp;nbsp;=&amp;nbsp;&lt;img class=&quot;latex&quot; title=&quot;\sum_{k=0}^{\infty} \binom{x}{k} 0^k b^{x-k}&quot; src=&quot;http://s.wordpress.com/latex.php?latex=%5Csum_%7Bk%3D0%7D%5E%7B%5Cinfty%7D%20%5Cbinom%7Bx%7D%7Bk%7D%200%5Ek%20b%5E%7Bx-k%7D&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;\sum_{k=0}^{\infty} \binom{x}{k} 0^k b^{x-k}&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;&lt;/p&gt;  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;=&amp;nbsp;&lt;img class=&quot;latex&quot; title=&quot;\binom{x}{0} 0^0 b^{x} + \binom{x}{1} 0^1 b^{x-1} + \binom{x}{2} 0^2 b^{x-2} + \hdots&quot; src=&quot;http://s.wordpress.com/latex.php?latex=%5Cbinom%7Bx%7D%7B0%7D%200%5E0%20b%5E%7Bx%7D%20%2B%20%5Cbinom%7Bx%7D%7B1%7D%200%5E1%20b%5E%7Bx-1%7D%20%2B%20%5Cbinom%7Bx%7D%7B2%7D%200%5E2%20b%5E%7Bx-2%7D%20%2B%20%5Chdots&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;\binom{x}{0} 0^0 b^{x} + \binom{x}{1} 0^1 b^{x-1} + \binom{x}{2} 0^2 b^{x-2} + \hdots&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;&lt;/p&gt;  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;=&amp;nbsp;&lt;img class=&quot;latex&quot; title=&quot;\binom{x}{0} 0^0 b^{x}&quot; src=&quot;http://s.wordpress.com/latex.php?latex=%5Cbinom%7Bx%7D%7B0%7D%200%5E0%20b%5E%7Bx%7D&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;\binom{x}{0} 0^0 b^{x}&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;&lt;/p&gt;  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;=&amp;nbsp;&lt;img class=&quot;latex&quot; title=&quot;0^0 b^{x}&quot; src=&quot;http://s.wordpress.com/latex.php?latex=0%5E0%20b%5E%7Bx%7D&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;0^0 b^{x}&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;&lt;/p&gt;  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;where, I&#39;ve used that&amp;nbsp;&lt;img class=&quot;latex&quot; title=&quot;0^k = 0&quot; src=&quot;http://s.wordpress.com/latex.php?latex=0%5Ek%20%3D%200&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;0^k = 0&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;&amp;nbsp;for k&amp;gt;0, and that &amp;nbsp;&lt;img class=&quot;latex&quot; title=&quot;\binom{x}{0} = 1&quot; src=&quot;http://s.wordpress.com/latex.php?latex=%5Cbinom%7Bx%7D%7B0%7D%20%3D%201&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;\binom{x}{0} = 1&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;.&amp;nbsp;Now, it so happens that the right hand side has the magical factor&amp;nbsp;&lt;img class=&quot;latex&quot; title=&quot;0^0&quot; src=&quot;http://s.wordpress.com/latex.php?latex=0%5E0&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;0^0&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;. Hence, if we do not use&amp;nbsp;&lt;img class=&quot;latex&quot; title=&quot;0^0 = 1&quot; src=&quot;http://s.wordpress.com/latex.php?latex=0%5E0%20%3D%201&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;0^0 = 1&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;&amp;nbsp;then the binomial theorem (as written)&amp;nbsp;does not hold when a=0 because then&amp;nbsp;&lt;img class=&quot;latex&quot; title=&quot;b^x&quot; src=&quot;http://s.wordpress.com/latex.php?latex=b%5Ex&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;b^x&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;&amp;nbsp;does not equal&amp;nbsp;&lt;img class=&quot;latex&quot; title=&quot;0^0 b^{x}&quot; src=&quot;http://s.wordpress.com/latex.php?latex=0%5E0%20b%5E%7Bx%7D&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;0^0 b^{x}&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;.&lt;/p&gt;  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;If mathematicians were to use&amp;nbsp;&lt;img class=&quot;latex&quot; title=&quot;0^0 = 0&quot; src=&quot;http://s.wordpress.com/latex.php?latex=0%5E0%20%3D%200&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;0^0 = 0&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;, or to say that&amp;nbsp;&lt;img class=&quot;latex&quot; title=&quot;0^0&quot; src=&quot;http://s.wordpress.com/latex.php?latex=0%5E0&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;0^0&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;&amp;nbsp;is undefined,&amp;nbsp;then the binomial theorem would continue to hold (in some form), though not as written above. In that case though the theorem would be more complicated because it would have to handle the special case of the term corresponding to k=0. We gain elegance and simplicity by using&amp;nbsp;&lt;img class=&quot;latex&quot; title=&quot;0^0 = 1&quot; src=&quot;http://s.wordpress.com/latex.php?latex=0%5E0%20%3D%201&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;0^0 = 1&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;.&lt;/p&gt;  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;There are some further reasons why using&amp;nbsp;&lt;img class=&quot;latex&quot; title=&quot;0^0 = 1&quot; src=&quot;http://s.wordpress.com/latex.php?latex=0%5E0%20%3D%201&amp;amp;bg=ffffff&amp;amp;fg=000000&amp;amp;s=0&quot; alt=&quot;0^0 = 1&quot; style=&quot;background-color: transparent; vertical-align: middle; padding: 0px; margin: 0px;&quot; /&gt;&amp;nbsp;is preferable, but they boil down to that choice being more useful than the alternative choices, leading to simpler theorems, or feeling more &quot;natural&quot; to mathematicians. The choice is not &quot;right&quot;, it is merely nice.&lt;/p&gt;  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;&amp;nbsp;&lt;/p&gt;  &lt;p style=&quot;background-color: transparent; margin-top: 0px; margin-right: 0px; margin-bottom: 24px; margin-left: 0px; vertical-align: baseline; padding: 0px;&quot;&gt;&lt;a href=&quot;http://www.askamathematician.com/?p=4524&quot; title=&quot;Source&quot; target=&quot;_blank&quot;&gt;Source&lt;/a&gt;&lt;/p&gt;  &lt;/span&gt;&lt;/p&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://b-giar.blogspot.com/feeds/1694018631012769580/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://b-giar.blogspot.com/2011/07/00-zero-raised-to-zeroth-power-equal.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8953490625351031216/posts/default/1694018631012769580'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8953490625351031216/posts/default/1694018631012769580'/><link rel='alternate' type='text/html' href='http://b-giar.blogspot.com/2011/07/00-zero-raised-to-zeroth-power-equal.html' title='0^0 = ? ( Zero raised to the zeroth power ) equal? dilemma'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/01359356128419832182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8953490625351031216.post-1243535981878616066</id><published>2011-02-01T15:21:00.002+02:00</published><updated>2011-09-11T15:07:28.602+03:00</updated><title type='text'>Free Programming Books</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;style&gt;
   a { color:#206ba4; color:#206ba4; color:#206ba4;  }  
&lt;/style&gt; &lt;br /&gt;
&lt;table bgcolor=&quot;#ffffff&quot; cellpadding=&quot;10&quot; cellspacing=&quot;0&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td align=&quot;center&quot; valign=&quot;top&quot;&gt;&lt;table border=&quot;0&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;width: 740px;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;      &lt;td valign=&quot;top&quot; width=&quot;220&quot;&gt;&lt;table border=&quot;0&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;          &lt;td valign=&quot;top&quot;&gt;&lt;a href=&quot;http://www.stumbleupon.com/to/e/850917142:lxgncv7cqqyx4r25/share-2/t/http%253A%252F%252Fwww.stumbleupon.com%252Fto%252Fs%252F9D8apW&quot; style=&quot;border: 0px solid rgb(204,204,204); margin: 0px; padding: 0px;&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://cdn.stumble-upon.com/bthumb/316/32454316.jpg&quot; style=&quot;border: 2px solid #006BC4;&quot; width=&quot;200px&quot; /&gt;&lt;/a&gt;          &lt;/td&gt;         &lt;/tr&gt;
&lt;tr&gt;         &lt;td style=&quot;border-top: 5px solid #FFFFFF;&quot; valign=&quot;top&quot;&gt;&lt;a href=&quot;http://www.stumbleupon.com/to/e/850917142:lxgncv7cqqyx4r25/share-2/s1/http%253A%252F%252Fwww.stumbleupon.com%252Fto%252Fs%252F9D8apW&quot; style=&quot;background-color: #ffb93e; border: 1px solid #ce8111; color: #7c3709; display: block; font-family: arial; font-size: 18px; font-weight: bold; padding: 6px 0; text-align: center; text-decoration: none; width: 202px;&quot;&gt;View Now &amp;gt;&lt;/a&gt;&lt;/td&gt;        &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;      &lt;td valign=&quot;top&quot;&gt;&lt;table border=&quot;0&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;         &lt;td style=&quot;border-bottom: 15px solid #FFFFFF; color: #4d4d4d; font-family: arial; font-size: 14px;&quot; valign=&quot;top&quot;&gt;I found this web page using &lt;a href=&quot;http://www.stumbleupon.com/to/e/850917142:lxgncv7cqqyx4r25/share-2/t/http%253A%252F%252Fwww.stumbleupon.com%252F&quot;&gt;StumbleUpon&lt;/a&gt; and thought you might enjoy it.&lt;/td&gt;        &lt;/tr&gt;
&lt;tr&gt;          &lt;td style=&quot;border-bottom: 15px solid #FFFFFF; color: #4d4d4d; font-family: arial; font-size: 14px; font-style: italic;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;         &lt;/tr&gt;
&lt;tr&gt;         &lt;td style=&quot;border-bottom: 0px solid #FFFFFF; color: #4d4d4d; font-family: arial; font-size: 20px;&quot;&gt;&lt;a href=&quot;http://www.stumbleupon.com/to/e/850917142:lxgncv7cqqyx4r25/share-2/t/http%253A%252F%252Fwww.stumbleupon.com%252Fto%252Fs%252F9D8apW&quot; style=&quot;color: #006bc4; text-decoration: underline;&quot; target=&quot;_blank&quot;&gt;           Free Programming Books          &lt;/a&gt;&lt;/td&gt;        &lt;/tr&gt;
&lt;tr&gt;         &lt;td style=&quot;border-bottom: 15px solid #FFFFFF; color: #4d4d4d; font-family: arial; font-size: 14px;&quot;&gt;&lt;a href=&quot;http://www.stumbleupon.com/to/e/850917142:lxgncv7cqqyx4r25/share-2/t/http%253A%252F%252Fwww.stumbleupon.com%252Fto%252Fs%252F9D8apW&quot; style=&quot;color: #948b6e; text-decoration: none;&quot; target=&quot;_blank&quot;&gt;           e-booksdirectory.com/programmi...          &lt;/a&gt;&lt;/td&gt;        &lt;/tr&gt;
&lt;tr&gt;         &lt;td style=&quot;border-bottom: 15px solid #FFFFFF; color: #4d4d4d; font-family: arial; font-size: 14px;&quot;&gt;Don&#39;t forget to check out my            &lt;a href=&quot;http://www.stumbleupon.com/to/e/850917142:lxgncv7cqqyx4r25/share-2/t/http%253A%252F%252Fwww.stumbleupon.com%252Fstumbler%252FBagosGiAr%252F&quot;&gt;favorite web pages&lt;/a&gt; and            &lt;a href=&quot;http://www.stumbleupon.com/to/e/850917142:lxgncv7cqqyx4r25/share-2/t/http%253A%252F%252Fwww.stumbleupon.com%252F&quot;&gt;learn&lt;/a&gt;                   how &lt;i&gt;you&lt;/i&gt; can use StumbleUpon to discover great content recommended just for you.          &lt;br /&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;table border=&quot;0&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;border-top-color: rgb(255, 255, 255); border-top-style: solid; border-top-width: 25px; width: 740px;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td align=&quot;center&quot; style=&quot;border: 30px solid #fff; color: #4d4d4d; font-family: Arial; font-size: 11px; font-weight: bold;&quot;&gt;© StumbleUpon 2001 - 2011&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;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://b-giar.blogspot.com/feeds/1243535981878616066/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://b-giar.blogspot.com/2011/02/bagosgiar-sent-you-this-page-free.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8953490625351031216/posts/default/1243535981878616066'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8953490625351031216/posts/default/1243535981878616066'/><link rel='alternate' type='text/html' href='http://b-giar.blogspot.com/2011/02/bagosgiar-sent-you-this-page-free.html' title='Free Programming Books'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/01359356128419832182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8953490625351031216.post-4789012379385899195</id><published>2011-02-01T12:40:00.001+02:00</published><updated>2011-02-01T12:40:10.112+02:00</updated><title type='text'>BagosGiAr sent you this page: OOPWeb.com - Data Structures and Algorithms by John Morris</title><content type='html'>&lt;STYLE&gt;   a { color:#206ba4; color:#206ba4; color:#206ba4;  }  &lt;/STYLE&gt; &lt;table width=&quot;100%&quot; cellpadding=&quot;10&quot; cellspacing=&quot;0&quot; bgcolor=&#39;#ffffff&#39; &gt; 	&lt;tr&gt; 		&lt;td valign=&quot;top&quot; align=&quot;center&quot;&gt; 			&lt;table width=&quot;740&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot;&gt; 	&lt;tr&gt; 		&lt;td style=&quot;background-color:#FFFFFF;border-top:0px solid #333333;border-bottom:30px solid #FFFFFF;&quot;&gt;&lt;IMG SRC=&quot;http://www.stumbleupon.com/to/e/850926840:lxgncv7cqqyx4r25/share-2/view/http%253A%252F%252Fwww.stumbleupon.com%252Fi%252Femail%252FsuLogoText1.gif&quot; WIDTH=&quot;179&quot; HEIGHT=&quot;36&quot; BORDER=&quot;0&quot; title=&quot;StumbleUpon&quot;  alt=&quot;StumbleUpon&quot;&gt; 		&lt;/td&gt; 	&lt;/tr&gt; &lt;/table&gt; 			&lt;table border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; width=&quot;740&quot;&gt; 				&lt;tr&gt; 					&lt;td width=&quot;220&quot; valign=&quot;top&quot;&gt; 						&lt;table border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt; 															&lt;tr&gt; 									&lt;td valign=&quot;top&quot;&gt; 									&lt;a target=&quot;_blank&quot; href=&quot;http://www.stumbleupon.com/to/e/850926840:lxgncv7cqqyx4r25/share-2/t/http%253A%252F%252Fwww.stumbleupon.com%252Fto%252Fs%252F2IleJK&quot; style=&quot;padding: 0px; margin: 0px; border: 0px solid rgb(204,204,204);&quot;&gt;&lt;img src=&quot;http://cdn.stumble-upon.com/bthumb/959/335959.jpg&quot; border=&quot;0&quot; width=&quot;200px&quot; style=&quot;border: 2px solid #006BC4;&quot;&gt;&lt;/a&gt; 									&lt;/td&gt; 								&lt;/tr&gt; 														&lt;tr&gt; 								&lt;td valign=&quot;top&quot; style=&quot;border-top: 5px solid #FFFFFF;&quot;&gt; 									&lt;a href=&quot;http://www.stumbleupon.com/to/e/850926840:lxgncv7cqqyx4r25/share-2/s1/http%253A%252F%252Fwww.stumbleupon.com%252Fto%252Fs%252F2IleJK&quot; style=&quot;width: 202px; padding: 6px 0; display:block; text-align: center; background-color: #ffb93e; border: 1px solid #ce8111; color: #7c3709; font-family:arial; font-weight: bold; text-decoration: none; font-size:18px;&quot;&gt;View Now &amp;gt;&lt;/a&gt;&lt;br&gt; 								&lt;/td&gt; 							&lt;/tr&gt; 						&lt;/table&gt; 					&lt;/td&gt; 					&lt;td valign=&quot;top&quot;&gt; 						&lt;table border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt; 							&lt;tr&gt; 								&lt;td valign=&quot;top&quot; style=&quot;font-family: arial; color:#4d4d4d; font-size: 14px; border-bottom: 15px solid #FFFFFF;&quot;&gt; 									I found this web page using &lt;a href=&quot;http://www.stumbleupon.com/to/e/850926840:lxgncv7cqqyx4r25/share-2/t/http%253A%252F%252Fwww.stumbleupon.com%252F&quot;&gt;StumbleUpon&lt;/a&gt; and thought you might enjoy it.&lt;br&gt; 								&lt;/td&gt; 							&lt;/tr&gt; 															&lt;tr&gt; 									&lt;td style=&quot;font-family: arial; color:#4d4d4d; font-size: 14px; border-bottom: 15px solid #FFFFFF; font-style: italic;&quot;&gt; 										&lt;br&gt; 									&lt;/td&gt; 								&lt;/tr&gt; 														&lt;tr&gt; 								&lt;td style=&quot;font-family: arial; color:#4d4d4d; font-size: 20px; border-bottom: 0px solid #FFFFFF;&quot;&gt; 									&lt;a target=&quot;_blank&quot; href=&quot;http://www.stumbleupon.com/to/e/850926840:lxgncv7cqqyx4r25/share-2/t/http%253A%252F%252Fwww.stumbleupon.com%252Fto%252Fs%252F2IleJK&quot; style=&quot;color: #006BC4; text-decoration: underline;&quot;&gt; 										OOPWeb.com - Data Structures and Algorithms by John Morris 									&lt;/a&gt;&lt;br&gt; 								&lt;/td&gt; 							&lt;/tr&gt; 							&lt;tr&gt; 								&lt;td style=&quot;font-family: arial; color:#4d4d4d; font-size: 14px; border-bottom: 15px solid #FFFFFF;&quot;&gt; 									&lt;a target=&quot;_blank&quot; href=&quot;http://www.stumbleupon.com/to/e/850926840:lxgncv7cqqyx4r25/share-2/t/http%253A%252F%252Fwww.stumbleupon.com%252Fto%252Fs%252F2IleJK&quot; style=&quot;color: #948B6E; text-decoration: none;&quot;&gt; 										oopweb.com/Algorithms/Document... 									&lt;/a&gt;&lt;br&gt; 								&lt;/td&gt; 							&lt;/tr&gt; 							&lt;tr&gt; 								&lt;td style=&quot;font-family: arial; color:#4d4d4d; font-size: 14px; border-bottom: 15px solid #FFFFFF;&quot;&gt; 																			Don&#39;t forget to check out my  										&lt;a href=&quot;http://www.stumbleupon.com/to/e/850926840:lxgncv7cqqyx4r25/share-2/t/http%253A%252F%252Fwww.stumbleupon.com%252Fstumbler%252FBagosGiAr%252F&quot;&gt;favorite web pages&lt;/a&gt; and  										&lt;a href=&quot;http://www.stumbleupon.com/to/e/850926840:lxgncv7cqqyx4r25/share-2/t/http%253A%252F%252Fwww.stumbleupon.com%252F&quot;&gt;learn&lt;/a&gt; 																		how &lt;i&gt;you&lt;/i&gt; can use StumbleUpon to discover great content recommended just for you. 									&lt;br&gt; 									&lt;br&gt; 																			- &lt;a target=&quot;_blank&quot; href=&quot;http://www.stumbleupon.com/to/e/850926840:lxgncv7cqqyx4r25/share-2/t/http%253A%252F%252Fwww.stumbleupon.com%252Fstumbler%252FBagosGiAr%252F&quot; style=&quot;color: #006BC4; text-decoration: none;&quot;&gt;BagosGiAr&lt;/a&gt; 									&lt;br&gt; 								&lt;/td&gt; 							&lt;/tr&gt; 						&lt;/table&gt; 					&lt;/td&gt; 				&lt;/tr&gt; 			&lt;/table&gt; 			&lt;table border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; width=&quot;740&quot; style=&quot;border-top: 25px solid #FFFFFF;&quot;&gt; 	&lt;tr&gt; 		&lt;td style=&quot;font-size: 11px; font-family: arial; color: #4d4d4d; border-top: 1px solid #c0c0c0;&quot;&gt; 			&lt;p style=&quot;border-top: 20px solid #FFFFFF;&quot;&gt; 				StumbleUpon is a discovery engine that finds the best of the web, recommended just for you.  				&lt;a href=&quot;http://www.stumbleupon.com/to/e/850926840:lxgncv7cqqyx4r25/share-2/hf/http%253A%252F%252Fwww.stumbleupon.com%252F&quot;&gt;Learn more&lt;/a&gt; 			&lt;/p&gt; 			&lt;p&gt; 				If you do not wish to receive emails sent by StumbleUpon, please 				&lt;a href=&quot;http://www.stumbleupon.com/to/e/850926840:lxgncv7cqqyx4r25/share-2/oo/__eNoFwVEKgCAMXDDQ2_SpEEUQRIfoBLZWCrotXWm37z2vKrO1tVZT9El7xEeYDHCyxBrOXDBOA1Mx4mXF5EIEPnCJ7VwieFwnuO-vDbkfO_0El827jD8mEB95&quot;&gt;click here&lt;/a&gt; 			&lt;/p&gt; 		&lt;/td&gt; 	&lt;/tr&gt; 	&lt;tr&gt; 		&lt;td align=&quot;center&quot; style=&quot;font-family: Arial; font-size: 11px; font-weight: bold;  color: #4d4d4d; border: 30px solid #fff;&quot;&gt;&amp;copy; StumbleUpon 2001 - 2011&lt;/td&gt; 	&lt;/tr&gt; &lt;/table&gt;  		&lt;/td&gt; 	&lt;/tr&gt; &lt;/table&gt; </content><link rel='replies' type='application/atom+xml' href='http://b-giar.blogspot.com/feeds/4789012379385899195/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://b-giar.blogspot.com/2011/02/bagosgiar-sent-you-this-page-oopwebcom.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8953490625351031216/posts/default/4789012379385899195'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8953490625351031216/posts/default/4789012379385899195'/><link rel='alternate' type='text/html' href='http://b-giar.blogspot.com/2011/02/bagosgiar-sent-you-this-page-oopwebcom.html' title='BagosGiAr sent you this page: OOPWeb.com - Data Structures and Algorithms by John Morris'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/01359356128419832182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8953490625351031216.post-2642172606885099580</id><published>2011-01-28T15:28:00.002+02:00</published><updated>2011-09-11T15:08:07.541+03:00</updated><title type='text'>On Line Index of Artificial Intelligence Journals</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;style&gt;
   a { color:#206ba4; color:#206ba4; color:#206ba4;  }  
&lt;/style&gt; &lt;br /&gt;
&lt;table bgcolor=&quot;#ffffff&quot; cellpadding=&quot;10&quot; cellspacing=&quot;0&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;   &lt;td align=&quot;center&quot; valign=&quot;top&quot;&gt;&lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;width: 740px;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;   &lt;td style=&quot;background-color: white; border-bottom: 30px solid #FFFFFF; border-top: 0px solid #333333;&quot;&gt;&lt;img alt=&quot;StumbleUpon&quot; border=&quot;0&quot; height=&quot;36&quot; src=&quot;http://www.stumbleupon.com/to/e/851262365:lxgncv7cqqyx4r25/share-2/view/http%253A%252F%252Fwww.stumbleupon.com%252Fi%252Femail%252FsuLogoText1.gif&quot; title=&quot;StumbleUpon&quot; width=&quot;179&quot; /&gt;   &lt;/td&gt;  &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;table border=&quot;0&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;width: 740px;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;      &lt;td valign=&quot;top&quot; width=&quot;220&quot;&gt;&lt;table border=&quot;0&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;          &lt;td valign=&quot;top&quot;&gt;&lt;a href=&quot;http://www.stumbleupon.com/to/e/851262365:lxgncv7cqqyx4r25/share-2/t/http%253A%252F%252Fwww.stumbleupon.com%252Fto%252Fs%252FARkssZ&quot; style=&quot;border: 0px solid rgb(204,204,204); margin: 0px; padding: 0px;&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://cdn.stumble-upon.com/bthumb/888/140888.jpg&quot; style=&quot;border: 2px solid #006BC4;&quot; width=&quot;200px&quot; /&gt;&lt;/a&gt;          &lt;/td&gt;         &lt;/tr&gt;
&lt;tr&gt;         &lt;td style=&quot;border-top: 5px solid #FFFFFF;&quot; valign=&quot;top&quot;&gt;&lt;a href=&quot;http://www.stumbleupon.com/to/e/851262365:lxgncv7cqqyx4r25/share-2/s1/http%253A%252F%252Fwww.stumbleupon.com%252Fto%252Fs%252FARkssZ&quot; style=&quot;background-color: #ffb93e; border: 1px solid #ce8111; color: #7c3709; display: block; font-family: arial; font-size: 18px; font-weight: bold; padding: 6px 0; text-align: center; text-decoration: none; width: 202px;&quot;&gt;View Now &amp;gt;&lt;/a&gt;&lt;/td&gt;        &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;      &lt;td valign=&quot;top&quot;&gt;&lt;table border=&quot;0&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;         &lt;td style=&quot;border-bottom: 15px solid #FFFFFF; color: #4d4d4d; font-family: arial; font-size: 14px;&quot; valign=&quot;top&quot;&gt;I found this web page using &lt;a href=&quot;http://www.stumbleupon.com/to/e/851262365:lxgncv7cqqyx4r25/share-2/t/http%253A%252F%252Fwww.stumbleupon.com%252F&quot;&gt;StumbleUpon&lt;/a&gt; and thought you might enjoy it.&lt;/td&gt;        &lt;/tr&gt;
&lt;tr&gt;          &lt;td style=&quot;border-bottom: 15px solid #FFFFFF; color: #4d4d4d; font-family: arial; font-size: 14px; font-style: italic;&quot;&gt;&lt;br /&gt;
&lt;/td&gt;         &lt;/tr&gt;
&lt;tr&gt;         &lt;td style=&quot;border-bottom: 0px solid #FFFFFF; color: #4d4d4d; font-family: arial; font-size: 20px;&quot;&gt;&lt;a href=&quot;http://www.stumbleupon.com/to/e/851262365:lxgncv7cqqyx4r25/share-2/t/http%253A%252F%252Fwww.stumbleupon.com%252Fto%252Fs%252FARkssZ&quot; style=&quot;color: #006bc4; text-decoration: underline;&quot; target=&quot;_blank&quot;&gt;           On Line Index of Artificial Intelligence Journals          &lt;/a&gt;&lt;/td&gt;        &lt;/tr&gt;
&lt;tr&gt;         &lt;td style=&quot;border-bottom: 15px solid #FFFFFF; color: #4d4d4d; font-family: arial; font-size: 14px;&quot;&gt;&lt;a href=&quot;http://www.stumbleupon.com/to/e/851262365:lxgncv7cqqyx4r25/share-2/t/http%253A%252F%252Fwww.stumbleupon.com%252Fto%252Fs%252FARkssZ&quot; style=&quot;color: #948b6e; text-decoration: none;&quot; target=&quot;_blank&quot;&gt;           cs.iastate.edu/~honavar/aijour...          &lt;/a&gt;&lt;/td&gt;        &lt;/tr&gt;
&lt;tr&gt;         &lt;td style=&quot;border-bottom: 15px solid #FFFFFF; color: #4d4d4d; font-family: arial; font-size: 14px;&quot;&gt;Don&#39;t forget to check out my            &lt;a href=&quot;http://www.stumbleupon.com/to/e/851262365:lxgncv7cqqyx4r25/share-2/t/http%253A%252F%252Fwww.stumbleupon.com%252Fstumbler%252FBagosGiAr%252F&quot;&gt;favorite web pages&lt;/a&gt; and            &lt;a href=&quot;http://www.stumbleupon.com/to/e/851262365:lxgncv7cqqyx4r25/share-2/t/http%253A%252F%252Fwww.stumbleupon.com%252F&quot;&gt;learn&lt;/a&gt;                   how &lt;i&gt;you&lt;/i&gt; can use StumbleUpon to discover great content recommended just for you.          &lt;br /&gt;
&lt;br /&gt;
- &lt;a href=&quot;http://www.stumbleupon.com/to/e/851262365:lxgncv7cqqyx4r25/share-2/t/http%253A%252F%252Fwww.stumbleupon.com%252Fstumbler%252FBagosGiAr%252F&quot; style=&quot;color: #006bc4; text-decoration: none;&quot; target=&quot;_blank&quot;&gt;BagosGiAr&lt;/a&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;table border=&quot;0&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;border-top-color: rgb(255, 255, 255); border-top-style: solid; border-top-width: 25px; width: 740px;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;   &lt;td style=&quot;border-top: 1px solid #c0c0c0; color: #4d4d4d; font-family: arial; font-size: 11px;&quot;&gt;&lt;div style=&quot;border-top: 20px solid #FFFFFF;&quot;&gt;StumbleUpon is a discovery engine that finds the best of the web, recommended just for you.      &lt;a href=&quot;http://www.stumbleupon.com/to/e/851262365:lxgncv7cqqyx4r25/share-2/hf/http%253A%252F%252Fwww.stumbleupon.com%252F&quot;&gt;Learn more&lt;/a&gt;    &lt;/div&gt;If you do not wish to receive emails sent by StumbleUpon, please     &lt;a href=&quot;http://www.stumbleupon.com/to/e/851262365:lxgncv7cqqyx4r25/share-2/oo/http%253A%252F%252Fwww.stumbleupon.com%252Fnotifications.php%253Femailcode%253Dlxgncv7cqqyx4r25%2526type%253DShare&quot;&gt;click here&lt;/a&gt;    &lt;/td&gt;  &lt;/tr&gt;
&lt;tr&gt;   &lt;td align=&quot;center&quot; style=&quot;border: 30px solid #fff; color: #4d4d4d; font-family: Arial; font-size: 11px; font-weight: bold;&quot;&gt;© StumbleUpon 2001 - 2011&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;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://b-giar.blogspot.com/feeds/2642172606885099580/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://b-giar.blogspot.com/2011/01/bagosgiar-sent-you-this-page-on-line.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8953490625351031216/posts/default/2642172606885099580'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8953490625351031216/posts/default/2642172606885099580'/><link rel='alternate' type='text/html' href='http://b-giar.blogspot.com/2011/01/bagosgiar-sent-you-this-page-on-line.html' title='On Line Index of Artificial Intelligence Journals'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/01359356128419832182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8953490625351031216.post-1318097977147962026</id><published>2011-01-28T15:09:00.001+02:00</published><updated>2011-01-28T15:09:35.115+02:00</updated><title type='text'>BagosGiAr sent you this page: Neural Network Tutorial</title><content type='html'>&lt;STYLE&gt;   a { color:#206ba4; color:#206ba4; color:#206ba4;  }  &lt;/STYLE&gt; &lt;table width=&quot;100%&quot; cellpadding=&quot;10&quot; cellspacing=&quot;0&quot; bgcolor=&#39;#ffffff&#39; &gt; 	&lt;tr&gt; 		&lt;td valign=&quot;top&quot; align=&quot;center&quot;&gt; 			&lt;table width=&quot;740&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot;&gt; 	&lt;tr&gt; 		&lt;td style=&quot;background-color:#FFFFFF;border-top:0px solid #333333;border-bottom:30px solid #FFFFFF;&quot;&gt;&lt;IMG SRC=&quot;http://www.stumbleupon.com/to/e/851263475:lxgncv7cqqyx4r25/share-2/view/http%253A%252F%252Fwww.stumbleupon.com%252Fi%252Femail%252FsuLogoText1.gif&quot; WIDTH=&quot;179&quot; HEIGHT=&quot;36&quot; BORDER=&quot;0&quot; title=&quot;StumbleUpon&quot;  alt=&quot;StumbleUpon&quot;&gt; 		&lt;/td&gt; 	&lt;/tr&gt; &lt;/table&gt; 			&lt;table border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; width=&quot;740&quot;&gt; 				&lt;tr&gt; 					&lt;td width=&quot;220&quot; valign=&quot;top&quot;&gt; 						&lt;table border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt; 															&lt;tr&gt; 									&lt;td valign=&quot;top&quot;&gt; 									&lt;a target=&quot;_blank&quot; href=&quot;http://www.stumbleupon.com/to/e/851263475:lxgncv7cqqyx4r25/share-2/t/http%253A%252F%252Fwww.stumbleupon.com%252Fto%252Fs%252F1jLP9e&quot; style=&quot;padding: 0px; margin: 0px; border: 0px solid rgb(204,204,204);&quot;&gt;&lt;img src=&quot;http://cdn.stumble-upon.com/altbthumb/63/1610063.jpg&quot; border=&quot;0&quot; width=&quot;200px&quot; style=&quot;border: 2px solid #006BC4;&quot;&gt;&lt;/a&gt; 									&lt;/td&gt; 								&lt;/tr&gt; 														&lt;tr&gt; 								&lt;td valign=&quot;top&quot; style=&quot;border-top: 5px solid #FFFFFF;&quot;&gt; 									&lt;a href=&quot;http://www.stumbleupon.com/to/e/851263475:lxgncv7cqqyx4r25/share-2/s1/http%253A%252F%252Fwww.stumbleupon.com%252Fto%252Fs%252F1jLP9e&quot; style=&quot;width: 202px; padding: 6px 0; display:block; text-align: center; background-color: #ffb93e; border: 1px solid #ce8111; color: #7c3709; font-family:arial; font-weight: bold; text-decoration: none; font-size:18px;&quot;&gt;View Now &amp;gt;&lt;/a&gt;&lt;br&gt; 								&lt;/td&gt; 							&lt;/tr&gt; 						&lt;/table&gt; 					&lt;/td&gt; 					&lt;td valign=&quot;top&quot;&gt; 						&lt;table border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt; 							&lt;tr&gt; 								&lt;td valign=&quot;top&quot; style=&quot;font-family: arial; color:#4d4d4d; font-size: 14px; border-bottom: 15px solid #FFFFFF;&quot;&gt; 									I found this web page using &lt;a href=&quot;http://www.stumbleupon.com/to/e/851263475:lxgncv7cqqyx4r25/share-2/t/http%253A%252F%252Fwww.stumbleupon.com%252F&quot;&gt;StumbleUpon&lt;/a&gt; and thought you might enjoy it.&lt;br&gt; 								&lt;/td&gt; 							&lt;/tr&gt; 															&lt;tr&gt; 									&lt;td style=&quot;font-family: arial; color:#4d4d4d; font-size: 14px; border-bottom: 15px solid #FFFFFF; font-style: italic;&quot;&gt; 										&lt;br&gt; 									&lt;/td&gt; 								&lt;/tr&gt; 														&lt;tr&gt; 								&lt;td style=&quot;font-family: arial; color:#4d4d4d; font-size: 20px; border-bottom: 0px solid #FFFFFF;&quot;&gt; 									&lt;a target=&quot;_blank&quot; href=&quot;http://www.stumbleupon.com/to/e/851263475:lxgncv7cqqyx4r25/share-2/t/http%253A%252F%252Fwww.stumbleupon.com%252Fto%252Fs%252F1jLP9e&quot; style=&quot;color: #006BC4; text-decoration: underline;&quot;&gt; 										Neural Network Tutorial 									&lt;/a&gt;&lt;br&gt; 								&lt;/td&gt; 							&lt;/tr&gt; 							&lt;tr&gt; 								&lt;td style=&quot;font-family: arial; color:#4d4d4d; font-size: 14px; border-bottom: 15px solid #FFFFFF;&quot;&gt; 									&lt;a target=&quot;_blank&quot; href=&quot;http://www.stumbleupon.com/to/e/851263475:lxgncv7cqqyx4r25/share-2/t/http%253A%252F%252Fwww.stumbleupon.com%252Fto%252Fs%252F1jLP9e&quot; style=&quot;color: #948B6E; text-decoration: none;&quot;&gt; 										ai-junkie.com/ann/evolved/nnt1... 									&lt;/a&gt;&lt;br&gt; 								&lt;/td&gt; 							&lt;/tr&gt; 							&lt;tr&gt; 								&lt;td style=&quot;font-family: arial; color:#4d4d4d; font-size: 14px; border-bottom: 15px solid #FFFFFF;&quot;&gt; 																			Don&#39;t forget to check out my  										&lt;a href=&quot;http://www.stumbleupon.com/to/e/851263475:lxgncv7cqqyx4r25/share-2/t/http%253A%252F%252Fwww.stumbleupon.com%252Fstumbler%252FBagosGiAr%252F&quot;&gt;favorite web pages&lt;/a&gt; and  										&lt;a href=&quot;http://www.stumbleupon.com/to/e/851263475:lxgncv7cqqyx4r25/share-2/t/http%253A%252F%252Fwww.stumbleupon.com%252F&quot;&gt;learn&lt;/a&gt; 																		how &lt;i&gt;you&lt;/i&gt; can use StumbleUpon to discover great content recommended just for you. 									&lt;br&gt; 									&lt;br&gt; 																			- &lt;a target=&quot;_blank&quot; href=&quot;http://www.stumbleupon.com/to/e/851263475:lxgncv7cqqyx4r25/share-2/t/http%253A%252F%252Fwww.stumbleupon.com%252Fstumbler%252FBagosGiAr%252F&quot; style=&quot;color: #006BC4; text-decoration: none;&quot;&gt;BagosGiAr&lt;/a&gt; 									&lt;br&gt; 								&lt;/td&gt; 							&lt;/tr&gt; 						&lt;/table&gt; 					&lt;/td&gt; 				&lt;/tr&gt; 			&lt;/table&gt; 			&lt;table border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; width=&quot;740&quot; style=&quot;border-top: 25px solid #FFFFFF;&quot;&gt; 	&lt;tr&gt; 		&lt;td style=&quot;font-size: 11px; font-family: arial; color: #4d4d4d; border-top: 1px solid #c0c0c0;&quot;&gt; 			&lt;p style=&quot;border-top: 20px solid #FFFFFF;&quot;&gt; 				StumbleUpon is a discovery engine that finds the best of the web, recommended just for you.  				&lt;a href=&quot;http://www.stumbleupon.com/to/e/851263475:lxgncv7cqqyx4r25/share-2/hf/http%253A%252F%252Fwww.stumbleupon.com%252F&quot;&gt;Learn more&lt;/a&gt; 			&lt;/p&gt; 			&lt;p&gt; 				If you do not wish to receive emails sent by StumbleUpon, please 				&lt;a href=&quot;http://www.stumbleupon.com/to/e/851263475:lxgncv7cqqyx4r25/share-2/oo/http%253A%252F%252Fwww.stumbleupon.com%252Fnotifications.php%253Femailcode%253Dlxgncv7cqqyx4r25%2526type%253DShare&quot;&gt;click here&lt;/a&gt; 			&lt;/p&gt; 		&lt;/td&gt; 	&lt;/tr&gt; 	&lt;tr&gt; 		&lt;td align=&quot;center&quot; style=&quot;font-family: Arial; font-size: 11px; font-weight: bold;  color: #4d4d4d; border: 30px solid #fff;&quot;&gt;&amp;copy; StumbleUpon 2001 - 2011&lt;/td&gt; 	&lt;/tr&gt; &lt;/table&gt;  		&lt;/td&gt; 	&lt;/tr&gt; &lt;/table&gt; </content><link rel='replies' type='application/atom+xml' href='http://b-giar.blogspot.com/feeds/1318097977147962026/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://b-giar.blogspot.com/2011/01/bagosgiar-sent-you-this-page-neural.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8953490625351031216/posts/default/1318097977147962026'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8953490625351031216/posts/default/1318097977147962026'/><link rel='alternate' type='text/html' href='http://b-giar.blogspot.com/2011/01/bagosgiar-sent-you-this-page-neural.html' title='BagosGiAr sent you this page: Neural Network Tutorial'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/01359356128419832182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>