<?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=Hikaru79&amp;title=Special%3AContributions%2FHikaru79</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=Hikaru79&amp;title=Special%3AContributions%2FHikaru79"/>
		<link rel="alternate" type="text/html" href="http://wiki.compsci.ca/index.php?title=Special:Contributions/Hikaru79"/>
		<updated>2026-04-15T02:49:16Z</updated>
		<subtitle>From Compsci.ca Wiki</subtitle>
		<generator>MediaWiki 1.16.0</generator>

	<entry>
		<id>http://wiki.compsci.ca/index.php?title=Compsci.ca_Wiki:General_disclaimer</id>
		<title>Compsci.ca Wiki:General disclaimer</title>
		<link rel="alternate" type="text/html" href="http://wiki.compsci.ca/index.php?title=Compsci.ca_Wiki:General_disclaimer"/>
				<updated>2006-02-11T19:08:05Z</updated>
		
		<summary type="html">&lt;p&gt;Hikaru79: Fixed up some spelling/grammar&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;All opinions, materals, and contents of this wiki are fully under the control of the public and do not reflect the staff or owners of CompSci.ca in any way. If anything is inproperly posted on this wiki, please contact dan@compsci.ca ([[Hacker Dan]]) so it can be corrected. All conent of this wiki is under the Creative Commons copyright license listed below and anything you post will become subject to it. The staff of CompSci.ca has the right to chage, remove or add anything to this wiki at any time, including this disclaimer. &lt;br /&gt;
&lt;br /&gt;
If you have any questions about this wiki, CompSci.ca, or anything else on this site, please contact [[Hacker Dan]], [[Tony]] or another staff member.&lt;/div&gt;</summary>
		<author><name>Hikaru79</name></author>	</entry>

	<entry>
		<id>http://wiki.compsci.ca/index.php?title=Vincent_Massey_Secondary_School</id>
		<title>Vincent Massey Secondary School</title>
		<link rel="alternate" type="text/html" href="http://wiki.compsci.ca/index.php?title=Vincent_Massey_Secondary_School"/>
				<updated>2006-02-09T04:52:09Z</updated>
		
		<summary type="html">&lt;p&gt;Hikaru79: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Information==&lt;br /&gt;
&lt;br /&gt;
Vincent Massey Secondary School is a large high school located in Windsor, Ontario. It is significant for its large presence on the compsci.ca forums, mainly due to [[Mckenzie]], a Computer Science teacher who promotes the site.&lt;br /&gt;
&lt;br /&gt;
==Compsci.ca Users==&lt;br /&gt;
&lt;br /&gt;
A proportionally large amount of compsci.ca users attend, or have graduated from, Massey. A partial list includes:&lt;br /&gt;
&lt;br /&gt;
*[[alikhan]]&lt;br /&gt;
*[[Andy]]&lt;br /&gt;
*[[andytyk]]&lt;br /&gt;
*[[AsianSensation]]&lt;br /&gt;
*[[Asok]]&lt;br /&gt;
*[[bugzpodder]]&lt;br /&gt;
*[[Coutsos]]&lt;br /&gt;
*[[Hikaru79]]&lt;br /&gt;
*[[Martin]]&lt;br /&gt;
*[[Mckenzie]]&lt;br /&gt;
*[[naoki]]&lt;br /&gt;
*[[zblach]] (TheZsterBunny)&lt;/div&gt;</summary>
		<author><name>Hikaru79</name></author>	</entry>

	<entry>
		<id>http://wiki.compsci.ca/index.php?title=Vincent_Massey_Secondary_School</id>
		<title>Vincent Massey Secondary School</title>
		<link rel="alternate" type="text/html" href="http://wiki.compsci.ca/index.php?title=Vincent_Massey_Secondary_School"/>
				<updated>2006-02-09T04:49:55Z</updated>
		
		<summary type="html">&lt;p&gt;Hikaru79: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Information==&lt;br /&gt;
