<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://wiki.compsci.ca/skins/common/feed.css?270"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://wiki.compsci.ca/index.php?feed=atom&amp;target=TheFerret&amp;title=Special%3AContributions%2FTheFerret</id>
		<title>Compsci.ca Wiki - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.compsci.ca/index.php?feed=atom&amp;target=TheFerret&amp;title=Special%3AContributions%2FTheFerret"/>
		<link rel="alternate" type="text/html" href="http://wiki.compsci.ca/index.php?title=Special:Contributions/TheFerret"/>
		<updated>2026-04-15T03:51:49Z</updated>
		<subtitle>From Compsci.ca Wiki</subtitle>
		<generator>MediaWiki 1.16.0</generator>

	<entry>
		<id>http://wiki.compsci.ca/index.php?title=Tutorials</id>
		<title>Tutorials</title>
		<link rel="alternate" type="text/html" href="http://wiki.compsci.ca/index.php?title=Tutorials"/>
				<updated>2008-10-11T20:27:34Z</updated>
		
		<summary type="html">&lt;p&gt;TheFerret: Added new tutorial link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Language Independent Tutorials==&lt;br /&gt;
Tutorials that don't depend on a specific language, though they may use examples in one.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To learn how to format your messages in [[the]] [[CompSci.ca]] forum, read the [[BBCode]] tutorial.&lt;br /&gt;
&lt;br /&gt;
==C/C++/C# Tutorials==&lt;br /&gt;
Tutorials Specific to [[C]] and [[CPP|C++]]; and perhaps even some [[C_Sharp|C#]].&lt;br /&gt;
&lt;br /&gt;
*[[Basic String Handling in C]]&lt;br /&gt;
*[[Editing and Compiling programs on windows via MinGW]]&lt;br /&gt;
*[[Introduction to CPP|Introduction to C++]]&lt;br /&gt;
*[[Why you should avoid arrays using CPP|Why you should avoid arrays using C++]]&lt;br /&gt;
*[[Why you should learn C]]&lt;br /&gt;
*[[Whirlwind Tour of C]]&lt;br /&gt;
&lt;br /&gt;
[http://www.compsci.ca/v2/viewforum.php?f=16 C/C++/C# tutorials on CompSci.ca]&lt;br /&gt;
&lt;br /&gt;
==Java Tutorials==&lt;br /&gt;
[[Java]] specific tutorials.&lt;br /&gt;
&lt;br /&gt;
[[wtd]]'s [[Introduction To Java]]&lt;br /&gt;
&lt;br /&gt;
[[Java Big Integers]]&lt;br /&gt;
&lt;br /&gt;
[http://www.compsci.ca/v2/viewforum.php?f=22 Java tutorials on CompSci.ca]&lt;br /&gt;
&lt;br /&gt;
==Ruby Tutorials==&lt;br /&gt;
[[Ruby]] specific tutorials.&lt;br /&gt;
&lt;br /&gt;
[http://www.compsci.ca/v2/viewforum.php?f=59 Ruby tutorials on CompSci.ca]&lt;br /&gt;
&lt;br /&gt;
* [[Hello, Ruby!]]&lt;br /&gt;
* [[Decisions, decisions (Ruby tutorial)| Decisions, decisions]]&lt;br /&gt;
&lt;br /&gt;
==Turing Tutorials==&lt;br /&gt;
[[Turing]] specific tutorials.&lt;br /&gt;
&lt;br /&gt;
[http://www.compsci.ca/v2/viewforum.php?f=3 Turing tutorials on CompSci.ca]&lt;br /&gt;
&lt;br /&gt;
[[Turing Style Guideline]]&lt;br /&gt;
&lt;br /&gt;
[[Polymorphism And Game Engines]]&lt;br /&gt;
&lt;br /&gt;
[[Turing File IO]]&lt;br /&gt;
&lt;br /&gt;
==VB Tutorials==&lt;br /&gt;
[[Visual Basic]] Specific tutorials.&lt;br /&gt;
&lt;br /&gt;
[http://www.compsci.ca/v2/viewforum.php?f=12 Visual Basic Tutorials on CompSci.ca]&lt;br /&gt;
&lt;br /&gt;
==Io Tutorial==&lt;br /&gt;
[[An Introduction to Io]]&lt;br /&gt;
&lt;br /&gt;
==WML Tutorials==&lt;br /&gt;
*[[Introduction to WML]]&lt;br /&gt;
*[[Dynamic WML]]&lt;/div&gt;</summary>
		<author><name>TheFerret</name></author>	</entry>

	<entry>
		<id>http://wiki.compsci.ca/index.php?title=Java_Big_Integers</id>
		<title>Java Big Integers</title>
		<link rel="alternate" type="text/html" href="http://wiki.compsci.ca/index.php?title=Java_Big_Integers"/>
				<updated>2008-10-11T20:26:24Z</updated>
		
		<summary type="html">&lt;p&gt;TheFerret: Created page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==What Are They?==&lt;br /&gt;
&lt;br /&gt;
(From sun.com) &amp;quot;Immutable arbitrary-precision integers.&amp;quot;&lt;br /&gt;
(From Answers.com) Immutatble: &amp;quot;Incapable of changing or being modified&amp;quot;, meaning the precision cannot be changed (any one else have a better.. desc?)&lt;br /&gt;
&lt;br /&gt;
In 'Laymans' terms, they are very large 'integer' type variables, with the capacity to hold as many digits as your RAM will fit.&lt;br /&gt;
&lt;br /&gt;
==When Should You Use Them?==&lt;br /&gt;
&lt;br /&gt;
They should be used whenever you need to handle very large numbers, anything larger then 'long' variables. Long's have a max a max value of 9223372036854775807. As well, BigInteger provides some useful functions for bit manipulation, GCD, random number, and primality testing and generation.&lt;br /&gt;
&lt;br /&gt;
==Do I Need To Import Anything?==&lt;br /&gt;
&lt;br /&gt;
Yes, add this import line at the top of your java file&lt;br /&gt;
Java:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import java.math.*;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Declaring A BigInteger Variable (4 Examples)==&lt;br /&gt;
&lt;br /&gt;
Java:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BigInteger bigInt0 = BigInteger.ZERO;&lt;br /&gt;
BigInteger bigInt1 = BigInteger.ONE;&lt;br /&gt;
BigInteger bigInt3 = new BigInteger (&amp;quot;3&amp;quot;);&lt;br /&gt;
BigInteger bigInt5 = BigInteger.valueOf(5);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: You cannot pass an int/long into a BigInteger directly, the easiest way to do this it to pass it as a static BigInteger using valueOf, Thank You &amp;quot;OneOffDriveByPoster&amp;quot; for that method.&lt;br /&gt;
&lt;br /&gt;
Java:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
long num = 9876543210;&lt;br /&gt;
BigInteger bigInt123 = BigInteger.valueOf (num);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==So, How Do I Use Them?==&lt;br /&gt;
&lt;br /&gt;
Well, BigIntegers contain all the regular math functions, plus more, the main difference is, it does not use symbols such as '*', '+','=','&amp;gt;' etc. rather it uses words (multiply,add,equals,compareTo). Examples;&lt;br /&gt;
&lt;br /&gt;
To Multiply:&lt;br /&gt;
Java:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bigInt1.multiply(bigInt3);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Returns: A Big Integer With Value 3 (1*3)&lt;br /&gt;
Whereas, bigInt1 and bigInt3 are both BigInteger's&lt;br /&gt;
&lt;br /&gt;
To Subtract:&lt;br /&gt;
Java:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bigInt1.subtract(bigInt3);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Returns: A BigInteger with value -2 (3-1)&lt;br /&gt;
Whereas, bigInt1 and bigInt3 are both BigInteger's&lt;br /&gt;
&lt;br /&gt;
To Compare:&lt;br /&gt;
Java:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bigInt1.compareTo(bigInt3);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Returns: An Integer with a value of -1 (Less Than), 0 (Equal), 1 (Greater Then), in this case, it will be -1 since 1 is less then 3.&lt;br /&gt;
Whereas, bigInt1 and bigInt3 are both BigInteger's&lt;br /&gt;
&lt;br /&gt;
To Check If Equal:&lt;br /&gt;
Java:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bigInt1.equals(bigInt3);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Returns: A boolean with a value of false since 1 != 3&lt;br /&gt;
Whereas, bigInt1 and bigInt3 are both BigInteger's&lt;br /&gt;
&lt;br /&gt;
Youll notice, its just like dealing with strings (equals, compareTo)...&lt;br /&gt;
&lt;br /&gt;
As well, you can create a new BigInteger inline (outputs 8)&lt;br /&gt;
Java:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
System.out.println (&amp;quot;2**3 = &amp;quot;+new BigInteger(&amp;quot;2&amp;quot;).pow(3));&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: I Used this as a special example, 'pow', raises the BigInteger '2' to the power of a regular integer '3'. Most of the math methods need BigIntegers as the initial and secondary values but this is a worthy exception to point out.&lt;br /&gt;
&lt;br /&gt;
==Can I Make An Array?==&lt;br /&gt;
&lt;br /&gt;
Sure, why not, arrays can be made of any object/class. Both arrays have a length of 10, both have been initiallized to value '1'&lt;br /&gt;
Java:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//------Example One-------//&lt;br /&gt;
BigInteger i = BigInteger.ONE;&lt;br /&gt;
BigInteger [] biggg = {i,i,i,i,i,i,i,i,i,i};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//------Example Two-------//&lt;br /&gt;
BigInteger [] biggg = new BigInteger [10];&lt;br /&gt;
for (int c = 0; c &amp;lt; biggg.length; c ++){&lt;br /&gt;
    biggg [c] = BigInteger.ONE;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Primality Testing==&lt;br /&gt;
You Mentioned Primality Testing...&lt;br /&gt;
&lt;br /&gt;
Checking if a number is prime is easy with BigIntegers,&lt;br /&gt;
Java:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if (new BigInteger(&amp;quot;17&amp;quot;).isProbablePrime(5) == true){&lt;br /&gt;
        System.out.println(&amp;quot;17 Is Prime!&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Note: The 5 is the certainty that the number is prime, this value reflects how long it takes to complete, for small primes, a value of 1-5 works, but bigger numbers may return false positives unless certainty is &amp;gt;= 5.&lt;br /&gt;
&lt;br /&gt;
==Bit Manipulation==&lt;br /&gt;
Im A 'Bit' Hungry, Lets Do Bit Manipulation!&lt;br /&gt;
&lt;br /&gt;
One of the most used is XOR, in encryption methods. Eg: 65 XOR 42 = 107, and 107 XOR 42 = 65. The work behind this is, it converts the numbers to binary (1's, 0's), and compares the bits in each position, if they are different, bit = 1, if they are the same, bit = 0&lt;br /&gt;
Kevin wrote:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
65: 1000001_______107: 1101011&lt;br /&gt;
XOR______________XOR&lt;br /&gt;
42: 0101010_______42: 0101010&lt;br /&gt;
=________________=&lt;br /&gt;
107: 1101011______65: 1000001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Java:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
System.out.println (&amp;quot;65 XOR 42 = &amp;quot;+new BigInteger(&amp;quot;65&amp;quot;).XOR(new BigInteger(&amp;quot;42&amp;quot;));&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Constant Recomendations==&lt;br /&gt;
&lt;br /&gt;
Seeing how it takes quite a bit of typing to make a new biginteger every time you say want to multiply something by two... bigInt.multiply (new BigInteger(&amp;quot;2&amp;quot;);.. etc.. I recomend making some constants at the top of your program for the most common numbers as follows:&lt;br /&gt;
&lt;br /&gt;
Java:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BigInteger TWO = new BigInteger (&amp;quot;2&amp;quot;);&lt;br /&gt;
BigInteger THREE = new BigInteger (&amp;quot;3&amp;quot;);&lt;br /&gt;
BigInteger FIVE = new BigInteger (&amp;quot;5&amp;quot;);&lt;br /&gt;
BigInteger TEN = new BigInteger (&amp;quot;10&amp;quot;);&lt;br /&gt;
...&lt;br /&gt;
System.out.println (&amp;quot;2 * 10 = &amp;quot;+TWO.multiply(TEN));&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==For Loops==&lt;br /&gt;
What About For Loops, Can BigIntegers Be Used?[b]&lt;br /&gt;
&lt;br /&gt;
They can be, but its unadvisable as it will be extremly slow, unless incrementing by say 100 or 1000... (bellow i used 1 for increment)...&lt;br /&gt;
&lt;br /&gt;
Java:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
for (BigInteger bigCount = BigInteger.ZERO; bigCount.compareTo(new BigInteger (&amp;quot;99999999999999999&amp;quot;)) == -1; bigCount = bigCount.add(BigInteger.ONE)){&lt;br /&gt;
     System.out.println (&amp;quot;Big:&amp;quot;+bigCount);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Example Program==&lt;br /&gt;
Can I See A Full Program Using BigIntegers?&lt;br /&gt;
&lt;br /&gt;
Sure...A Method To Evaluate Factorials! I used BigInteger for the result, because even 25! uses 26 digits, far larger then the max 'long' capacity.&lt;br /&gt;
&lt;br /&gt;
Java:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public static BigInteger factorial(int n){&lt;br /&gt;
    /* n must be &amp;gt;= 0, 0! = 1, eg: n=5 returns (5x4x3x2x1) */&lt;br /&gt;
&lt;br /&gt;
    /* Holds the value of the factorial, in BigInteger form */&lt;br /&gt;
    BigInteger product = BigInteger.ONE;&lt;br /&gt;
       &lt;br /&gt;
    /* Inform User that n was erroneous parameter */&lt;br /&gt;
    if (n &amp;lt; 0){&lt;br /&gt;
        System.out.println (&amp;quot;Factorial Error! n = &amp;quot;+n);&lt;br /&gt;
        return new BigInteger (&amp;quot;-1&amp;quot;);&lt;br /&gt;
    }   &lt;br /&gt;
       &lt;br /&gt;
    /* Chain Multiply from 'n' to '1' */&lt;br /&gt;
    for (int c = n; c &amp;gt; 0; c --){&lt;br /&gt;
        product = product.multiply(BigInteger.valueOf(c));&lt;br /&gt;
    }&lt;br /&gt;
                       &lt;br /&gt;
    System.out.println (&amp;quot;Factorial &amp;quot;+n+&amp;quot;! = &amp;quot;+product);&lt;br /&gt;
       &lt;br /&gt;
    /* Return a BigInteger with the product from n! */&lt;br /&gt;
    return product;&lt;br /&gt;
}// end factorial&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==For More Information==&lt;br /&gt;
For More Information &amp;amp; Complete Method List&lt;br /&gt;
&lt;br /&gt;
Check Out Sun's Java Docs On BigInteger. BigInteger @ Sun.com&lt;br /&gt;
(I Highly Recommmend You Read Through The Whole Method Summary Section)&lt;br /&gt;
&lt;br /&gt;
As well, for the decimal equivalent, check out 'BigDecimal' BigDecimal @ Sun.com&lt;br /&gt;
BigDecimal's use the same concepts as BigInteger, so i wont go into much detail, but if you have questions about BigDecimals, ask away.&lt;br /&gt;
&lt;br /&gt;
If you have any questions, comments, or things to add, feel free to leave a message, or pm me. -Kevin&lt;br /&gt;
&lt;br /&gt;
==Credits==&lt;br /&gt;
&lt;br /&gt;
Author: [[the_short1]]&lt;br /&gt;
&lt;br /&gt;
Added to Wiki by: [[TheFerret]]&lt;/div&gt;</summary>
		<author><name>TheFerret</name></author>	</entry>

	<entry>
		<id>http://wiki.compsci.ca/index.php?title=Tutorials</id>
		<title>Tutorials</title>
		<link rel="alternate" type="text/html" href="http://wiki.compsci.ca/index.php?title=Tutorials"/>
				<updated>2008-10-11T19:54:36Z</updated>
		
		<summary type="html">&lt;p&gt;TheFerret: Added another tutorial link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Language Independent Tutorials==&lt;br /&gt;
Tutorials that don't depend on a specific language, though they may use examples in one.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To learn how to format your messages in [[the]] [[CompSci.ca]] forum, read the [[BBCode]] tutorial.&lt;br /&gt;
&lt;br /&gt;
==C/C++/C# Tutorials==&lt;br /&gt;
Tutorials Specific to [[C]] and [[CPP|C++]]; and perhaps even some [[C_Sharp|C#]].&lt;br /&gt;
&lt;br /&gt;
*[[Basic String Handling in C]]&lt;br /&gt;
*[[Editing and Compiling programs on windows via MinGW]]&lt;br /&gt;
*[[Introduction to CPP|Introduction to C++]]&lt;br /&gt;
*[[Why you should avoid arrays using CPP|Why you should avoid arrays using C++]]&lt;br /&gt;
*[[Why you should learn C]]&lt;br /&gt;
*[[Whirlwind Tour of C]]&lt;br /&gt;
&lt;br /&gt;
[http://www.compsci.ca/v2/viewforum.php?f=16 C/C++/C# tutorials on CompSci.ca]&lt;br /&gt;
&lt;br /&gt;
==Java Tutorials==&lt;br /&gt;
[[Java]] specific tutorials.&lt;br /&gt;
&lt;br /&gt;
[[wtd]]'s [[Introduction To Java]]&lt;br /&gt;
&lt;br /&gt;
[http://www.compsci.ca/v2/viewforum.php?f=22 Java tutorials on CompSci.ca]&lt;br /&gt;
&lt;br /&gt;
==Ruby Tutorials==&lt;br /&gt;
[[Ruby]] specific tutorials.&lt;br /&gt;
&lt;br /&gt;
[http://www.compsci.ca/v2/viewforum.php?f=59 Ruby tutorials on CompSci.ca]&lt;br /&gt;
&lt;br /&gt;
* [[Hello, Ruby!]]&lt;br /&gt;
* [[Decisions, decisions (Ruby tutorial)| Decisions, decisions]]&lt;br /&gt;
&lt;br /&gt;
==Turing Tutorials==&lt;br /&gt;
[[Turing]] specific tutorials.&lt;br /&gt;
&lt;br /&gt;
[http://www.compsci.ca/v2/viewforum.php?f=3 Turing tutorials on CompSci.ca]&lt;br /&gt;
&lt;br /&gt;
[[Turing Style Guideline]]&lt;br /&gt;
&lt;br /&gt;
[[Polymorphism And Game Engines]]&lt;br /&gt;
&lt;br /&gt;
[[Turing_File_IO]]&lt;br /&gt;
&lt;br /&gt;
==VB Tutorials==&lt;br /&gt;
[[Visual Basic]] Specific tutorials.&lt;br /&gt;
&lt;br /&gt;
[http://www.compsci.ca/v2/viewforum.php?f=12 Visual Basic Tutorials on CompSci.ca]&lt;br /&gt;
&lt;br /&gt;
==Io Tutorial==&lt;br /&gt;
[[An Introduction to Io]]&lt;br /&gt;
&lt;br /&gt;
==WML Tutorials==&lt;br /&gt;
*[[Introduction to WML]]&lt;br /&gt;
*[[Dynamic WML]]&lt;/div&gt;</summary>
		<author><name>TheFerret</name></author>	</entry>

	<entry>
		<id>http://wiki.compsci.ca/index.php?title=Turing_File_IO</id>
		<title>Turing File IO</title>
		<link rel="alternate" type="text/html" href="http://wiki.compsci.ca/index.php?title=Turing_File_IO"/>
				<updated>2008-10-11T19:53:28Z</updated>
		
		<summary type="html">&lt;p&gt;TheFerret: Created page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Whats Going to be Covered==&lt;br /&gt;
&lt;br /&gt;
All commands associated with File I/O (except mod, and if anybody could PM me an explanation of what it does it would be much appreciated), which are:&lt;br /&gt;
*open&lt;br /&gt;
*close&lt;br /&gt;
*put&lt;br /&gt;
*get&lt;br /&gt;
*read&lt;br /&gt;
*write&lt;br /&gt;
*seek&lt;br /&gt;
*tell&lt;br /&gt;
*eof&lt;br /&gt;
&lt;br /&gt;
I will show you an example of each command in action as well as an explanation of how to use it.&lt;br /&gt;
&lt;br /&gt;
==How do I use a File to Begin With?==&lt;br /&gt;
&lt;br /&gt;
The answer to that question is really quite simple, and I will go over that right now.&lt;br /&gt;
&lt;br /&gt;
To use a file to input or take information from you must first open the file.&lt;br /&gt;
&lt;br /&gt;
Turing:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
var stream : int&lt;br /&gt;
open : stream, &amp;quot;filename.txt&amp;quot;, put&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alright, what I've done here is opened the text file &amp;quot;filename.txt&amp;quot; along the file path &amp;quot;stream&amp;quot;. I've done this because you need to have an integer file path (which does not get initiated) so that the computer knows which file you are using in the event of more than one file being open at a time. Just ignore the &amp;quot;put&amp;quot; part of that open statement for now, we will come back to it later.&lt;br /&gt;
&lt;br /&gt;
Now the actual syntax for open is as such&lt;br /&gt;
&lt;br /&gt;
Syntax:&lt;br /&gt;
Turing:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
open : fileNumber,fileName, I/O operation&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Also, whenever you are done using the file, you should close it, even if you aren't going to be using it again in the program. This is done automatically whenever the run window is closed, but it is good practice to close a file when done with it. The syntax is as follows:&lt;br /&gt;
&lt;br /&gt;
Turing:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
close : fileNumber&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
So in our example above:&lt;br /&gt;
&lt;br /&gt;
Turing:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
close : stream&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==I've got the file open, now what?==&lt;br /&gt;
&lt;br /&gt;
Another good question. Now we come back to the &amp;quot;put&amp;quot; part of the open statement. In the open statement that we made we can add several things on the end, each of which allows us to do different things with our file. Here is the list of commands that you can use along with a description of each:&lt;br /&gt;
&lt;br /&gt;
put: Well we all know that put outputs things to the screen, but did you know it outputs things to file as well? When putting things to file the syntax is slightly different however, it is as such:&lt;br /&gt;
&lt;br /&gt;
Turing:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
var stream : int&lt;br /&gt;
open : stream, &amp;quot;myText.txt&amp;quot;, put&lt;br /&gt;
put : stream, &amp;quot;This is how you put something to file&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Also note that you can put integers, real numbers, and booleans to file as well, and the process is exactly the same:&lt;br /&gt;
&lt;br /&gt;
Turing:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
var stream : int&lt;br /&gt;
open : stream, &amp;quot;myText.txt&amp;quot;, put&lt;br /&gt;
put : stream, 42&lt;br /&gt;
put : stream, 2.112&lt;br /&gt;
put : stream, false&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also put variables to file:&lt;br /&gt;
&lt;br /&gt;
Turing:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
var stream : int&lt;br /&gt;
var myPhrase : string := &amp;quot;This is how you put a variable to file&amp;quot;&lt;br /&gt;
open : stream, &amp;quot;myText.txt&amp;quot;, put&lt;br /&gt;
put : stream, myPhrase&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Simple as that and it works with any variable type Smile.&lt;br /&gt;
&lt;br /&gt;
==I can put stuff to the file, now I want to get it back==&lt;br /&gt;
&lt;br /&gt;
This is a simple thing to do as well. Very similiar to put, however there is a couple of differences. Like input from the run window you get information from your source (in this case our text file) with the command get. The syntax for get is the same as put for the most part other than the fact the command is get. Here is the syntax:&lt;br /&gt;
&lt;br /&gt;
Turing:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
get : fileNumber, information&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now when getting a value from a file you have to be careful that you are indeed getting a value that coincides with your variable type. For example, you can't give your int a value of &amp;quot;hello&amp;quot;, it just doesn't work. Here is an example of how get works:&lt;br /&gt;
&lt;br /&gt;
Turing:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
var stream : int&lt;br /&gt;
var myText : string := &amp;quot;&amp;quot;&lt;br /&gt;
open : stream, &amp;quot;myText.txt&amp;quot;, get %notice the file has to be in the &amp;quot;get&amp;quot; mode&lt;br /&gt;
get : stream, myText&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It's as easy as that. Just make sure that your variable type is the same as the data that you are getting.&lt;br /&gt;
&lt;br /&gt;
==What if I don't want my file to be read?==&lt;br /&gt;
&lt;br /&gt;
Well there are a couple of ways to do this. You can use the read and write commands, or you can learn to encrypt your files (note this is an advanced technique not for beginners), which we will not be going over in this tutorial.&lt;br /&gt;
&lt;br /&gt;
Now, you can semi-protect your information in a file by using the read and write commands. These commands are more or less identical to put and get with the exception that they write to a file in binary code, whereas put and get write to files in source, which means anyone with a text editor (like notepad) can read them.&lt;br /&gt;
&lt;br /&gt;
==Read and Write==&lt;br /&gt;
&lt;br /&gt;
Reading and writing to a file is very simple, it uses the same idea as put and get, but with different syntax, and it also uses different I/O modes: read and write&lt;br /&gt;
&lt;br /&gt;
Here is an example of how to use each:&lt;br /&gt;
&lt;br /&gt;
read (similiar to get)&lt;br /&gt;
&lt;br /&gt;
Turing:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
var stream : int&lt;br /&gt;
var myText : string&lt;br /&gt;
open : stream, &amp;quot;myText.txt&amp;quot;, read&lt;br /&gt;
read : stream, myText&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And for write (similiar to put)&lt;br /&gt;
&lt;br /&gt;
Turing:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
var stream : int&lt;br /&gt;
var myText : string := &amp;quot;This is how to write to a file&amp;quot;&lt;br /&gt;
open : stream, &amp;quot;myText.txt&amp;quot;, write&lt;br /&gt;
write : stream, myText&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notice the similiarities to put and get?&lt;br /&gt;
&lt;br /&gt;
Great, I know how to get my variables in and out of a file, what if a want to go to a certain line?&lt;br /&gt;
&lt;br /&gt;
==Tell and Seek==&lt;br /&gt;
With the tell and seek commands, thats how!&lt;br /&gt;
&lt;br /&gt;
tell and seek are two commands that have to do with positon in a file. tell can record a current position in the file for later use (like in a saved game file for re-loading), and seek can go to a given position in the file to start I/O operations. The syntax for both tell and seek are very similiar:&lt;br /&gt;
&lt;br /&gt;
tell:&lt;br /&gt;
Turing:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tell : fileNumber, filePosition&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
seek:&lt;br /&gt;
Turing:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
seek : fileNumber, filePosition&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As you can see, they both use the same variables: fileNumber (called stream in this tutorial), and filePosition (the binary position in the file). Using a combination of seek and tell you can keep track of positions in files and go back to them. Here is an example of both in action (Note that the file has to be in the &amp;quot;seek&amp;quot; mode to be able to use either seek or tell)&lt;br /&gt;
&lt;br /&gt;
Turing:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
var stream : int&lt;br /&gt;
var filePosition : int&lt;br /&gt;
var myText : string := &amp;quot;An example of seek and tell&amp;quot;&lt;br /&gt;
open : stream, &amp;quot;myText.txt&amp;quot;, put, seek&lt;br /&gt;
tell : stream, filePosition&lt;br /&gt;
put : stream, myText&lt;br /&gt;
seek : stream, filePosition&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
So all we've done there is found the initial location of data entry, recorded it, put myText to file, then gone back to where it was for future use.&lt;br /&gt;
&lt;br /&gt;
==Great, but what if I have more than one thing in my file?==&lt;br /&gt;
&lt;br /&gt;
Put it in a loop! Very Happy If you haven't learned flexible arrays yet i suggest that you do. When dealing with file I/O flexible arrays will be your best friend.&lt;br /&gt;
&lt;br /&gt;
Now, when you are dealing with multiple (sometimes unknown) amounts of data coming in from a file, it is almost necessary to create an array. When you have done this, you can put the array in a loop getting one piece of data from the file one line at a time. Then when you have come to the end of the file you can exit the loop. Here is an example of how to get multiple lines of data from a file. Note I will be using flexible arrays here, if you don't understand them, don't worry, just concentrate on the idea of getting multiple lines of data from the file.&lt;br /&gt;
&lt;br /&gt;
Turing:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
var stream : int&lt;br /&gt;
var myText : flexible array 1..1 of string&lt;br /&gt;
open : stream, &amp;quot;myText.txt&amp;quot;, get&lt;br /&gt;
loop&lt;br /&gt;
    exit when eof(stream)&lt;br /&gt;
    get : stream, myText(upper(myText))&lt;br /&gt;
    new myText, upper(myText) + 1&lt;br /&gt;
end loop&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you notice how I used this little command &amp;quot;exit when eof (stream)&amp;quot; ?&lt;br /&gt;
eof is a command (meaning end-of-file) that calls a function that returns a boolean. If it is true, that means we have reached the end of the file and we exit our loop, otherwise, we keep going until eof = true. Note that you have to tell eof which file number you are using so that it knows which file to check. This is especially important if you have more than one file open.&lt;br /&gt;
&lt;br /&gt;
For putting your multiple lines of data to a file the process is the same, but you should put all of your data into the file in a for loop with a dynamic upper bound.&lt;br /&gt;
&lt;br /&gt;
==Problems==&lt;br /&gt;
1.Create a file in a text editor called &amp;quot;marks.txt&amp;quot; and fill it with one mark per line for at least 15 lines. Then, create a program that will import these marks into an array in your program and then calculate the averages of the marks and output the average on the screen.&lt;br /&gt;
&lt;br /&gt;
2.Create a file in a text editor filled with at least 15 names and save it as &amp;quot;names.txt&amp;quot;. Create a program to import these names from the file and then sort them, then put them on the run window sorted alphabetically, and into that file sorted alphabetically.&lt;br /&gt;
&lt;br /&gt;
3.Create a program that creates 100 random numbers from 1-500, puts them in a file called&amp;quot;numbers.txt&amp;quot;. Then create another program to import those same numbers, sort them, and putt hem back in the file sorted.&lt;br /&gt;
&lt;br /&gt;
==Closing==&lt;br /&gt;
&lt;br /&gt;
That is my tutorial on file I/O, if anybody has any questions, plz post or PM me and I willbe glad to answer them, anything you see that needs fixing should be PM'ed to me as well. I hope that you guys learned something from this tutorial. Very Happy&lt;br /&gt;
&lt;br /&gt;
==Credits==&lt;br /&gt;
Author: [[Clayton]]&lt;br /&gt;
&lt;br /&gt;
Added to Wiki by: [[TheFerret]]&lt;/div&gt;</summary>
		<author><name>TheFerret</name></author>	</entry>

	<entry>
		<id>http://wiki.compsci.ca/index.php?title=Tutorials</id>
		<title>Tutorials</title>
		<link rel="alternate" type="text/html" href="http://wiki.compsci.ca/index.php?title=Tutorials"/>
				<updated>2008-10-11T19:39:50Z</updated>
		
		<summary type="html">&lt;p&gt;TheFerret: Added new tutorial link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Language Independent Tutorials==&lt;br /&gt;
Tutorials that don't depend on a specific language, though they may use examples in one.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To learn how to format your messages in [[the]] [[CompSci.ca]] forum, read the [[BBCode]] tutorial.&lt;br /&gt;
&lt;br /&gt;
==C/C++/C# Tutorials==&lt;br /&gt;
Tutorials Specific to [[C]] and [[CPP|C++]]; and perhaps even some [[C_Sharp|C#]].&lt;br /&gt;
&lt;br /&gt;
*[[Basic String Handling in C]]&lt;br /&gt;
*[[Editing and Compiling programs on windows via MinGW]]&lt;br /&gt;
*[[Introduction to CPP|Introduction to C++]]&lt;br /&gt;
*[[Why you should avoid arrays using CPP|Why you should avoid arrays using C++]]&lt;br /&gt;
*[[Why you should learn C]]&lt;br /&gt;
*[[Whirlwind Tour of C]]&lt;br /&gt;
&lt;br /&gt;
[http://www.compsci.ca/v2/viewforum.php?f=16 C/C++/C# tutorials on CompSci.ca]&lt;br /&gt;
&lt;br /&gt;
==Java Tutorials==&lt;br /&gt;
[[Java]] specific tutorials.&lt;br /&gt;
&lt;br /&gt;
[[wtd]]'s [[Introduction To Java]]&lt;br /&gt;
&lt;br /&gt;
[http://www.compsci.ca/v2/viewforum.php?f=22 Java tutorials on CompSci.ca]&lt;br /&gt;
&lt;br /&gt;
==Ruby Tutorials==&lt;br /&gt;
[[Ruby]] specific tutorials.&lt;br /&gt;
&lt;br /&gt;
[http://www.compsci.ca/v2/viewforum.php?f=59 Ruby tutorials on CompSci.ca]&lt;br /&gt;
&lt;br /&gt;
* [[Hello, Ruby!]]&lt;br /&gt;
* [[Decisions, decisions (Ruby tutorial)| Decisions, decisions]]&lt;br /&gt;
&lt;br /&gt;
==Turing Tutorials==&lt;br /&gt;
[[Turing]] specific tutorials.&lt;br /&gt;
&lt;br /&gt;
[http://www.compsci.ca/v2/viewforum.php?f=3 Turing tutorials on CompSci.ca]&lt;br /&gt;
&lt;br /&gt;
[[Turing Style Guideline]]&lt;br /&gt;
&lt;br /&gt;
[[Polymorphism And Game Engines]]&lt;br /&gt;
&lt;br /&gt;
==VB Tutorials==&lt;br /&gt;
[[Visual Basic]] Specific tutorials.&lt;br /&gt;
&lt;br /&gt;
[http://www.compsci.ca/v2/viewforum.php?f=12 Visual Basic Tutorials on CompSci.ca]&lt;br /&gt;
&lt;br /&gt;
==Io Tutorial==&lt;br /&gt;
[[An Introduction to Io]]&lt;br /&gt;
&lt;br /&gt;
==WML Tutorials==&lt;br /&gt;
*[[Introduction to WML]]&lt;br /&gt;
*[[Dynamic WML]]&lt;/div&gt;</summary>
		<author><name>TheFerret</name></author>	</entry>

	<entry>
		<id>http://wiki.compsci.ca/index.php?title=Polymorphism_And_Game_Engines</id>
		<title>Polymorphism And Game Engines</title>
		<link rel="alternate" type="text/html" href="http://wiki.compsci.ca/index.php?title=Polymorphism_And_Game_Engines"/>
				<updated>2008-10-11T19:38:30Z</updated>
		
		<summary type="html">&lt;p&gt;TheFerret: Polymorphism and Game Engine Tutorial creation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
&lt;br /&gt;
For this tutorial I will be explaining how to build your own simple reusable and self managing game engine using polymorphism and classes in Turing. In case you're new to the idea of a &amp;quot;game engine&amp;quot;, a game engine is essentially a centralized system which handles all input, output, updating and management for a game. The game engine is responsible for loading, displaying and processing all of a game's content, be it levels, sprites, textures, shaders etc. These resources are not part of the game engine itself, but stored in external files. As well as loading content, the game engine is in charge of interfacing (although not usually directly) with various hardware, such as the video card and sound card. Essentially, a game engine is the skeleton of a game, which supports all of the content of a game.&lt;br /&gt;
&lt;br /&gt;
There are many advantages to using a game engine over hard coding everything. Having a game engine makes updating content and adding functionality a lot easier, as it is possible to change the content of a game without having to rebuild everything or do additional programming. This allows more time to be spent on actually designing a game instead of worrying about the loading of resources and the updating of game objects. As well, game engines can be reused again and again for different projects, making it worth the effort it takes to create a good engine.&lt;br /&gt;
&lt;br /&gt;
Although game engines are a must for large and complex games such as RPGs and shooters, most small and simple games don't need to be made using a game engine. For example, a simple game of pong doesn't need to load many resources or need to worry about many complicated things, so it's alright, and probably a good idea to hard code it. However, when you begin to have more complex object interactions and needs, like 20 objects which collide with each other, having a game engine makes it possible to have this automatically managed and handled for you without any sort of direct or specific or programming.&lt;br /&gt;
&lt;br /&gt;
Now that you (hopefully) understand what a game engine is, let's talk about how a game engine works programmatically. A game engine is usually represented as a class which contains an array or collection of game objects, and methods (procedures and functions) which control the game. The game engine is either told to start the game (it updates itself) or a loop in the main program calls an update function. For the sake of convenience, the game engine I will be building will use the first method. When the start method is called, the game engine enters an infinite loop where it calls each object's draw, and update procedure. This is achieved through polymorphism; each game entity inherits from a master &amp;quot;object&amp;quot; class which provides overrideable methods which perform certain tasks for the entity.&lt;br /&gt;
&lt;br /&gt;
Anyways, enough talk, let's actually start building something.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Setting up your ?Object? Class==&lt;br /&gt;
&lt;br /&gt;
When you first build your generic object class, you want it to encompass all the features that your game entities will possess. Usually in larger engines you have multiple of these generic classes which are specific to certain types of objects, for example, if you had an object that needed only to draw itself and was never going to move, it might be in your interest to create a &amp;quot;detail&amp;quot; type class, which contains only the parts it needs to draw itself and nothing more. This way you can conserve memory, and be able to target specific entities of your game (you would store &amp;quot;detail&amp;quot; objects in a different array or collection than say, all your moving objects). This gives your game engine more flexibility in what it can do. However, for this tutorial I'm going to keep it simple and only use one type of class.&lt;br /&gt;
&lt;br /&gt;
So let's first start off by defining our class. It will contain variables for a position, an image, speed and direction as well as a creation and destruction procedure and two &amp;quot;deferred&amp;quot; procedures which will serve as the game engine's means of &amp;quot;communication&amp;quot; with the object. As well, the class will contain a few other &amp;quot;internal&amp;quot; procedures such as a procedure for moving (not using speed and direction). Remember this is only the blueprint for an entity in the game, so you don't want to make anything specific to the actual game you are creating, as that is defined elsewhere.&lt;br /&gt;
&lt;br /&gt;
Turing:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
% A basic abstract class, all game entities will inherit from this.&lt;br /&gt;
% Note: All position variables should use the &amp;quot;real&amp;quot; type and&lt;br /&gt;
%       be rounded, so when drawing the movement looks smoother.&lt;br /&gt;
%       But for simplicity I will use the &amp;quot;int&amp;quot; type.&lt;br /&gt;
class Object&lt;br /&gt;
    export Create, DrawObject, Update,&lt;br /&gt;
        PosX, PosY, Speed, Direction&lt;br /&gt;
&lt;br /&gt;
    var PicId : int % The picture Id of the object&lt;br /&gt;
    var ImageName : string % The image file name, in case we want to use it later&lt;br /&gt;
    var PosX : int % The x position of the object&lt;br /&gt;
    var PosY : int % The y position of the object&lt;br /&gt;
    var Speed : int  := 0% The speed of the object&lt;br /&gt;
    var Direction : int := 0 % The direction of the object, 0 = east, 90 = north, 180 = west, 270 = south&lt;br /&gt;
&lt;br /&gt;
    % Call this procedure when you first intialize the child class&lt;br /&gt;
    %   img - The filename of the image for the object&lt;br /&gt;
    %   posx - The x position of the object&lt;br /&gt;
    %   posy - The y position of the object&lt;br /&gt;
    procedure Create (img : string, posx, posy : int)&lt;br /&gt;
        ImageName := img&lt;br /&gt;
        PosX := posx&lt;br /&gt;
        PosY := posy&lt;br /&gt;
        PicId := Pic.FileNew (ImageName)&lt;br /&gt;
    end Create&lt;br /&gt;
&lt;br /&gt;
    % Moves the object based on set x and y values&lt;br /&gt;
    %   x - Movement in the x axis (or the x position)&lt;br /&gt;
    %   y - Movement in the y axis (or the y position)&lt;br /&gt;
    %   relative - If true, x and y are based on the previous x and y positions eg. (10 + 2,10 + 3)&lt;br /&gt;
    %              If false, the objects position becomes x and y eg. (2,3)&lt;br /&gt;
    procedure Move (x, y : int, relative : boolean)&lt;br /&gt;
        if (relative) then&lt;br /&gt;
            PosX += x&lt;br /&gt;
            PosY += y&lt;br /&gt;
        else&lt;br /&gt;
            PosX := x&lt;br /&gt;
            PosY := y&lt;br /&gt;
        end if&lt;br /&gt;
    end Move&lt;br /&gt;
&lt;br /&gt;
    % Moves the object based on its speed and direction&lt;br /&gt;
    procedure MoveDir ()&lt;br /&gt;
        Move (round (Speed * cosd (Direction)), round (Speed * sind (Direction)), true)&lt;br /&gt;
    end MoveDir&lt;br /&gt;
&lt;br /&gt;
    % Draws the object; Abstract&lt;br /&gt;
    deferred procedure DrawObject ()&lt;br /&gt;
&lt;br /&gt;
    % Alows the object to update itself; Abstract&lt;br /&gt;
    %   Keys - The currently pressed keys, returned by Input.Keydown()&lt;br /&gt;
    deferred procedure Update (Keys : array char of boolean)&lt;br /&gt;
end Object&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ok, so there's the code for our basic game entity. It's fairly straight forward, just some basic variable and method declarations. The only &amp;quot;not straight forward&amp;quot; part of the class is the declaration of the deferred or abstract procedures at the bottom. Basically what's happening, if you're not sure, is that we're telling Turing that we will write the actual code for the procedures in another class that inherits this one. Overriding these functions, as it is called, gives us the ability to make our objects perform specific things, like having one entity move left when its update procedure is called, and another entity move right when its update procedure is called.&lt;br /&gt;
&lt;br /&gt;
Now that we have our basic game entity class, we will move on to making the actual game engine itself.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Setting up your Game Manager==&lt;br /&gt;
&lt;br /&gt;
The game engine class is probably going to be the most complex part of the tutorial, but I'll try to keep it relatively simple for this tutorial. It will consist of a dynamic array of game entities, variables for controlling the frames per second and a few procedures which control the game engine. These procedures are responsible for adding and deleting objects and updating the game. So let's start this off with a couple code snippets.&lt;br /&gt;
&lt;br /&gt;
Turing:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    import Object, Input&lt;br /&gt;
    export Create, Run, AddObject&lt;br /&gt;
&lt;br /&gt;
    var Entities : flexible array 0 .. 1 of pointer to Object % The entities list&lt;br /&gt;
    var Keys : array char of boolean % The currently pressed keys&lt;br /&gt;
    var Fps : int % The number of frames per second&lt;br /&gt;
    var FpsMilli : int % The number of milliseconds between steps&lt;br /&gt;
&lt;br /&gt;
    var lastTime : int % The last time the the game was updated&lt;br /&gt;
    var thisTime : int % The current time&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Firstly we have the main variable declarations, it should be pretty straight forward but I want to take a moment to explain how the &amp;quot;Entities&amp;quot; array works. The array begins by having two empty elements of the generic game entity type &amp;quot;Object&amp;quot;. It?s basically like having a list of people, every person is different, but still has the same basic features (a name, eyes, ears, etc.) which you can ask for, e.g. everyone would (hopefully) have a response for &amp;quot;what is your name?&amp;quot;. The Entities list works the same way, but the &amp;quot;same basic features&amp;quot; are the ones inherited from the &amp;quot;Object&amp;quot; class.&lt;br /&gt;
&lt;br /&gt;
Turing:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    % Call this procedure when you first&lt;br /&gt;
    %   fps - The number of frames per second the game will update at&lt;br /&gt;
    procedure Create (fps : int)&lt;br /&gt;
        Fps := fps&lt;br /&gt;
        FpsMilli := 1000 div Fps&lt;br /&gt;
        lastTime := Time.Elapsed&lt;br /&gt;
    end Create&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next, we have the Create procedure, which should be called before the Run procedure. It assigns the Fps variable which is used to assign the &amp;quot;FpsMilli&amp;quot; variable. The &amp;quot;FpsMilli&amp;quot; variable is used to tell how often (in milliseconds) the game should be updated based on the &amp;quot;Fps&amp;quot; variable. For instance, at 1000 fps the game is updated every millisecond (or it attempts to), and at 30 fps the game updates every 33 milliseconds (1000 div 30).&lt;br /&gt;
&lt;br /&gt;
Turing:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    % The main game engine procedure, call this to start the game&lt;br /&gt;
    procedure Run ()&lt;br /&gt;
        loop&lt;br /&gt;
            thisTime := Time.Elapsed&lt;br /&gt;
&lt;br /&gt;
            if (thisTime - lastTime &amp;gt;= FpsMilli) then&lt;br /&gt;
                lastTime := thisTime&lt;br /&gt;
                cls&lt;br /&gt;
                Input.KeyDown (Keys)&lt;br /&gt;
                if (Keys (KEY_ESC)) then&lt;br /&gt;
                    return&lt;br /&gt;
                end if&lt;br /&gt;
&lt;br /&gt;
                if (upper (Entities) - 1 &amp;gt; 0) then&lt;br /&gt;
                    for i : 0 .. upper (Entities) - 2&lt;br /&gt;
                        Entities (i) -&amp;gt; Update (Keys)&lt;br /&gt;
                        Entities (i) -&amp;gt; DrawObject ()&lt;br /&gt;
                    end for&lt;br /&gt;
                end if&lt;br /&gt;
&lt;br /&gt;
                View.Update ()&lt;br /&gt;
            end if&lt;br /&gt;
        end loop&lt;br /&gt;
    end Run&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next, we have the Run procedure, which is called when you want to run the game (what a shock). First the &amp;quot;thisTime&amp;quot; variable is assigned the current time since the program began, this is used next to find the time since the last update. If the time is greater than or equal to the &amp;quot;FpsMilli&amp;quot; variable, the game updates.&lt;br /&gt;
&lt;br /&gt;
Each time the game updates, the &amp;quot;lastTime&amp;quot; variable is assigned the current time which will reset the timer. Then the screen is cleared, and if the escape key is pressed the Run function exits, ending the game. Next we iterate through the Entities array. This is where the deferred procedures come into play, for each Object in the array we call its overridden procedure for drawing and updating. You should always draw each object last or after everything has been handled, otherwise whatever is on the screen will always be one step behind everything else. After all the objects have been updated we call &amp;quot;View.Update()&amp;quot; to swap the back buffer.&lt;br /&gt;
&lt;br /&gt;
Turing:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    % Adds an object to the entities list&lt;br /&gt;
    %   obj - A pointer to the object&lt;br /&gt;
    function AddObject (obj : pointer to Object) : pointer to Object&lt;br /&gt;
        Entities (upper (Entities) - 1) := obj&lt;br /&gt;
        new Entities, upper (Entities) + 1&lt;br /&gt;
        result obj&lt;br /&gt;
    end AddObject&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally, we have the AddObject function, which simply adds an object pointer to the Entities array and reserves another spot in the array for the next call. You'll notice this is a function and not a procedure. This is so you're able to both add an object to the game engine and call its Create procedure in the same line.&lt;br /&gt;
&lt;br /&gt;
Well, there it is, a really simple game engine. But wait! We're not done; we still have to make it do something! So let's move on and make the game engine do something. Everything up to this point has been written in the &amp;quot;Engine.t&amp;quot; Turing file in the accompanying zip archive. However, the next two sections will refer to &amp;quot;Objects.t&amp;quot; and &amp;quot;Game.t&amp;quot;, spreading code across files makes things easier to edit and provides further encapsulation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Creating Game Elements==&lt;br /&gt;
&lt;br /&gt;
Ok, it's all pretty straight forward from here; to define a new game entity you simply inherit Object then overwrite the abstract procedures by marking them as a &amp;quot;body procedure&amp;quot;. When you inherit from the Object class you now have access to all of its variables regardless of their protection level (whether they are exported or not) and you can freely manipulate them. As well you can add new variables to the class, but be aware that you won't be able to access them externally.&lt;br /&gt;
&lt;br /&gt;
Turing:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class Player&lt;br /&gt;
    inherit Object&lt;br /&gt;
&lt;br /&gt;
    Speed := 4&lt;br /&gt;
&lt;br /&gt;
    body procedure DrawObject ()&lt;br /&gt;
        Pic.Draw (PicId, PosX, PosY, picMerge)&lt;br /&gt;
    end DrawObject&lt;br /&gt;
&lt;br /&gt;
    body procedure Update (Keys : array char of boolean)&lt;br /&gt;
&lt;br /&gt;
        if (Keys (KEY_UP_ARROW)) then&lt;br /&gt;
            Move (0, Speed, true)&lt;br /&gt;
        end if&lt;br /&gt;
        if (Keys (KEY_DOWN_ARROW)) then&lt;br /&gt;
            Move (0, -Speed, true)&lt;br /&gt;
        end if&lt;br /&gt;
        if (Keys (KEY_LEFT_ARROW)) then&lt;br /&gt;
            Move (-Speed, 0, true)&lt;br /&gt;
        end if&lt;br /&gt;
        if (Keys (KEY_RIGHT_ARROW)) then&lt;br /&gt;
            Move (Speed, 0, true)&lt;br /&gt;
        end if&lt;br /&gt;
&lt;br /&gt;
    end Update&lt;br /&gt;
end Player&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The one I wrote for this tutorial simply draws a red block (loaded from an image, you'll see in the next section) and moves the block based on keyboard input. Pretty straight forward and there's not really much to explain. And there shouldn't be much to explain, making a new type of entity is as easy as that, the game engine handles everything else. All you have to do is add instances of the objects to the GameEngine class, which I will talk about next.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Adding Game Elements==&lt;br /&gt;
&lt;br /&gt;
Well, we've reached the final part of this long tutorial, adding instances of our game entities to the GameEngine class. This is just a matter of defining a pointer and initializing new instances with &amp;quot;new&amp;quot;. Take a look at the &amp;quot;Game.t&amp;quot; file in the zip archive.&lt;br /&gt;
&lt;br /&gt;
Turing:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setscreen (&amp;quot;graphics:640;480,offscreenonly&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
include &amp;quot;Engine.t&amp;quot;&lt;br /&gt;
include &amp;quot;Objects.t&amp;quot;&lt;br /&gt;
&lt;br /&gt;
var Engine : pointer to GameEngine&lt;br /&gt;
new Engine&lt;br /&gt;
&lt;br /&gt;
Engine -&amp;gt; Create (30)&lt;br /&gt;
&lt;br /&gt;
var Player_ : pointer to Player&lt;br /&gt;
new Player_&lt;br /&gt;
Engine -&amp;gt; AddObject (Player_) -&amp;gt; Create (&amp;quot;Resources/Player.gif&amp;quot;, 320, 60)&lt;br /&gt;
&lt;br /&gt;
new Player_&lt;br /&gt;
Engine -&amp;gt; AddObject (Player_) -&amp;gt; Create (&amp;quot;Resources/Player.gif&amp;quot;, 0, 60)&lt;br /&gt;
&lt;br /&gt;
Engine -&amp;gt; Run ()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once again, pretty straight forward. Here I show how the AddObject function works; you can use the value it returns to call the Create procedure on the same line. This about wraps up the tutorial.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
I hope you've learned something from this tutorial, and I encourage you to play around with the code, not that it really does much. The generic object class we built in this tutorial doesn't really provide much functionality but I encourage you to add to it. Normally, the game engine would contain other things like collision checking, particles, other entities etc. I may write a second part to the tutorial which addresses making and loading levels, although I?m not sure if it can be done in Turing, at least to the level of automation I have achieved in other languages. Anyways, thanks for reading my tutorial and happy coding.&lt;br /&gt;
&lt;br /&gt;
== Credits ==&lt;br /&gt;
&lt;br /&gt;
Author: [[Stove]]&lt;br /&gt;
&lt;br /&gt;
Added to Wiki by: [[TheFerret]]&lt;/div&gt;</summary>
		<author><name>TheFerret</name></author>	</entry>

	<entry>
		<id>http://wiki.compsci.ca/index.php?title=CompSci_Server</id>
		<title>CompSci Server</title>
		<link rel="alternate" type="text/html" href="http://wiki.compsci.ca/index.php?title=CompSci_Server"/>
				<updated>2007-07-15T20:51:13Z</updated>
		
		<summary type="html">&lt;p&gt;TheFerret: Fixed most typos&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=About=&lt;br /&gt;
==What it dose==&lt;br /&gt;
The [[CompSci.ca]] server is the computer that hosts the all of the websites and services in our network. It includes the main forums, the [[blog]], [[wiki]], bug tracker, mail system, hosting for users, and almost anything related to CompSci.ca. It also hosts related projects like [[dwite]].ca and user projects as well as [[CVS]] repositories and a [[jabber]] server. We also plan to add things like an [[IRC_channel | IRC]] server to it resources pending.&lt;br /&gt;
&lt;br /&gt;
==Where it is==&lt;br /&gt;
&lt;br /&gt;
The CompSci.ca server is a [[dedicated server]] in a data center run by [http://corenetworks.net corenetworks.net]. It is located in [http://maps.google.com/maps?f=q&amp;amp;hl=en&amp;amp;geocode=&amp;amp;q=East+Lansing,+Michigan&amp;amp;ie=UTF8&amp;amp;ll=45.660127,-82.001953&amp;amp;spn=10.764433,29.355469&amp;amp;z=6&amp;amp;om=1 East Lansing, Michigan] and meets Tier-1 providers on redundant fiber optic lines, though it is behind a 10Mbps switch (this maybe upgraded to 100Mbps if we get the money). Our ip space witch is rented from [[corenetworks]] is 64.85.160.30 - 64.85.160.31.&lt;br /&gt;
&lt;br /&gt;
This is the closet location we could get to where the majority of our users are for a fair price. Unfortunately Canadian data rates are higher then in the US and sadly this also means we fall partly fall under the [[DMCA]].&lt;br /&gt;
&lt;br /&gt;
==IP Info==&lt;br /&gt;
&lt;br /&gt;
* 64.85.160.30 - All things other then the core CompSci.ca domain and service. Like [[dwite]]&lt;br /&gt;
* 64.85.160.31 - The core CompSci.ca parts, the main site, sub domains and sub dirs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Server Stats==&lt;br /&gt;
* [[Intel]] 2.8[[GHz]] [[Processor]]&lt;br /&gt;
* 1GB [[RAM]]&lt;br /&gt;
* 120GB Hard Drive&lt;br /&gt;
* 1,000 GB Transfer&lt;br /&gt;
* Remote Power access&lt;br /&gt;
* [[IP KVM]]&lt;br /&gt;
* [[Gentoo]] OS&lt;br /&gt;
* 10Mbps connection &lt;br /&gt;
* 2 static unique [[IP]]s&lt;br /&gt;
&lt;br /&gt;
===lspci Output===&lt;br /&gt;
00:00.0 Host bridge: Silicon Integrated Systems [SiS] 661FX/M661FX/M661MX Host (rev 11)&lt;br /&gt;
&lt;br /&gt;
00:01.0 PCI bridge: Silicon Integrated Systems [SiS] SiS AGP Port (virtual PCI-to-PCI bridge)&lt;br /&gt;
&lt;br /&gt;
00:02.0 ISA bridge: Silicon Integrated Systems [SiS] SiS964 [MuTIOL Media IO] (rev 36)&lt;br /&gt;
&lt;br /&gt;
00:02.5 IDE interface: Silicon Integrated Systems [SiS] 5513 [IDE] (rev 01)&lt;br /&gt;
&lt;br /&gt;
00:03.0 USB Controller: Silicon Integrated Systems [SiS] USB 1.0 Controller (rev 0f)&lt;br /&gt;
&lt;br /&gt;
00:03.1 USB Controller: Silicon Integrated Systems [SiS] USB 1.0 Controller (rev 0f)&lt;br /&gt;
&lt;br /&gt;
00:03.2 USB Controller: Silicon Integrated Systems [SiS] USB 1.0 Controller (rev 0f)&lt;br /&gt;
&lt;br /&gt;
00:03.3 USB Controller: Silicon Integrated Systems [SiS] USB 2.0 Controller&lt;br /&gt;
&lt;br /&gt;
00:04.0 Ethernet controller: Silicon Integrated Systems [SiS] SiS900 PCI Fast Ethernet (rev 90)&lt;br /&gt;
&lt;br /&gt;
00:05.0 IDE interface: Silicon Integrated Systems [SiS] SATA (rev 01)&lt;br /&gt;
&lt;br /&gt;
01:00.0 VGA compatible controller: Silicon Integrated Systems [SiS] 661/741/760/761 PCI/AGP VGA Display Adapter&lt;br /&gt;
&lt;br /&gt;
==Services Running==&lt;br /&gt;
* [[ProFTP]]&lt;br /&gt;
* [[PostFix]]&lt;br /&gt;
* [[apache2]]&lt;br /&gt;
* [[PHP]]&lt;br /&gt;
* [[Ruby on Rails]]&lt;br /&gt;
* [[dovecot]]&lt;br /&gt;
* [[webmin]]&lt;br /&gt;
* [[usermin]]&lt;br /&gt;
* [[sshd]]&lt;br /&gt;
* [[ntpd]]&lt;br /&gt;
* [[MySQL]]&lt;br /&gt;
* [[mon]]&lt;br /&gt;
* [[jabber]]&lt;br /&gt;
* [[PostgreSQL]]&lt;br /&gt;
* Others&lt;br /&gt;
&lt;br /&gt;
==Current Status==&lt;br /&gt;
The server has been installed in the rack in the corenetworks data center and we are now working on setting it up for use by CompSci.ca.&lt;br /&gt;
&lt;br /&gt;
=To Do=&lt;br /&gt;
==Main To Do==&lt;br /&gt;
The following list of things have to be done before the server can go live:&lt;br /&gt;
&lt;br /&gt;
* Move CompSci.ca files over&lt;br /&gt;
* Move user files over&lt;br /&gt;
* Try to move mail over&lt;br /&gt;
* Make a good webmail page with different webmail programs to use.&lt;br /&gt;
* Add other webmail programs&lt;br /&gt;
* Set up the DNS info for all the domains&lt;br /&gt;
* Add virtual servers for each domain and sub domain&lt;br /&gt;
* Install Ruby on Rails&lt;br /&gt;
* Set up dwite&lt;br /&gt;
* Move over e-mail accounts (mailboxes) and set them up in postfix&lt;br /&gt;
* Move over e-mail forwards and aliases and set them up in postfix&lt;br /&gt;
* Forward the raw ips to somewhere&lt;br /&gt;
* Set up unix user accounts&lt;br /&gt;
* Set up unix user groups&lt;br /&gt;
* Set up ftp accounts&lt;br /&gt;
* Install a php optimizer&lt;br /&gt;
* Test everything a lot&lt;br /&gt;
* Set up CVS right&lt;br /&gt;
* Set up jabber server&lt;br /&gt;
* Set up usermin&lt;br /&gt;
* Force [[tony]] to remember his passwords&lt;br /&gt;
* Test backup system and set up more off site backup sites&lt;br /&gt;
* Set up protected dirs&lt;br /&gt;
* Get postfix and everything to work with non xbit.ca domains.&lt;br /&gt;
* Others&lt;br /&gt;
&lt;br /&gt;
==Want To Do==&lt;br /&gt;
The fallowing are things I want on the server but are not 100% needed for the server to go live:&lt;br /&gt;
&lt;br /&gt;
* Shorewall&lt;br /&gt;
* Quota System&lt;br /&gt;
* Recompile kernel&lt;br /&gt;
* Add spam filtering of some kind&lt;br /&gt;
* Add viruses checks on mail and uploaded files&lt;br /&gt;
* Find a way to get MON messages to go to my cell phone&lt;br /&gt;
* Get Security Sentries working&lt;br /&gt;
* Set up BIND and get it working as our DNS server&lt;br /&gt;
* Add Majordomo List Manager&lt;br /&gt;
* Set up https for compsci.ca as an option for all users&lt;br /&gt;
* Set up a webproxy for use by things like dwite juge&lt;br /&gt;
* Add better/good logging software and log analyzing software&lt;br /&gt;
* Get Bandwidth Monitoring working&lt;br /&gt;
* Others&lt;br /&gt;
&lt;br /&gt;
==How to help out==&lt;br /&gt;
I may need some help with this server config stuff from time to time. Some of the things i need help with right now are:&lt;br /&gt;
&lt;br /&gt;
* Recompiling the kernel for shorewall and quota without getting the server in a non rebooting state&lt;br /&gt;
* Setting up a spam filter for postfix that does not kill the whole mail system.&lt;br /&gt;
* Setting up BIND and how to get your own DNS server working&lt;br /&gt;
&lt;br /&gt;
Contact me on msn or irc for more info. We can only give trusted users access to the server though.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Special Thanks and Credits=&lt;br /&gt;
The fallowing users where of a lot of help well setting up the server and need more then just a thanks on this page (list is in no order):&lt;br /&gt;
&lt;br /&gt;
* [[rizzix]] : For helping to set up postfix and the mail system.&lt;br /&gt;
* [[md]] : For saving the server when i broke it. &lt;br /&gt;
&lt;br /&gt;
Thanks goes out to the other users for moral support and some small tips along the way:&lt;br /&gt;
&lt;br /&gt;
* [[Timmy]]&lt;br /&gt;
* [[Rdrake]]&lt;br /&gt;
* [[Tony]] - For hugs????&lt;br /&gt;
&lt;br /&gt;
=Ideas and Suggestions=&lt;br /&gt;
If you have an idea for something to put on the server or use it for leave it down here with your name.&lt;/div&gt;</summary>
		<author><name>TheFerret</name></author>	</entry>

	<entry>
		<id>http://wiki.compsci.ca/index.php?title=TheFerret</id>
		<title>TheFerret</title>
		<link rel="alternate" type="text/html" href="http://wiki.compsci.ca/index.php?title=TheFerret"/>
				<updated>2007-04-05T01:41:16Z</updated>
		
		<summary type="html">&lt;p&gt;TheFerret: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==About TheFerret==&lt;br /&gt;
TheFerret joined [http://www.compsci.ca Compsci.ca] on Feburary 15, 2004 to become more advanced in the art of [[Turing]] and [[Java]] programming. TheFerret is currently 17 years old and goes to [http://scss.lkdsb.net St. Clair Secondary School] in Sarnia, Ontario. He is currently in grade 12 and plans to go to UofW for chemical engineering but he will have to raise his calculus mark about 60 so he has at least a small chance to be admitted. His real name is Travis. (He also has to do better in English, since his sucks really badly at times) Some things he likes to do on his spare time include: wrestling on the school team, robotics with [[the]] school, [http://www.team1084.com Iron Colts] and he also likes to read and dabble with computer stuff. &lt;br /&gt;
&lt;br /&gt;
==Why &amp;quot;TheFerret&amp;quot;==&lt;br /&gt;
Don't know why, ferrets are cool and I want two of them, so there... *stop looking at me like that*&lt;br /&gt;
&lt;br /&gt;
==Likes/Dislikes==&lt;br /&gt;
===Likes===&lt;br /&gt;
[[Firefox]]&lt;br /&gt;
&lt;br /&gt;
Iced Tea&lt;br /&gt;
&lt;br /&gt;
Almost any [[Food|food]] (Yum...)&lt;br /&gt;
&lt;br /&gt;
[[Programming]]&lt;br /&gt;
&lt;br /&gt;
Wrestling&lt;br /&gt;
&lt;br /&gt;
[http://www.team1084.com Robotics]&lt;br /&gt;
&lt;br /&gt;
And Finally sleep&lt;br /&gt;
&lt;br /&gt;
===Dislikes===&lt;br /&gt;
Stupid annoying people&lt;br /&gt;
&lt;br /&gt;
peas, squash and any other weird vege&lt;br /&gt;
&lt;br /&gt;
His computer (stupid Celeron)&lt;br /&gt;
&lt;br /&gt;
==Quote==&lt;br /&gt;
''&amp;quot;Run Dog, Run&amp;quot;''&lt;br /&gt;
&lt;br /&gt;
==Avatar==&lt;br /&gt;
His only avatars to ever be used.&lt;br /&gt;
&lt;br /&gt;
[[image:Dog.gif]] [[Image:Dog1.gif|''Used for part of the Chuck Norris revial but so far hasn't got off the groud...'']] [[Image:FuroAvatar.png]] [[Image:Movie4d.gif]] [[Image:Zim.jpg]]&lt;/div&gt;</summary>
		<author><name>TheFerret</name></author>	</entry>

	<entry>
		<id>http://wiki.compsci.ca/index.php?title=File:Zim.jpg</id>
		<title>File:Zim.jpg</title>
		<link rel="alternate" type="text/html" href="http://wiki.compsci.ca/index.php?title=File:Zim.jpg"/>
				<updated>2007-04-05T01:40:38Z</updated>
		
		<summary type="html">&lt;p&gt;TheFerret: TheFerret's new avatar.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;TheFerret's new avatar.&lt;/div&gt;</summary>
		<author><name>TheFerret</name></author>	</entry>

	<entry>
		<id>http://wiki.compsci.ca/index.php?title=TheFerret</id>
		<title>TheFerret</title>
		<link rel="alternate" type="text/html" href="http://wiki.compsci.ca/index.php?title=TheFerret"/>
				<updated>2006-11-28T05:09:56Z</updated>
		
		<summary type="html">&lt;p&gt;TheFerret: Avatar editing&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==About TheFerret==&lt;br /&gt;
TheFerret joined [http://www.compsci.ca Compsci.ca] on Feburary 15, 2004 to become more advanced in the art of [[Turing]] and [[Java]] programming. TheFerret is currently 17 years old and goes to [http://scss.lkdsb.net St. Clair Secondary School] in Sarnia, Ontario. He is currently in grade 12 and plans to go to UofW for chemical engineering but he will have to raise his calculus mark about 60 so he has at least a small chance to be admitted. His real name is Travis. (He also has to do better in English, since his sucks really badly at times) Some things he likes to do on his spare time include: wrestling on the school team, robotics with [[the]] school, [http://www.team1084.com Iron Colts] and he also likes to read and dabble with computer stuff. &lt;br /&gt;
&lt;br /&gt;
==Why &amp;quot;TheFerret&amp;quot;==&lt;br /&gt;
Don't know why, ferrets are cool and I want two of them, so there... *stop looking at me like that*&lt;br /&gt;
&lt;br /&gt;
==Likes/Dislikes==&lt;br /&gt;
===Likes===&lt;br /&gt;
[[Firefox]]&lt;br /&gt;
&lt;br /&gt;
Iced Tea&lt;br /&gt;
&lt;br /&gt;
Almost any [[Food|food]] (Yum...)&lt;br /&gt;
&lt;br /&gt;
[[Programming]]&lt;br /&gt;
&lt;br /&gt;
Wrestling&lt;br /&gt;
&lt;br /&gt;
[http://www.team1084.com Robotics]&lt;br /&gt;
&lt;br /&gt;
And Finally sleep&lt;br /&gt;
&lt;br /&gt;
===Dislikes===&lt;br /&gt;
Stupid annoying people&lt;br /&gt;
&lt;br /&gt;
peas, squash and any other weird vege&lt;br /&gt;
&lt;br /&gt;
His computer (stupid Celeron)&lt;br /&gt;
&lt;br /&gt;
==Quote==&lt;br /&gt;
''&amp;quot;Run Dog, Run&amp;quot;''&lt;br /&gt;
&lt;br /&gt;
==Avatar==&lt;br /&gt;
His only avatars to ever be used.&lt;br /&gt;
&lt;br /&gt;
[[image:Dog.gif]] [[Image:Dog1.gif|''Used for part of the Chuck Norris revial but so far hasn't got off the groud...'']] [[Image:FuroAvatar.png]] [[Image:Movie4d.gif]]&lt;/div&gt;</summary>
		<author><name>TheFerret</name></author>	</entry>

	<entry>
		<id>http://wiki.compsci.ca/index.php?title=File:Movie4d.gif</id>
		<title>File:Movie4d.gif</title>
		<link rel="alternate" type="text/html" href="http://wiki.compsci.ca/index.php?title=File:Movie4d.gif"/>
				<updated>2006-11-28T04:48:36Z</updated>
		
		<summary type="html">&lt;p&gt;TheFerret: Dec Avatar&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dec Avatar&lt;/div&gt;</summary>
		<author><name>TheFerret</name></author>	</entry>

	<entry>
		<id>http://wiki.compsci.ca/index.php?title=File:FuroAvatar.png</id>
		<title>File:FuroAvatar.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.compsci.ca/index.php?title=File:FuroAvatar.png"/>
				<updated>2006-09-28T18:30:31Z</updated>
		
		<summary type="html">&lt;p&gt;TheFerret: TheFerret's new avatar for October 2006...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;TheFerret's new avatar for October 2006...&lt;/div&gt;</summary>
		<author><name>TheFerret</name></author>	</entry>

	<entry>
		<id>http://wiki.compsci.ca/index.php?title=Talk:IRC_channel</id>
		<title>Talk:IRC channel</title>
		<link rel="alternate" type="text/html" href="http://wiki.compsci.ca/index.php?title=Talk:IRC_channel"/>
				<updated>2006-07-06T16:54:33Z</updated>
		
		<summary type="html">&lt;p&gt;TheFerret: Stupid typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Hikaru79]]: Dan, glad to hear about that Java-client plan :) Sounds good! You're really working hard on compsci.ca lately, eh? :)&lt;br /&gt;
&lt;br /&gt;
[[Hacker Dan]]: Yep, i had a day off studying for exams today and affter my last exam i am planing on doing alot of updating.&lt;br /&gt;
&lt;br /&gt;
[[Gandalf]]: Indeed, great work.  It's becoming hard to catch up to all these new updates :).&lt;br /&gt;
&lt;br /&gt;
[[TheFerret]]: Hey Dan, my server is still up, just has some connection problems to irc.compsci.ca, I don't know why, it wasn't working for a while then one day it worked and for the past day or so it hasn't been able to connect to the main server... But it does work :D&lt;/div&gt;</summary>
		<author><name>TheFerret</name></author>	</entry>

	<entry>
		<id>http://wiki.compsci.ca/index.php?title=Talk:IRC_channel</id>
		<title>Talk:IRC channel</title>
		<link rel="alternate" type="text/html" href="http://wiki.compsci.ca/index.php?title=Talk:IRC_channel"/>
				<updated>2006-07-06T16:54:04Z</updated>
		
		<summary type="html">&lt;p&gt;TheFerret: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Hikaru79]]: Dan, glad to hear about that Java-client plan :) Sounds good! You're really working hard on compsci.ca lately, eh? :)&lt;br /&gt;
&lt;br /&gt;
[[Hacker Dan]]: Yep, i had a day off studying for exams today and affter my last exam i am planing on doing alot of updating.&lt;br /&gt;
&lt;br /&gt;
[[Gandalf]]: Indeed, great work.  It's becoming hard to catch up to all these new updates :).&lt;br /&gt;
&lt;br /&gt;
[[TheFerret]]:Hey Dan, my server is still up, just has some connection problems to irc.compsci.ca, I don't know why, it wasn't working for a while then one day it worked and for the past day or so it hasn't been able to connect to the main server... But it does work :D&lt;/div&gt;</summary>
		<author><name>TheFerret</name></author>	</entry>

	<entry>
		<id>http://wiki.compsci.ca/index.php?title=Main_Page</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://wiki.compsci.ca/index.php?title=Main_Page"/>
				<updated>2006-06-06T20:03:09Z</updated>
		
		<summary type="html">&lt;p&gt;TheFerret: Restored&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Welcome to the CompSci.ca Wiki ==&lt;br /&gt;
This Wiki is for anything relating to Computer Science, [[the]] site [http://compsci.ca/ CompSci.ca], any technology-related stuff, or anything you want that is within reason. It is free to edit for everyone as long as they respect others and the site. We welcome any new pages you can think of, or anything you can add to our existing ones (incuding this one!). This wiki is for the users of [http://compsci.ca/ CompSci.ca]; it is up to you to add or update the content of this wiki!&lt;br /&gt;
&lt;br /&gt;
== CompSci.ca Current News ==&lt;br /&gt;
[http://compsci.ca/ CompSci.ca] will be hosting and administering the [[DWITE]] programming contest starting Fall 2006.&lt;br /&gt;
&lt;br /&gt;
We have set up a [http://blog.compsci.ca/ Blog] to publish information about the progress of contest's implemintation, as well as other [http://compsci.ca/ CompSci.ca] news, and [[Tony]]'s rants. It is likely that it will be much more up-to-date and detailed than this news sniplet here.&lt;br /&gt;
&lt;br /&gt;
--Tony 12:20, 10 May 2006 (EST)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The [[CompSci.ca News]] Page.&lt;br /&gt;
&lt;br /&gt;
== Highlighted Pages ==&lt;br /&gt;
[[IRC channel|IRC Channel]] - Info on the IRC Channel&lt;br /&gt;
&lt;br /&gt;
[[BBCode]] Learn to use BBCode to format your posts&lt;br /&gt;
&lt;br /&gt;
[[Tutorials]] - All your favourite [[CompSci.ca]] tutorials, only here instead!&lt;br /&gt;
&lt;br /&gt;
[[WCG]] - World Community Grid&lt;br /&gt;
&lt;br /&gt;
[[Dictionary of Dan]] - The New Dictionary of Dan project.&lt;br /&gt;
&lt;br /&gt;
[[DuckFest]] - What The Duck?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''[[Special:Allpages]] - All Pages'''''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Want to write a new page? Then check out [[Special:Wantedpages]]. It is a list of all the pages people want to be writen up. So if you have no idea about what to write about, try here.&lt;br /&gt;
&lt;br /&gt;
== How to use the CompSci.ca Wiki ==&lt;br /&gt;
The CompSci.ca Wiki works like many other popular wikis and is self explainatory for the most part. Though below are some tips on it's use:&lt;br /&gt;
&lt;br /&gt;
'''Adding a page'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Go to the page you want the new page to be linked from.&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Click on the edit tab to edit the page. Add a link to the page you wish to create. The way to create a link is to place the new page's title in brackets. [ [ Page title ] ] (without the spaces)&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Save the page. Your link will show up as a red link which, when clicked, will bring you to an edit page for your new page.&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Edit and save your new page.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
'''OR'''&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Type the following into your browser, where [Page Title] is the title of the page you wish to create.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;blockquote&amp;gt;http://www.compsci.ca/wiki/index.php?title= [Page Title]&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Add content and save.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Computer Science Links ==&lt;br /&gt;
[http://www.compsci.ca CompSci.ca]&lt;br /&gt;
&lt;br /&gt;
'''''[[Links]] - Links Page'''''&lt;/div&gt;</summary>
		<author><name>TheFerret</name></author>	</entry>

	<entry>
		<id>http://wiki.compsci.ca/index.php?title=Rdrake_Banned</id>
		<title>Rdrake Banned</title>
		<link rel="alternate" type="text/html" href="http://wiki.compsci.ca/index.php?title=Rdrake_Banned"/>
				<updated>2006-03-30T04:35:13Z</updated>
		
		<summary type="html">&lt;p&gt;TheFerret: Created Page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
(23:32:35) (%rdrake) alright&lt;br /&gt;
(23:32:42) (%rdrake) gotta move some over to this computer, but there's an idea&lt;br /&gt;
(23:32:45)      —› mode: (rdrake) sets mode (+b *!*rdrake@69.158.119.*)&lt;br /&gt;
(23:32:45)      —› This (*!*rdrake@69.158.119.*) ban affects: (%rdrake, +rizzyland)&lt;br /&gt;
(23:32:45)      —› kick: (rdrake) was kicked by (rdrake) (rdrake)&lt;br /&gt;
(23:32:51) (@rizzix) lol&lt;br /&gt;
(23:32:52) (+TheFerret) lol&lt;br /&gt;
(23:32:53) (@rizzix) idiot&lt;br /&gt;
(23:32:56) (+timmytheturtle) lol&lt;br /&gt;
(23:33:04) (+timmytheturtle) someone unban him&lt;br /&gt;
(23:33:09)      —› mode: (rizzix) sets mode (-b *!*rdrake@69.158.119.*)&lt;br /&gt;
(23:33:19) (+apomb) lol&lt;br /&gt;
(23:33:27) (+apomb) smart move there rdrake&lt;br /&gt;
(23:33:28) (+TheFerret) 40kb download speed now, pretty good&lt;br /&gt;
(23:33:29)      —› join: (rdrake) (rdrake@69.158.119.107)&lt;br /&gt;
(23:33:29)      —› mode: (X3) sets mode (+h rdrake)&lt;br /&gt;
(23:33:32) (%rdrake) wow, that was dumb&lt;br /&gt;
(23:33:38) (+TheFerret) HAHAHAHAHA&lt;br /&gt;
(23:33:45) (+apomb) haha nice one&lt;br /&gt;
(23:33:50) (%rdrake) thanks&lt;br /&gt;
(23:33:53) (+TheFerret) almost wiki-able&lt;br /&gt;
(23:33:55) • %rdrake bows&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>TheFerret</name></author>	</entry>

	<entry>
		<id>http://wiki.compsci.ca/index.php?title=V3</id>
		<title>V3</title>
		<link rel="alternate" type="text/html" href="http://wiki.compsci.ca/index.php?title=V3"/>
				<updated>2006-03-05T22:54:25Z</updated>
		
		<summary type="html">&lt;p&gt;TheFerret: /* Beta Testers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page was intentionally left blank, but was added to anyway.&lt;br /&gt;
&lt;br /&gt;
==V3 ETA==&lt;br /&gt;
'''Alpha Version''': Open&lt;br /&gt;
&lt;br /&gt;
'''Beta Version''': Before next school year, April 30th (estimate only)&lt;br /&gt;
&lt;br /&gt;
'''Public Version''': Start of next school year, September 1st (estimate only)&lt;br /&gt;
&lt;br /&gt;
==User Requests==&lt;br /&gt;
Add modifications and other things that you would like to see in V3:&lt;br /&gt;
&lt;br /&gt;
===Added===&lt;br /&gt;
*[[Amailer]]: Merge posts commands for mods&lt;br /&gt;
*[[Amailer]]: Tutorial rating system&lt;br /&gt;
*[[Cervantes]]: Quick Reply box&lt;br /&gt;
*[[Martin]]: Add an RSS feed option for various forums. (Can you say awesome?) Yes  '''''ADDED''''' but buggy&lt;br /&gt;
*[[Martin]]: Timed bans. Like, so I can ban someone for three days and when they login it'd say You have been banned (by [[Martin]]) for whatever reason. There is &amp;lt;x&amp;gt; much time remaining. Then I wouldn't have to feel so guilty.&lt;br /&gt;
*[[Martin]]: Get rid of the stupid 'You have a message!' sound that plays and makes the page layout go nuts. '''''ADDED in v2 as well'''''&lt;br /&gt;
*[[Rizzix]]: Allow for moderator feedback: aka tutorial rejection. This will help improve the quality of tutorials available on compsci.&lt;br /&gt;
*[[Amailer]]: (Maybe) create a system similar to [http://codex.gallery2.org/index.php/Main_Page Gallery2] '''''A image system like it has be added but not that.'''''&lt;br /&gt;
*[[Martin]]: Buddy list to make finding people easier when you want to PM them.&lt;br /&gt;
*[[Tony]]: wiki like bbcode linking&lt;br /&gt;
*[[Cervantes]]: Link to Bit Log in profiles (only visible to that user, such as Attachment Control Panel, or mods)&lt;br /&gt;
::Done but in a new usercp system. Same idea but better.&lt;br /&gt;
::--Hacker Dan 00:09, 21 February 2006 (PST)&lt;br /&gt;
*[[Gandalf]]: Time of last log in, on the profile page.&lt;br /&gt;
::I think this is vissable to every one, tho it could be mods only.&lt;br /&gt;
::--Hacker Dan 00:09, 21 February 2006 (PST)&lt;br /&gt;
*[[Martin]]: Registration that registers you both on the wiki and compsci.ca with the same account.&lt;br /&gt;
::Added but buggy for now. Also set up for testing with v2.&lt;br /&gt;
::--Hacker Dan 00:09, 21 February 2006 (PST)&lt;br /&gt;
*[[Cornflake]]: Fix the post boxes to fill the entire screen width wise. It's not that hard, and it makes things so much nicer.&lt;br /&gt;
::This may not be posiable in V3 due to a difrent layout for post boxes, i will look in to it tho.&lt;br /&gt;
::--Hacker Dan 13:14, 16 February 2006 (PST)&lt;br /&gt;
:::Added but was not so easy as you may think to do.&lt;br /&gt;
:::--Hacker Dan 16:40, 26 February 2006 (PST)&lt;br /&gt;
*[[Gandalf]]: An easy way of quoting multiple people so that it shows their name above the quote (ie. one solution would be the quote button, except make it show in the &amp;quot;Topic Review&amp;quot; below the &amp;quot;Post a Reply&amp;quot; box).&lt;br /&gt;
&lt;br /&gt;
===In Development===&lt;br /&gt;
*[[Hacker Dan]]: Automated security systems&lt;br /&gt;
*[[Martin]]: Fix firefox glow '''''May not be possible'''''&lt;br /&gt;
:Then can we just get rid of it, or at least disable the colours for the name that are impossible/difficult to see on real web browsers (such as white)?&lt;br /&gt;
:--[[User:Martin|Martin]] 22:47, 5 February 2006 (PST)&lt;br /&gt;
*[[Cornflake]]: Tutorial link to wiki [[Tutorials]] page&lt;br /&gt;
*[[Hikaru79]]: Not having edits, count towards your post/minute timer (so you can edit posts right after you made them if you noticed a problem).&lt;br /&gt;
*[[rizzix]]: List users by rank, where the rank is the bits/posts ratio.&lt;br /&gt;
*[[rizzix]]: Support for user projects: Homepage, CVS, Bugtracker, Development timeline graphs, etc. '''''Partly Added, the CVS part, partly'''''&lt;br /&gt;
:Subversion, not CVS... please.&lt;br /&gt;
:--[[User:Martin|Martin]] 22:47, 5 February 2006 (PST)&lt;br /&gt;
::Acuatly it is subversion not CVS that i added, my bad =p&lt;br /&gt;
::--[[User:65.39.11.90|65.39.11.90]] 11:08, 7 February 2006 (PST)&lt;br /&gt;
&lt;br /&gt;
===Considering===&lt;br /&gt;
*[[rizzix]]: Support for user project bounties.&lt;br /&gt;
*[[rizzix]]: Improved award system. Make the awards a little more visible, i.e. not hidden deep within the user's profile.&lt;br /&gt;
:It would be cool if at the top right of your post (to the left of the edit button) there was a list of clickable 16x16 icons representing the awards. Each award could have a description attached to it, like - 'awarded to so and so for winning this contest on this day.' Probably kind of time consuming to add though.&lt;br /&gt;
:[[User:Martin|Martin]] 00:31, 1 February 2006 (PST)&lt;br /&gt;
::Cool maybe but it whould make the posts to corwed with infromation and start looking bad, esptaly if some users had many awards&lt;br /&gt;
::--[[User:Hacker Dan|24.109.165.77]] 10:19, 4 February 2006 (PST)&lt;br /&gt;
:::In that case, it could be the most recent five awards or whaever.&lt;br /&gt;
:::--[[User:Martin|Martin]] 02:50, 5 February 2006 (PST)&lt;br /&gt;
::::In the profile maybe, but right on the persons posts seems a bit much. Tho i could posbliy make a system for the user to put them in there sig. [[Hacker Dan]]--[[User:24.109.165.77|24.109.165.77]] 14:38, 5 February 2006 (PST)&lt;br /&gt;
:::::Instead, maybe just a single trophy button with a number beside it showing the number of trophies that the user has. Like: ''Y(3)'' (with the Y being a picture of a trophy or something)&lt;br /&gt;
:::::--[[User:Martin|Martin]] 16:49, 5 February 2006 (PST)&lt;br /&gt;
*[[rizzix]]: A WYSIWYG editor, for those who don't like using bbcode or wiki&lt;br /&gt;
*[[Martin]]: Code snippits section where users can submit complete code designed to be used with other people's applications (thus making it easy for people looking for a certain feature to find it).&lt;br /&gt;
*[[Cervantes]]: Change the character limit in signatures.  From what I can tell, it's currently a limit before BBCode tags are applied.  Having lots of colour and links may make a single sentance too long.  Also, no images in sigs.&lt;br /&gt;
::This may be hard to conrtol BBCode/HTML wise, and serveral users incuding my self use images in there sigs in ways that are not bothersoom to most users. &lt;br /&gt;
::--Hacker Dan 13:14, 16 February 2006 (PST)&lt;br /&gt;
&lt;br /&gt;
===Rejected===&lt;br /&gt;
*[[Amailer]]: [http://www.phpbb.com/phpBB/viewtopic.php?t=282881 Google Integrated Search] so that it will take alot less time to search and you'll be able to get better results.&lt;br /&gt;
:: I like it in theory but it could cause the bot problems we had b4 to come back. [[Hacker Dan]]--[[User:24.109.165.77|24.109.165.77]] 14:38, 5 February 2006 (PST)&lt;br /&gt;
*[[Amailer]]: [http://www.phpbb.com/phpBB/viewtopic.php?t=289721 Democracy MOD 0.1.4 (reputation + warnings + reports)] '''''Difrent mod being used for same thing'''''&lt;br /&gt;
*[[Martin]]: Hookers. '''''Added....i mean WTF???'''''&lt;br /&gt;
*[[rizzix]]: Allow for wiki sytle editing, as an alternative to bbcode. '''''I don't know about that one....'''''&lt;br /&gt;
*[[rizzix]]: Give the tutorial's author bits/month for ''x'' number of years, based on the rating his tutorial has received (since we already have the rating system implemented). This will help improve the number of quality articles we have here on compsci, and will truly reflect the rank of the user.&lt;br /&gt;
::I am planing on having a bits for rating system but it will be based on some difrent math&lt;br /&gt;
::[[Hacker Dan]]--[[User:24.109.165.77|24.109.165.77]] 18:12, 8 February 2006 (PST)&lt;br /&gt;
*[[Amailer]]: Since you guys are removing the edit button because you don't know what the origional content was, how about making a system, similar to wikies which has the edit history? No need for it to be able to un-do it all, but yeah, you would be able to check what has been edited. (you can just put the diffrent versions insted of the + and - thigns)&lt;br /&gt;
::We are not removing the edit buttion&lt;br /&gt;
::[[Hacker Dan]]--[[User:24.109.165.77|24.109.165.77]] 18:12, 8 February 2006 (PST)&lt;br /&gt;
*[[Martin]]: A way for normal users to flag a topic that is spam/abusive/whatever. Just a flag this topic button, and then the administrators could get a list of all flagged topics. Administrators could then deal with the topic and remove the flag afterwards. Also, hookers.&lt;br /&gt;
::All ready added......other then the hookers....&lt;br /&gt;
::[[Hacker Dan]] --Hacker Dan 08:41, 11 February 2006 (PST)&lt;br /&gt;
*[[Iker]]: We need more cowbell&lt;br /&gt;
::We need more what now? [http://www.fridayfishwrap.com/wp/wp-content/images/cowbell.jpg Cowbell?]&lt;br /&gt;
::[[Hacker Dan]] --[[User:24.109.165.77|24.109.165.77]] 18:12, 8 February 2006 (PST)&lt;br /&gt;
*[[Iker]]: An &amp;quot;auto lock&amp;quot; on all topics older then x days. This way, we don't have to worry about new people not reading the rules, and none of us have to bitch at them for doing it :)&lt;br /&gt;
::You know, um I thought the reason why forums keept the old posts was because people can come back to them; why do we flame people when they post in old topics? Unless the topic has already been solved (or disucssion was over). Suppose it was a help topic, and a person just signed up and knew the answer (the topic didn't get a proper answer when it was made)- so isn't the user allowed to post in it?&lt;br /&gt;
::--[[User:Amailer|Amailer]] 14:21, 11 February 2006 (PST)&lt;br /&gt;
:::This option will be aviable to the staff for some forums but i do not plan on excuiting it just yet.&lt;br /&gt;
:::--Hacker Dan 13:14, 16 February 2006 (PST)&lt;br /&gt;
::::Amailer - the problem is that people aren't adding to the discussion. Every post in an old topic I've seen has been something like &amp;quot;Hey, nice work!&amp;quot;&lt;br /&gt;
::::--[[User:Martin|Martin]] 18:26, 16 February 2006 (PST)&lt;br /&gt;
*[[Cervantes]]: Commenting for changing bits&lt;br /&gt;
:: A bits log for sure but i don't know about making a comeeting section for every bits chage, i think that is more for what PMing is for. [[Hacker Dan]]--[[User:24.109.165.77|24.109.165.77]] 14:38, 5 February 2006 (PST)&lt;br /&gt;
*[[rizzix]]: Improved tutorial writing system: provides the ability to work on tutorials in offline mode, (a publishing system). The ability take a tutorial offline, edit it, improve it, and re-publish it. Force all tutorials to be approved by ''any'' moderator before it is displayed online. '''''Not going to happen unless some one whonts to write the offline software and backend script to handel post uploads'''''&lt;br /&gt;
::That is not what I meant. By offline I mean you take it off display, and put it into a Tutorial box or something.  It is basically a publishing system. Do reconsider.&lt;br /&gt;
::--[[rizzix]] 11:39, 5 February 2006 (PST)&lt;br /&gt;
:::I am considering it, tho it may make things more complicated. --[[User:24.109.165.77|24.109.165.77]] 14:32, 5 February 2006 (PST)&lt;br /&gt;
::::User will have a notepad where they can write anything they whont and store it in there usercp.&lt;br /&gt;
::::--Hacker Dan 00:09, 21 February 2006 (PST)&lt;br /&gt;
:::::All good, now can we &amp;quot;publish&amp;quot; those &amp;quot;notes&amp;quot; as tutorials? Also, if a mod rejects a tutorial, make sure it goes back into his cp. =)&lt;br /&gt;
:::::--[[User:Rizzix|rizzix]] 17:07, 22 February 2006 (PST)&lt;br /&gt;
*[[rizzix]]: In-place post editing. That is, display the whole page as it would normally show up when viewing posts, but make the post marked for editing, editable. ( hint: AJAX )&lt;br /&gt;
::AJAX is gr8 and all but can some times overly complicate things. [[Hacker Dan]]--[[User:24.109.165.77|24.109.165.77]] 14:38, 5 February 2006 (PST)&lt;br /&gt;
::: It makes things simpler on the user end. (c'mon stop complaining :p) Of course, no rush here, you can safely move it to V4 :)&lt;br /&gt;
::: --[[rizzix]] 19:14, 5 February 2006 (PST)&lt;br /&gt;
::::More work needs to be done in the filed of joining phpbb and ajax, i could see this in the futtuer for v4 since we whont to rewrite everything.&lt;br /&gt;
::::--Hacker Dan 00:09, 21 February 2006 (PST)&lt;br /&gt;
&lt;br /&gt;
===Requested===&lt;br /&gt;
&lt;br /&gt;
*[[Martin]]: When editing posts, default to silent edit when it's someone else's post, but to a normal (tagged) edit when editing your own posts.&lt;br /&gt;
::I thought it all ready worked like this, lol. I will look in to it....&lt;br /&gt;
::--Hacker Dan 13:14, 16 February 2006 (PST)&lt;br /&gt;
*[[Martin]]: Probably the best idea ever - switch the post boxes to use a fixed width font. Writing code in them as it stands is very difficult.&lt;br /&gt;
::How whould a fixed width make writing code easyer? Or do u mean a way to allow for tabing and other formating like in most editors?&lt;br /&gt;
::--Hacker Dan 13:14, 16 February 2006 (PST)&lt;br /&gt;
:::Because it would make spaces lines line up properly, so if you need to type a five line code snippit you don't have to worry about your comments not being aligned and such. Maybe an option in the user's profile to choose the editing font?&lt;br /&gt;
:::--[[User:Martin|Martin]] 16:01, 16 February 2006 (PST)&lt;br /&gt;
*[[rizzix]]: Link or redirect wiki discussions to the respective topic in a Wiki forum in phpbb.&lt;br /&gt;
::I am not shure how you mean for this to be done, could you give an example of some kind?&lt;br /&gt;
::--Hacker Dan 13:14, 16 February 2006 (PST)&lt;br /&gt;
:::Yea. I'll give you two ideas (but you can definitely improve on them), choose either one:&lt;br /&gt;
:::1) If the discussions tab is clicked the first time, then redirect the user to a page that asks him if he wants to create a new discussion in the phpbb section. If he accepts then create a new topic (e.g. for our V3 page it could be &amp;quot;V3 Talk&amp;quot;) in a &amp;quot;Wiki&amp;quot; forum. Yea you would need to create a whole new forum for Wiki discussions. The next time the discussions tab is clicked it automatically redirects to the respective topic (&amp;quot;V3 Talk&amp;quot;) in the respective forum (&amp;quot;Wiki&amp;quot;).&lt;br /&gt;
:::2) Similar to the first one, where you prompt the user if he/she wants to create a new discussion if it's clicked for the first time etc, but now print out a small non-editable-blurb under the discussions tab that show the last 10 posts from the respective Topic (&amp;quot;V3 Talk&amp;quot;) in the &amp;quot;Wiki&amp;quot; forum. Under that blurb have a quick reply box. =)&lt;br /&gt;
:::--[[User:Rizzix|rizzix]] 16:59, 16 February 2006 (PST)&lt;br /&gt;
*[[User:Cervantes|Cervantes]]: Invisible posts.  Well, not completely invisible.  Posts that only moderators can see.  Perhaps only moderators can make them, or perhaps it would be beneficial to allow all users to make them.  This would sort of act like flagging a topic, as Martin was suggesting, except that it allows for a discussion of what to be done with a topic.  You know, those topics that are in between the &amp;quot;delete/move to hiding place&amp;quot; and &amp;quot;leave alone&amp;quot;, those topics that you just don't quite know what to do with.  Invisible posts may be grouped together at the end of the regular user discussion, interspersed within the discussion, or occupy an invisible thread.  Threads with invisible posts should be coloured differently or some such to easily distinguish them from the rest of the threads.&lt;br /&gt;
::Well currently we just move it to the evidence folder =/&lt;br /&gt;
::--[[User:Rizzix|rizzix]] 14:58, 19 February 2006 (PST)&lt;br /&gt;
:::I thought that was what the staff forums where for. If there is a questional tpoic the idea is to post in the staff forum about it.&lt;br /&gt;
:::--Hacker Dan 16:29, 19 February 2006 (PST)&lt;br /&gt;
::::I'm telling you guys, stealth bans are where it's at. If a stealth banned user makes a post, the post gets entered into the database but is marked as stealth banned. Users only see posts that aren't stealth banned (although stealth banned users can see their own posts as well). It'd be awesome. All the stupid people will go nuts trying to figure out why everyone's ignoring them. Actually, having a killfile would be cool.&lt;br /&gt;
::::--[[User:Martin|Martin]] 17:09, 19 February 2006 (PST)&lt;br /&gt;
:::::Rizzix/Hacker Dan, there are some topics that walk the edge between &amp;quot;leave them alone&amp;quot; and &amp;quot;send to evidence folder&amp;quot;.  Those topics where the poster is an ass and part of you wants to leave him out to dry, and the other part of you feels guilty for doing so.  Those topics where the poster is still receiving help, but users are spamming the topic like there's no tommorow.  What do you do?  You could move it to the evidence folder for staff discussion, then move it back if that's the decision, but in the meantime, what has the poster gone and done?  Posted another topic, of course!  Alternatively, we could make a thread ourselves in the evidence folder to discuss, leaving it where it is for the time being.  But isn't that too much of a hassel?  V3 isn't about absolute necessity, it's about filling its users with trinkets and joys from across the world! (wide web).&lt;br /&gt;
:::::--[[User:Cervantes|Cervantes]] 17:55, 19 February 2006 (PST)&lt;br /&gt;
::::::And... timed stealth bans! The user doesn't even know that they were banned - it'd be great.&lt;br /&gt;
::::::--[[User:Martin|Martin]] 18:23, 19 February 2006 (PST)&lt;br /&gt;
:::::::Yes Martin, they would be good.  I guess you're flaunting them so madly in this request because it's essentially setting all the stealth banned user's posts to be invisible posts visible only to himself?&lt;br /&gt;
:::::::--[[User:Cervantes|Cervantes]] 16:33, 20 February 2006 (PST)&lt;br /&gt;
:::::Cervantes what i ment is that when i come arocess a post that i do not know what to do with i make a post in the staff forum (not move the post in question) or message other mods (threw, msn, irc or pm) for there option. I think that screct posts whould make things overcomplicated and screct bans seems kind of crazy to me. Maybe somthing making so they can not post in a speficed thread or fourm.&lt;br /&gt;
:::::--Hacker Dan 22:48, 20 February 2006 (PST)&lt;br /&gt;
*[[Cervantes]]: The quoting system in v3 now is nice, but it led me to one more improvement: automatic linking to the post the quotation came from. This would be okay for quoting within threads, but is even more useful when you quote someone from another thread (click the quote button the copy and paste the BBCode into the other thread's reply box).&lt;br /&gt;
&lt;br /&gt;
==Things left to do for V3==&lt;br /&gt;
Not usefull to any one but Hacker Dan, but just easy to keep track of this way for him:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;strike&amp;gt;Edit private message welcome&amp;lt;/strike&amp;gt;&lt;br /&gt;
*&amp;lt;strike&amp;gt;Errors on forum (posting)&amp;lt;/strike&amp;gt;&lt;br /&gt;
*&amp;lt;strike&amp;gt;remove aditional info on fourm names (moderator info)&amp;lt;/strike&amp;gt;&lt;br /&gt;
*&amp;lt;strike&amp;gt;posbly remove style drop down&amp;lt;/strike&amp;gt;&lt;br /&gt;
*reoreder nav links&lt;br /&gt;
*&amp;lt;strike&amp;gt;remove &amp;quot;switch to invisible&amp;quot;&amp;lt;/strike&amp;gt;&lt;br /&gt;
*&amp;lt;strike&amp;gt;remove download modual&amp;lt;/strike&amp;gt;&lt;br /&gt;
*&amp;lt;strike&amp;gt;add shop for item pool&amp;lt;/strike&amp;gt;&lt;br /&gt;
*&amp;lt;strike&amp;gt;chage name of knowledge base link&amp;lt;/strike&amp;gt;&lt;br /&gt;
*&amp;lt;strike&amp;gt;chage pic of knowledge base&amp;lt;/strike&amp;gt; '''''Thanks to amailer'''''&lt;br /&gt;
*&amp;lt;strike&amp;gt;fix knowledge base approval system&amp;lt;/strike&amp;gt;&lt;br /&gt;
*&amp;lt;strike&amp;gt;remove lexicon&amp;lt;/strike&amp;gt;&lt;br /&gt;
*&amp;lt;strike&amp;gt;make portal pages&amp;lt;/strike&amp;gt;&lt;br /&gt;
*&amp;lt;strike&amp;gt;add in wiki and blog nav links&amp;lt;/strike&amp;gt;&lt;br /&gt;
*&amp;lt;strike&amp;gt;try to fix time zones&amp;lt;/strike&amp;gt;&lt;br /&gt;
*&amp;lt;strike&amp;gt;fix order of smiles&amp;lt;/strike&amp;gt;&lt;br /&gt;
*&amp;lt;strike&amp;gt;check spell checker&amp;lt;/strike&amp;gt; &amp;lt;strike&amp;gt;Fix spell checker&amp;lt;/strike&amp;gt;&lt;br /&gt;
*&amp;lt;strike&amp;gt;add user controal panale links&amp;lt;/strike&amp;gt;&lt;br /&gt;
*&amp;lt;strike&amp;gt;edit user aggremnt&amp;lt;/strike&amp;gt; Make new rules page&lt;br /&gt;
*&amp;lt;strike&amp;gt;chage post icon setings&amp;lt;/strike&amp;gt;&lt;br /&gt;
*&amp;lt;strike&amp;gt;fix flash bbcode and others&amp;lt;/strike&amp;gt; &amp;lt;strike&amp;gt;fix or remove flash bbcode&amp;lt;/strike&amp;gt;&lt;br /&gt;
*&amp;lt;strike&amp;gt;set up anwsered/unawsered system&amp;lt;/strike&amp;gt;&lt;br /&gt;
*&amp;lt;strike&amp;gt;edit footer&amp;lt;/strike&amp;gt; &amp;lt;strike&amp;gt;check out backend.php&amp;lt;/strike&amp;gt;&lt;br /&gt;
*edit faq&lt;br /&gt;
*&amp;lt;strike&amp;gt;add event types&amp;lt;/strike&amp;gt;&lt;br /&gt;
*&amp;lt;strike&amp;gt;fix link to use modual&amp;lt;/strike&amp;gt;&lt;br /&gt;
*&amp;lt;strike&amp;gt;fix contact us deparments&amp;lt;/strike&amp;gt;&lt;br /&gt;
*&amp;lt;strike&amp;gt;reorder moduals&amp;lt;/strike&amp;gt;&lt;br /&gt;
*add knowledge base rankings&lt;br /&gt;
*deal with user requests&lt;br /&gt;
*&amp;lt;strike&amp;gt;chage KB tag&amp;lt;/strike&amp;gt;&lt;br /&gt;
*&amp;lt;strike&amp;gt;fix IE errors/warnings&amp;lt;/strike&amp;gt;&lt;br /&gt;
*&amp;lt;strike&amp;gt;make footer look nicer&amp;lt;/strike&amp;gt;&lt;br /&gt;
*&amp;lt;strike&amp;gt;add wiki bbcode&amp;lt;/strike&amp;gt;&lt;br /&gt;
*&amp;lt;strike&amp;gt;fix pm notifaction&amp;lt;/strike&amp;gt;&lt;br /&gt;
*add in compsci.ca bits mod&lt;br /&gt;
*add in compsci.ca bits log mod&lt;br /&gt;
*add in compsci.ca shop effect sell mod&lt;br /&gt;
*get some sleep&lt;br /&gt;
*work on KB combaity by making notice go to old tutoral forms&lt;br /&gt;
*&amp;lt;strike&amp;gt;Play with RSS Feed&amp;lt;/strike&amp;gt; Add info to tell users how to use RSS&lt;br /&gt;
*Test timed bans&lt;br /&gt;
*&amp;lt;strike&amp;gt;fix up pm message&amp;lt;/strike&amp;gt;&lt;br /&gt;
*KB noftication on rejection and reason&lt;br /&gt;
*Test image system&lt;br /&gt;
*&amp;lt;strike&amp;gt;Look in to and add secuirty systems&amp;lt;/strike&amp;gt;&lt;br /&gt;
*disable glow for non-IE&lt;br /&gt;
*&amp;lt;strike&amp;gt;bits log link in profile (only visable to staff + user)&amp;lt;/strike&amp;gt;&lt;br /&gt;
*&amp;lt;strike&amp;gt;time last login in profile&amp;lt;/strike&amp;gt;&lt;br /&gt;
*Link to wiki tutoral page&lt;br /&gt;
*look in to edits spam timer&lt;br /&gt;
*&amp;lt;strike&amp;gt;dual registeration&amp;lt;/strike&amp;gt;&lt;br /&gt;
*add registeration feilds&lt;br /&gt;
*more user listing options in member list&lt;br /&gt;
*&amp;lt;strike&amp;gt;play with subversion ideas&amp;lt;/strike&amp;gt;&lt;br /&gt;
*look in to google integrated search&lt;br /&gt;
*look in to user project bounties system&lt;br /&gt;
*look in to increasing visiblity of user awards&lt;br /&gt;
*&amp;lt;strike&amp;gt;look in to phpbb AJAX (http://www.phpbb.com/phpBB/viewtopic.php?t=348995)&amp;lt;/strike&amp;gt; '''''Pushed to V4'''''&lt;br /&gt;
*better error pages&lt;br /&gt;
*&amp;lt;strike&amp;gt;find copy right for compsci.ca&amp;lt;/strike&amp;gt;&lt;br /&gt;
*&amp;lt;strike&amp;gt;make it so only user can make wiki edits&amp;lt;/strike&amp;gt;&lt;br /&gt;
*add mods&lt;br /&gt;
*look in to blog software and intergation with phpbb&lt;br /&gt;
*edit help page for irc&lt;br /&gt;
*make watermark for irc&lt;br /&gt;
*make censor optional for users&lt;br /&gt;
*fix up irc look.&lt;br /&gt;
*add portal info block&lt;br /&gt;
*add user dev page&lt;br /&gt;
*add more smiles&lt;br /&gt;
*check in to page refresh issues&lt;br /&gt;
*make/chage favicon and logo&lt;br /&gt;
*fix stats page&lt;br /&gt;
&lt;br /&gt;
==Alpha Verson==&lt;br /&gt;
===Alpha Testers===&lt;br /&gt;
Aplha users are limited to staff only. &amp;lt;strike&amp;gt;If you are staff list your name below to sign up for the v3 alpha test.&amp;lt;/strike&amp;gt; Alpha test regestration is now closed, the flowing are the alpha testers:&lt;br /&gt;
&lt;br /&gt;
*[[Hacker Dan]]&lt;br /&gt;
*[[rizzix]]&lt;br /&gt;
*[[Tony]]&lt;br /&gt;
*[[Martin]]!&lt;br /&gt;
*[[Cervantes]]&lt;br /&gt;
*[[Amailer]]&lt;br /&gt;
&lt;br /&gt;
===Bug Report===&lt;br /&gt;
Please list your name, the browser you are using, the time and date, the error, the url, what you were doing and the bug below:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Comments and Suggestions===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Beta Version==&lt;br /&gt;
===Beta Testers===&lt;br /&gt;
Any users in good standing may sign up for the beta test. The beta test will begin after all the bugs and chages recommended in the alpha test are made/done. Not all users signed up will get to be a beta tester and order of signing up may or may not matter.&lt;br /&gt;
&lt;br /&gt;
*[[Hacker Dan]]&lt;br /&gt;
*[[Cornflake]]&lt;br /&gt;
*[[El Comandante]]&lt;br /&gt;
*rdrake/cartoon_shark&lt;br /&gt;
*[[Pwned]]&lt;br /&gt;
*[[Martin]]!&lt;br /&gt;
*[[Cervantes]]&lt;br /&gt;
*[[Gandalf]]&lt;br /&gt;
*[[rizzix]]&lt;br /&gt;
*[[Hikaru79]]&lt;br /&gt;
*[[Iker]]&lt;br /&gt;
*[[Jamonathin]]&lt;br /&gt;
*[[Timmytheturtle]]&lt;br /&gt;
*[[TheFerret]]&lt;br /&gt;
&lt;br /&gt;
===Bug Report===&lt;br /&gt;
Please list your name, the brower you are using, the time and date, the error, the url, what you were doing and the bug below:&lt;br /&gt;
&lt;br /&gt;
===Comments and Suggestions===&lt;br /&gt;
&lt;br /&gt;
==V3 Previews==&lt;br /&gt;
===V3 Hoax Preview===&lt;br /&gt;
The following was rumored to be a pic of [[the]] V3 system:&lt;br /&gt;
[[Image:compsci_v3.jpg|left|thumb|150px|V3 Hoax]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===V3 Pre-Alpha Preview===&lt;br /&gt;
Here are some pics of what V3 could look like in Alpha verson, although everything is subject to change. Hopefully this will give people some new ideas to suggest and a better idea of what is going on:&lt;br /&gt;
&lt;br /&gt;
[[Image:v3chat.jpg|left|thumb|150px|IRC Chat Room]]&lt;br /&gt;
[[Image:v3index.jpg|left|thumb|150px|Forum Index]]&lt;br /&gt;
[[Image:v3index2.jpg|left|thumb|150px|Forum Index]]&lt;br /&gt;
[[Image:v3index3.jpg|left|thumb|150px|Forum Index]]&lt;br /&gt;
[[Image:v3cal.jpg|left|thumb|150px|Calander]]&lt;br /&gt;
[[Image:v3usercp.jpg|left|thumb|150px|User CP]]&lt;br /&gt;
[[Image:v3tanda.jpg|left|thumb|150px|Tutorials &amp;amp; Articles]]&lt;br /&gt;
[[Image:v3portal.jpg|left|thumb|150px|Portal]]&lt;br /&gt;
[[Image:V3smallrez.JPG|left|thumb|150px|Small Rez Index]]&lt;/div&gt;</summary>
		<author><name>TheFerret</name></author>	</entry>

	<entry>
		<id>http://wiki.compsci.ca/index.php?title=The_Poormans_Firetruckl</id>
		<title>The Poormans Firetruckl</title>
		<link rel="alternate" type="text/html" href="http://wiki.compsci.ca/index.php?title=The_Poormans_Firetruckl"/>
				<updated>2006-02-28T04:50:30Z</updated>
		
		<summary type="html">&lt;p&gt;TheFerret: Part 2&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Poorman's fire truck==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(23:05) · +rdrake · I can draw, surprisingly well I've been told&lt;br /&gt;
(23:05) · @Ultrahex · me 2 , i can draw lines&lt;br /&gt;
(23:05) · @Ultrahex · really good apparently&lt;br /&gt;
(23:05) · @Ultrahex · lol&lt;br /&gt;
(23:05) · +rdrake · circles too?&lt;br /&gt;
(23:05) · @Ultrahex · yes on a computer&lt;br /&gt;
(23:05) · @Ultrahex · lol&lt;br /&gt;
(23:05) · +rdrake · impressive&lt;br /&gt;
(23:06) · @Ultrahex · almost perfect circles on a computer :P&lt;br /&gt;
(23:06) · +rdrake · can you draw ovals too?&lt;br /&gt;
(23:06) · @Ultrahex · naw i failed that class&lt;br /&gt;
(23:06) · +rdrake · ah, damn&lt;br /&gt;
(23:06) · +timmytheturtle · what class you fail?&lt;br /&gt;
(23:06) · @Ultrahex · that oval drawing class was hard&lt;br /&gt;
(23:06) · +rdrake · wouldn't doubt it&lt;br /&gt;
(23:06) · +rdrake · wait until you get to pentagons&lt;br /&gt;
(23:07) · +rdrake · that's some hard stuff right there&lt;br /&gt;
(23:07) · @Ultrahex · ugh im already in octagon class&lt;br /&gt;
(23:07) · @Ultrahex · its freaking impossible&lt;br /&gt;
(23:07) · +rdrake · oh wow&lt;br /&gt;
(23:07) · @Ultrahex · only this one kid can draw them&lt;br /&gt;
(23:07) · @Ultrahex · but he uses a stencil and im too poor for a stencil&lt;br /&gt;
(23:07) · +timmytheturtle · lol&lt;br /&gt;
(23:07) · +rdrake · that kid must've failed several times already before getting that far&lt;br /&gt;
(23:07) · @Ultrahex · ya really&lt;br /&gt;
(23:08) · +rdrake · get him to draw one of his stencil shapes on a piece of cardboard&lt;br /&gt;
(23:08) · +rdrake · then cut it out and you have a stencil too&lt;br /&gt;
(23:08) · @Ultrahex · OMG why haven't i thought of that&lt;br /&gt;
(23:08) · @Ultrahex · minute hes an asshole why would he let me do that&lt;br /&gt;
(23:08) · +timmytheturtle · can you even afford cardboard?&lt;br /&gt;
(23:08) · @Ultrahex · oh ya&lt;br /&gt;
(23:08) · @Ultrahex · ...&lt;br /&gt;
(23:08) · @Ultrahex · hmmm&lt;br /&gt;
(23:08) · @Ultrahex · oh no the libraries closing&lt;br /&gt;
(23:08) · +rdrake · he doesn't even have to know you're using it&lt;br /&gt;
(23:08) · @Ultrahex · i gtg&lt;br /&gt;
(23:08) · +rdrake · bye&lt;br /&gt;
(23:08) · +timmytheturtle · so long&lt;br /&gt;
(23:09) · @Ultrahex · lol IM JK&lt;br /&gt;
(23:09) · +rdrake · library at 11?&lt;br /&gt;
(23:09) · +rdrake · was gonna say...&lt;br /&gt;
(23:09) · @Ultrahex · ya i broke in already&lt;br /&gt;
(23:09) · +timmytheturtle · hes at home...no library would you rogers for an isp&lt;br /&gt;
(23:09) · @Ultrahex · mine would&lt;br /&gt;
(23:09) · @Ultrahex · lol&lt;br /&gt;
(23:09) · @Ultrahex · i have my own library thats right :P JK&lt;br /&gt;
(23:10) · @Ultrahex · dont know where the fuck i put it man&lt;br /&gt;
(23:10) · @Ultrahex · this is not good me being up so late&lt;br /&gt;
(23:10) · @Ultrahex · i have to go driving tomorrow&lt;br /&gt;
(23:10) · @Ultrahex · lol&lt;br /&gt;
(23:11) · @Ultrahex · everyone stay off the roads&lt;br /&gt;
(23:11) · @Ultrahex · lol&lt;br /&gt;
(23:11) · +rdrake · I'll hide in my basement&lt;br /&gt;
(23:11) · @Ultrahex · ya&lt;br /&gt;
(23:11) · @Ultrahex · i drive the fire truck&lt;br /&gt;
(23:11) · @Ultrahex · lol&lt;br /&gt;
(23:11) · +TheFerret · im glad i dont live near you... lol&lt;br /&gt;
(23:11) · +rdrake · big red one?&lt;br /&gt;
(23:11) · @Ultrahex · yellow :(&lt;br /&gt;
(23:11) · +rdrake · ah&lt;br /&gt;
(23:11) · @Ultrahex · or orange&lt;br /&gt;
(23:11) · +timmytheturtle · ours are yellow&lt;br /&gt;
(23:11) · @Ultrahex · whatever&lt;br /&gt;
(23:11) · +rdrake · I don't wanna be seen in a yellow firetruck&lt;br /&gt;
(23:11) · +rdrake · red or nothing&lt;br /&gt;
(23:11) · +timmytheturtle · what about on fire?&lt;br /&gt;
(23:11) · @Ultrahex · however its normally red after i get done with it&lt;br /&gt;
(23:11) · @Ultrahex · lol&lt;br /&gt;
(23:12) · +rdrake · probably wouldn't burn all that well&lt;br /&gt;
(23:12) · +TheFerret · lol&lt;br /&gt;
(23:12) · @Ultrahex · its made out of cardboard...&lt;br /&gt;
(23:12) · +rdrake · well in that case&lt;br /&gt;
(23:12) · @Ultrahex · and no its not fireproof cardboard&lt;br /&gt;
(23:13) · +rdrake · none of that fancy stuff?&lt;br /&gt;
(23:13) · @Ultrahex · nah&lt;br /&gt;
(23:13) · @Ultrahex · the lights are just painted on&lt;br /&gt;
(23:13) · @Ultrahex · we have to get someone to draw the change in sirens on every so often&lt;br /&gt;
(23:13) · +rdrake · I would've just used tin can lids&lt;br /&gt;
(23:13) · +TheFerret · lol&lt;br /&gt;
(23:13) · +rdrake · here's a better idea, use a soup can and rotate it&lt;br /&gt;
(23:13) · @Ultrahex · well ya ... we couldn't find any cans... we live in a canless town&lt;br /&gt;
(23:13) · +rdrake · it'll shine and makie it look like a siren&lt;br /&gt;
(23:14) · +rdrake · bottles then&lt;br /&gt;
(23:14) · @Ultrahex · dont got any of those also...&lt;br /&gt;
(23:14) · +timmytheturtle · plastic?&lt;br /&gt;
(23:14) · +rdrake · cartons?&lt;br /&gt;
(23:14) · +rdrake · sippy cups?&lt;br /&gt;
(23:14) · +rdrake · anything round would do&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Part 2===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(23:42:35) (TheFerret) done and done, even with a type, http://compsci.ca/wiki/index.php?title=The_Poormans_Firetruckl&lt;br /&gt;
(23:42:23) (TheFerret) no, my og&lt;br /&gt;
(23:42:24) (TheFerret) log*&lt;br /&gt;
(23:42:44) (@Ultrahex^PoorFireMan�02�) oh&lt;br /&gt;
(23:42:52) (TheFerret) crap... lol typo&lt;br /&gt;
(23:42:53) (@Ultrahex^PoorFireMan�02�) nice l on the end&lt;br /&gt;
(23:42:55) (@Ultrahex^PoorFireMan�02�) lol&lt;br /&gt;
(23:43:09) (TheFerret) its a exclimation mark&lt;br /&gt;
(23:43:12) (TheFerret) in desguise&lt;br /&gt;
(23:43:20) (@Ultrahex^PoorFireMan) lol�&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>TheFerret</name></author>	</entry>

	<entry>
		<id>http://wiki.compsci.ca/index.php?title=The_Poormans_Firetruckl</id>
		<title>The Poormans Firetruckl</title>
		<link rel="alternate" type="text/html" href="http://wiki.compsci.ca/index.php?title=The_Poormans_Firetruckl"/>
				<updated>2006-02-28T04:42:20Z</updated>
		
		<summary type="html">&lt;p&gt;TheFerret: Created Page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Poorman's fire truck==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(23:05) · +rdrake · I can draw, surprisingly well I've been told&lt;br /&gt;
(23:05) · @Ultrahex · me 2 , i can draw lines&lt;br /&gt;
(23:05) · @Ultrahex · really good apparently&lt;br /&gt;
(23:05) · @Ultrahex · lol&lt;br /&gt;
(23:05) · +rdrake · circles too?&lt;br /&gt;
(23:05) · @Ultrahex · yes on a computer&lt;br /&gt;
(23:05) · @Ultrahex · lol&lt;br /&gt;
(23:05) · +rdrake · impressive&lt;br /&gt;
(23:06) · @Ultrahex · almost perfect circles on a computer :P&lt;br /&gt;
(23:06) · +rdrake · can you draw ovals too?&lt;br /&gt;
(23:06) · @Ultrahex · naw i failed that class&lt;br /&gt;
(23:06) · +rdrake · ah, damn&lt;br /&gt;
(23:06) · +timmytheturtle · what class you fail?&lt;br /&gt;
(23:06) · @Ultrahex · that oval drawing class was hard&lt;br /&gt;
(23:06) · +rdrake · wouldn't doubt it&lt;br /&gt;
(23:06) · +rdrake · wait until you get to pentagons&lt;br /&gt;
(23:07) · +rdrake · that's some hard stuff right there&lt;br /&gt;
(23:07) · @Ultrahex · ugh im already in octagon class&lt;br /&gt;
(23:07) · @Ultrahex · its freaking impossible&lt;br /&gt;
(23:07) · +rdrake · oh wow&lt;br /&gt;
(23:07) · @Ultrahex · only this one kid can draw them&lt;br /&gt;
(23:07) · @Ultrahex · but he uses a stencil and im too poor for a stencil&lt;br /&gt;
(23:07) · +timmytheturtle · lol&lt;br /&gt;
(23:07) · +rdrake · that kid must've failed several times already before getting that far&lt;br /&gt;
(23:07) · @Ultrahex · ya really&lt;br /&gt;
(23:08) · +rdrake · get him to draw one of his stencil shapes on a piece of cardboard&lt;br /&gt;
(23:08) · +rdrake · then cut it out and you have a stencil too&lt;br /&gt;
(23:08) · @Ultrahex · OMG why haven't i thought of that&lt;br /&gt;
(23:08) · @Ultrahex · minute hes an asshole why would he let me do that&lt;br /&gt;
(23:08) · +timmytheturtle · can you even afford cardboard?&lt;br /&gt;
(23:08) · @Ultrahex · oh ya&lt;br /&gt;
(23:08) · @Ultrahex · ...&lt;br /&gt;
(23:08) · @Ultrahex · hmmm&lt;br /&gt;
(23:08) · @Ultrahex · oh no the libraries closing&lt;br /&gt;
(23:08) · +rdrake · he doesn't even have to know you're using it&lt;br /&gt;
(23:08) · @Ultrahex · i gtg&lt;br /&gt;
(23:08) · +rdrake · bye&lt;br /&gt;
(23:08) · +timmytheturtle · so long&lt;br /&gt;
(23:09) · @Ultrahex · lol IM JK&lt;br /&gt;
(23:09) · +rdrake · library at 11?&lt;br /&gt;
(23:09) · +rdrake · was gonna say...&lt;br /&gt;
(23:09) · @Ultrahex · ya i broke in already&lt;br /&gt;
(23:09) · +timmytheturtle · hes at home...no library would you rogers for an isp&lt;br /&gt;
(23:09) · @Ultrahex · mine would&lt;br /&gt;
(23:09) · @Ultrahex · lol&lt;br /&gt;
(23:09) · @Ultrahex · i have my own library thats right :P JK&lt;br /&gt;
(23:10) · @Ultrahex · dont know where the fuck i put it man&lt;br /&gt;
(23:10) · @Ultrahex · this is not good me being up so late&lt;br /&gt;
(23:10) · @Ultrahex · i have to go driving tomorrow&lt;br /&gt;
(23:10) · @Ultrahex · lol&lt;br /&gt;
(23:11) · @Ultrahex · everyone stay off the roads&lt;br /&gt;
(23:11) · @Ultrahex · lol&lt;br /&gt;
(23:11) · +rdrake · I'll hide in my basement&lt;br /&gt;
(23:11) · @Ultrahex · ya&lt;br /&gt;
(23:11) · @Ultrahex · i drive the fire truck&lt;br /&gt;
(23:11) · @Ultrahex · lol&lt;br /&gt;
(23:11) · +TheFerret · im glad i dont live near you... lol&lt;br /&gt;
(23:11) · +rdrake · big red one?&lt;br /&gt;
(23:11) · @Ultrahex · yellow :(&lt;br /&gt;
(23:11) · +rdrake · ah&lt;br /&gt;
(23:11) · @Ultrahex · or orange&lt;br /&gt;
(23:11) · +timmytheturtle · ours are yellow&lt;br /&gt;
(23:11) · @Ultrahex · whatever&lt;br /&gt;
(23:11) · +rdrake · I don't wanna be seen in a yellow firetruck&lt;br /&gt;
(23:11) · +rdrake · red or nothing&lt;br /&gt;
(23:11) · +timmytheturtle · what about on fire?&lt;br /&gt;
(23:11) · @Ultrahex · however its normally red after i get done with it&lt;br /&gt;
(23:11) · @Ultrahex · lol&lt;br /&gt;
(23:12) · +rdrake · probably wouldn't burn all that well&lt;br /&gt;
(23:12) · +TheFerret · lol&lt;br /&gt;
(23:12) · @Ultrahex · its made out of cardboard...&lt;br /&gt;
(23:12) · +rdrake · well in that case&lt;br /&gt;
(23:12) · @Ultrahex · and no its not fireproof cardboard&lt;br /&gt;
(23:13) · +rdrake · none of that fancy stuff?&lt;br /&gt;
(23:13) · @Ultrahex · nah&lt;br /&gt;
(23:13) · @Ultrahex · the lights are just painted on&lt;br /&gt;
(23:13) · @Ultrahex · we have to get someone to draw the change in sirens on every so often&lt;br /&gt;
(23:13) · +rdrake · I would've just used tin can lids&lt;br /&gt;
(23:13) · +TheFerret · lol&lt;br /&gt;
(23:13) · +rdrake · here's a better idea, use a soup can and rotate it&lt;br /&gt;
(23:13) · @Ultrahex · well ya ... we couldn't find any cans... we live in a canless town&lt;br /&gt;
(23:13) · +rdrake · it'll shine and makie it look like a siren&lt;br /&gt;
(23:14) · +rdrake · bottles then&lt;br /&gt;
(23:14) · @Ultrahex · dont got any of those also...&lt;br /&gt;
(23:14) · +timmytheturtle · plastic?&lt;br /&gt;
(23:14) · +rdrake · cartons?&lt;br /&gt;
(23:14) · +rdrake · sippy cups?&lt;br /&gt;
(23:14) · +rdrake · anything round would do&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>TheFerret</name></author>	</entry>

	<entry>
		<id>http://wiki.compsci.ca/index.php?title=Math</id>
		<title>Math</title>
		<link rel="alternate" type="text/html" href="http://wiki.compsci.ca/index.php?title=Math"/>
				<updated>2006-01-17T02:42:57Z</updated>
		
		<summary type="html">&lt;p&gt;TheFerret: Part 2&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Some examples to show how messed up our math system is:&lt;br /&gt;
&lt;br /&gt;
==Part 1==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[01:39:40] &amp;lt;Ultrahex&amp;gt; .calc 1/9&lt;br /&gt;
[01:39:41] &amp;lt;X3&amp;gt; �Ultrahex�: 0.111111&lt;br /&gt;
[01:39:49] &amp;lt;Ultrahex&amp;gt; .calc 0.111111*9&lt;br /&gt;
[01:39:49] &amp;lt;X3&amp;gt; �Ultrahex�: 1&lt;br /&gt;
[01:39:52] &amp;lt;Ultrahex&amp;gt; hmmm&lt;br /&gt;
[01:39:52] &amp;lt;Ultrahex&amp;gt; lol&lt;br /&gt;
[01:39:59] &amp;lt;TheFerret&amp;gt; lol&lt;br /&gt;
[01:40:07] &amp;lt;Ultrahex&amp;gt; ive been doing math wrong for years&lt;br /&gt;
[01:47:23] &amp;lt;Hikaru79&amp;gt; Haha&lt;br /&gt;
[01:47:35] &amp;lt;Lotho&amp;gt; Hikaru79, did that code make sense?&lt;br /&gt;
[01:48:19] &amp;lt;Hikaru79&amp;gt; Lotho, surprisingly yes.&lt;br /&gt;
[01:48:39] &amp;lt;Hikaru79&amp;gt; The last arg is the method's body?&lt;br /&gt;
[01:48:55] &amp;lt;Lotho&amp;gt; yep&lt;br /&gt;
[01:49:06] &amp;lt;Hikaru79&amp;gt; That explains why you've been slicing args size -2&lt;br /&gt;
[01:49:10] &amp;lt;Hikaru79&amp;gt; I was meaning to ask about that. But now I get it.&lt;br /&gt;
[01:49:15] &amp;lt;Hikaru79&amp;gt; Yes, I understand that code now :D&lt;br /&gt;
[01:49:20] &amp;lt;Lotho&amp;gt; it's an unevaluated message, so doMessage... well, you likely get the picture&lt;br /&gt;
[01:52:52] &amp;lt;Ultrahex&amp;gt; YA&lt;br /&gt;
[01:53:02] &amp;lt;TheFerret&amp;gt; NO&lt;br /&gt;
[01:53:04] &amp;lt;TheFerret&amp;gt; hehe&lt;br /&gt;
[01:53:24] * Hikaru79 is now known as Hikaru79|Zzz&lt;br /&gt;
[01:53:29] &amp;lt;Ultrahex&amp;gt; 1=0.999999999999999999999999999&lt;br /&gt;
[01:53:30] &amp;lt;Ultrahex&amp;gt; hmmmm&lt;br /&gt;
[01:53:31] &amp;lt;Hikaru79|Zzz&amp;gt; I'm drifting off x-x Can't stay up anymore.&lt;br /&gt;
[01:53:35] &amp;lt;Ultrahex&amp;gt; i think we have a problem&lt;br /&gt;
[01:53:36] &amp;lt;Ultrahex&amp;gt; lol&lt;br /&gt;
[01:54:39] &amp;lt;Ultrahex&amp;gt; .calc 0.999999999999999999999999999/9&lt;br /&gt;
[01:54:39] &amp;lt;X3&amp;gt; �Ultrahex�: 0.111111&lt;br /&gt;
[01:54:56] &amp;lt;Ultrahex&amp;gt; .calc 1/7&lt;br /&gt;
[01:54:56] &amp;lt;X3&amp;gt; �Ultrahex�: 0.142857&lt;br /&gt;
[01:55:03] &amp;lt;Ultrahex&amp;gt; .calc 0.142856*7&lt;br /&gt;
[01:55:03] &amp;lt;X3&amp;gt; �Ultrahex�: 1&lt;br /&gt;
[01:55:06] &amp;lt;Ultrahex&amp;gt; hmmm wtf&lt;br /&gt;
[01:55:10] &amp;lt;TheFerret&amp;gt; lol&lt;br /&gt;
[01:55:50] &amp;lt;Ultrahex&amp;gt; this world i think might be falling apart&lt;br /&gt;
[01:55:50] &amp;lt;Ultrahex&amp;gt; lol&lt;br /&gt;
[01:55:56] &amp;lt;Ultrahex&amp;gt; 10/9&lt;br /&gt;
[01:55:59] &amp;lt;Ultrahex&amp;gt; .calc 109&lt;br /&gt;
[01:56:00] &amp;lt;X3&amp;gt; �Ultrahex�: 109&lt;br /&gt;
[01:56:02] &amp;lt;Ultrahex&amp;gt; .calc 10/&lt;br /&gt;
[01:56:02] &amp;lt;X3&amp;gt; �Ultrahex�: Value expected&lt;br /&gt;
[01:56:04] &amp;lt;Ultrahex&amp;gt; .calc 10/9&lt;br /&gt;
[01:56:04] &amp;lt;X3&amp;gt; �Ultrahex�: 1.111111&lt;br /&gt;
[01:56:15] &amp;lt;Ultrahex&amp;gt; *9 = 9.999999&lt;br /&gt;
[01:56:18] &amp;lt;Ultrahex&amp;gt; so 10 = 9.999999&lt;br /&gt;
[01:56:18] &amp;lt;Ultrahex&amp;gt; hmmmm&lt;br /&gt;
[01:56:19] &amp;lt;Ultrahex&amp;gt; lol&lt;br /&gt;
[01:56:29] &amp;lt;TheFerret&amp;gt; heh&lt;br /&gt;
[01:56:38] &amp;lt;Ultrahex&amp;gt; no wonder my math teacher said i was wrong&lt;br /&gt;
[01:57:03] &amp;lt;TheFerret&amp;gt; .calc e^e&lt;br /&gt;
[01:57:04] &amp;lt;X3&amp;gt; �TheFerret�: 15.154262&lt;br /&gt;
[01:57:29] &amp;lt;TheFerret&amp;gt; weird&lt;br /&gt;
[01:57:48] &amp;lt;TheFerret&amp;gt; its a face upside down&lt;br /&gt;
[01:58:01] &amp;lt;Ultrahex&amp;gt; e = 2.71828183&lt;br /&gt;
[01:58:03] &amp;lt;Ultrahex&amp;gt; ....&lt;br /&gt;
[01:58:15] &amp;lt;TheFerret&amp;gt; e^e   &amp;lt;-face upside down&lt;br /&gt;
[01:58:27] &amp;lt;Ultrahex&amp;gt; ya ya ya&lt;br /&gt;
[01:58:28] &amp;lt;Ultrahex&amp;gt; :P&lt;br /&gt;
[01:58:33] &amp;lt;TheFerret&amp;gt; lol... heheh&lt;br /&gt;
[01:58:39] &amp;lt;Ultrahex&amp;gt; .calc :P&lt;br /&gt;
[01:58:39] &amp;lt;X3&amp;gt; �Ultrahex�: Unknown character in expression&lt;br /&gt;
[01:58:44] &amp;lt;Ultrahex&amp;gt; fails miserably&lt;br /&gt;
[01:58:47] &amp;lt;TheFerret&amp;gt; lol&lt;br /&gt;
[01:59:01] &amp;lt;TheFerret&amp;gt; it would be more like this...&lt;br /&gt;
[01:59:07] &amp;lt;TheFerret&amp;gt; .calc pie&lt;br /&gt;
[01:59:07] &amp;lt;X3&amp;gt; �TheFerret�: Unexpected Identifier&lt;br /&gt;
[01:59:11] &amp;lt;TheFerret&amp;gt; .calc p&lt;br /&gt;
[01:59:11] &amp;lt;X3&amp;gt; �TheFerret�: Unexpected Identifier&lt;br /&gt;
[01:59:14] &amp;lt;Ultrahex&amp;gt; .calc the world round&lt;br /&gt;
[01:59:15] &amp;lt;X3&amp;gt; �Ultrahex�: Unexpected Identifier&lt;br /&gt;
[01:59:18] &amp;lt;TheFerret&amp;gt; .calc pi&lt;br /&gt;
[01:59:18] &amp;lt;X3&amp;gt; �TheFerret�: 3.141593&lt;br /&gt;
[01:59:20] &amp;lt;Ultrahex&amp;gt; .calc the sqrt of pi&lt;br /&gt;
[01:59:20] &amp;lt;X3&amp;gt; �Ultrahex�: Unexpected Identifier&lt;br /&gt;
[01:59:22] &amp;lt;TheFerret&amp;gt; lol, mmm ppie&lt;br /&gt;
[01:59:26] &amp;lt;Ultrahex&amp;gt; GOD DAMNIT!&lt;br /&gt;
[01:59:36] &amp;lt;TheFerret&amp;gt; .calc pi^(1/2)&lt;br /&gt;
[01:59:36] &amp;lt;X3&amp;gt; �TheFerret�: 1.772454&lt;br /&gt;
[01:59:37] &amp;lt;TheFerret&amp;gt; ha&lt;br /&gt;
[01:59:43] &amp;lt;Ultrahex&amp;gt; .calc find something good to eat and see how many times you can eat it before turning into poo&lt;br /&gt;
[01:59:43] &amp;lt;X3&amp;gt; �Ultrahex�: Unexpected Identifier&lt;br /&gt;
[01:59:56] &amp;lt;TheFerret&amp;gt; .calc 1.772454*1.772454&lt;br /&gt;
[01:59:56] &amp;lt;X3&amp;gt; �TheFerret�: 3.141593&lt;br /&gt;
[01:59:57] &amp;lt;Ultrahex&amp;gt; stupid calculator&lt;br /&gt;
[02:00:30] &amp;lt;TheFerret&amp;gt; .calc (-pi)^(1/3)&lt;br /&gt;
[02:00:30] &amp;lt;X3&amp;gt; �TheFerret�: 0.682784&lt;br /&gt;
[02:00:35] &amp;lt;TheFerret&amp;gt; .calc (-pi)^(1/2)&lt;br /&gt;
[02:00:35] &amp;lt;X3&amp;gt; �TheFerret�: 0.564190&lt;br /&gt;
[02:00:41] &amp;lt;TheFerret&amp;gt; wtf&lt;br /&gt;
[02:01:00] &amp;lt;TheFerret&amp;gt; you cant have a square root of a negative #&lt;br /&gt;
[02:01:34] &amp;lt;Ultrahex&amp;gt; x = 1&lt;br /&gt;
[02:01:34] &amp;lt;TheFerret&amp;gt; MUHAHAHA, ive broken math&lt;br /&gt;
[02:01:41] &amp;lt;Ultrahex&amp;gt; x^2=1&lt;br /&gt;
[02:01:50] &amp;lt;Ultrahex&amp;gt; x^2-1=0&lt;br /&gt;
[02:01:52] &amp;lt;TheFerret&amp;gt; .calc 1/pi&lt;br /&gt;
[02:01:53] &amp;lt;X3&amp;gt; �TheFerret�: 0.318310&lt;br /&gt;
[02:02:01] &amp;lt;Ultrahex&amp;gt; x^2=0&lt;br /&gt;
[02:02:02] &amp;lt;Ultrahex&amp;gt; hmmm&lt;br /&gt;
[02:02:12] &amp;lt;Ultrahex&amp;gt; oh ya forgot to expand&lt;br /&gt;
[02:02:12] &amp;lt;Ultrahex&amp;gt; lol&lt;br /&gt;
[02:02:15] &amp;lt;TheFerret&amp;gt; lol&lt;br /&gt;
[02:02:20] &amp;lt;Ultrahex&amp;gt; x=1&lt;br /&gt;
[02:02:23] &amp;lt;Ultrahex&amp;gt; x^2=1&lt;br /&gt;
[02:02:34] &amp;lt;Ultrahex&amp;gt; x^2-1=1^2-1&lt;br /&gt;
[02:02:55] &amp;lt;TheFerret&amp;gt; heh, so hard reading and doing math on irc&lt;br /&gt;
[02:03:01] &amp;lt;Ultrahex&amp;gt; (x^2-1)(x^2-1) = 0&lt;br /&gt;
[02:03:08] &amp;lt;Ultrahex&amp;gt; lol i did that wrng&lt;br /&gt;
[02:03:09] &amp;lt;Ultrahex&amp;gt; ROFL&lt;br /&gt;
[02:03:10] &amp;lt;Ultrahex&amp;gt; ROFL&lt;br /&gt;
[02:03:10] &amp;lt;Ultrahex&amp;gt; ROFL&lt;br /&gt;
[02:03:11] &amp;lt;TheFerret&amp;gt; lol&lt;br /&gt;
[02:03:18] &amp;lt;Ultrahex&amp;gt; (x-1)(x-1)=0&lt;br /&gt;
[02:03:20] &amp;lt;Ultrahex&amp;gt; anyhow&lt;br /&gt;
[02:03:25] &amp;lt;TheFerret&amp;gt; so you want x^2-1 expanded&amp;gt;&lt;br /&gt;
[02:03:28] &amp;lt;Ultrahex&amp;gt; you understand how i got to that :P&lt;br /&gt;
[02:03:34] &amp;lt;TheFerret&amp;gt; no&lt;br /&gt;
[02:03:35] &amp;lt;TheFerret&amp;gt; lol&lt;br /&gt;
[02:03:45] &amp;lt;Ultrahex&amp;gt; oh ok&lt;br /&gt;
[02:03:47] &amp;lt;Ultrahex&amp;gt; ill redo it&lt;br /&gt;
[02:03:53] &amp;lt;Ultrahex&amp;gt; ill just do x2 for x^2 ok ?&lt;br /&gt;
[02:03:57] &amp;lt;TheFerret&amp;gt; k&lt;br /&gt;
[02:04:00] &amp;lt;Ultrahex&amp;gt; x=1&lt;br /&gt;
[02:04:13] &amp;lt;Ultrahex&amp;gt; x2=12&lt;br /&gt;
[02:04:18] &amp;lt;Ultrahex&amp;gt; x2=1&lt;br /&gt;
[02:04:26] &amp;lt;Ultrahex&amp;gt; right?&lt;br /&gt;
[02:04:35] &amp;lt;TheFerret&amp;gt; ya, so x = 1&lt;br /&gt;
[02:04:50] &amp;lt;Ultrahex&amp;gt; ok now minus 1 from both sides&lt;br /&gt;
[02:04:53] &amp;lt;Ultrahex&amp;gt; x2-1=0&lt;br /&gt;
[02:04:57] &amp;lt;Ultrahex&amp;gt; factor&lt;br /&gt;
[02:05:07] &amp;lt;Ultrahex&amp;gt; (x-1)(x+1)=0&lt;br /&gt;
[02:05:22] &amp;lt;TheFerret&amp;gt; x = +-1&lt;br /&gt;
[02:05:34] &amp;lt;TheFerret&amp;gt; x = -1 is extranous&lt;br /&gt;
[02:06:05] &amp;lt;Ultrahex&amp;gt; hehe yup&lt;br /&gt;
[02:06:09] &amp;lt;Ultrahex&amp;gt; really funny though&lt;br /&gt;
[02:06:09] &amp;lt;Ultrahex&amp;gt; :)&lt;br /&gt;
[02:06:14] &amp;lt;Ultrahex&amp;gt; but you could do thsi way 2&lt;br /&gt;
[02:06:15] &amp;lt;TheFerret&amp;gt; yeah&lt;br /&gt;
[02:06:19] &amp;lt;Ultrahex&amp;gt; x=1 and x2 = 1&lt;br /&gt;
[02:06:22] &amp;lt;TheFerret&amp;gt; we did that is math&lt;br /&gt;
[02:06:24] &amp;lt;TheFerret&amp;gt; this year&lt;br /&gt;
[02:06:33] &amp;lt;Ultrahex&amp;gt; x2-1 = x-1&lt;br /&gt;
[02:06:58] &amp;lt;Ultrahex&amp;gt; (x-1)(x+1) = x-1&lt;br /&gt;
[02:08:01] &amp;lt;Ultrahex&amp;gt; then x+1=1 (divide by x-1)&lt;br /&gt;
[02:08:04] &amp;lt;TheFerret&amp;gt; x+1 = 12&lt;br /&gt;
[02:08:05] &amp;lt;Ultrahex&amp;gt; x=2&lt;br /&gt;
[02:08:07] &amp;lt;Ultrahex&amp;gt; hmmmmmm&lt;br /&gt;
[02:08:19] &amp;lt;Ultrahex&amp;gt; so 1=2&lt;br /&gt;
[02:08:20] &amp;lt;TheFerret&amp;gt; yah, i made a type&lt;br /&gt;
[02:08:29] &amp;lt;TheFerret&amp;gt; typo*... lol&lt;br /&gt;
[02:08:34] &amp;lt;Ultrahex&amp;gt; so many ways to do it&lt;br /&gt;
[02:08:35] &amp;lt;Ultrahex&amp;gt; :)&lt;br /&gt;
[02:09:01] &amp;lt;Ultrahex&amp;gt; i cant find the other one yet&lt;br /&gt;
[02:09:16] &amp;lt;Ultrahex&amp;gt; there is this other math one where its like how sqrt will never work&lt;br /&gt;
[02:09:18] &amp;lt;Ultrahex&amp;gt; its weird&lt;br /&gt;
[02:09:23] &amp;lt;Ultrahex&amp;gt; and i cant figure it out&lt;br /&gt;
[02:09:38] &amp;lt;TheFerret&amp;gt; square root of negative # in the real number system :P&lt;br /&gt;
[02:09:46] &amp;lt;Ultrahex&amp;gt; ya i know&lt;br /&gt;
[02:10:01] &amp;lt;Ultrahex&amp;gt; it uses imaginary numbers&lt;br /&gt;
[02:10:07] &amp;lt;Ultrahex&amp;gt; but something goes weird&lt;br /&gt;
[02:10:08] &amp;lt;Ultrahex&amp;gt; hmmm&lt;br /&gt;
[02:10:52] &amp;lt;TheFerret&amp;gt; doesnt seem to be on good&lt;br /&gt;
[02:10:55] &amp;lt;TheFerret&amp;gt; google*&lt;br /&gt;
[02:11:24] &amp;lt;Ultrahex&amp;gt; x=1&lt;br /&gt;
[02:11:40] &amp;lt;Ultrahex&amp;gt; -x=-1&lt;br /&gt;
[02:11:47] &amp;lt;Ultrahex&amp;gt; bah i cant think of it lol&lt;br /&gt;
[02:11:50] &amp;lt;TheFerret&amp;gt; lol&lt;br /&gt;
[02:12:23] &amp;lt;Ultrahex&amp;gt; what do you call those things?&lt;br /&gt;
[02:12:26] &amp;lt;Ultrahex&amp;gt; math theories or something&lt;br /&gt;
[02:12:42] &amp;lt;TheFerret&amp;gt; something like that&lt;br /&gt;
[02:14:57] &amp;lt;TheFerret&amp;gt; what a cool eq^n: ( n +1)^2  = n^2  + n  + ( n +1)&lt;br /&gt;
[02:16:09] &amp;lt;TheFerret&amp;gt; .calc (4+1)^2&lt;br /&gt;
[02:16:09] &amp;lt;X3&amp;gt; �TheFerret�: 25&lt;br /&gt;
[02:16:25] &amp;lt;TheFerret&amp;gt; .calc 4^2 + 4 + 5&lt;br /&gt;
[02:16:25] &amp;lt;X3&amp;gt; �TheFerret�: 25&lt;br /&gt;
[02:16:32] &amp;lt;TheFerret&amp;gt; lol&lt;br /&gt;
[02:16:40] &amp;lt;Ultrahex&amp;gt; lol&lt;br /&gt;
[02:16:52] &amp;lt;Ultrahex&amp;gt; (n+1)(n+1) = (n+1)^2&lt;br /&gt;
[02:17:03] &amp;lt;TheFerret&amp;gt; i found  that off some website&lt;br /&gt;
[02:17:08] &amp;lt;Ultrahex&amp;gt; n^2 + n + n + 1&lt;br /&gt;
[02:17:14] &amp;lt;Ultrahex&amp;gt; n^2 + 2n + 1&lt;br /&gt;
[02:17:19] &amp;lt;Ultrahex&amp;gt; :P Quadratics dumbass :P&lt;br /&gt;
[02:17:30] &amp;lt;TheFerret&amp;gt; http://www.google.com/url?sa=t&amp;amp;ct=res&amp;amp;cd=2&amp;amp;url=http%3A//www.embedded.com/98/9802fe2.htm&amp;amp;ei=b8a8Q5S9BISo-gH3pInKDg&amp;amp;sig2=-yLeCSQEIROpjHqCundlYQ&lt;br /&gt;
[02:17:51] &amp;lt;TheFerret&amp;gt; friden algo&lt;br /&gt;
[02:18:08] &amp;lt;Ultrahex&amp;gt; ^ i just prove the freaking thing above&lt;br /&gt;
[02:18:08] &amp;lt;Ultrahex&amp;gt; lol&lt;br /&gt;
[02:18:16] &amp;lt;Ultrahex&amp;gt; except its less&lt;br /&gt;
[02:18:17] &amp;lt;TheFerret&amp;gt; you did&lt;br /&gt;
[02:18:17] &amp;lt;Ultrahex&amp;gt; lol&lt;br /&gt;
[02:18:40] &amp;lt;TheFerret&amp;gt; HAHAHAH: Method to Find Square Root of Pi&lt;br /&gt;
[02:18:40] &amp;lt;TheFerret&amp;gt; Date: 03/30/97 at 18:36:36&lt;br /&gt;
[02:18:40] &amp;lt;TheFerret&amp;gt; From: Jeff Houk&lt;br /&gt;
[02:18:40] &amp;lt;TheFerret&amp;gt; Subject: Method to Find Square Root of Pi&lt;br /&gt;
[02:18:40] &amp;lt;TheFerret&amp;gt; What is the square root of Pi? I tried using a calculator, but &lt;br /&gt;
[02:18:40] &amp;lt;TheFerret&amp;gt; that didn't work. I tried trial and error and Guess and Check, &lt;br /&gt;
[02:18:40] &amp;lt;TheFerret&amp;gt; but neither of those helped either.  HELP!&lt;br /&gt;
[02:18:54] &amp;lt;Ultrahex&amp;gt; !!&lt;br /&gt;
[02:18:55] &amp;lt;Ultrahex&amp;gt; ROFL&lt;br /&gt;
[02:18:59] &amp;lt;Ultrahex&amp;gt; .calc sqrt [ pi ]&lt;br /&gt;
[02:19:00] &amp;lt;X3&amp;gt; �Ultrahex�: 1.772454&lt;br /&gt;
[02:19:00] &amp;lt;Ultrahex&amp;gt; :P&lt;br /&gt;
[02:19:02] &amp;lt;TheFerret&amp;gt; http://mathforum.org/library/drmath/view/58261.html&lt;br /&gt;
[02:19:47] &amp;lt;Ultrahex&amp;gt; im thinking along the lines of&lt;br /&gt;
[02:20:06] &amp;lt;Ultrahex&amp;gt; sqrt[-1] = i&lt;br /&gt;
[02:20:10] &amp;lt;Ultrahex&amp;gt; right?&lt;br /&gt;
[02:20:17] &amp;lt;Ultrahex&amp;gt; i^2 = 1&lt;br /&gt;
[02:20:20] &amp;lt;TheFerret&amp;gt; ya&lt;br /&gt;
[02:20:26] &amp;lt;Ultrahex&amp;gt; so hmmm&lt;br /&gt;
[02:20:32] &amp;lt;TheFerret&amp;gt; i think thats right&lt;br /&gt;
[02:20:43] &amp;lt;Ultrahex&amp;gt; x = -1&lt;br /&gt;
[02:20:50] &amp;lt;Ultrahex&amp;gt; sqrt[x] = i&lt;br /&gt;
[02:21:11] &amp;lt;Ultrahex&amp;gt; x = 1&lt;br /&gt;
[02:21:13] &amp;lt;Ultrahex&amp;gt; ya&lt;br /&gt;
[02:21:13] &amp;lt;Ultrahex&amp;gt; hmm&lt;br /&gt;
[02:21:16] &amp;lt;Ultrahex&amp;gt; -1 = 1&lt;br /&gt;
[02:21:22] &amp;lt;TheFerret&amp;gt; weird&lt;br /&gt;
[02:21:40] &amp;lt;Ultrahex&amp;gt; cant prove that wrong&lt;br /&gt;
[02:21:41] &amp;lt;Ultrahex&amp;gt; lol&lt;br /&gt;
[02:21:54] &amp;lt;Ultrahex&amp;gt; but i guess +- x = 1&lt;br /&gt;
[02:22:02] &amp;lt;TheFerret&amp;gt; ya&lt;br /&gt;
[02:22:02] &amp;lt;Ultrahex&amp;gt; but the thing is .... then 1 = -1&lt;br /&gt;
[02:22:04] &amp;lt;Ultrahex&amp;gt; :///&lt;br /&gt;
[02:22:09] &amp;lt;Ultrahex&amp;gt; 2 = -2&lt;br /&gt;
[02:22:15] &amp;lt;Ultrahex&amp;gt; oh my GOD&lt;br /&gt;
[02:22:16] &amp;lt;Ultrahex&amp;gt; lol&lt;br /&gt;
[02:22:20] &amp;lt;TheFerret&amp;gt; lol&lt;br /&gt;
[02:22:30] &amp;lt;Ultrahex&amp;gt; x = -2&lt;br /&gt;
[02:22:44] &amp;lt;Ultrahex&amp;gt; sqrt [ x ] = sqrt [ -2 ]&lt;br /&gt;
[02:22:48] &amp;lt;Ultrahex&amp;gt; whats sqrt of -2&lt;br /&gt;
[02:22:53] &amp;lt;Ultrahex&amp;gt; 2i ?&lt;br /&gt;
[02:22:56] &amp;lt;TheFerret&amp;gt; ya&lt;br /&gt;
[02:23:06] &amp;lt;Ultrahex&amp;gt; sqrt [ x ] = 2 i&lt;br /&gt;
[02:23:19] &amp;lt;Ultrahex&amp;gt; x = 2&lt;br /&gt;
[02:23:20] &amp;lt;Ultrahex&amp;gt; hmmm&lt;br /&gt;
[02:23:23] &amp;lt;Ultrahex&amp;gt; GOD DAMNIT&lt;br /&gt;
[02:23:24] &amp;lt;Ultrahex&amp;gt; lol&lt;br /&gt;
[02:23:25] &amp;lt;TheFerret&amp;gt; you did it wrong&lt;br /&gt;
[02:23:32] &amp;lt;Ultrahex&amp;gt; where?&lt;br /&gt;
[02:23:47] &amp;lt;TheFerret&amp;gt; it should be sqrt (x) = sqrt (2)i&lt;br /&gt;
[02:24:12] &amp;lt;Ultrahex&amp;gt; no&lt;br /&gt;
[02:24:18] &amp;lt;TheFerret&amp;gt; yes&lt;br /&gt;
[02:24:28] &amp;lt;Ultrahex&amp;gt; ..... how would i get i without sqrooting&lt;br /&gt;
[02:24:29] &amp;lt;Ultrahex&amp;gt; lol&lt;br /&gt;
[02:24:38] &amp;lt;TheFerret&amp;gt; i = -1&lt;br /&gt;
[02:24:58] &amp;lt;Ultrahex&amp;gt; you are forgetting something&lt;br /&gt;
[02:25:09] &amp;lt;TheFerret&amp;gt; .calc 2^(1/2)&lt;br /&gt;
[02:25:09] &amp;lt;X3&amp;gt; �TheFerret�: 1.414214&lt;br /&gt;
[02:25:13] &amp;lt;Ultrahex&amp;gt; ill do it again&lt;br /&gt;
[02:25:22] &amp;lt;Ultrahex&amp;gt; x = -2&lt;br /&gt;
[02:25:32] &amp;lt;TheFerret&amp;gt; .calc 1.414214 * 1.414214&lt;br /&gt;
[02:25:32] &amp;lt;X3&amp;gt; �TheFerret�: 2&lt;br /&gt;
[02:25:38] &amp;lt;Ultrahex&amp;gt; sqrt [ x ] = sqrt [ -2 ] (Square Root Both Sides)&lt;br /&gt;
[02:25:39] &amp;lt;TheFerret&amp;gt; x=-2&lt;br /&gt;
[02:25:46] &amp;lt;Ultrahex&amp;gt; sqrt [ x ] = 2i&lt;br /&gt;
[02:25:52] &amp;lt;Ultrahex&amp;gt; 2*i = -2&lt;br /&gt;
[02:26:03] &amp;lt;Ultrahex&amp;gt; 2i^2 = 2&lt;br /&gt;
[02:26:16] &amp;lt;Ultrahex&amp;gt; :P&lt;br /&gt;
[02:26:27] &amp;lt;Ultrahex&amp;gt; yet again 2=-2&lt;br /&gt;
[02:26:29] &amp;lt;Ultrahex&amp;gt; 3=-3&lt;br /&gt;
[02:26:31] &amp;lt;Ultrahex&amp;gt; ...&lt;br /&gt;
[02:26:34] &amp;lt;TheFerret&amp;gt; if you were to square both sides, the roots drop and all you are left with is x=2&lt;br /&gt;
[02:26:38] &amp;lt;TheFerret&amp;gt; x=-2*&lt;br /&gt;
[02:26:43] &amp;lt;TheFerret&amp;gt; lol&lt;br /&gt;
[02:26:50] &amp;lt;Ultrahex&amp;gt; GOD DAMNIT&lt;br /&gt;
[02:26:51] &amp;lt;Ultrahex&amp;gt; yes&lt;br /&gt;
[02:26:56] &amp;lt;Ultrahex&amp;gt; but im not simplifying yet&lt;br /&gt;
[02:26:56] &amp;lt;Ultrahex&amp;gt; lol&lt;br /&gt;
[02:27:01] &amp;lt;TheFerret&amp;gt; lol&lt;br /&gt;
[02:27:13] &amp;lt;Ultrahex&amp;gt; i change to imaginary numbers because sqrt of a negative number&lt;br /&gt;
[02:27:20] &amp;lt;TheFerret&amp;gt; good ole messed up math system&lt;br /&gt;
[02:27:23] &amp;lt;Ultrahex&amp;gt; yup&lt;br /&gt;
[02:27:57] &amp;lt;TheFerret&amp;gt; isnt i^2, `&lt;br /&gt;
[02:27:59] &amp;lt;TheFerret&amp;gt; 1*&lt;br /&gt;
[02:28:01] &amp;lt;Ultrahex&amp;gt; yes&lt;br /&gt;
[02:28:05] &amp;lt;Ultrahex&amp;gt; thats the point&lt;br /&gt;
[02:28:06] &amp;lt;Ultrahex&amp;gt; lol&lt;br /&gt;
[02:28:23] &amp;lt;TheFerret&amp;gt; so it would be 2(-1)^2=2&lt;br /&gt;
[02:28:40] &amp;lt;Ultrahex&amp;gt; no&lt;br /&gt;
[02:28:42] &amp;lt;Ultrahex&amp;gt; it would be&lt;br /&gt;
[02:28:50] &amp;lt;Ultrahex&amp;gt; 2(sqrt[-1])^2&lt;br /&gt;
[02:28:59] &amp;lt;Ultrahex&amp;gt; so it would be 2&lt;br /&gt;
[02:29:06] &amp;lt;TheFerret&amp;gt; where did the root come from&lt;br /&gt;
[02:29:08] &amp;lt;Ultrahex&amp;gt; i = sqrt[-1]&lt;br /&gt;
[02:29:14] &amp;lt;Ultrahex&amp;gt; i^2=1&lt;br /&gt;
[02:29:31] &amp;lt;Ultrahex&amp;gt; i^2=-1***&lt;br /&gt;
[02:29:40] &amp;lt;TheFerret&amp;gt; yeah&lt;br /&gt;
[02:29:48] &amp;lt;Ultrahex&amp;gt; hmmm whats going on now im so confused&lt;br /&gt;
[02:29:48] &amp;lt;Ultrahex&amp;gt; lol&lt;br /&gt;
[02:30:25] &amp;lt;TheFerret&amp;gt; so its 2(sqrt-1) * 2(sqrt-1) =2&lt;br /&gt;
[02:30:48] &amp;lt;TheFerret&amp;gt; or 2i *2i =2&lt;br /&gt;
[02:31:09] &amp;lt;TheFerret&amp;gt; i*i=1&lt;br /&gt;
[02:31:10] &amp;lt;Ultrahex&amp;gt; i dont even know anymore lol&lt;br /&gt;
[02:31:16] &amp;lt;Ultrahex&amp;gt; !!!&lt;br /&gt;
[02:31:19] &amp;lt;Ultrahex&amp;gt; i^2=-1&lt;br /&gt;
[02:31:20] &amp;lt;TheFerret&amp;gt; i^2=1&lt;br /&gt;
[02:31:27] &amp;lt;TheFerret&amp;gt; lol&lt;br /&gt;
[02:31:27] &amp;lt;Ultrahex&amp;gt; no its negative 1&lt;br /&gt;
[02:31:29] &amp;lt;Ultrahex&amp;gt; lol&lt;br /&gt;
[02:31:30] &amp;lt;TheFerret&amp;gt; its one&lt;br /&gt;
[02:31:32] &amp;lt;Ultrahex&amp;gt; WTF is going on&lt;br /&gt;
[02:31:40] &amp;lt;Ultrahex&amp;gt; sqrt[-1] = i&lt;br /&gt;
[02:31:50] &amp;lt;Ultrahex&amp;gt; that doesn't work man&lt;br /&gt;
[02:31:51] &amp;lt;Ultrahex&amp;gt; lol&lt;br /&gt;
[02:31:56] &amp;lt;TheFerret&amp;gt; ok, it is -1&lt;br /&gt;
[02:31:57] &amp;lt;Ultrahex&amp;gt; fuck i told you 1=-1&lt;br /&gt;
[02:32:00] &amp;lt;TheFerret&amp;gt; lol&lt;br /&gt;
[02:32:04] &amp;lt;Ultrahex&amp;gt; 2=-2&lt;br /&gt;
[02:32:09] &amp;lt;Ultrahex&amp;gt; jeez this is taking to long&lt;br /&gt;
[02:32:10] &amp;lt;Ultrahex&amp;gt; lol&lt;br /&gt;
[02:32:12] &amp;lt;TheFerret&amp;gt; lol&lt;br /&gt;
[02:32:22] &amp;lt;Ultrahex&amp;gt; i better go to bed soon&lt;br /&gt;
[02:32:23] &amp;lt;Ultrahex&amp;gt; lol&lt;br /&gt;
[02:32:24] &amp;lt;TheFerret&amp;gt; heh&lt;br /&gt;
[02:32:35] &amp;lt;TheFerret&amp;gt; how did i get i^2 to =1 then&lt;br /&gt;
[02:32:36] &amp;lt;TheFerret&amp;gt; lol&lt;br /&gt;
[02:32:41] &amp;lt;Ultrahex&amp;gt; exactly&lt;br /&gt;
[02:32:42] &amp;lt;Ultrahex&amp;gt; lol&lt;br /&gt;
[02:33:23] &amp;lt;TheFerret&amp;gt; wait for that it would be (-1)*(-1)=1 which is true&lt;br /&gt;
[02:33:36] &amp;lt;TheFerret&amp;gt; so i proved that you are right&lt;br /&gt;
[02:33:53] &amp;lt;Ultrahex&amp;gt; hmmm now to just document it&lt;br /&gt;
[02:33:55] &amp;lt;Ultrahex&amp;gt; and sell on ebay&lt;br /&gt;
[02:33:55] &amp;lt;Ultrahex&amp;gt; loo&lt;br /&gt;
[02:34:02] &amp;lt;Ultrahex&amp;gt; l&lt;br /&gt;
[02:36:44] &amp;lt;Ultrahex&amp;gt; in Imaginary Numbers&lt;br /&gt;
[02:36:44] &amp;lt;Ultrahex&amp;gt; i = sqrt[-1]&lt;br /&gt;
[02:36:44] &amp;lt;Ultrahex&amp;gt; so (Since squareroot cancels out)&lt;br /&gt;
[02:36:44] &amp;lt;Ultrahex&amp;gt; i^2 = -1&lt;br /&gt;
[02:36:44] &amp;lt;Ultrahex&amp;gt; x=-1&lt;br /&gt;
[02:36:45] &amp;lt;Ultrahex&amp;gt; sqrt[x] = sqrt[-1]&lt;br /&gt;
[02:36:50] &amp;lt;Ultrahex&amp;gt; sqrt[x] = i&lt;br /&gt;
[02:36:52] &amp;lt;Ultrahex&amp;gt; x = i^2&lt;br /&gt;
[02:36:54] &amp;lt;Ultrahex&amp;gt; x = sqrt[-1]^2&lt;br /&gt;
[02:36:56] &amp;lt;Ultrahex&amp;gt; x = -1&lt;br /&gt;
[02:36:58] &amp;lt;Ultrahex&amp;gt; you must covert to sqrt[-1] otherwise....&lt;br /&gt;
[02:37:00] &amp;lt;Ultrahex&amp;gt; x = i^2&lt;br /&gt;
[02:37:01] &amp;lt;Ultrahex&amp;gt; x = 1^2&lt;br /&gt;
[02:37:04] &amp;lt;Ultrahex&amp;gt; x = 1&lt;br /&gt;
[02:37:18] &amp;lt;Ultrahex&amp;gt; minute wtf&lt;br /&gt;
[02:37:21] &amp;lt;Ultrahex&amp;gt; i did something wrong?&lt;br /&gt;
[02:37:31] &amp;lt;TheFerret&amp;gt; lol&lt;br /&gt;
[02:37:52] &amp;lt;Ultrahex&amp;gt; i^2 = -1 not 1&lt;br /&gt;
[02:37:53] &amp;lt;Ultrahex&amp;gt; thats why&lt;br /&gt;
[02:37:54] &amp;lt;Ultrahex&amp;gt; :P&lt;br /&gt;
[02:37:58] &amp;lt;Ultrahex&amp;gt; we fucked up really good&lt;br /&gt;
[02:37:59] &amp;lt;Ultrahex&amp;gt; lol&lt;br /&gt;
[02:38:03] &amp;lt;Ultrahex&amp;gt; we r dumbass&lt;br /&gt;
[02:38:04] &amp;lt;Ultrahex&amp;gt; lol&lt;br /&gt;
[02:38:04] &amp;lt;TheFerret&amp;gt; heh, did we... lol&lt;br /&gt;
[02:38:20] &amp;lt;Ultrahex&amp;gt; now i really gotta find it online&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Part 2==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
( 21:42:28 ) ( @Ultrahex ) -1/1 = 1/-1&lt;br /&gt;
( 21:42:33 ) ( @Ultrahex ) sqrt(-1/1) = sqrt(1/-1)&lt;br /&gt;
( 21:42:37 ) ( @Ultrahex ) sqrt(-1) / sqrt(1) = sqrt(1) / sqrt(-1)&lt;br /&gt;
( 21:42:41 ) ( @Ultrahex ) i/1 = 1/i.&lt;br /&gt;
( 21:42:44 ) ( @Ultrahex ) i / 2 = 1 / (2i),&lt;br /&gt;
( 21:42:48 ) ( @Ultrahex ) i/2 + 3/(2i) = 1/(2i) + 3/(2i),&lt;br /&gt;
( 21:42:53 ) ( @Ultrahex ) i (i/2 + 3/(2i) ) = i ( 1/(2i) + 3/(2i) ),&lt;br /&gt;
( 21:42:56 ) ( @Ultrahex ) (i^2)/2 + (3i)/2i = i/(2i) + (3i)/(2i),&lt;br /&gt;
( 21:43:00 ) ( @Ultrahex ) (-1)/2 + 3/2 = 1/2 + 3/2,&lt;br /&gt;
( 21:43:03 ) ( @Ultrahex ) 1=2.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>TheFerret</name></author>	</entry>

	<entry>
		<id>http://wiki.compsci.ca/index.php?title=Math</id>
		<title>Math</title>
		<link rel="alternate" type="text/html" href="http://wiki.compsci.ca/index.php?title=Math"/>
				<updated>2006-01-05T07:38:39Z</updated>
		
		<summary type="html">&lt;p&gt;TheFerret: Created the page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Some examples to show how messed up our math system is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[01:39:40] &amp;lt;Ultrahex&amp;gt; .calc 1/9&lt;br /&gt;
[01:39:41] &amp;lt;X3&amp;gt; �Ultrahex�: 0.111111&lt;br /&gt;
[01:39:49] &amp;lt;Ultrahex&amp;gt; .calc 0.111111*9&lt;br /&gt;
[01:39:49] &amp;lt;X3&amp;gt; �Ultrahex�: 1&lt;br /&gt;
[01:39:52] &amp;lt;Ultrahex&amp;gt; hmmm&lt;br /&gt;
[01:39:52] &amp;lt;Ultrahex&amp;gt; lol&lt;br /&gt;
[01:39:59] &amp;lt;TheFerret&amp;gt; lol&lt;br /&gt;
[01:40:07] &amp;lt;Ultrahex&amp;gt; ive been doing math wrong for years&lt;br /&gt;
[01:47:23] &amp;lt;Hikaru79&amp;gt; Haha&lt;br /&gt;
[01:47:35] &amp;lt;Lotho&amp;gt; Hikaru79, did that code make sense?&lt;br /&gt;
[01:48:19] &amp;lt;Hikaru79&amp;gt; Lotho, surprisingly yes.&lt;br /&gt;
[01:48:39] &amp;lt;Hikaru79&amp;gt; The last arg is the method's body?&lt;br /&gt;
[01:48:55] &amp;lt;Lotho&amp;gt; yep&lt;br /&gt;
[01:49:06] &amp;lt;Hikaru79&amp;gt; That explains why you've been slicing args size -2&lt;br /&gt;
[01:49:10] &amp;lt;Hikaru79&amp;gt; I was meaning to ask about that. But now I get it.&lt;br /&gt;
[01:49:15] &amp;lt;Hikaru79&amp;gt; Yes, I understand that code now :D&lt;br /&gt;
[01:49:20] &amp;lt;Lotho&amp;gt; it's an unevaluated message, so doMessage... well, you likely get the picture&lt;br /&gt;
[01:52:52] &amp;lt;Ultrahex&amp;gt; YA&lt;br /&gt;
[01:53:02] &amp;lt;TheFerret&amp;gt; NO&lt;br /&gt;
[01:53:04] &amp;lt;TheFerret&amp;gt; hehe&lt;br /&gt;
[01:53:24] * Hikaru79 is now known as Hikaru79|Zzz&lt;br /&gt;
[01:53:29] &amp;lt;Ultrahex&amp;gt; 1=0.999999999999999999999999999&lt;br /&gt;
[01:53:30] &amp;lt;Ultrahex&amp;gt; hmmmm&lt;br /&gt;
[01:53:31] &amp;lt;Hikaru79|Zzz&amp;gt; I'm drifting off x-x Can't stay up anymore.&lt;br /&gt;
[01:53:35] &amp;lt;Ultrahex&amp;gt; i think we have a problem&lt;br /&gt;
[01:53:36] &amp;lt;Ultrahex&amp;gt; lol&lt;br /&gt;
[01:54:39] &amp;lt;Ultrahex&amp;gt; .calc 0.999999999999999999999999999/9&lt;br /&gt;
[01:54:39] &amp;lt;X3&amp;gt; �Ultrahex�: 0.111111&lt;br /&gt;
[01:54:56] &amp;lt;Ultrahex&amp;gt; .calc 1/7&lt;br /&gt;
[01:54:56] &amp;lt;X3&amp;gt; �Ultrahex�: 0.142857&lt;br /&gt;
[01:55:03] &amp;lt;Ultrahex&amp;gt; .calc 0.142856*7&lt;br /&gt;
[01:55:03] &amp;lt;X3&amp;gt; �Ultrahex�: 1&lt;br /&gt;
[01:55:06] &amp;lt;Ultrahex&amp;gt; hmmm wtf&lt;br /&gt;
[01:55:10] &amp;lt;TheFerret&amp;gt; lol&lt;br /&gt;
[01:55:50] &amp;lt;Ultrahex&amp;gt; this world i think might be falling apart&lt;br /&gt;
[01:55:50] &amp;lt;Ultrahex&amp;gt; lol&lt;br /&gt;
[01:55:56] &amp;lt;Ultrahex&amp;gt; 10/9&lt;br /&gt;
[01:55:59] &amp;lt;Ultrahex&amp;gt; .calc 109&lt;br /&gt;
[01:56:00] &amp;lt;X3&amp;gt; �Ultrahex�: 109&lt;br /&gt;
[01:56:02] &amp;lt;Ultrahex&amp;gt; .calc 10/&lt;br /&gt;
[01:56:02] &amp;lt;X3&amp;gt; �Ultrahex�: Value expected&lt;br /&gt;
[01:56:04] &amp;lt;Ultrahex&amp;gt; .calc 10/9&lt;br /&gt;
[01:56:04] &amp;lt;X3&amp;gt; �Ultrahex�: 1.111111&lt;br /&gt;
[01:56:15] &amp;lt;Ultrahex&amp;gt; *9 = 9.999999&lt;br /&gt;
[01:56:18] &amp;lt;Ultrahex&amp;gt; so 10 = 9.999999&lt;br /&gt;
[01:56:18] &amp;lt;Ultrahex&amp;gt; hmmmm&lt;br /&gt;
[01:56:19] &amp;lt;Ultrahex&amp;gt; lol&lt;br /&gt;
[01:56:29] &amp;lt;TheFerret&amp;gt; heh&lt;br /&gt;
[01:56:38] &amp;lt;Ultrahex&amp;gt; no wonder my math teacher said i was wrong&lt;br /&gt;
[01:57:03] &amp;lt;TheFerret&amp;gt; .calc e^e&lt;br /&gt;
[01:57:04] &amp;lt;X3&amp;gt; �TheFerret�: 15.154262&lt;br /&gt;
[01:57:29] &amp;lt;TheFerret&amp;gt; weird&lt;br /&gt;
[01:57:48] &amp;lt;TheFerret&amp;gt; its a face upside down&lt;br /&gt;
[01:58:01] &amp;lt;Ultrahex&amp;gt; e = 2.71828183&lt;br /&gt;
[01:58:03] &amp;lt;Ultrahex&amp;gt; ....&lt;br /&gt;
[01:58:15] &amp;lt;TheFerret&amp;gt; e^e   &amp;lt;-face upside down&lt;br /&gt;
[01:58:27] &amp;lt;Ultrahex&amp;gt; ya ya ya&lt;br /&gt;
[01:58:28] &amp;lt;Ultrahex&amp;gt; :P&lt;br /&gt;
[01:58:33] &amp;lt;TheFerret&amp;gt; lol... heheh&lt;br /&gt;
[01:58:39] &amp;lt;Ultrahex&amp;gt; .calc :P&lt;br /&gt;
[01:58:39] &amp;lt;X3&amp;gt; �Ultrahex�: Unknown character in expression&lt;br /&gt;
[01:58:44] &amp;lt;Ultrahex&amp;gt; fails miserably&lt;br /&gt;
[01:58:47] &amp;lt;TheFerret&amp;gt; lol&lt;br /&gt;
[01:59:01] &amp;lt;TheFerret&amp;gt; it would be more like this...&lt;br /&gt;
[01:59:07] &amp;lt;TheFerret&amp;gt; .calc pie&lt;br /&gt;
[01:59:07] &amp;lt;X3&amp;gt; �TheFerret�: Unexpected Identifier&lt;br /&gt;
[01:59:11] &amp;lt;TheFerret&amp;gt; .calc p&lt;br /&gt;
[01:59:11] &amp;lt;X3&amp;gt; �TheFerret�: Unexpected Identifier&lt;br /&gt;
[01:59:14] &amp;lt;Ultrahex&amp;gt; .calc the world round&lt;br /&gt;
[01:59:15] &amp;lt;X3&amp;gt; �Ultrahex�: Unexpected Identifier&lt;br /&gt;
[01:59:18] &amp;lt;TheFerret&amp;gt; .calc pi&lt;br /&gt;
[01:59:18] &amp;lt;X3&amp;gt; �TheFerret�: 3.141593&lt;br /&gt;
[01:59:20] &amp;lt;Ultrahex&amp;gt; .calc the sqrt of pi&lt;br /&gt;
[01:59:20] &amp;lt;X3&amp;gt; �Ultrahex�: Unexpected Identifier&lt;br /&gt;
[01:59:22] &amp;lt;TheFerret&amp;gt; lol, mmm ppie&lt;br /&gt;
[01:59:26] &amp;lt;Ultrahex&amp;gt; GOD DAMNIT!&lt;br /&gt;
[01:59:36] &amp;lt;TheFerret&amp;gt; .calc pi^(1/2)&lt;br /&gt;
[01:59:36] &amp;lt;X3&amp;gt; �TheFerret�: 1.772454&lt;br /&gt;
[01:59:37] &amp;lt;TheFerret&amp;gt; ha&lt;br /&gt;
[01:59:43] &amp;lt;Ultrahex&amp;gt; .calc find something good to eat and see how many times you can eat it before turning into poo&lt;br /&gt;
[01:59:43] &amp;lt;X3&amp;gt; �Ultrahex�: Unexpected Identifier&lt;br /&gt;
[01:59:56] &amp;lt;TheFerret&amp;gt; .calc 1.772454*1.772454&lt;br /&gt;
[01:59:56] &amp;lt;X3&amp;gt; �TheFerret�: 3.141593&lt;br /&gt;
[01:59:57] &amp;lt;Ultrahex&amp;gt; stupid calculator&lt;br /&gt;
[02:00:30] &amp;lt;TheFerret&amp;gt; .calc (-pi)^(1/3)&lt;br /&gt;
[02:00:30] &amp;lt;X3&amp;gt; �TheFerret�: 0.682784&lt;br /&gt;
[02:00:35] &amp;lt;TheFerret&amp;gt; .calc (-pi)^(1/2)&lt;br /&gt;
[02:00:35] &amp;lt;X3&amp;gt; �TheFerret�: 0.564190&lt;br /&gt;
[02:00:41] &amp;lt;TheFerret&amp;gt; wtf&lt;br /&gt;
[02:01:00] &amp;lt;TheFerret&amp;gt; you cant have a square root of a negative #&lt;br /&gt;
[02:01:34] &amp;lt;Ultrahex&amp;gt; x = 1&lt;br /&gt;
[02:01:34] &amp;lt;TheFerret&amp;gt; MUHAHAHA, ive broken math&lt;br /&gt;
[02:01:41] &amp;lt;Ultrahex&amp;gt; x^2=1&lt;br /&gt;
[02:01:50] &amp;lt;Ultrahex&amp;gt; x^2-1=0&lt;br /&gt;
[02:01:52] &amp;lt;TheFerret&amp;gt; .calc 1/pi&lt;br /&gt;
[02:01:53] &amp;lt;X3&amp;gt; �TheFerret�: 0.318310&lt;br /&gt;
[02:02:01] &amp;lt;Ultrahex&amp;gt; x^2=0&lt;br /&gt;
[02:02:02] &amp;lt;Ultrahex&amp;gt; hmmm&lt;br /&gt;
[02:02:12] &amp;lt;Ultrahex&amp;gt; oh ya forgot to expand&lt;br /&gt;
[02:02:12] &amp;lt;Ultrahex&amp;gt; lol&lt;br /&gt;
[02:02:15] &amp;lt;TheFerret&amp;gt; lol&lt;br /&gt;
[02:02:20] &amp;lt;Ultrahex&amp;gt; x=1&lt;br /&gt;
[02:02:23] &amp;lt;Ultrahex&amp;gt; x^2=1&lt;br /&gt;
[02:02:34] &amp;lt;Ultrahex&amp;gt; x^2-1=1^2-1&lt;br /&gt;
[02:02:55] &amp;lt;TheFerret&amp;gt; heh, so hard reading and doing math on irc&lt;br /&gt;
[02:03:01] &amp;lt;Ultrahex&amp;gt; (x^2-1)(x^2-1) = 0&lt;br /&gt;
[02:03:08] &amp;lt;Ultrahex&amp;gt; lol i did that wrng&lt;br /&gt;
[02:03:09] &amp;lt;Ultrahex&amp;gt; ROFL&lt;br /&gt;
[02:03:10] &amp;lt;Ultrahex&amp;gt; ROFL&lt;br /&gt;
[02:03:10] &amp;lt;Ultrahex&amp;gt; ROFL&lt;br /&gt;
[02:03:11] &amp;lt;TheFerret&amp;gt; lol&lt;br /&gt;
[02:03:18] &amp;lt;Ultrahex&amp;gt; (x-1)(x-1)=0&lt;br /&gt;
[02:03:20] &amp;lt;Ultrahex&amp;gt; anyhow&lt;br /&gt;
[02:03:25] &amp;lt;TheFerret&amp;gt; so you want x^2-1 expanded&amp;gt;&lt;br /&gt;
[02:03:28] &amp;lt;Ultrahex&amp;gt; you understand how i got to that :P&lt;br /&gt;
[02:03:34] &amp;lt;TheFerret&amp;gt; no&lt;br /&gt;
[02:03:35] &amp;lt;TheFerret&amp;gt; lol&lt;br /&gt;
[02:03:45] &amp;lt;Ultrahex&amp;gt; oh ok&lt;br /&gt;
[02:03:47] &amp;lt;Ultrahex&amp;gt; ill redo it&lt;br /&gt;
[02:03:53] &amp;lt;Ultrahex&amp;gt; ill just do x2 for x^2 ok ?&lt;br /&gt;
[02:03:57] &amp;lt;TheFerret&amp;gt; k&lt;br /&gt;
[02:04:00] &amp;lt;Ultrahex&amp;gt; x=1&lt;br /&gt;
[02:04:13] &amp;lt;Ultrahex&amp;gt; x2=12&lt;br /&gt;
[02:04:18] &amp;lt;Ultrahex&amp;gt; x2=1&lt;br /&gt;
[02:04:26] &amp;lt;Ultrahex&amp;gt; right?&lt;br /&gt;
[02:04:35] &amp;lt;TheFerret&amp;gt; ya, so x = 1&lt;br /&gt;
[02:04:50] &amp;lt;Ultrahex&amp;gt; ok now minus 1 from both sides&lt;br /&gt;
[02:04:53] &amp;lt;Ultrahex&amp;gt; x2-1=0&lt;br /&gt;
[02:04:57] &amp;lt;Ultrahex&amp;gt; factor&lt;br /&gt;
[02:05:07] &amp;lt;Ultrahex&amp;gt; (x-1)(x+1)=0&lt;br /&gt;
[02:05:22] &amp;lt;TheFerret&amp;gt; x = +-1&lt;br /&gt;
[02:05:34] &amp;lt;TheFerret&amp;gt; x = -1 is extranous&lt;br /&gt;
[02:06:05] &amp;lt;Ultrahex&amp;gt; hehe yup&lt;br /&gt;
[02:06:09] &amp;lt;Ultrahex&amp;gt; really funny though&lt;br /&gt;
[02:06:09] &amp;lt;Ultrahex&amp;gt; :)&lt;br /&gt;
[02:06:14] &amp;lt;Ultrahex&amp;gt; but you could do thsi way 2&lt;br /&gt;
[02:06:15] &amp;lt;TheFerret&amp;gt; yeah&lt;br /&gt;
[02:06:19] &amp;lt;Ultrahex&amp;gt; x=1 and x2 = 1&lt;br /&gt;
[02:06:22] &amp;lt;TheFerret&amp;gt; we did that is math&lt;br /&gt;
[02:06:24] &amp;lt;TheFerret&amp;gt; this year&lt;br /&gt;
[02:06:33] &amp;lt;Ultrahex&amp;gt; x2-1 = x-1&lt;br /&gt;
[02:06:58] &amp;lt;Ultrahex&amp;gt; (x-1)(x+1) = x-1&lt;br /&gt;
[02:08:01] &amp;lt;Ultrahex&amp;gt; then x+1=1 (divide by x-1)&lt;br /&gt;
[02:08:04] &amp;lt;TheFerret&amp;gt; x+1 = 12&lt;br /&gt;
[02:08:05] &amp;lt;Ultrahex&amp;gt; x=2&lt;br /&gt;
[02:08:07] &amp;lt;Ultrahex&amp;gt; hmmmmmm&lt;br /&gt;
[02:08:19] &amp;lt;Ultrahex&amp;gt; so 1=2&lt;br /&gt;
[02:08:20] &amp;lt;TheFerret&amp;gt; yah, i made a type&lt;br /&gt;
[02:08:29] &amp;lt;TheFerret&amp;gt; typo*... lol&lt;br /&gt;
[02:08:34] &amp;lt;Ultrahex&amp;gt; so many ways to do it&lt;br /&gt;
[02:08:35] &amp;lt;Ultrahex&amp;gt; :)&lt;br /&gt;
[02:09:01] &amp;lt;Ultrahex&amp;gt; i cant find the other one yet&lt;br /&gt;
[02:09:16] &amp;lt;Ultrahex&amp;gt; there is this other math one where its like how sqrt will never work&lt;br /&gt;
[02:09:18] &amp;lt;Ultrahex&amp;gt; its weird&lt;br /&gt;
[02:09:23] &amp;lt;Ultrahex&amp;gt; and i cant figure it out&lt;br /&gt;
[02:09:38] &amp;lt;TheFerret&amp;gt; square root of negative # in the real number system :P&lt;br /&gt;
[02:09:46] &amp;lt;Ultrahex&amp;gt; ya i know&lt;br /&gt;
[02:10:01] &amp;lt;Ultrahex&amp;gt; it uses imaginary numbers&lt;br /&gt;
[02:10:07] &amp;lt;Ultrahex&amp;gt; but something goes weird&lt;br /&gt;
[02:10:08] &amp;lt;Ultrahex&amp;gt; hmmm&lt;br /&gt;
[02:10:52] &amp;lt;TheFerret&amp;gt; doesnt seem to be on good&lt;br /&gt;
[02:10:55] &amp;lt;TheFerret&amp;gt; google*&lt;br /&gt;
[02:11:24] &amp;lt;Ultrahex&amp;gt; x=1&lt;br /&gt;
[02:11:40] &amp;lt;Ultrahex&amp;gt; -x=-1&lt;br /&gt;
[02:11:47] &amp;lt;Ultrahex&amp;gt; bah i cant think of it lol&lt;br /&gt;
[02:11:50] &amp;lt;TheFerret&amp;gt; lol&lt;br /&gt;
[02:12:23] &amp;lt;Ultrahex&amp;gt; what do you call those things?&lt;br /&gt;
[02:12:26] &amp;lt;Ultrahex&amp;gt; math theories or something&lt;br /&gt;
[02:12:42] &amp;lt;TheFerret&amp;gt; something like that&lt;br /&gt;
[02:14:57] &amp;lt;TheFerret&amp;gt; what a cool eq^n: ( n +1)^2  = n^2  + n  + ( n +1)&lt;br /&gt;
[02:16:09] &amp;lt;TheFerret&amp;gt; .calc (4+1)^2&lt;br /&gt;
[02:16:09] &amp;lt;X3&amp;gt; �TheFerret�: 25&lt;br /&gt;
[02:16:25] &amp;lt;TheFerret&amp;gt; .calc 4^2 + 4 + 5&lt;br /&gt;
[02:16:25] &amp;lt;X3&amp;gt; �TheFerret�: 25&lt;br /&gt;
[02:16:32] &amp;lt;TheFerret&amp;gt; lol&lt;br /&gt;
[02:16:40] &amp;lt;Ultrahex&amp;gt; lol&lt;br /&gt;
[02:16:52] &amp;lt;Ultrahex&amp;gt; (n+1)(n+1) = (n+1)^2&lt;br /&gt;
[02:17:03] &amp;lt;TheFerret&amp;gt; i found  that off some website&lt;br /&gt;
[02:17:08] &amp;lt;Ultrahex&amp;gt; n^2 + n + n + 1&lt;br /&gt;
[02:17:14] &amp;lt;Ultrahex&amp;gt; n^2 + 2n + 1&lt;br /&gt;
[02:17:19] &amp;lt;Ultrahex&amp;gt; :P Quadratics dumbass :P&lt;br /&gt;
[02:17:30] &amp;lt;TheFerret&amp;gt; http://www.google.com/url?sa=t&amp;amp;ct=res&amp;amp;cd=2&amp;amp;url=http%3A//www.embedded.com/98/9802fe2.htm&amp;amp;ei=b8a8Q5S9BISo-gH3pInKDg&amp;amp;sig2=-yLeCSQEIROpjHqCundlYQ&lt;br /&gt;
[02:17:51] &amp;lt;TheFerret&amp;gt; friden algo&lt;br /&gt;
[02:18:08] &amp;lt;Ultrahex&amp;gt; ^ i just prove the freaking thing above&lt;br /&gt;
[02:18:08] &amp;lt;Ultrahex&amp;gt; lol&lt;br /&gt;
[02:18:16] &amp;lt;Ultrahex&amp;gt; except its less&lt;br /&gt;
[02:18:17] &amp;lt;TheFerret&amp;gt; you did&lt;br /&gt;
[02:18:17] &amp;lt;Ultrahex&amp;gt; lol&lt;br /&gt;
[02:18:40] &amp;lt;TheFerret&amp;gt; HAHAHAH: Method to Find Square Root of Pi&lt;br /&gt;
[02:18:40] &amp;lt;TheFerret&amp;gt; Date: 03/30/97 at 18:36:36&lt;br /&gt;
[02:18:40] &amp;lt;TheFerret&amp;gt; From: Jeff Houk&lt;br /&gt;
[02:18:40] &amp;lt;TheFerret&amp;gt; Subject: Method to Find Square Root of Pi&lt;br /&gt;
[02:18:40] &amp;lt;TheFerret&amp;gt; What is the square root of Pi? I tried using a calculator, but &lt;br /&gt;
[02:18:40] &amp;lt;TheFerret&amp;gt; that didn't work. I tried trial and error and Guess and Check, &lt;br /&gt;
[02:18:40] &amp;lt;TheFerret&amp;gt; but neither of those helped either.  HELP!&lt;br /&gt;
[02:18:54] &amp;lt;Ultrahex&amp;gt; !!&lt;br /&gt;
[02:18:55] &amp;lt;Ultrahex&amp;gt; ROFL&lt;br /&gt;
[02:18:59] &amp;lt;Ultrahex&amp;gt; .calc sqrt [ pi ]&lt;br /&gt;
[02:19:00] &amp;lt;X3&amp;gt; �Ultrahex�: 1.772454&lt;br /&gt;
[02:19:00] &amp;lt;Ultrahex&amp;gt; :P&lt;br /&gt;
[02:19:02] &amp;lt;TheFerret&amp;gt; http://mathforum.org/library/drmath/view/58261.html&lt;br /&gt;
[02:19:47] &amp;lt;Ultrahex&amp;gt; im thinking along the lines of&lt;br /&gt;
[02:20:06] &amp;lt;Ultrahex&amp;gt; sqrt[-1] = i&lt;br /&gt;
[02:20:10] &amp;lt;Ultrahex&amp;gt; right?&lt;br /&gt;
[02:20:17] &amp;lt;Ultrahex&amp;gt; i^2 = 1&lt;br /&gt;
[02:20:20] &amp;lt;TheFerret&amp;gt; ya&lt;br /&gt;
[02:20:26] &amp;lt;Ultrahex&amp;gt; so hmmm&lt;br /&gt;
[02:20:32] &amp;lt;TheFerret&amp;gt; i think thats right&lt;br /&gt;
[02:20:43] &amp;lt;Ultrahex&amp;gt; x = -1&lt;br /&gt;
[02:20:50] &amp;lt;Ultrahex&amp;gt; sqrt[x] = i&lt;br /&gt;
[02:21:11] &amp;lt;Ultrahex&amp;gt; x = 1&lt;br /&gt;
[02:21:13] &amp;lt;Ultrahex&amp;gt; ya&lt;br /&gt;
[02:21:13] &amp;lt;Ultrahex&amp;gt; hmm&lt;br /&gt;
[02:21:16] &amp;lt;Ultrahex&amp;gt; -1 = 1&lt;br /&gt;
[02:21:22] &amp;lt;TheFerret&amp;gt; weird&lt;br /&gt;
[02:21:40] &amp;lt;Ultrahex&amp;gt; cant prove that wrong&lt;br /&gt;
[02:21:41] &amp;lt;Ultrahex&amp;gt; lol&lt;br /&gt;
[02:21:54] &amp;lt;Ultrahex&amp;gt; but i guess +- x = 1&lt;br /&gt;
[02:22:02] &amp;lt;TheFerret&amp;gt; ya&lt;br /&gt;
[02:22:02] &amp;lt;Ultrahex&amp;gt; but the thing is .... then 1 = -1&lt;br /&gt;
[02:22:04] &amp;lt;Ultrahex&amp;gt; :///&lt;br /&gt;
[02:22:09] &amp;lt;Ultrahex&amp;gt; 2 = -2&lt;br /&gt;
[02:22:15] &amp;lt;Ultrahex&amp;gt; oh my GOD&lt;br /&gt;
[02:22:16] &amp;lt;Ultrahex&amp;gt; lol&lt;br /&gt;
[02:22:20] &amp;lt;TheFerret&amp;gt; lol&lt;br /&gt;
[02:22:30] &amp;lt;Ultrahex&amp;gt; x = -2&lt;br /&gt;
[02:22:44] &amp;lt;Ultrahex&amp;gt; sqrt [ x ] = sqrt [ -2 ]&lt;br /&gt;
[02:22:48] &amp;lt;Ultrahex&amp;gt; whats sqrt of -2&lt;br /&gt;
[02:22:53] &amp;lt;Ultrahex&amp;gt; 2i ?&lt;br /&gt;
[02:22:56] &amp;lt;TheFerret&amp;gt; ya&lt;br /&gt;
[02:23:06] &amp;lt;Ultrahex&amp;gt; sqrt [ x ] = 2 i&lt;br /&gt;
[02:23:19] &amp;lt;Ultrahex&amp;gt; x = 2&lt;br /&gt;
[02:23:20] &amp;lt;Ultrahex&amp;gt; hmmm&lt;br /&gt;
[02:23:23] &amp;lt;Ultrahex&amp;gt; GOD DAMNIT&lt;br /&gt;
[02:23:24] &amp;lt;Ultrahex&amp;gt; lol&lt;br /&gt;
[02:23:25] &amp;lt;TheFerret&amp;gt; you did it wrong&lt;br /&gt;
[02:23:32] &amp;lt;Ultrahex&amp;gt; where?&lt;br /&gt;
[02:23:47] &amp;lt;TheFerret&amp;gt; it should be sqrt (x) = sqrt (2)i&lt;br /&gt;
[02:24:12] &amp;lt;Ultrahex&amp;gt; no&lt;br /&gt;
[02:24:18] &amp;lt;TheFerret&amp;gt; yes&lt;br /&gt;
[02:24:28] &amp;lt;Ultrahex&amp;gt; ..... how would i get i without sqrooting&lt;br /&gt;
[02:24:29] &amp;lt;Ultrahex&amp;gt; lol&lt;br /&gt;
[02:24:38] &amp;lt;TheFerret&amp;gt; i = -1&lt;br /&gt;
[02:24:58] &amp;lt;Ultrahex&amp;gt; you are forgetting something&lt;br /&gt;
[02:25:09] &amp;lt;TheFerret&amp;gt; .calc 2^(1/2)&lt;br /&gt;
[02:25:09] &amp;lt;X3&amp;gt; �TheFerret�: 1.414214&lt;br /&gt;
[02:25:13] &amp;lt;Ultrahex&amp;gt; ill do it again&lt;br /&gt;
[02:25:22] &amp;lt;Ultrahex&amp;gt; x = -2&lt;br /&gt;
[02:25:32] &amp;lt;TheFerret&amp;gt; .calc 1.414214 * 1.414214&lt;br /&gt;
[02:25:32] &amp;lt;X3&amp;gt; �TheFerret�: 2&lt;br /&gt;
[02:25:38] &amp;lt;Ultrahex&amp;gt; sqrt [ x ] = sqrt [ -2 ] (Square Root Both Sides)&lt;br /&gt;
[02:25:39] &amp;lt;TheFerret&amp;gt; x=-2&lt;br /&gt;
[02:25:46] &amp;lt;Ultrahex&amp;gt; sqrt [ x ] = 2i&lt;br /&gt;
[02:25:52] &amp;lt;Ultrahex&amp;gt; 2*i = -2&lt;br /&gt;
[02:26:03] &amp;lt;Ultrahex&amp;gt; 2i^2 = 2&lt;br /&gt;
[02:26:16] &amp;lt;Ultrahex&amp;gt; :P&lt;br /&gt;
[02:26:27] &amp;lt;Ultrahex&amp;gt; yet again 2=-2&lt;br /&gt;
[02:26:29] &amp;lt;Ultrahex&amp;gt; 3=-3&lt;br /&gt;
[02:26:31] &amp;lt;Ultrahex&amp;gt; ...&lt;br /&gt;
[02:26:34] &amp;lt;TheFerret&amp;gt; if you were to square both sides, the roots drop and all you are left with is x=2&lt;br /&gt;
[02:26:38] &amp;lt;TheFerret&amp;gt; x=-2*&lt;br /&gt;
[02:26:43] &amp;lt;TheFerret&amp;gt; lol&lt;br /&gt;
[02:26:50] &amp;lt;Ultrahex&amp;gt; GOD DAMNIT&lt;br /&gt;
[02:26:51] &amp;lt;Ultrahex&amp;gt; yes&lt;br /&gt;
[02:26:56] &amp;lt;Ultrahex&amp;gt; but im not simplifying yet&lt;br /&gt;
[02:26:56] &amp;lt;Ultrahex&amp;gt; lol&lt;br /&gt;
[02:27:01] &amp;lt;TheFerret&amp;gt; lol&lt;br /&gt;
[02:27:13] &amp;lt;Ultrahex&amp;gt; i change to imaginary numbers because sqrt of a negative number&lt;br /&gt;
[02:27:20] &amp;lt;TheFerret&amp;gt; good ole messed up math system&lt;br /&gt;
[02:27:23] &amp;lt;Ultrahex&amp;gt; yup&lt;br /&gt;
[02:27:57] &amp;lt;TheFerret&amp;gt; isnt i^2, `&lt;br /&gt;
[02:27:59] &amp;lt;TheFerret&amp;gt; 1*&lt;br /&gt;
[02:28:01] &amp;lt;Ultrahex&amp;gt; yes&lt;br /&gt;
[02:28:05] &amp;lt;Ultrahex&amp;gt; thats the point&lt;br /&gt;
[02:28:06] &amp;lt;Ultrahex&amp;gt; lol&lt;br /&gt;
[02:28:23] &amp;lt;TheFerret&amp;gt; so it would be 2(-1)^2=2&lt;br /&gt;
[02:28:40] &amp;lt;Ultrahex&amp;gt; no&lt;br /&gt;
[02:28:42] &amp;lt;Ultrahex&amp;gt; it would be&lt;br /&gt;
[02:28:50] &amp;lt;Ultrahex&amp;gt; 2(sqrt[-1])^2&lt;br /&gt;
[02:28:59] &amp;lt;Ultrahex&amp;gt; so it would be 2&lt;br /&gt;
[02:29:06] &amp;lt;TheFerret&amp;gt; where did the root come from&lt;br /&gt;
[02:29:08] &amp;lt;Ultrahex&amp;gt; i = sqrt[-1]&lt;br /&gt;
[02:29:14] &amp;lt;Ultrahex&amp;gt; i^2=1&lt;br /&gt;
[02:29:31] &amp;lt;Ultrahex&amp;gt; i^2=-1***&lt;br /&gt;
[02:29:40] &amp;lt;TheFerret&amp;gt; yeah&lt;br /&gt;
[02:29:48] &amp;lt;Ultrahex&amp;gt; hmmm whats going on now im so confused&lt;br /&gt;
[02:29:48] &amp;lt;Ultrahex&amp;gt; lol&lt;br /&gt;
[02:30:25] &amp;lt;TheFerret&amp;gt; so its 2(sqrt-1) * 2(sqrt-1) =2&lt;br /&gt;
[02:30:48] &amp;lt;TheFerret&amp;gt; or 2i *2i =2&lt;br /&gt;
[02:31:09] &amp;lt;TheFerret&amp;gt; i*i=1&lt;br /&gt;
[02:31:10] &amp;lt;Ultrahex&amp;gt; i dont even know anymore lol&lt;br /&gt;
[02:31:16] &amp;lt;Ultrahex&amp;gt; !!!&lt;br /&gt;
[02:31:19] &amp;lt;Ultrahex&amp;gt; i^2=-1&lt;br /&gt;
[02:31:20] &amp;lt;TheFerret&amp;gt; i^2=1&lt;br /&gt;
[02:31:27] &amp;lt;TheFerret&amp;gt; lol&lt;br /&gt;
[02:31:27] &amp;lt;Ultrahex&amp;gt; no its negative 1&lt;br /&gt;
[02:31:29] &amp;lt;Ultrahex&amp;gt; lol&lt;br /&gt;
[02:31:30] &amp;lt;TheFerret&amp;gt; its one&lt;br /&gt;
[02:31:32] &amp;lt;Ultrahex&amp;gt; WTF is going on&lt;br /&gt;
[02:31:40] &amp;lt;Ultrahex&amp;gt; sqrt[-1] = i&lt;br /&gt;
[02:31:50] &amp;lt;Ultrahex&amp;gt; that doesn't work man&lt;br /&gt;
[02:31:51] &amp;lt;Ultrahex&amp;gt; lol&lt;br /&gt;
[02:31:56] &amp;lt;TheFerret&amp;gt; ok, it is -1&lt;br /&gt;
[02:31:57] &amp;lt;Ultrahex&amp;gt; fuck i told you 1=-1&lt;br /&gt;
[02:32:00] &amp;lt;TheFerret&amp;gt; lol&lt;br /&gt;
[02:32:04] &amp;lt;Ultrahex&amp;gt; 2=-2&lt;br /&gt;
[02:32:09] &amp;lt;Ultrahex&amp;gt; jeez this is taking to long&lt;br /&gt;
[02:32:10] &amp;lt;Ultrahex&amp;gt; lol&lt;br /&gt;
[02:32:12] &amp;lt;TheFerret&amp;gt; lol&lt;br /&gt;
[02:32:22] &amp;lt;Ultrahex&amp;gt; i better go to bed soon&lt;br /&gt;
[02:32:23] &amp;lt;Ultrahex&amp;gt; lol&lt;br /&gt;
[02:32:24] &amp;lt;TheFerret&amp;gt; heh&lt;br /&gt;
[02:32:35] &amp;lt;TheFerret&amp;gt; how did i get i^2 to =1 then&lt;br /&gt;
[02:32:36] &amp;lt;TheFerret&amp;gt; lol&lt;br /&gt;
[02:32:41] &amp;lt;Ultrahex&amp;gt; exactly&lt;br /&gt;
[02:32:42] &amp;lt;Ultrahex&amp;gt; lol&lt;br /&gt;
[02:33:23] &amp;lt;TheFerret&amp;gt; wait for that it would be (-1)*(-1)=1 which is true&lt;br /&gt;
[02:33:36] &amp;lt;TheFerret&amp;gt; so i proved that you are right&lt;br /&gt;
[02:33:53] &amp;lt;Ultrahex&amp;gt; hmmm now to just document it&lt;br /&gt;
[02:33:55] &amp;lt;Ultrahex&amp;gt; and sell on ebay&lt;br /&gt;
[02:33:55] &amp;lt;Ultrahex&amp;gt; loo&lt;br /&gt;
[02:34:02] &amp;lt;Ultrahex&amp;gt; l&lt;br /&gt;
[02:36:44] &amp;lt;Ultrahex&amp;gt; in Imaginary Numbers&lt;br /&gt;
[02:36:44] &amp;lt;Ultrahex&amp;gt; i = sqrt[-1]&lt;br /&gt;
[02:36:44] &amp;lt;Ultrahex&amp;gt; so (Since squareroot cancels out)&lt;br /&gt;
[02:36:44] &amp;lt;Ultrahex&amp;gt; i^2 = -1&lt;br /&gt;
[02:36:44] &amp;lt;Ultrahex&amp;gt; x=-1&lt;br /&gt;
[02:36:45] &amp;lt;Ultrahex&amp;gt; sqrt[x] = sqrt[-1]&lt;br /&gt;
[02:36:50] &amp;lt;Ultrahex&amp;gt; sqrt[x] = i&lt;br /&gt;
[02:36:52] &amp;lt;Ultrahex&amp;gt; x = i^2&lt;br /&gt;
[02:36:54] &amp;lt;Ultrahex&amp;gt; x = sqrt[-1]^2&lt;br /&gt;
[02:36:56] &amp;lt;Ultrahex&amp;gt; x = -1&lt;br /&gt;
[02:36:58] &amp;lt;Ultrahex&amp;gt; you must covert to sqrt[-1] otherwise....&lt;br /&gt;
[02:37:00] &amp;lt;Ultrahex&amp;gt; x = i^2&lt;br /&gt;
[02:37:01] &amp;lt;Ultrahex&amp;gt; x = 1^2&lt;br /&gt;
[02:37:04] &amp;lt;Ultrahex&amp;gt; x = 1&lt;br /&gt;
[02:37:18] &amp;lt;Ultrahex&amp;gt; minute wtf&lt;br /&gt;
[02:37:21] &amp;lt;Ultrahex&amp;gt; i did something wrong?&lt;br /&gt;
[02:37:31] &amp;lt;TheFerret&amp;gt; lol&lt;br /&gt;
[02:37:52] &amp;lt;Ultrahex&amp;gt; i^2 = -1 not 1&lt;br /&gt;
[02:37:53] &amp;lt;Ultrahex&amp;gt; thats why&lt;br /&gt;
[02:37:54] &amp;lt;Ultrahex&amp;gt; :P&lt;br /&gt;
[02:37:58] &amp;lt;Ultrahex&amp;gt; we fucked up really good&lt;br /&gt;
[02:37:59] &amp;lt;Ultrahex&amp;gt; lol&lt;br /&gt;
[02:38:03] &amp;lt;Ultrahex&amp;gt; we r dumbass&lt;br /&gt;
[02:38:04] &amp;lt;Ultrahex&amp;gt; lol&lt;br /&gt;
[02:38:04] &amp;lt;TheFerret&amp;gt; heh, did we... lol&lt;br /&gt;
[02:38:20] &amp;lt;Ultrahex&amp;gt; now i really gotta find it online&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>TheFerret</name></author>	</entry>

	<entry>
		<id>http://wiki.compsci.ca/index.php?title=An_Introduction_to_Io</id>
		<title>An Introduction to Io</title>
		<link rel="alternate" type="text/html" href="http://wiki.compsci.ca/index.php?title=An_Introduction_to_Io"/>
				<updated>2006-01-02T02:53:01Z</updated>
		
		<summary type="html">&lt;p&gt;TheFerret: Created the page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Why another programming language?==&lt;br /&gt;
&lt;br /&gt;
We've all heard the expression &amp;quot;think outside the box.&amp;quot; It means that you shouldn't allow your thinking to be limited by what you're accustomed to.&lt;br /&gt;
&lt;br /&gt;
Every single programming language forces us to think inside a box. Some of the boxes are smaller, and some are larger, but they're still boxes. The only way to gain a broad understanding of programming then, is to learn as many programming languages as we can.&lt;br /&gt;
&lt;br /&gt;
===Why this programming language?===&lt;br /&gt;
&lt;br /&gt;
Students stumble over two things when learning a programming language. They either have trouble with the syntax or the semantics. How the language looks, or how it behaves.&lt;br /&gt;
&lt;br /&gt;
Syntax is not without importance. Finding easier ways to do things is good. But syntactic conveniences are generally just a sign of support for beneficial semantics.&lt;br /&gt;
&lt;br /&gt;
In functional programming languages we don't say the ability to pass around anonymous functions is useful because of the syntax.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
\x -&amp;gt; x * 3 + 16&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This is useful because of the utility of being able to quickly generate functions and pass them around as values. It is an idea we can use elsewhere to our advantage. The syntax we'll rarely be able to use.&lt;br /&gt;
&lt;br /&gt;
Io is a programming language with minimal syntactic rules. There is very little to trip over because there just isn't much there. This emphasizes semantics.&lt;br /&gt;
&lt;br /&gt;
===So what the heck is Io?===&lt;br /&gt;
&lt;br /&gt;
Io is a purely object-oriented programming language. Everything in Io is an object.&lt;br /&gt;
&lt;br /&gt;
What does that mean? Well, simply put, it means the language is consistent.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Io&amp;gt; &amp;quot;hello&amp;quot; size&lt;br /&gt;
==&amp;gt; 5&lt;br /&gt;
Io&amp;gt; list(1, 2, 3) size&lt;br /&gt;
==&amp;gt; 3&lt;br /&gt;
Io&amp;gt; &amp;quot;hello&amp;quot; foreach(i, x,&lt;br /&gt;
       writeln(i, &amp;quot;: &amp;quot;, x asCharacter)&lt;br /&gt;
    )&lt;br /&gt;
0: h&lt;br /&gt;
1: e&lt;br /&gt;
2: l&lt;br /&gt;
3: l&lt;br /&gt;
4: o&lt;br /&gt;
&lt;br /&gt;
==&amp;gt; Nil&lt;br /&gt;
Io&amp;gt; list(1, 2, 3) foreach(i, x,&lt;br /&gt;
       writeln(i, &amp;quot;: &amp;quot;, x)&lt;br /&gt;
    )&lt;br /&gt;
0: 1&lt;br /&gt;
1: 2&lt;br /&gt;
2: 3&lt;br /&gt;
&lt;br /&gt;
==&amp;gt; Nil&lt;br /&gt;
Io&amp;gt; &amp;quot;hello&amp;quot; print&lt;br /&gt;
hello&lt;br /&gt;
==&amp;gt; hello&lt;br /&gt;
Io&amp;gt; 9 print&lt;br /&gt;
9&lt;br /&gt;
==&amp;gt; 9&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A big plus is that Io features an interactive interpreter, making it easy to experiment with code.&lt;br /&gt;
&lt;br /&gt;
And that probably doesn't tell you a whole lot, so let's be a bit more specific.&lt;br /&gt;
&lt;br /&gt;
==Hello, world==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Io&amp;gt; writeln(&amp;quot;hello, world&amp;quot;)&lt;br /&gt;
hello, world&lt;br /&gt;
&lt;br /&gt;
==&amp;gt; Nil&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
What's going on here?&lt;br /&gt;
&lt;br /&gt;
Well, &amp;quot;writeln&amp;quot; is a message.&lt;br /&gt;
&lt;br /&gt;
A message has a receiver, and optionally, arguments. At the top level of a program, the receiver is implicitly Object. Therefore we can easily write the following instead.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Io&amp;gt; Object writeln(&amp;quot;Hello, world&amp;quot;)&lt;br /&gt;
Hello, world&lt;br /&gt;
&lt;br /&gt;
==&amp;gt; Nil&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The argument in this case is the string, &amp;quot;Hello, world&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
When the &amp;quot;writeln&amp;quot; message is sent to Object, it looks up the corresponding method and invokes it with the arguments supplied.&lt;br /&gt;
&lt;br /&gt;
Message passing is not so obvious until you see the same action performed as follows.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Io&amp;gt; perform(&amp;quot;writeln&amp;quot;, &amp;quot;Hello, world&amp;quot;)&lt;br /&gt;
Hello, world&lt;br /&gt;
&lt;br /&gt;
==&amp;gt; Nil&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Programming Principles==&lt;br /&gt;
===What about math and stuff?===&lt;br /&gt;
&lt;br /&gt;
Operators exist, and are quite handy for all of our mathematical needs. They also follow the same precendence rules you're used to.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Io&amp;gt; 1 + 1&lt;br /&gt;
==&amp;gt; 2&lt;br /&gt;
Io&amp;gt; 2 + 3 * 4&lt;br /&gt;
==&amp;gt; 14&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
So, how does this mesh with the idea of messages and consistency?&lt;br /&gt;
&lt;br /&gt;
Well, let's rewrite the above.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Io&amp;gt; 1 +(1)&lt;br /&gt;
==&amp;gt; 2&lt;br /&gt;
Io&amp;gt; 2 +(3 *(4))&lt;br /&gt;
==&amp;gt; 14&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It's just kind of ugly to do it that way.&lt;br /&gt;
&lt;br /&gt;
===Variables?===&lt;br /&gt;
&lt;br /&gt;
It's not unusual to want to give names to pieces of information.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Io&amp;gt; msg := &amp;quot;Hello, world&amp;quot;&lt;br /&gt;
==&amp;gt; Hello, world&lt;br /&gt;
Io&amp;gt; writeln(msg)&lt;br /&gt;
Hello, world&lt;br /&gt;
&lt;br /&gt;
==&amp;gt; Nil&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
But what's really going on here?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Io&amp;gt; Object writeln(Object msg)&lt;br /&gt;
Hello, world&lt;br /&gt;
&lt;br /&gt;
==&amp;gt; Nil&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As with writeln, Object is implicitly there.&lt;br /&gt;
&lt;br /&gt;
Thus &amp;quot;msg&amp;quot; becomes just a value tied to a &amp;quot;slot&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===A receiver other than Object?===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Io&amp;gt; msg println&lt;br /&gt;
Hello, world&lt;br /&gt;
&lt;br /&gt;
==&amp;gt; Hello, world&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here msg is the receiver, and println the message. Of course, the implicit Object is still in there.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Io&amp;gt; Object msg println&lt;br /&gt;
Hello, world&lt;br /&gt;
&lt;br /&gt;
==&amp;gt; Hello, world&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Perhaps this is easier to understand as follows.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Io&amp;gt; (Object msg) println&lt;br /&gt;
Hello, world&lt;br /&gt;
&lt;br /&gt;
==&amp;gt; Hello, world&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The println message is being sent to &amp;quot;Object msg&amp;quot;. Get used to the version without parentheses, thogh, since that's what you'll see from here on out.&lt;br /&gt;
&lt;br /&gt;
===Create your own method===&lt;br /&gt;
&lt;br /&gt;
So far we've only seen a very few standard library provided methods. Let's create one.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Io&amp;gt; sayHello := method(&amp;quot;Hello&amp;quot; println)&lt;br /&gt;
==&amp;gt; method(&amp;quot;Hello&amp;quot; println)&lt;br /&gt;
Io&amp;gt; sayHello&lt;br /&gt;
Hello&lt;br /&gt;
&lt;br /&gt;
==&amp;gt; Hello&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There's nothing new here. The := and method are both messages. The following is a more verbose version.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Io&amp;gt; Object sayHello := Object method(&amp;quot;Hello&amp;quot; println)&lt;br /&gt;
==&amp;gt; method(&amp;quot;Hello&amp;quot; println)&lt;br /&gt;
Io&amp;gt; Object sayHello&lt;br /&gt;
Hello&lt;br /&gt;
&lt;br /&gt;
==&amp;gt; Hello&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Let's add an argument.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Io&amp;gt; sayHelloTo := method(name, writeln(&amp;quot;Hello &amp;quot;, name))&lt;br /&gt;
==&amp;gt; method(name, writeln(&amp;quot;Hello &amp;quot;, name))&lt;br /&gt;
Io&amp;gt; sayHelloTo(&amp;quot;Bob&amp;quot;)&lt;br /&gt;
Hello Bob&lt;br /&gt;
&lt;br /&gt;
==&amp;gt; Nil&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
What if the method has lots of arguments?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Io&amp;gt; sayHelloTo := method(&lt;br /&gt;
       thisMessage arguments foreach(arg,&lt;br /&gt;
          writeln(&amp;quot;Hello &amp;quot;, doMessage(arg))&lt;br /&gt;
       )&lt;br /&gt;
    )&lt;br /&gt;
==&amp;gt; method(thisMessage arguments foreach(arg, writeln(&amp;quot;Hello &amp;quot;, doMessage(arg))))&lt;br /&gt;
Io&amp;gt; sayHelloTo(&amp;quot;Bob&amp;quot;)&lt;br /&gt;
Hello Bob&lt;br /&gt;
&lt;br /&gt;
==&amp;gt; Nil&lt;br /&gt;
Io&amp;gt; sayHelloTo(&amp;quot;Bob&amp;quot;, &amp;quot;John&amp;quot;)&lt;br /&gt;
Hello Bob&lt;br /&gt;
Hello John&lt;br /&gt;
&lt;br /&gt;
==&amp;gt; Nil&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
So, what's going on here? What is &amp;quot;thisMessage&amp;quot;?&lt;br /&gt;
&lt;br /&gt;
That refers to well, the current message. In the case of:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sayHelloTo(&amp;quot;Bob&amp;quot;, &amp;quot;John&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It refers to that passing of the sayHelloTo message. The arguments slot of that object contains a list which holds the arguments. It's fairly straightforward.&lt;br /&gt;
&lt;br /&gt;
For that list, we send the &amp;quot;foreach&amp;quot; message. For each argument in that list, evaluate the message. Of course, here we're sending two arguments to &amp;quot;foreach&amp;quot;, so the first is the name we're giving to each argument in the list.&lt;br /&gt;
&lt;br /&gt;
So, why can't we just write the following?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
writeln(&amp;quot;Hello &amp;quot;, arg)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The arguments in the list are not simple values. They're actually objects which represent the messages themselves, before being evaluated. To evaluate those messages and get the resulting value, we can use the doMessage message.&lt;br /&gt;
&lt;br /&gt;
How it all comes together is reasonable straightforward.&lt;br /&gt;
&lt;br /&gt;
===A conditional===&lt;br /&gt;
&lt;br /&gt;
What if we want it to print &amp;quot;Hello world&amp;quot; if no arguments were passed in?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Io&amp;gt; sayHelloTo := method(&lt;br /&gt;
       args := thisMessage arguments&lt;br /&gt;
       if(args size == 0,&lt;br /&gt;
          &amp;quot;Hello world&amp;quot; println&lt;br /&gt;
          return(Nil)&lt;br /&gt;
       )&lt;br /&gt;
       args foreach(arg,&lt;br /&gt;
          writeln(&amp;quot;Hello &amp;quot;, doMessage(arg))&lt;br /&gt;
       )&lt;br /&gt;
    )&lt;br /&gt;
==&amp;gt; method(setSlot(&amp;quot;args&amp;quot;, thisMessage arguments);&lt;br /&gt;
if(args size ==(0), &amp;quot;Hello world&amp;quot; println;&lt;br /&gt;
return(Nil));&lt;br /&gt;
args foreach(arg, writeln(&amp;quot;Hello &amp;quot;, doMessage(arg))))&lt;br /&gt;
Io&amp;gt; sayHelloTo&lt;br /&gt;
Hello world&lt;br /&gt;
&lt;br /&gt;
==&amp;gt; Nil&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here we can see first off the addition of the &amp;quot;args&amp;quot; slot to give a more convenient name to the arguments list.&lt;br /&gt;
&lt;br /&gt;
The next new thing of course is the conditional. If there are no arguments to sayHelloTo, then we first print &amp;quot;Hello world&amp;quot; and then we send the return message with the argument Nil. The return message causes control flow to skip to the end of the method.&lt;br /&gt;
&lt;br /&gt;
It's interesting to note that multiple messages here are considered as a single message by the if message. They are separated by a newline, but could be separated by a semi-colon, as the code after &amp;quot;==&amp;gt;&amp;quot; shows.&lt;br /&gt;
&lt;br /&gt;
Now here we're only providing two arguments to &amp;quot;if&amp;quot;. We could provide three.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Io&amp;gt; sayHelloTo := method(&lt;br /&gt;
       args := thisMessage arguments&lt;br /&gt;
       if(args size == 0,&lt;br /&gt;
          &amp;quot;Hello world&amp;quot; println,&lt;br /&gt;
          args foreach(arg,&lt;br /&gt;
             writeln(&amp;quot;Hello &amp;quot;, doMessage(arg))&lt;br /&gt;
          )&lt;br /&gt;
       )&lt;br /&gt;
    )&lt;br /&gt;
==&amp;gt; method(setSlot(&amp;quot;args&amp;quot;, thisMessage arguments);&lt;br /&gt;
if(args size ==(0), &amp;quot;Hello world&amp;quot; println, args foreach(arg, writeln(&amp;quot;Hello &amp;quot;, d&lt;br /&gt;
oMessage(arg)))))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here the third argument becomes the &amp;quot;else&amp;quot; part of the conditional. An explicit return is no longer necessary since only one of the two messages can be evaluated.&lt;br /&gt;
&lt;br /&gt;
===Evaluating messages and a greater appreciation of &amp;quot;if&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
Let's implement our own &amp;quot;if&amp;quot; message.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Io&amp;gt; myIf := method(&lt;br /&gt;
       args := thisMessage arguments&lt;br /&gt;
       if(args size == 2,&lt;br /&gt;
          if(doMessage(args at(0)), doMessage(args at(1)))&lt;br /&gt;
       )&lt;br /&gt;
       if(args size == 3,&lt;br /&gt;
          if(doMessage(args at(0)),&lt;br /&gt;
             doMessage(args at(1)),&lt;br /&gt;
             doMessage(args at(2))&lt;br /&gt;
          )&lt;br /&gt;
       )&lt;br /&gt;
    )&lt;br /&gt;
==&amp;gt; method(setSlot(&amp;quot;args&amp;quot;, thisMessage arguments); if(args size ==(2), if(doMessage(args at(0)), doMessage(args at(1)))); if(args size ==(3), if(doMessage(args at(0)), doMessage(args at(1)), doMessage(args at(2)))))&lt;br /&gt;
Io&amp;gt; myIf(4 == 3, &amp;quot;foo&amp;quot; print, &amp;quot;bar&amp;quot; print)&lt;br /&gt;
bar&lt;br /&gt;
==&amp;gt; bar&lt;br /&gt;
Io&amp;gt; myIf(4 == 3, &amp;quot;foo&amp;quot; print, &amp;quot;bar&amp;quot; print; &amp;quot;baz&amp;quot; print)&lt;br /&gt;
barbaz&lt;br /&gt;
==&amp;gt; baz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It replicates &amp;quot;if&amp;quot; reasonably well, and it's quite simple. So how does this work?&lt;br /&gt;
&lt;br /&gt;
It wouldn't work in many other languages. They strictly evaluate expressions (the rough equivalent of &amp;quot;messages&amp;quot;). If something is passed as an argument to a method/function/etc. it is immediately evaluated, and any side-effects become immediately apparent.&lt;br /&gt;
&lt;br /&gt;
That is something we can't have with a conditional. It has to evaluate only one argument or the other. Fortunately Io makes this simple. Writing our own control structures is therefore a piece of cake.&lt;br /&gt;
&lt;br /&gt;
===More flexible conditionals===&lt;br /&gt;
&lt;br /&gt;
The conditionals we've seen so far are just peachy... if we want a very simple decision between two possibilities. It looks less nice when we have lots of possibilities.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
write(&amp;quot;Your name is? &amp;quot;)&lt;br /&gt;
name := File standardInput readLine&lt;br /&gt;
&lt;br /&gt;
if(name == &amp;quot;Clarence&amp;quot;) then(&lt;br /&gt;
   writeln(&amp;quot;What a goofy name.&amp;quot;)&lt;br /&gt;
) elseif(name == &amp;quot;Sid&amp;quot;) then(&lt;br /&gt;
   writeln(&amp;quot;Sure it is...&amp;quot;)&lt;br /&gt;
) else(&lt;br /&gt;
   writeln(&amp;quot;Hello &amp;quot;, name)&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You will note that I didn't just copy and paste this from the interpreter. Instead, I save this in a file named &amp;quot;hello.io&amp;quot;, and run it from the command-line with &amp;quot;io hello.io&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Alternatively, you can open your interpreter and send the following message.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
doFile(&amp;quot;hello.io&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will run the file. If you've created new methods in that file, they will become available later on in the interpreter.&lt;br /&gt;
&lt;br /&gt;
===Adding slots to something other than Object===&lt;br /&gt;
&lt;br /&gt;
So far all we've done is give new variables and methods to Object. We could try adding to something else.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Io&amp;gt; Number double := method(self * 2)&lt;br /&gt;
==&amp;gt; method(self *(2))&lt;br /&gt;
Io&amp;gt; 2 double&lt;br /&gt;
==&amp;gt; 4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
But how then did &amp;quot;Number&amp;quot; come into being?&lt;br /&gt;
&lt;br /&gt;
Number is just a clone of Object. It then had a bunch of extra stuff tacked on. But, that stuff was tacked onto Number, and not Object. For instance, + is valid for Number, but not for Object.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Io&amp;gt; a := Object clone&lt;br /&gt;
==&amp;gt; Object_0074B3B0 do(&lt;br /&gt;
  appendProto(Object_003FD640)&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
Io&amp;gt; a + 4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Importer: Object does not respond to '+'&lt;br /&gt;
&lt;br /&gt;
Label                 Line       Char    Message&lt;br /&gt;
------------------------------------------------&lt;br /&gt;
VMCode                619        18724   raise(&amp;quot;Importer&amp;quot;, theObject type ..(&amp;quot; do)...&lt;br /&gt;
VMCode                623        18927   find(thisMessage name, self)&lt;br /&gt;
[command line]        1          3       +(4)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==&amp;gt; Nil&lt;br /&gt;
Io&amp;gt; a := Number clone&lt;br /&gt;
==&amp;gt; 0&lt;br /&gt;
Io&amp;gt; a + 4&lt;br /&gt;
==&amp;gt; 4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And yet, Object is a prototype of Number, so Number responds to all of the messages Object does. Those already familiar with object-oriented programming should be thinking &amp;quot;inheritance&amp;quot; about now.&lt;br /&gt;
&lt;br /&gt;
But let's create something new.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Io&amp;gt; Name := Object clone&lt;br /&gt;
==&amp;gt; Object_00789D90 do(&lt;br /&gt;
  appendProto(Object_003FD640)&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
Io&amp;gt; Name first := &amp;quot;&amp;quot;&lt;br /&gt;
==&amp;gt;&lt;br /&gt;
Io&amp;gt; Name last := &amp;quot;&amp;quot;&lt;br /&gt;
==&amp;gt;&lt;br /&gt;
Io&amp;gt; Name fullName := method(first with(&amp;quot; &amp;quot;) with(last))&lt;br /&gt;
==&amp;gt; method(first with(&amp;quot; &amp;quot;) with(last))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That looks messy. Let's use the &amp;quot;do&amp;quot; message to clean it up.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Io&amp;gt; Name := Object clone do(&lt;br /&gt;
       first := &amp;quot;&amp;quot;&lt;br /&gt;
       last := &amp;quot;&amp;quot;&lt;br /&gt;
       fullName := method(first with(&amp;quot; &amp;quot;) with(last))&lt;br /&gt;
    )&lt;br /&gt;
==&amp;gt; Object_0073A9C8 do(&lt;br /&gt;
  appendProto(Object_003FD640)&lt;br /&gt;
  first := &amp;quot;&amp;quot;&lt;br /&gt;
  last := &amp;quot;&amp;quot;&lt;br /&gt;
  fullName := Block_0078D3B8&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, we'll want to create new Name objects.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Io&amp;gt; myName := Name clone do(&lt;br /&gt;
       first := &amp;quot;Bob&amp;quot;&lt;br /&gt;
       last := &amp;quot;Smith&amp;quot;&lt;br /&gt;
    )&lt;br /&gt;
==&amp;gt; Object_00727DC8 do(&lt;br /&gt;
  appendProto(Object_0073A9C8)&lt;br /&gt;
  first := &amp;quot;Bob&amp;quot;&lt;br /&gt;
  last := &amp;quot;Smith&amp;quot;&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
Io&amp;gt; myName fullName&lt;br /&gt;
==&amp;gt; Bob Smith&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The myName object has as a prototype Name, and thus responds to the fullName message. Now, what if we want a more formal name?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Io&amp;gt; FormalName := Name clone do(&lt;br /&gt;
       title := &amp;quot;&amp;quot;&lt;br /&gt;
       fullName := method(&lt;br /&gt;
          name := resend&lt;br /&gt;
          title with(&amp;quot; &amp;quot;) with(name)&lt;br /&gt;
       )&lt;br /&gt;
    )&lt;br /&gt;
==&amp;gt; Object_00759DC0 do(&lt;br /&gt;
  appendProto(Object_0073A9C8)&lt;br /&gt;
  title := &amp;quot;&amp;quot;&lt;br /&gt;
  fullName := Block_0075A2A8&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
Io&amp;gt; myName := FormalName clone do(&lt;br /&gt;
       first := &amp;quot;Bob&amp;quot;&lt;br /&gt;
       last := &amp;quot;Smith&amp;quot;&lt;br /&gt;
       title := &amp;quot;Mr.&amp;quot;&lt;br /&gt;
    )&lt;br /&gt;
==&amp;gt; Object_00767A88 do(&lt;br /&gt;
  appendProto(Object_00759DC0)&lt;br /&gt;
  title := &amp;quot;Mr.&amp;quot;&lt;br /&gt;
  first := &amp;quot;Bob&amp;quot;&lt;br /&gt;
  last := &amp;quot;Smith&amp;quot;&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
Io&amp;gt; myName fullName&lt;br /&gt;
==&amp;gt; Mr. Bob Smith&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Since Name is a prototype of FormalName, we can use the resend message to send the fullName message to Name which gets the combination of the first and last names. We then simply add the title onto the beginning of that.&lt;br /&gt;
&lt;br /&gt;
===All sorts of prototype shenanigans===&lt;br /&gt;
&lt;br /&gt;
So, what if I have:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Io&amp;gt; myName := Name clone do(&lt;br /&gt;
       first := &amp;quot;Bob&amp;quot;&lt;br /&gt;
       last := &amp;quot;Smith&amp;quot;&lt;br /&gt;
    )&lt;br /&gt;
==&amp;gt; Object_00727DC8 do(&lt;br /&gt;
  appendProto(Object_0073A9C8)&lt;br /&gt;
  first := &amp;quot;Bob&amp;quot;&lt;br /&gt;
  last := &amp;quot;Smith&amp;quot;&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
Io&amp;gt; myName fullName&lt;br /&gt;
==&amp;gt; Bob Smith&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And I want to be able to treat this as a FormalName?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Io&amp;gt; myName do(&lt;br /&gt;
       title := &amp;quot;Mr.&amp;quot;&lt;br /&gt;
       prependProto(FormalName)&lt;br /&gt;
    )&lt;br /&gt;
==&amp;gt; Object_00742368 do(&lt;br /&gt;
  appendProto(Object_00746850, Object_007566B0)&lt;br /&gt;
  title := &amp;quot;Mr.&amp;quot;&lt;br /&gt;
  first := &amp;quot;Bob&amp;quot;&lt;br /&gt;
  last := &amp;quot;Smith&amp;quot;&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
Io&amp;gt; myName fullName&lt;br /&gt;
==&amp;gt; Mr. Bob Smith&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
So, what exactly did I do?&lt;br /&gt;
&lt;br /&gt;
I added a title slot to myName, and I prepended FormalName onto the list of prototypes for myName.&lt;br /&gt;
&lt;br /&gt;
Then, when I sent the fullName message to myName, instead of looking in Name for fullName, it found a perfectly suitable version in FormalName and used that instead. I convinced myName that it is in fact a FormalName.&lt;br /&gt;
&lt;br /&gt;
===Operators===&lt;br /&gt;
&lt;br /&gt;
So, let's say we want to check to see if two names are equal.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Io&amp;gt; Name setSlot(&amp;quot;==&amp;quot;,&lt;br /&gt;
       method(other,&lt;br /&gt;
          other first == first and other last == last&lt;br /&gt;
       )&lt;br /&gt;
    )&lt;br /&gt;
==&amp;gt; method(other, other first ==(first) and(other last ==(last)))&lt;br /&gt;
Io&amp;gt; a := Name clone do(first := &amp;quot;Bob&amp;quot;; last := &amp;quot;Smith&amp;quot;)&lt;br /&gt;
==&amp;gt; Object_00724490 do(&lt;br /&gt;
  appendProto(Object_007566B0)&lt;br /&gt;
  first := &amp;quot;Bob&amp;quot;&lt;br /&gt;
  last := &amp;quot;Smith&amp;quot;&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
Io&amp;gt; b := a clone&lt;br /&gt;
==&amp;gt; Object_00725BE8 do(&lt;br /&gt;
  appendProto(Object_00724490)&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
Io&amp;gt; a == b&lt;br /&gt;
==&amp;gt; Bob&lt;br /&gt;
Io&amp;gt; b := a clone do(last := &amp;quot;Wilson&amp;quot;)&lt;br /&gt;
==&amp;gt; Object_00728DC0 do(&lt;br /&gt;
  appendProto(Object_00724490)&lt;br /&gt;
  last := &amp;quot;Wilson&amp;quot;&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
Io&amp;gt; a == b&lt;br /&gt;
==&amp;gt; Nil&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then defining the opposite is a simple matter of simply checking to see if they are not equal. If == returns Nil, then they are not equal.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Io&amp;gt; Name setSlot(&amp;quot;!=&amp;quot;, method(other, (self == other) isNil))&lt;br /&gt;
==&amp;gt; method(other, (self ==(other)) isNil)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Originally created by [[Wtd]] at [http://www.compsci.ca/v2/viewtopic.php?t=10795 the forums], copied over by [[TheFerret]]''&lt;/div&gt;</summary>
		<author><name>TheFerret</name></author>	</entry>

	<entry>
		<id>http://wiki.compsci.ca/index.php?title=Tutorials</id>
		<title>Tutorials</title>
		<link rel="alternate" type="text/html" href="http://wiki.compsci.ca/index.php?title=Tutorials"/>
				<updated>2006-01-02T02:29:17Z</updated>
		
		<summary type="html">&lt;p&gt;TheFerret: Added link for Io&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Language Independent Tutorials==&lt;br /&gt;
Tutorials that don't depend on a specific language, though they may use examples in one.&lt;br /&gt;
&lt;br /&gt;
==C/C++/C# Tutorials==&lt;br /&gt;
Tutorials Specific to [[C]] and [[CPP|C++]]; and perhaps even some [[C_Sharp|C#]].&lt;br /&gt;
&lt;br /&gt;
*[[Basic String Handling in C]]&lt;br /&gt;
*[[Editing and Compiling programs on windows via MinGW]]&lt;br /&gt;
*[[Introduction to CPP|Introduction to C++]]&lt;br /&gt;
*[[Why you should avoid arrays using CPP|Why you should avoid arrays using C++]]&lt;br /&gt;
*[[Why you should learn C]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://www.compsci.ca/v2/viewforum.php?f=16 C/C++/C# tutorials on CompSci.ca]&lt;br /&gt;
&lt;br /&gt;
==Java Tutorials==&lt;br /&gt;
[[Java]] specific tutorials.&lt;br /&gt;
&lt;br /&gt;
[http://www.compsci.ca/v2/viewforum.php?f=22 Java tutorials on CompSci.ca]&lt;br /&gt;
&lt;br /&gt;
==Ruby Tutorials==&lt;br /&gt;
[[Ruby]] specific tutorials.&lt;br /&gt;
&lt;br /&gt;
[http://www.compsci.ca/v2/viewforum.php?f=59 Ruby tutorials on CompSci.ca]&lt;br /&gt;
&lt;br /&gt;
==Turing Tutorials==&lt;br /&gt;
[[Turing]] specific tutorials.&lt;br /&gt;
&lt;br /&gt;
[http://www.compsci.ca/v2/viewforum.php?f=3 Turing tutorials on CompSci.ca]&lt;br /&gt;
&lt;br /&gt;
==VB Tutorials==&lt;br /&gt;
[[Visual Basic]] Specific tutorials.&lt;br /&gt;
&lt;br /&gt;
[http://www.compsci.ca/v2/viewforum.php?f=12 Visual Basic Tutorials on CompSci.ca]&lt;br /&gt;
&lt;br /&gt;
==Io Tutorial==&lt;br /&gt;
[[An Introduction to Io]]&lt;/div&gt;</summary>
		<author><name>TheFerret</name></author>	</entry>

	<entry>
		<id>http://wiki.compsci.ca/index.php?title=TheFerret</id>
		<title>TheFerret</title>
		<link rel="alternate" type="text/html" href="http://wiki.compsci.ca/index.php?title=TheFerret"/>
				<updated>2005-12-18T00:45:05Z</updated>
		
		<summary type="html">&lt;p&gt;TheFerret: Added few things...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==About TheFerret==&lt;br /&gt;
TheFerret joined [http://www.compsci.ca Compsci.ca] on Feburary 15, 2004 to become more advanced in the art of [[Turing]] and [[Java]] programming. TheFerret is currently 17 years old and goes to [http://scss.lkdsb.net St. Clair Secondary School] in Sarnia, Ontario. He is currently in grade 12 and plans to go to UofW for chemical engineering but he will have to raise his calculus mark about 60 so he has at least a small chance to be admitted. His real name is Travis. (He also has to do better in English, since his sucks really badly at times) Some things he likes to do on his spare time include: wrestling on the school team, robotics with [[the]] school, [http://www.team1084.com Iron Colts] and he also likes to read and dabble with computer stuff. &lt;br /&gt;
&lt;br /&gt;
==Why &amp;quot;TheFerret&amp;quot;==&lt;br /&gt;
Don't know why, ferrets are cool and I want two of them, so there... *stop looking at me like that*&lt;br /&gt;
&lt;br /&gt;
==Likes/Dislikes==&lt;br /&gt;
===Likes===&lt;br /&gt;
[[Firefox]]&lt;br /&gt;
&lt;br /&gt;
Iced Tea&lt;br /&gt;
&lt;br /&gt;
Almost any [[Food|food]] (Yum...)&lt;br /&gt;
&lt;br /&gt;
[[Programming]]&lt;br /&gt;
&lt;br /&gt;
Wrestling&lt;br /&gt;
&lt;br /&gt;
[http://www.team1084.com Robotics]&lt;br /&gt;
&lt;br /&gt;
And Finally sleep&lt;br /&gt;
&lt;br /&gt;
===Dislikes===&lt;br /&gt;
Stupid annoying people&lt;br /&gt;
&lt;br /&gt;
peas, squash and any other weird vege&lt;br /&gt;
&lt;br /&gt;
His computer (stupid Celeron)&lt;br /&gt;
&lt;br /&gt;
==Quote==&lt;br /&gt;
''&amp;quot;Run Dog, Run&amp;quot;''&lt;br /&gt;
&lt;br /&gt;
==Avatar==&lt;br /&gt;
His only avatar to ever be used.&lt;br /&gt;
&lt;br /&gt;
[[image:Dog.gif]] [[Image:Dog1.gif|''Used for part of the Chuck Norris revial but so far hasn't got off the groud...'']]&lt;/div&gt;</summary>
		<author><name>TheFerret</name></author>	</entry>

	<entry>
		<id>http://wiki.compsci.ca/index.php?title=File:Dog1.gif</id>
		<title>File:Dog1.gif</title>
		<link rel="alternate" type="text/html" href="http://wiki.compsci.ca/index.php?title=File:Dog1.gif"/>
				<updated>2005-12-18T00:37:34Z</updated>
		
		<summary type="html">&lt;p&gt;TheFerret: New Avatar&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;New Avatar&lt;/div&gt;</summary>
		<author><name>TheFerret</name></author>	</entry>

	<entry>
		<id>http://wiki.compsci.ca/index.php?title=TheFerret</id>
		<title>TheFerret</title>
		<link rel="alternate" type="text/html" href="http://wiki.compsci.ca/index.php?title=TheFerret"/>
				<updated>2005-12-15T04:48:10Z</updated>
		
		<summary type="html">&lt;p&gt;TheFerret: Added almost everything...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==About TheFerret==&lt;br /&gt;
TheFerret joined [http://www.compsci.ca Compsci.ca] on Feburary 15, 2004 to become more advanced in the art of [[Turing]] and [[Java]] programming. TheFerret is currently 17 years old and goes to [http://scss.lkdsb.net St. Clair Secondary School] in Sarnia, Ontario. He is currently in grade 12 and plans to go to UofW for chemical engineering but he will have to raise his calculus mark about 60 so he has at least a small chance to be admitted. His real name is Travis. (He also has to do better in English, since his sucks really badly at times) Some things he likes to do on his spare time include: wrestling on the school team, robotics with the school, [http://www.team1084.com Iron Colts] and he also likes to read and dabble with computer stuff. &lt;br /&gt;
&lt;br /&gt;
==Why &amp;quot;TheFerret&amp;quot;==&lt;br /&gt;
Don't know why, ferrets are cool and I want two of them, so there... *stop looking at me like that*&lt;br /&gt;
&lt;br /&gt;
==Likes/Dislikes==&lt;br /&gt;
===Likes===&lt;br /&gt;
[[Firefox]]&lt;br /&gt;
&lt;br /&gt;
Iced Tea&lt;br /&gt;
&lt;br /&gt;
Almost any food (Yum...)&lt;br /&gt;
&lt;br /&gt;
[[Programming]]&lt;br /&gt;
&lt;br /&gt;
Wrestling&lt;br /&gt;
&lt;br /&gt;
Robotics&lt;br /&gt;
&lt;br /&gt;
And Finally sleep&lt;br /&gt;
&lt;br /&gt;
===Dislikes===&lt;br /&gt;
Stupid annoying people&lt;br /&gt;
&lt;br /&gt;
peas, squash and any other weird vege&lt;br /&gt;
&lt;br /&gt;
==Quote==&lt;br /&gt;
''&amp;quot;Run Dog, Run&amp;quot;''&lt;br /&gt;
&lt;br /&gt;
==Avatar==&lt;br /&gt;
His only avatar to ever be used.&lt;br /&gt;
&lt;br /&gt;
[[image:Dog.gif]]&lt;/div&gt;</summary>
		<author><name>TheFerret</name></author>	</entry>

	<entry>
		<id>http://wiki.compsci.ca/index.php?title=File:Dog.gif</id>
		<title>File:Dog.gif</title>
		<link rel="alternate" type="text/html" href="http://wiki.compsci.ca/index.php?title=File:Dog.gif"/>
				<updated>2005-12-15T04:45:47Z</updated>
		
		<summary type="html">&lt;p&gt;TheFerret: TheFerrets Dog avatar...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;TheFerrets Dog avatar...&lt;/div&gt;</summary>
		<author><name>TheFerret</name></author>	</entry>

	<entry>
		<id>http://wiki.compsci.ca/index.php?title=File:Firefox-logo.png</id>
		<title>File:Firefox-logo.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.compsci.ca/index.php?title=File:Firefox-logo.png"/>
				<updated>2005-12-15T04:27:06Z</updated>
		
		<summary type="html">&lt;p&gt;TheFerret: Logo for Firefox 1.5&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Logo for Firefox 1.5&lt;/div&gt;</summary>
		<author><name>TheFerret</name></author>	</entry>

	<entry>
		<id>http://wiki.compsci.ca/index.php?title=IRC_channel</id>
		<title>IRC channel</title>
		<link rel="alternate" type="text/html" href="http://wiki.compsci.ca/index.php?title=IRC_channel"/>
				<updated>2005-12-15T03:47:03Z</updated>
		
		<summary type="html">&lt;p&gt;TheFerret: Added about new channel&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The #compsci.ca channel on IRC is where all the cool members are hanging out. Chances are, if you're not there, you're missing something exciting and important.&lt;br /&gt;
&lt;br /&gt;
==Information==&lt;br /&gt;
&lt;br /&gt;
'''Server:'''  irc.afternet.org&lt;br /&gt;
&lt;br /&gt;
'''Main Channel:''' #compsci.ca&lt;br /&gt;
&lt;br /&gt;
'''Self-taught Programming Channel:''' #cs-self-taught&lt;br /&gt;
&lt;br /&gt;
==History==&lt;br /&gt;
===Of The Main Channel===&lt;br /&gt;
&lt;br /&gt;
Much of #compsci.ca's early history is shrouded in mystery. Nobody is quite sure the exact time when it was created, but rumour has it that [[Coutsos]] was its founder, although he did not begin to regularly attend it until quite some time later. Its first regular inhabitants were [[wtd]] and a mysterious lurker named [[Ultrahex]], who doesn't seem to be a bona fide member of the CompSci.ca community, although he's always in the channel.&lt;br /&gt;
Things took off sometime in early 2005, when a wave of members, including [[Hikaru79]], [[Coutsos]], [[Cervantes]], and [[Gandalf]] started regularly attending the channel. At present, #compsci.ca has a regular population of about seven, give or take, although it is subject to occasional flurries of activity, often when the moon is full.&lt;br /&gt;
&lt;br /&gt;
===Of The Self-taught Programming Channel===&lt;br /&gt;
This channel was thought of on the [http://www.compsci.ca/v2/viewtopic.php?t=10613 forums] by [[wtd]] on December 14, 2005. The main intrest of this new channel is [[Ruby]] and [[O'Caml]]. This channel is not for the people who are taught programming in high school but for the people who self-teach it. When [[wtd]] announced it, there was a great cheer for [[wtd]] since he created the channel for the rest of the users to use and ask questions about.&lt;br /&gt;
&lt;br /&gt;
==Daily Life==&lt;br /&gt;
&lt;br /&gt;
Much of #compsci.ca's time is spent in utter silence (while its members spend time in deep personal reflection and thought), broken periodically by outbursts of conversation, instruction, and weirdness. Hilarity often ensues. Confusion can become rampant when the mature members take to stealing each other's nicknames.  On a good day, [[wtd]] can be observed teaching some interesting, mind-blowing new programming concept.&lt;br /&gt;
&lt;br /&gt;
== IRC Names to CompSci.ca User Names ==&lt;br /&gt;
'''[[wtd]]''' - wtd, Lotho&amp;lt;br&amp;gt;&lt;br /&gt;
'''[[Cornflake]]''' - md, minor_deity, or cornflake&amp;lt;br&amp;gt;&lt;br /&gt;
'''[[Coutsos]]''' - Coutsos&amp;lt;br&amp;gt;&lt;br /&gt;
'''[[Cervantes]]''' - Cervantes, [[Minsc]], and 100's of other variations that come up&amp;lt;br&amp;gt;&lt;br /&gt;
'''[[Gandalf]]''' - Gandalf, [Gandalf]&amp;lt;br&amp;gt;&lt;br /&gt;
'''[[Hikaru79]]''' - Hikaru79&amp;lt;br&amp;gt;&lt;br /&gt;
'''[[Hacker Dan]]''' - Hacker_Dan, Dan&amp;lt;br&amp;gt;&lt;br /&gt;
'''[[timmytheturtle]]''' - timmy, timmytheturtle, timmythetortoise&amp;lt;br&amp;gt;&lt;br /&gt;
'''[[Amailer]]''' - Amailer&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;*Note: May vary greatly when name-switching game is in progress.&lt;br /&gt;
&lt;br /&gt;
==The Future==&lt;br /&gt;
&lt;br /&gt;
The future for #compsci.ca is looking bright, as it receives more and more attention in the compsci.ca community, particularly through the siggies and evangelism of [[Cervantes]], [[Coutsos]], and [[Hikaru79]]. With any luck, it will soon be as integral a part of the compsci.ca experience as the forum has come to be. &lt;br /&gt;
&lt;br /&gt;
[[Hacker Dan]] has made plans to integrate a Java-based IRC client that will send users to the channel directly from the forums. The feature is planned to be included in the new forum software, [[V3]], that hopefully will be completed over the 2005/2006 Christmas break.&lt;/div&gt;</summary>
		<author><name>TheFerret</name></author>	</entry>

	<entry>
		<id>http://wiki.compsci.ca/index.php?title=Firefox</id>
		<title>Firefox</title>
		<link rel="alternate" type="text/html" href="http://wiki.compsci.ca/index.php?title=Firefox"/>
				<updated>2005-12-14T02:58:13Z</updated>
		
		<summary type="html">&lt;p&gt;TheFerret: Created the page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The great free cross-broswer platform that most of the people at Compsci are using. It is developed by the great people at [http://www.mozilla.org Mozilla Coperation] and also with the help of lots of volunteers.&lt;br /&gt;
&lt;br /&gt;
Firefox has been very popular even before it hit the version 1.0 mark. As the version number got higher, the browser kept on getting better and better, also more and more people were downloading the new craze. 99 days after ver. 1.0 was released, over 25 million copies of the exe were downloaded from and only 344 days after the release of 1.0, ff hit its 100 million download. On November 29, 2005, ver. 1.5 was released to the general public which took another craze to the fox by downloading over 2 million copies of the broswer in the first 36 hours.&lt;br /&gt;
&lt;br /&gt;
Some of the main features of this browser include an intergrated pop-up blocker, tabbed browsing, live bookmarks, and an extensions mechanism to allow for individualized browsing experience. Although other browsers have some of these features, ff was one of the first to have them all combined into one efficent package.&lt;br /&gt;
&lt;br /&gt;
Firefox has slowly been taking away the industry dominant Internet Explorer as the main browser being used. Some reports put that Firefox is being used by 9.4% of people&lt;br /&gt;
&lt;br /&gt;
==History==&lt;br /&gt;
Dave Hyatt and Blake Ross began working on the Firefox project as an experimental branch of the Mozilla project. They believed that the commercial requirements of Netscape's sponsorship and developer-driven feature creep compromised the utility of the Mozilla browser. To combat what they saw as the Mozilla Suite's software bloat, they created a pared-down browser, with which they intended to replace the Mozilla Suite.&lt;br /&gt;
&lt;br /&gt;
Mozilla Firefox retains the cross-platform nature of the original Mozilla browser by using the XUL user interface markup language. Through Firefox's support of XUL, users may extend their browser's capabilities by applying themes and extensions. Initially, these add-ons raised security concerns, so with the release of Firefox 0.9, the Mozilla Foundation opened Mozilla Update, a website containing themes and extensions &amp;quot;approved&amp;quot; as not harmful.&lt;br /&gt;
&lt;br /&gt;
The Mozilla Foundation had intended to make the Mozilla Suite obsolete and to replace it with Firefox. On March 10, 2005, the Foundation announced that official releases of Mozilla would cease with the 1.7.x series. The Foundation continues to maintain the 1.7.x branch because of its continued use by many corporate users, and because makers of other software still often bundle the product. The Mozilla community (as opposed to the Foundation) will release the next version. These community releases will be called SeaMonkey, and will start out at version 1.0 to avoid any possible confusion for organizations or people still wanting to use the original Mozilla Suite. The Mozilla Foundation will continue giving support (such as CVS hosting) for the Mozilla community developers.&lt;br /&gt;
&lt;br /&gt;
===Release History===&lt;br /&gt;
Firefox has developed considerably since its first release as Phoenix on September 23, 2002. Pre-1.0 releases suffered many issues with extensions, as the code for handling them changed from version to version.&lt;br /&gt;
&lt;br /&gt;
Throughout its development, Firefox versions have had internal codenames. These have a basis in real locations, with codenames such as Three Kings, Royal Oak, One Tree Hill, Mission Bay, and Greenlane all referencing suburbs in Auckland, New Zealand, and the name Whangamata coming from a small seaside town on the Coromandel Peninsula, southeast of Auckland in New Zealand. Ben Goodger, the lead developer of Firefox, who grew up in Auckland, chose these codenames. The other codenames included in the Firefox roadmap derive from an actual roadmap of a journey through California to Phoenix, Arizona.[9]&lt;br /&gt;
&lt;br /&gt;
Several builds codenamed &amp;quot;Deer Park&amp;quot; were released in 2005. According to Goodger, &amp;quot;Deer Park is not Deer Park, Victoria, but just a symbolic name. I was riding LIRR a few weeks ago and saw the name go by and I thought it sounded nice.&amp;quot; Therefore, this name probably references Deer Park, New York, a CDP on Long Island.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Deer Park&amp;quot; was originally destined to become Firefox 1.1. However, Mozilla Foundation decided to change the version number of the next major release from &amp;quot;1.1&amp;quot; to &amp;quot;1.5&amp;quot;, since it contained more new features than originally planned. In an attempt to dissuade end-users from downloading the preview versions, &amp;quot;Deer Park&amp;quot; versions do not use the standard Mozilla Firefox branding. On November 29, 2005, Firefox 1.5 was officially released.&lt;br /&gt;
&lt;br /&gt;
==Features==&lt;br /&gt;
The developers of Firefox aim to produce a browser that &amp;quot;just works&amp;quot; for most casual users. Those interested can add (as extensions and plugins) many features not packaged with Firefox.&lt;br /&gt;
&lt;br /&gt;
===Useability and Accesibility===&lt;br /&gt;
Firefox was designed to have a more simplified user interface which allows for it to have a less cluttered look than other browsers. Firefox supports tabbed browseing which allows multiple web pages to be open in one browser window, many people use Firefox over Internet Explorer for this main reason since IE does not have tabbed browsing. Also, Firefox was one of the first broswers to have a customizable pop-up blocker.&lt;br /&gt;
&lt;br /&gt;
For the people who need to find stuff, Firefox has a incremental find feature or &amp;quot;find as you type&amp;quot;. When this feature is enabled, the user will start typing a word and Firefox will automatically find the word and highlight it for you. As you type more of the word, FIrefox refines it search. Another thing to help people search is the built-in search toolbar which allows the user to search a number of search enginges within the click of a mouse button.&lt;br /&gt;
&lt;br /&gt;
===Customizability===&lt;br /&gt;
The design of Firefox aims at high extensibility. Through extensions (installed via XPInstall modules), users may activate new features, such as mouse gestures, advertisement blocking, proxy server switching, and debugging tools. Wikipedia editors using Firefox can even download a customised toolbar. Many features formerly part of the Mozilla Suite, such as the ChatZilla IRC client and a calendar, have become Firefox extensions.&lt;br /&gt;
&lt;br /&gt;
One can view the extension system as a ground for experimentation, where one can test new functionalities. Occasionally, an extension becomes part of the official product (for example tabbed browsing, a feature which proved popular through the MultiZilla extension, eventually became part of standard Mozilla).&lt;br /&gt;
&lt;br /&gt;
Firefox also supports a variety of themes/skins, which change its appearance. Themes consist of packages of CSS and image files. The Mozilla Update web site offers many themes for downloading. Beyond adding a new theme, users can customize Firefox's interface by moving and manipulating its various buttons, fields, and menus, and likewise by adding and deleting entire toolbars.&lt;br /&gt;
&lt;br /&gt;
A Firefox installation can keep all extensions and themes available on the Mozilla Update site up-to-date through Firefox's interface, which periodically checks for updates to installed themes and extensions.&lt;br /&gt;
&lt;br /&gt;
Additionally, Firefox stores many hidden preferences that users can access by typing about:config in the address bar. This mechanism enables features such as single-window mode and error pages, or speeding up page rendering by various tweaks. Experimental features like HTTP pipelining often lurk hidden in the about:config menu.&lt;br /&gt;
&lt;br /&gt;
===Security===&lt;br /&gt;
Some of Firefox's key security features include the use of the sandbox security model, same origin policy and external protocol whitelisting.&lt;br /&gt;
&lt;br /&gt;
Some argue that an important characteristic of Firefox security lies in the fact that anyone can see its source code. At least one other person reviews proposed software changes, and typically yet another person carries out a &amp;quot;super-review&amp;quot;. Once placed in the software, changes become visible for anyone else to consider, protest against, or improve.&lt;br /&gt;
&lt;br /&gt;
In addition, the Mozilla Foundation operates a &amp;quot;bug bounty&amp;quot; scheme: people who report a valid critical security bug receive a US$500 cash reward (for each report) and a Mozilla T-shirt. According to the Mozilla Foundation, this &amp;quot;bug bounty&amp;quot; system aims to &amp;quot;encourage more people to find and report security bugs in our products, so that we can make our products even more secure than they already are.&amp;quot; It should be noted that anyone in the world can report a bug. Also, all users can have access to the source code of Mozilla Firefox, to the internal design documentation, to forum discussions, and to other materials that can help in finding bugs.&lt;br /&gt;
&lt;br /&gt;
The Mozilla Foundation has implemented a policy on security bugs in order to help contributors to deal with security vulnerabilities. The policy restricts access to a security-related bug report to members of the security team until after Mozilla has shipped a fix for the problem. This approach aims to minimize the exploitation of publicly known vulnerabilities and to give the developers time to issue a patch. While similar to other &amp;quot;responsible disclosure&amp;quot; policies operated by software vendors such as Microsoft, this policy falls short of the full disclosure principle favored by some security researchers.&lt;br /&gt;
&lt;br /&gt;
==Market Adoption==&lt;br /&gt;
===Spread Firefox Campaigns===&lt;br /&gt;
The rapid adoption of Firefox apparently accelerated in part due to a series of aggressive community-marketing campaigns since 2004. For example, Blake Ross and Asa Dotzler organized a series of events dubbed &amp;quot;marketing week&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
On September 14, 2004, a community-marketing portal dubbed &amp;quot;Spread Firefox&amp;quot; (SFX) debuted along with the Firefox Preview Release, creating a centralized space for the discussion of various marketing techniques. The portal enhanced the &amp;quot;Get Firefox&amp;quot; button program, giving users &amp;quot;referrer points&amp;quot; as an incentive. The site lists the top 250 referrers. From time to time, the SFX team or SFX members launch marketing events organized at the Spread Firefox website.&lt;br /&gt;
&lt;br /&gt;
===Portable Firefox===&lt;br /&gt;
Portable Firefox is a repackaged version of Firefox designed to run from a USB flash drive, iPod, external hard drive or any other portable media. It arose out of a mozillaZine thread in June of 2004. John T. Haller released the first packaged version and then lead development from there. It includes a specialized launcher that adjusts extensions and themes to work as they are moved from computer to computer. It also uses compression (courtesy of UPX and 7-zip) to reduce the overall footprint and increase speed.&lt;br /&gt;
&lt;br /&gt;
Haller has also started development work on Portable Firefox Live, which aims to run on CD-R or other read-only media. A number of applications are already using Portable Firefox Live to deliver a browser and html-based content from CD.&lt;/div&gt;</summary>
		<author><name>TheFerret</name></author>	</entry>

	<entry>
		<id>http://wiki.compsci.ca/index.php?title=WCG</id>
		<title>WCG</title>
		<link rel="alternate" type="text/html" href="http://wiki.compsci.ca/index.php?title=WCG"/>
				<updated>2005-12-14T01:39:38Z</updated>
		
		<summary type="html">&lt;p&gt;TheFerret: Added links for Seti and Folding and cleaned up wordiness&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [http://www.worldcommunitygrid.org/ World Community Grid], hosted by IBM allows millions of computers to join their idle time for the benefit of humanity.  Similar to the [http://setiweb.ssl.berkeley.edu/ SETI@Home] project and [http://folding.stanford.edu/ Folding@Home], WCG focuses on [http://www.worldcommunitygrid.org/projects_showcase/viewHpfResearch.do human proteome folding] and [http://www.worldcommunitygrid.org/projects_showcase/viewFaahResearch.do fighting AIDS].  All three project run on the same client (BOINC) which is available for both the Linux and Windows platform. The program can be run in the background or as a screensaver.&amp;lt;p&amp;gt;&lt;br /&gt;
The relating topic on CompSci.ca is seen [http://www.compsci.ca/v2/viewtopic.php?t=10364 here].  Join the [http://www.worldcommunitygrid.org/team/viewTeamInfo.do?teamId=GZXJDZQRP1 CompSci team] for an easy way to make loads of bits in the monthly contest and to stomp on the competition.&lt;/div&gt;</summary>
		<author><name>TheFerret</name></author>	</entry>

	</feed>