&lt;br /&gt;
Vincent Massey Secondary School is a large high school located in Windsor, Ontario. It is significant for its large presence on the compsci.ca forums, mainly due to [[Mckenzie]], a Computer Science teacher who promotes the site.&lt;br /&gt;
&lt;br /&gt;
==Compsci.ca Users==&lt;br /&gt;
&lt;br /&gt;
A proportionally large amount of compsci.ca users attend, or have graduated from, Massey. A partial list includes:&lt;br /&gt;
&lt;br /&gt;
*[[alikhan]]&lt;br /&gt;
*[[Andy]]&lt;br /&gt;
*[[andytyk]]&lt;br /&gt;
*[[AsianSensation]]&lt;br /&gt;
*[[Asok]]&lt;br /&gt;
*[[bugzpodder]]&lt;br /&gt;
*[[Coutsos]]&lt;br /&gt;
*[[Hikaru79]]&lt;br /&gt;
*[[Martin]]&lt;br /&gt;
*[[Mckenzie]]&lt;br /&gt;
*[[zblach]] (TheZsterBunny)&lt;/div&gt;</summary>
		<author><name>Hikaru79</name></author>	</entry>

	<entry>
		<id>http://wiki.compsci.ca/index.php?title=Hikaru79</id>
		<title>Hikaru79</title>
		<link rel="alternate" type="text/html" href="http://wiki.compsci.ca/index.php?title=Hikaru79"/>
				<updated>2006-01-17T08:24:54Z</updated>
		
		<summary type="html">&lt;p&gt;Hikaru79: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:Hikaru79_Hobbes.jpg|thumb|100px|right|Current Avatar]]&lt;br /&gt;
== Who is Hikaru79? ==&lt;br /&gt;
Hikaru79 is a regular on the [[CompSci.ca]] forums and even more so in the [[IRC channel]].  &lt;br /&gt;
&lt;br /&gt;
Hikaru79 is quite possibly the most sane regular of the [[IRC channel]]: [[wtd]] has turned into an evil hobbit, named [[Lotho]]; [[Coutsos]] suffers from [[Coutsos Identity Crisis| identity crisises]], and [[Cervantes]] is obsessed with a [[Minsc|mentally unstable, fictional character]].  [[Cornflake|md]] has moments of stability but is on the whole crazy. [[Gandalf]] is reasonably sane.&lt;br /&gt;
&lt;br /&gt;
=== Why the Name? ===&lt;br /&gt;
Hikaru79 comes from [[Hikaru No Go]], which is related to [[Go]].  The 79 is a random number and holds no further significance.&lt;br /&gt;
&lt;br /&gt;
== Character and Interests ==&lt;br /&gt;
Hikaru79 is possibly the nicest person one could ever meet.  He is generous, fun, trusting, and always willing to help.  He's also always good for an evil scheme or two.&lt;br /&gt;
&lt;br /&gt;
Hikaru79 has many computer related interests, which include trying to read the source for [[AI]] of games such as [[Go]].  [[Go]] is another one of Hikaru79's passions: he claims that when one begins to play [[Go]], that individual will forfeit all hopes of doing well in school or other things, for it is highly addictive.&lt;br /&gt;
&lt;br /&gt;
Hikaru79 enjoys [[Anime]] as much as the standard [[CompSci.ca]] member.  He downloads loads of [[Anime]] and other things, including e-books.  Hikaru79 claims that he has hundreds upon hundreds of gigabytes of files.  He may even have reached the much fabelled terabyte.&lt;br /&gt;
&lt;br /&gt;
== Academics ==&lt;br /&gt;
Hikaru79 attends Vincent Massey Secondary School (VMSS, also EMSS: [[Evasive Maneuvers]] Secondary School), and is currently in grade 12.  He intends to attent the [[University of Waterloo]] for [[CompSci at Waterloo| computer science]].&lt;br /&gt;
&lt;br /&gt;
Hikaru79 is a rare specimen, in that he has combined his regular computer science and math/science courses with '''French'''.  Curious.&lt;br /&gt;
&lt;br /&gt;
== Past Avatar ==&lt;br /&gt;
[[Image:Hikaru79_Duck.jpg|thumb|100px|left|Hikaru79's Techie Duck]]&lt;br /&gt;
&lt;br /&gt;
== External Link ==&lt;br /&gt;
For some reason, Hikaru79 has decided to keep a [[blog]] [http://thegoban.com/blog].&lt;/div&gt;</summary>
		<author><name>Hikaru79</name></author>	</entry>

	<entry>
		<id>http://wiki.compsci.ca/index.php?title=Hikaru79</id>
		<title>Hikaru79</title>
		<link rel="alternate" type="text/html" href="http://wiki.compsci.ca/index.php?title=Hikaru79"/>
				<updated>2006-01-17T08:24:21Z</updated>
		
		<summary type="html">&lt;p&gt;Hikaru79: /* External Link */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:Hikaru79_Hobbes.jpg|thumb|100px|right|Current Avatar]]&lt;br /&gt;
== Who is Hikaru79? ==&lt;br /&gt;
Hikaru79 is a regular on the [[CompSci.ca]] forums and even more so in the [[IRC channel]].  &lt;br /&gt;
&lt;br /&gt;
Hikaru79 is quite possibly the most sane regular of the [[IRC channel]]: [[wtd]] has turned into an evil hobbit, named [[Lotho]]; [[Coutsos]] suffers from [[Coutsos Identity Crisis| identity crisises]], and [[Cervantes]] is obsessed with a [[Minsc|mentally unstable, fictional character]].  [[Cornflake|md]] has moments of stability but is on the whole crazy. [[Gandalf]] is reasonably sane.&lt;br /&gt;
&lt;br /&gt;
=== Why the Name? ===&lt;br /&gt;
Hikaru79 comes from [[Hikaru No Go]], which is related to [[Go]].  The 79 is a random number and holds no further significance.&lt;br /&gt;
&lt;br /&gt;
== Character and Interests ==&lt;br /&gt;
Hikaru79 is possibly the nicest person one could ever meet.  He is generous, fun, trusting, and always willing to help.  He's also always good for an evil scheme or two.&lt;br /&gt;
&lt;br /&gt;
Hikaru79 has many computer related interests, which include trying to read the source for [[AI]] of games such as [[Go]].  [[Go]] is another one of Hikaru79's passions: he claims that when one begins to play [[Go]], that individual will forfeit all hopes of doing well in school or other things, for it is highly addictive.&lt;br /&gt;
&lt;br /&gt;
Hikaru79 enjoys [[Anime]] as much as the standard [[CompSci.ca]] member.  He downloads loads of [[Anime]] and other things, including e-books.  Hikaru79 claims that he has hundreds upon hundreds of gigabytes of files.  He may even have reached the much fabelled terabyte.&lt;br /&gt;
&lt;br /&gt;
== Academics ==&lt;br /&gt;
Hikaru79 attends Vincent Massey Secondary School (VMSS, also EMSS: [[Evasive Maneuvers]] Secondary School), and is currently in grade 12.  He intends to attent the [[University of Waterloo]] for [[CompSci at Waterloo| computer science]].&lt;br /&gt;
&lt;br /&gt;
Hikaru79 is a rare specimen, in that he has combined his regular computer science and math/science courses with '''French'''.  Curious.&lt;br /&gt;
&lt;br /&gt;
== Past Avatar ==&lt;br /&gt;
[[Image:Hikaru79_Duck.jpg|thumb|100px|left|Hikaru79's Techie Duck]]&lt;br /&gt;
&lt;br /&gt;
== External Link ==&lt;br /&gt;
For some reason, Hikaru79 has decided to keep [[a blog]] [http://thegoban.com/blog].&lt;/div&gt;</summary>
		<author><name>Hikaru79</name></author>	</entry>

	<entry>
		<id>http://wiki.compsci.ca/index.php?title=Hikaru79</id>
		<title>Hikaru79</title>
		<link rel="alternate" type="text/html" href="http://wiki.compsci.ca/index.php?title=Hikaru79"/>
				<updated>2006-01-17T08:23:35Z</updated>
		
		<summary type="html">&lt;p&gt;Hikaru79: Added blog link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:Hikaru79_Hobbes.jpg|thumb|100px|right|Current Avatar]]&lt;br /&gt;
== Who is Hikaru79? ==&lt;br /&gt;
Hikaru79 is a regular on the [[CompSci.ca]] forums and even more so in the [[IRC channel]].  &lt;br /&gt;
&lt;br /&gt;
Hikaru79 is quite possibly the most sane regular of the [[IRC channel]]: [[wtd]] has turned into an evil hobbit, named [[Lotho]]; [[Coutsos]] suffers from [[Coutsos Identity Crisis| identity crisises]], and [[Cervantes]] is obsessed with a [[Minsc|mentally unstable, fictional character]].  [[Cornflake|md]] has moments of stability but is on the whole crazy. [[Gandalf]] is reasonably sane.&lt;br /&gt;
&lt;br /&gt;
=== Why the Name? ===&lt;br /&gt;
Hikaru79 comes from [[Hikaru No Go]], which is related to [[Go]].  The 79 is a random number and holds no further significance.&lt;br /&gt;
&lt;br /&gt;
== Character and Interests ==&lt;br /&gt;
Hikaru79 is possibly the nicest person one could ever meet.  He is generous, fun, trusting, and always willing to help.  He's also always good for an evil scheme or two.&lt;br /&gt;
&lt;br /&gt;
Hikaru79 has many computer related interests, which include trying to read the source for [[AI]] of games such as [[Go]].  [[Go]] is another one of Hikaru79's passions: he claims that when one begins to play [[Go]], that individual will forfeit all hopes of doing well in school or other things, for it is highly addictive.&lt;br /&gt;
&lt;br /&gt;
Hikaru79 enjoys [[Anime]] as much as the standard [[CompSci.ca]] member.  He downloads loads of [[Anime]] and other things, including e-books.  Hikaru79 claims that he has hundreds upon hundreds of gigabytes of files.  He may even have reached the much fabelled terabyte.&lt;br /&gt;
&lt;br /&gt;
== Academics ==&lt;br /&gt;
Hikaru79 attends Vincent Massey Secondary School (VMSS, also EMSS: [[Evasive Maneuvers]] Secondary School), and is currently in grade 12.  He intends to attent the [[University of Waterloo]] for [[CompSci at Waterloo| computer science]].&lt;br /&gt;
&lt;br /&gt;
Hikaru79 is a rare specimen, in that he has combined his regular computer science and math/science courses with '''French'''.  Curious.&lt;br /&gt;
&lt;br /&gt;
== Past Avatar ==&lt;br /&gt;
[[Image:Hikaru79_Duck.jpg|thumb|100px|left|Hikaru79's Techie Duck]]&lt;br /&gt;
&lt;br /&gt;
== External Link ==&lt;br /&gt;
For some reason, Hikaru79 has decided to keep [[a blog|http://thegoban.com/blog]].&lt;/div&gt;</summary>
		<author><name>Hikaru79</name></author>	</entry>

	<entry>
		<id>http://wiki.compsci.ca/index.php?title=University_of_Waterloo</id>
		<title>University of Waterloo</title>
		<link rel="alternate" type="text/html" href="http://wiki.compsci.ca/index.php?title=University_of_Waterloo"/>
				<updated>2006-01-17T08:21:08Z</updated>
		
		<summary type="html">&lt;p&gt;Hikaru79: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The University of Waterloo (UW) is an excellent University in Ontario, and is home to many [[CompSci.ca]] members, including:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Tony]] -&amp;gt; [[Mechatronics]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Brenn]] -&amp;gt; [[Mechatronics]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[lyam_kaskade]] -&amp;gt; [[Mechatronics]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Martin]] -&amp;gt; [[Applied Math]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Cornflake]] -&amp;gt; [[Computer Science|CompSci_at_Waterloo]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[bugzpodder]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Jiran]] -&amp;gt; [[Computer Science|CompSci_at_Waterloo]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
UW is a [[CompSci.ca]] breeding grounds.  [[Cervantes]] and [[Hikaru79]] intend to attend UW in the fall of 2006. [[axej]] plans to attend in the fall of 2009.&lt;br /&gt;
&lt;br /&gt;
== Programs Offered at the University ==&lt;br /&gt;
Some interesting programs of study offered at the University of Waterloo include the following:&lt;br /&gt;
&lt;br /&gt;
[[Mechatronics]] Engineering [http://www.mechatronics.uwaterloo.ca/home.html]&lt;br /&gt;
&lt;br /&gt;
[[Computer Science]] [http://www.cs.uwaterloo.ca/]&lt;br /&gt;
&lt;br /&gt;
[[Applied Math]] [http://www.math.uwaterloo.ca/AM_Dept/index.shtml]&lt;br /&gt;
&lt;br /&gt;
[[Computational Mathematics]] [http://www.math.uwaterloo.ca/navigation/CompMath/]&lt;br /&gt;
&lt;br /&gt;
== Other Facts ==&lt;br /&gt;
Annually hosts the [[CCC]] programming [[contests|contest]].&lt;br /&gt;
&lt;br /&gt;
== External Links ==&lt;br /&gt;
[http://www.uwaterloo.ca/ University of Waterloo website]&lt;/div&gt;</summary>
		<author><name>Hikaru79</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-04T05:05:17Z</updated>
		
		<summary type="html">&lt;p&gt;Hikaru79: Added link&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;
==Where to Find Io==&lt;br /&gt;
Io can be downloaded from http://www.iolanguage.com as source code, or precompiled binaries for most operating systems.&lt;br /&gt;
&lt;br /&gt;
==Discussion==&lt;br /&gt;
To Discuss this tutorial visit [http://www.compsci.ca/v2/viewtopic.php?t=10795 here].&lt;br /&gt;
&lt;br /&gt;
==Credits==&lt;br /&gt;
Tutorial written by [[wtd]], moved to wiki by [[TheFerret]]&lt;/div&gt;</summary>
		<author><name>Hikaru79</name></author>	</entry>

	<entry>
		<id>http://wiki.compsci.ca/index.php?title=Bits</id>
		<title>Bits</title>
		<link rel="alternate" type="text/html" href="http://wiki.compsci.ca/index.php?title=Bits"/>
				<updated>2005-12-13T04:20:24Z</updated>
		
		<summary type="html">&lt;p&gt;Hikaru79: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What are Bits? ==&lt;br /&gt;
Bits are the pseudo-currency used on our forums. One can earn, recieve, donate, and spend their Bits.&lt;br /&gt;
&lt;br /&gt;
== How to obtain Bits? ==&lt;br /&gt;
The current system grants 1 Bit for creating a new thread on the forums, and 2 Bits for making a reply. Users should be careful not to make meaningless posts though, because when deleted, the user loses 5 Bits.&lt;br /&gt;
&lt;br /&gt;
It should be noted that no Bits are awarded for making posts in either General Discussion or Off Topic. The reason is that those forums are considered to be mostly recreational posting, and often spawn lengthy humorous discussions.&lt;br /&gt;
&lt;br /&gt;
== How to obtain more Bits? ==&lt;br /&gt;
The best way is to contribute to the community. Based on obvervations, the most Bits are rewarded for something that impresses other users. Active community members will often donate Bits for a good tutorial on a new subject, or source code for an interesting application. It is also customary to donate some Bits when you've been helped out with a question, as a sign of courtesy.&lt;br /&gt;
&lt;br /&gt;
Every so often, there will also be various contests and/or competitions taking place. Often involving the writing of a small snippet of code, these events are a great way to score some bonus Bits and to show off your coding skills, or simply gain some practice.&lt;br /&gt;
&lt;br /&gt;
Alternatively one could also watch out for any ongoing community efforts, such as [[WCG]]. Bits could be given out for participation, though one should take part regardless as the efforts are usually in good nature.&lt;br /&gt;
&lt;br /&gt;
== What about Moderators? ==&lt;br /&gt;
Moderators have their Bit count set to a constant 1000, so it's easy to spot the official staff members even if you miss their creative &amp;quot;moderator&amp;quot; tag. This means that moderators are one of the primary sources of generating Bits, as they reward posts and submissions. It also means that one shouldn't donate bits back to moderators as those Bits will disappear. If you really want to show your appreciation to a moderator user, ask them if you could contribute to anything through a Private Message.&lt;br /&gt;
&lt;br /&gt;
Administrator duo - [[Tony]] and [[Hacker Dan]] have 2000 Bits each at any given time.&lt;br /&gt;
&lt;br /&gt;
== The Future of Bits ==&lt;br /&gt;
In the much talked about [[V3]] system, which hopefully will be at least partly implemented soon, the bit economy will be greatly changed (or so it is thought). The rates for getting bits per post will be changed. As well, new methods of getting bits will be introduced. An example of this could be a bits lottery system where users can buy lottery tickets with bits and at the end of the week some one could win the jackpot of bits. Ideas such as getting 1 bit per topic view are also being thought about, but due to the potential for abuse it is unlikely that it will be implemented any time soon. In addition it is likely that the possible rewards that you can exchange your bits for will be changed in the new system as well.&lt;/div&gt;</summary>
		<author><name>Hikaru79</name></author>	</entry>

	<entry>
		<id>http://wiki.compsci.ca/index.php?title=Compsci.ca_Wiki:Community_Portal</id>
		<title>Compsci.ca Wiki:Community Portal</title>
		<link rel="alternate" type="text/html" href="http://wiki.compsci.ca/index.php?title=Compsci.ca_Wiki:Community_Portal"/>
				<updated>2005-12-13T04:13:43Z</updated>
		
		<summary type="html">&lt;p&gt;Hikaru79: Alphabetic order&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Programming Langues ==&lt;br /&gt;
[[Turing]]&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Evasive Maneuvers]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Pascal]]; And it's compilers:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Free Pascal]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[GNU Pascal]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CompSci.ca Info ==&lt;br /&gt;
[[Dictionary of Dan]] - The New Dictionary Of Dan project&lt;br /&gt;
&lt;br /&gt;
[[Bits]] - All about the bits system&lt;br /&gt;
&lt;br /&gt;
[[Ranks]] - The Ranks on the CompSci.ca fourm&lt;br /&gt;
&lt;br /&gt;
[[IRC channel]] - All about the CompSci.ca IRC Channel&lt;br /&gt;
&lt;br /&gt;
[[CompSci Logo]] - CompSci.ca logos of the past, present and future?&lt;br /&gt;
&lt;br /&gt;
[[Rotating quotes system]] - The RQS used in some users sigs.&lt;br /&gt;
&lt;br /&gt;
[[V3]] - The futtuer of the CompSci.ca site&lt;br /&gt;
&lt;br /&gt;
[[Current events]] - The curent events on CompSci.ca&lt;br /&gt;
&lt;br /&gt;
[[CompSci.ca News]] - The curent on goings of CompSci.ca&lt;br /&gt;
&lt;br /&gt;
[[Special:Statistics]] - CompSci.ca Wiki statistics&lt;br /&gt;
&lt;br /&gt;
== Users ==&lt;br /&gt;
&lt;br /&gt;
[[Cervantes]]&lt;br /&gt;
&lt;br /&gt;
[[Cornflake]]&lt;br /&gt;
&lt;br /&gt;
[[Coutsos]]&lt;br /&gt;
&lt;br /&gt;
[[Hacker Dan]]&lt;br /&gt;
&lt;br /&gt;
[[Hikaru79]]&lt;br /&gt;
&lt;br /&gt;
[[Timmytheturtle]]&lt;br /&gt;
&lt;br /&gt;
[[Tony]]&lt;br /&gt;
&lt;br /&gt;
[[Wtd]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''[[Special:Listusers]] - All wiki users'''''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
[[Links]] - Links Page&lt;/div&gt;</summary>
		<author><name>Hikaru79</name></author>	</entry>

	<entry>
		<id>http://wiki.compsci.ca/index.php?title=Talk:Ubuntu_Users</id>
		<title>Talk:Ubuntu Users</title>
		<link rel="alternate" type="text/html" href="http://wiki.compsci.ca/index.php?title=Talk:Ubuntu_Users"/>
				<updated>2005-12-13T04:05:36Z</updated>
		
		<summary type="html">&lt;p&gt;Hikaru79: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Hikaru79]]: Do I count as an Ubuntu user? Although I only use Ubuntu on a server at the moment, preffering Gentoo for my desktop, my total usage of Ubuntu over the year(s) is about equal to the other people listed (I started using Ubuntu the same month Warty was first released). Additionally, I am still active on the Ubuntu Forums, mailing lists, and IRC channel. And I evangelize Ubuntu -- alot! So can I add myself?&lt;/div&gt;</summary>
		<author><name>Hikaru79</name></author>	</entry>

	<entry>
		<id>http://wiki.compsci.ca/index.php?title=Talk:Ubuntu_Users</id>
		<title>Talk:Ubuntu Users</title>
		<link rel="alternate" type="text/html" href="http://wiki.compsci.ca/index.php?title=Talk:Ubuntu_Users"/>
				<updated>2005-12-13T04:04:52Z</updated>
		
		<summary type="html">&lt;p&gt;Hikaru79: Do I count?&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Hikaru79]]: Do I count as an Ubuntu user? Although I only use Ubuntu on a server at the moment, preffering Gentoo for my desktop, my total usage of Ubuntu over the year(s) is about equal to the other people listed (I started using Ubuntu the same month Warty was first released). So can I add myself?&lt;/div&gt;</summary>
		<author><name>Hikaru79</name></author>	</entry>

	<entry>
		<id>http://wiki.compsci.ca/index.php?title=Wtd</id>
		<title>Wtd</title>
		<link rel="alternate" type="text/html" href="http://wiki.compsci.ca/index.php?title=Wtd"/>
				<updated>2005-12-13T01:42:42Z</updated>
		
		<summary type="html">&lt;p&gt;Hikaru79: Just some spellings.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:wtdduck.png|thumb|120px|right|wtd avatar]]&lt;br /&gt;
&lt;br /&gt;
== Who is WTD? ==&lt;br /&gt;
wtd is a resident guru who claims that his alias stands for &amp;quot;Welcome To Darwin&amp;quot;, though we all know it really means [[DuckFest|&amp;quot;What The Duck&amp;quot;]].&lt;br /&gt;
&lt;br /&gt;
Wtd is a programmer, currently residing in Vancouver, who has a passion for helping people understand programming since he's been through every frustration related to learning this stuff already, for he is self-taught. He is conversant in C, Objective-C, C++, Java, Eiffel, Perl, Python, Ruby, O'Caml, Haskell, Pike, HTML, CSS, Javascript, PHP, and many other languages. Wtd is more then capable of answering most questions having to do with Windows, Mac (OS 8, 9, X), Linux, and FreeBSD systems.&lt;br /&gt;
&lt;br /&gt;
Wtd can frequently be found in the [[IRC channel]] helping people out or breaking their minds with new programming concepts.&lt;br /&gt;
&lt;br /&gt;
== Quotes ==&lt;br /&gt;
''&amp;quot;Don't reinvent the wheel if there's an existing library function to do it for you&amp;quot;''[http://www.compsci.ca/v2/viewtopic.php?t=9494]&lt;/div&gt;</summary>
		<author><name>Hikaru79</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>2005-12-12T06:05:52Z</updated>
		
		<summary type="html">&lt;p&gt;Hikaru79: &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;/div&gt;</summary>
		<author><name>Hikaru79</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-12T06:04:57Z</updated>
		
		<summary type="html">&lt;p&gt;Hikaru79: &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;
'''Channel:''' #compsci.ca&lt;br /&gt;
&lt;br /&gt;
==History==&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;
==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 wierdness. Hilarity often ensues. On a good day, [[wtd]] can be observed teaching some interesting, mind-blowing new concept.&lt;br /&gt;
&lt;br /&gt;
== IRC Names to CompSci.ca User Names ==&lt;br /&gt;
Hacker_Dan or Dan  -  [[Hacker Dan]]&lt;br /&gt;
&lt;br /&gt;
md  -  [[Cornflake]]&lt;br /&gt;
&lt;br /&gt;
==The Future==&lt;br /&gt;
&lt;br /&gt;
The future for #compsci.ca is looking bright, as it recieves 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>Hikaru79</name></author>	</entry>

	<entry>
		<id>http://wiki.compsci.ca/index.php?title=Turing</id>
		<title>Turing</title>
		<link rel="alternate" type="text/html" href="http://wiki.compsci.ca/index.php?title=Turing"/>
				<updated>2005-12-12T06:01:36Z</updated>
		
		<summary type="html">&lt;p&gt;Hikaru79: Turing creation!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Turing is an interpreted pseudo-[[Programming Language]] developed by [[Holt Software Associates]] in 1982. It is intentionally similar to [[Pascal]] in syntax.&lt;br /&gt;
&lt;br /&gt;
==History==&lt;br /&gt;
&lt;br /&gt;
The primary developers of the Turing language were [[Ric Holt]] and [[James Cordy]], although it was later maintained by a larger group of people. Ric and James wrote it as an extension of the [[Euclid Programming Language]], an earlier project they had worked on at the University of Toronto. The original Turing variant was written largely to replace [[Pascal]] in Canadian high schools and universities, a goal that it has achieved quite admirably. Although originally written as a DOS-only compiler, the language has evolved over time, spreading to other platforms, and including an [[Object-oriented]] model. In 2001, Turing became &amp;quot;Object-Oriented Turing,&amp;quot; and this is the version that largely dominates Canadian high-school classrooms today.&lt;br /&gt;
&lt;br /&gt;
==Features==&lt;br /&gt;
&lt;br /&gt;
Turing is first and foremost a learning language, so it is lacking some of the features present in most 'modern' languages. Although Turing [[interpreters]] exist, there is no real Turing [[compiler]]. The one built into the standard Turing editor actually takes the Turing code and converts it to a machine-dependent &amp;quot;pseudo-code&amp;quot;, and then compiles that together with a stand-alone execution environment. This means that whenever a program is compiled, because of the inclusion of the execution environment, even a simple &amp;quot;Hello, World&amp;quot; program can take up well over 300 kb of disk space.&lt;br /&gt;
&lt;br /&gt;
However, for first-time programmers, it is a useful language. It contains all the essential programming features -- Input/Output, Control Flow, Iteration, graphics, etc. It strives to make common tasks (such as recieving keyboard input) as simple as possible, so that the student can focus on the logic of the program rather than details about the implementation. Most interestingly, it also offers direct access to the PC Parallel port, making it an ideal choice for high-school level Computer Engineering courses. &lt;br /&gt;
&lt;br /&gt;
==Version History==&lt;br /&gt;
&lt;br /&gt;
The latest version of Turing, according to Holt Software Associates, it 4.0.4d. However, there was an unofficial release of a 4.0.5c version of Turing, which is the most recent available. It is currently believed that no further versions of Turing will be produced.&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
*[http://www.holtsoft.com/turing/ Turing home page]&lt;/div&gt;</summary>
		<author><name>Hikaru79</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-12T05:37:31Z</updated>
		
		<summary type="html">&lt;p&gt;Hikaru79: /* Information */&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;
'''Channel:''' #compsci.ca&lt;br /&gt;
&lt;br /&gt;
==History==&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;
==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 wierdness. Hilarity often ensues. On a good day, [[wtd]] can be observed teaching some interesting, mind-blowing new concept.&lt;br /&gt;
&lt;br /&gt;
==The Future==&lt;br /&gt;
&lt;br /&gt;
The future for #compsci.ca is looking bright, as it recieves 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;/div&gt;</summary>
		<author><name>Hikaru79</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-12T05:36:41Z</updated>
		
		<summary type="html">&lt;p&gt;Hikaru79: About time somebody made this! =)&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;
'''Server:'''  irc.afternet.org&lt;br /&gt;
'''Channel:''' #compsci.ca&lt;br /&gt;
&lt;br /&gt;
==History==&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;
==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 wierdness. Hilarity often ensues. On a good day, [[wtd]] can be observed teaching some interesting, mind-blowing new concept.&lt;br /&gt;
&lt;br /&gt;
==The Future==&lt;br /&gt;
&lt;br /&gt;
The future for #compsci.ca is looking bright, as it recieves 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;/div&gt;</summary>
		<author><name>Hikaru79</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>2005-12-12T05:21:42Z</updated>
		
		<summary type="html">&lt;p&gt;Hikaru79: &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 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 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;
Big updates are coming over the x-mas break, starting with new software being installed on the server like this wiki, a compsci.ca blog, and much more. However, due to these upgrades, the site may be down for some time during the break. Hopefully everything will go over well and we will have a brand new version to come back to in the new year. &lt;br /&gt;
&lt;br /&gt;
In other news, there are several virii going around that may slow down the site, especially relating to the mail server. The first one affects phpBB installs and is slowing down the site searching for exploits. Although this virus cannot actually harm the site due to our scripts, its attempts could slow us down a bit. The second is yet another e-mail based virus which is overwelming our host's mail server, making all e-mail based activities on our site delayed up to a few hours.&lt;br /&gt;
&lt;br /&gt;
--Hacker Dan 17:20, 11 December 2005 (PST)&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;
[[CompSci.ca News]] - The ongoings of CompSci.ca&lt;br /&gt;
&lt;br /&gt;
[[CompSci Logo]] - The CompSci.ca Logo and ones of the past&lt;br /&gt;
&lt;br /&gt;
[[DuckFest]] - What The Duck?&lt;br /&gt;
&lt;br /&gt;
[[WCG]] - World Community Grid&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''[[Special:Allpages]] - All Pages'''''&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;/div&gt;</summary>
		<author><name>Hikaru79</name></author>	</entry>

	<entry>
		<id>http://wiki.compsci.ca/index.php?title=Compsci.ca_Wiki:Site_support</id>
		<title>Compsci.ca Wiki:Site support</title>
		<link rel="alternate" type="text/html" href="http://wiki.compsci.ca/index.php?title=Compsci.ca_Wiki:Site_support"/>
				<updated>2005-12-12T05:17:44Z</updated>
		
		<summary type="html">&lt;p&gt;Hikaru79: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;CompSci.ca curently does not take donations, but would gladly have users donate their time by writing tutorials or other content for the site.&lt;/div&gt;</summary>
		<author><name>Hikaru79</name></author>	</entry>

	</feed>