<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Renaud Bourassa &#187; Projects</title>
	<atom:link href="http://renaudbourassa.com/blog/category/projects/feed/" rel="self" type="application/rss+xml" />
	<link>http://renaudbourassa.com/blog</link>
	<description>Welcome to my World. Here, I am the Architect.</description>
	<lastBuildDate>Tue, 01 Jun 2010 04:18:49 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Basic Data Structure Addition to Batfish</title>
		<link>http://renaudbourassa.com/blog/2009/09/24/basic-data-structure-addition-to-batfish/</link>
		<comments>http://renaudbourassa.com/blog/2009/09/24/basic-data-structure-addition-to-batfish/#comments</comments>
		<pubDate>Fri, 25 Sep 2009 02:18:36 +0000</pubDate>
		<dc:creator>Rhino</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[Algorithm]]></category>
		<category><![CDATA[Batfish]]></category>
		<category><![CDATA[Data Structure]]></category>
		<category><![CDATA[Linked List]]></category>
		<category><![CDATA[Queue]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Stack]]></category>

		<guid isPermaLink="false">http://renaudbourassa.com/blog/?p=470</guid>
		<description><![CDATA[Batfish is collection of data structures and algorithms written in Ruby that I started about a month ago. While trying to implement graphs in the library, I quickly realised that a number of basic data structure were missing to implement certain graph algorithms. Stacks and queues were needed to respectively implement the depth-first search and [...]]]></description>
			<content:encoded><![CDATA[<p>Batfish is collection of data structures and algorithms written in Ruby that I started about a month ago. While trying to implement graphs in the library, I quickly realised that a number of basic data structure were missing to implement certain graph algorithms. Stacks and queues were needed to respectively implement the depth-first search and breadth-first search algorithm and a linked list is a good way to represent the adjency lists of vertices. </p>
<p>I thus decided to implement these simple, but oh so useful data structures. Sure, you could reply that ruby arrays already implement all the functionalities provided by theses data structures. True, but when you are dealing with linked lists of millions of elements, having to relocate the whole array in memory to add an element can prove to be a lenghty task. Also, finding a memory chunk big enough to hold the whole array may prove challenging. Ruby arrays grow pretty fast (~1.5x) as can be seen from the following code snippet from array.c (ruby 1.9.1p243) and can rapidly become hard to store in memory.</p>
<pre class="brush: ruby;">
if (idx &gt;= ARY_CAPA(ary)) {
    long new_capa = ARY_CAPA(ary) / 2;

    if (new_capa &lt; ARY_DEFAULT_SIZE) {
        new_capa = ARY_DEFAULT_SIZE;
    }
    if (new_capa &gt;= ARY_MAX_SIZE - idx) {
        new_capa = (ARY_MAX_SIZE - idx) / 2;
    }
    new_capa += idx;
    ary_resize_capa(ary, new_capa);
}
</pre>
<p>And finally, theses data structures implement functionalities that are badly supported by arrays such as deleting or adding an element in the middle of a list.</p>
<p>The stack and queue implementation are separated from the linked list implementation to keep them as simple as possible. The linked list implementation is more extensive and is also used to implement the sorted linked list data structure. The next data structure to be added to Batfish will probably be graphs and it should include a number of basic graph algorithms.</p>
]]></content:encoded>
			<wfw:commentRss>http://renaudbourassa.com/blog/2009/09/24/basic-data-structure-addition-to-batfish/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Batfish, Just a Bunch of Functions</title>
		<link>http://renaudbourassa.com/blog/2009/08/23/batfish-just-a-bunch-of-functions/</link>
		<comments>http://renaudbourassa.com/blog/2009/08/23/batfish-just-a-bunch-of-functions/#comments</comments>
		<pubDate>Mon, 24 Aug 2009 04:01:42 +0000</pubDate>
		<dc:creator>Rhino</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[Algorithm]]></category>
		<category><![CDATA[Batfish]]></category>
		<category><![CDATA[BK-Tree]]></category>
		<category><![CDATA[Data Structure]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Trie]]></category>

		<guid isPermaLink="false">http://renaudbourassa.com/blog/?p=431</guid>
		<description><![CDATA[I have been programming in Ruby for a bit less then a year but already, I accumulated a number of data structures and algorithms. Since they could probably be of some use to someone else and I don&#8217;t want to lose everything because of a failure of some sort, I decided to publish them on [...]]]></description>
			<content:encoded><![CDATA[<p>I have been programming in Ruby for a bit less then a year but already, I accumulated a number of data structures and algorithms. Since they could probably be of some use to someone else and I don&#8217;t want to lose everything because of a failure of some sort, I decided to publish them on my <a href="http://github.com/renaudb">github</a>. The name of the gem: <a href="http://github.com/renaudb/batfish/">batfish</a> (the name comes from a random haiku generator). So far, only my implementations of BK-tree and trie are included, but more should follow soon as I get more time to package them. For more informations, you can browse the batfish <a href="http://renaudbourassa.com/projects/batfish">documentation</a>.</p>
<p><strong>Trie</strong></p>
<p>A trie is a data structure that is used to store an associative array where the array&#8217;s keys are strings. It has the same structure as any other tree, except that keys are not stored in nodes. Instead, each edge has a character associated with it and you browse the trie by going down the edges, one character at a time, until you reach the end of the key. <a href="http://renaudbourassa.com/blog/wp-content/uploads/2009/08/Trie.png"><img style = "border:none" src="http://renaudbourassa.com/blog/wp-content/uploads/2009/08/Trie-300x222.png" alt="Trie" title="Trie" width="300" height="222" class="alignleft size-medium wp-image-442" /></a>The node you reach this way contains the value associated with the key.</p>
<p>Tries have several advantages over binary search trees. First, the complexity of trie lookup is O(L) where L is the length of the key while it is of O(n) where n is the number of elements in the tree for a BST. It also takes less space since different keys overlap. It also have advantages over hash tables. First, the keys, in a trie, are ordered, which makes it a useful data structure to use to store a dictionary. It can also lead to faster lookup depending on the hash function and considering that collisions are possible with string hashes.</p>
<p>More informations on tries can be found <a href="http://en.wikipedia.org/wiki/Trie">here</a>.</p>
<p><strong>BK-Tree</strong></p>
<p><a href="http://renaudbourassa.com/blog/wp-content/uploads/2009/08/BKTree1.png"><img style = "border:none" src="http://renaudbourassa.com/blog/wp-content/uploads/2009/08/BKTree1-300x286.png" alt="Levenshtein BKTree" title="Levenshtein BKTree" width="300" height="286" class="alignright size-medium wp-image-466" /></a>A BK-tree is a useful data structure for nearest neighbor lookup in discrete metric spaces. A metric space is any space that obeys the following rules, where d(a,b) is the distance between a and b.</p>
<ul>
<li><img src='http://s.wordpress.com/latex.php?latex=d%28x%2Cy%29%20%3D%200%20%5CLeftrightarrow%20x%20%3D%20y&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='d(x,y) = 0 \Leftrightarrow x = y' title='d(x,y) = 0 \Leftrightarrow x = y' class='latex' /></li>
<li><img src='http://s.wordpress.com/latex.php?latex=d%28x%2Cy%29%20%3D%20d%28y%2Cx%29&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='d(x,y) = d(y,x)' title='d(x,y) = d(y,x)' class='latex' /></li>
<li><img src='http://s.wordpress.com/latex.php?latex=d%28x%2Cy%29%20%5Cleq%20d%28x%2Ca%29%20%2B%20d%28a%2Cy%29&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='d(x,y) \leq d(x,a) + d(a,y)' title='d(x,y) \leq d(x,a) + d(a,y)' class='latex' /></li>
</ul>
<p>The later is also known as the triangle inequality. It basically states that there is no shorter way to go from a point to another than the direct way. Examples of discrete metric spaces, that is, where the distances are integers, are the real numbers or the levenshtein distance between strings.</p>
<p>The BK-Tree is constructed by measuring the distance between the value to insert and every node, going down the edges corresponding to the distance at each node. Once an unregistered distance at a node is calculated for that node, the value is attached to it. The lookup process works by going down each edges in the distance to the node ± the lookup treshold range until a node with a distance equal to the treshold value or less is found. It is thus possible to find all the nodes within a certain distance of a value without going through each nodes. However, the larger the threshold, the more nodes you have to visit.</p>
<p>For more information on BK-trees, you can read the following <a href="http://portal.acm.org/citation.cfm?id=362003.362025">article</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://renaudbourassa.com/blog/2009/08/23/batfish-just-a-bunch-of-functions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Release of RSDownloader 0.2.0</title>
		<link>http://renaudbourassa.com/blog/2009/04/22/release-of-rsdownloader-020/</link>
		<comments>http://renaudbourassa.com/blog/2009/04/22/release-of-rsdownloader-020/#comments</comments>
		<pubDate>Thu, 23 Apr 2009 03:52:32 +0000</pubDate>
		<dc:creator>Rhino</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[FilesTube]]></category>
		<category><![CDATA[RapidShare]]></category>
		<category><![CDATA[RSDownloader]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://renaudbourassa.com/blog/?p=275</guid>
		<description><![CDATA[It is here! After some development during the exam session and a final revision now that I am done with university, I am proud to announce the release of RSDownloader 0.2.0. A lot of things changed since the first draft that was version 0.1.0. First, I changed the download code to be more modular. I [...]]]></description>
			<content:encoded><![CDATA[<p>It is here! After some development during the exam session and a final revision now that I am done with university, I am proud to announce the release of RSDownloader 0.2.0. A lot of things changed since the first draft that was version 0.1.0. First, I changed the download code to be more modular. I created a Download superclass that can be used as a model to create specific download classes for different filehosting websites easily. As of now I implemented <a href="http://rapidshare.com/">RapidShare</a> and <a href="http://www.filestube.com/">FilesTube</a> and I may add others in the future. I also implemented a search function that relies on the FilesTube API to search files by keyword. Last but not least, I changed the structure of the package to look and act more like a real package. I added setup.rb support to make the installation easier and I released the source code under <a href="http://www.gnu.org/licenses/gpl-3.0.html">GPLv3</a>.</p>
<p>If you are interested in implementing any other functionality or website, don&#8217;t hesitate to fork the project on <a href="http://github.com/renaudb/rsdownloader/">github</a>. Here is the code of the Download superclass.</p>
<pre class="brush: ruby;"># The Download superclass
class Download
 attr_accessor :url, :name

 # Initializes a download
 def initialize(url, opts)
 @url = url
 @opts = opts
 @file = nil
 end

 # Tests the url
 def test
 begin
 Net::HTTP.get_response(URI.parse(url)).value
 rescue
 return false
 end
 return true
 end

 # Executes the download
 def execute
 self.set_file
 self.download
 end

 # Sets the file for the download
 def set_file
 @file = @url
 end

 # Downloads the file
 def download
 cmd = &amp;quot;wget -c --user-agent=&amp;quot;#{@opts[:header]['User-Agent']}&amp;quot;&amp;quot;
 cmd += &amp;quot; -q&amp;quot; if !$verbose
 cmd += &amp;quot; --directory-prefix=&amp;quot;#{@opts[:dir]}&amp;quot;&amp;quot; if @opts[:dir]

 IO.popen(cmd + &amp;quot; #{@file}&amp;quot;){|f|}
 end
end</pre>
]]></content:encoded>
			<wfw:commentRss>http://renaudbourassa.com/blog/2009/04/22/release-of-rsdownloader-020/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Because Studying Sometimes Gets Boring&#8230; RSDownloader!</title>
		<link>http://renaudbourassa.com/blog/2009/04/07/because-studying-sometimes-gets-boring-rsdownloader/</link>
		<comments>http://renaudbourassa.com/blog/2009/04/07/because-studying-sometimes-gets-boring-rsdownloader/#comments</comments>
		<pubDate>Tue, 07 Apr 2009 16:15:53 +0000</pubDate>
		<dc:creator>Rhino</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[Download]]></category>
		<category><![CDATA[File Sharing]]></category>
		<category><![CDATA[RapidShare]]></category>
		<category><![CDATA[RSDownloader]]></category>

		<guid isPermaLink="false">http://renaudbourassa.com/blog/?p=259</guid>
		<description><![CDATA[Because studying sometimes gets boring, I often end up working on something else during the exam sessions. This time, I got frustrated with RapidShare and its annoying wait times. Don&#8217;t misunterstand me, I think RapidShare is a really useful website. Even if they keep the download speed of free user down, it is still faster [...]]]></description>
			<content:encoded><![CDATA[<p>Because studying sometimes gets boring, I often end up working on something else during the exam sessions. This time, I got frustrated with <a href="http://rapidshare.com">RapidShare</a> and its annoying wait times. Don&#8217;t misunterstand me, I think RapidShare is a really useful website. Even if they keep the download speed of free user down, it is still faster than setting a torrent when it comes to send a large file to someone else. The problem is that with all the waiting times, I often start a download session, then go work on something else and end up forgetting about my download. When I get back to RapidShare, my session has expired and I have to start over. This is especially annoying when trying to download multiple files since the wait time between two download is approximately 15 minutes.</p>
<p>My solution: RSDownloader. It is a small ruby script I wrote to easily download any number of files from RapidShare. The script graps all the wait times directly from the site, thus optimizing your time. It starts the downloads (approximately) as soon as the countdowns reach 0. It uses wget to get the files so it is for Linux and motivated MacOSX users only. You can get the script from my <a href="http://github.com/RenaudB/rsdownloader/tree/master">github</a> or here.</p>
<p><strong>Edit:</strong> Since I keep making change to the source code, I decided to take it off this post. The latest &#8220;stable&#8221; version should always be available on my github.</p>
]]></content:encoded>
			<wfw:commentRss>http://renaudbourassa.com/blog/2009/04/07/because-studying-sometimes-gets-boring-rsdownloader/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>M. Net RSS hack</title>
		<link>http://renaudbourassa.com/blog/2008/12/12/m-net-rss-hack/</link>
		<comments>http://renaudbourassa.com/blog/2008/12/12/m-net-rss-hack/#comments</comments>
		<pubDate>Fri, 12 Dec 2008 06:22:04 +0000</pubDate>
		<dc:creator>Rhino</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[M. Net]]></category>
		<category><![CDATA[Miro]]></category>
		<category><![CDATA[RSS]]></category>
		<category><![CDATA[TV]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://blog.rhinosphere.com/?p=61</guid>
		<description><![CDATA[I know I said yesterday that I wouldn&#8217;t work on anything for a while but today I got bored of calculus so I ended up writing a little RSS hack. M. Net (short for Monsieur Net) is a tech show airing on the french channel Musique Plus that I used to watch a lot when [...]]]></description>
			<content:encoded><![CDATA[<p>I know I said yesterday that I wouldn&#8217;t work on anything for a while but today I got bored of calculus so I ended up writing a little RSS hack. <a href="http://www.musiqueplus.com/mnet/">M. Net</a> (short for Monsieur Net) is a tech show airing on the french channel <a href="http://www.musiqueplus.com/">Musique Plus</a> that I used to watch a lot when I was younger and that I still listen to when I can. The problem is: since I moved to Waterloo, I can&#8217;t watch it anymore because we don&#8217;t have any french channel with our TV package. Musique Plus offers some shows online, but they are all in flash and aggregated by a bad RSS feed that is not compatible with <a href="http://www.getmiro.com/">Miro</a>. After looking a bit at the source code of the video page, I figured out how and where to get the videos from so I decided to build my own video RSS that would be compatible with both <a href="http://www.apple.com/itunes/overview/">iTunes</a> and Miro. I also fetch more informations on the shows and the files using different scripts. The whole thing is written in PHP with a cron job to update the file on a regular basis. You can access this feed here: <a href="http://renaudbourassa.com/random/mnet/mnet.rss">http://renaudbourassa.com/random/mnet/mnet.rss</a>.</p>
<p>Now back to calculus.</p>
]]></content:encoded>
			<wfw:commentRss>http://renaudbourassa.com/blog/2008/12/12/m-net-rss-hack/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Contact me</title>
		<link>http://renaudbourassa.com/blog/2008/11/30/contact-me/</link>
		<comments>http://renaudbourassa.com/blog/2008/11/30/contact-me/#comments</comments>
		<pubDate>Mon, 01 Dec 2008 02:34:41 +0000</pubDate>
		<dc:creator>Rhino</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[JQuery]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Web Design]]></category>

		<guid isPermaLink="false">http://blog.rhinosphere.com/?p=56</guid>
		<description><![CDATA[It is finally up. I have been working on the script for the contact form during the weekend. It uses AJAX and jQuery to send emails without reloading the page and to add some cool effects. I haven&#8217;t had time to test it thoroughly so it may contain some bugs. If you notice anything wrong, [...]]]></description>
			<content:encoded><![CDATA[<p>It is finally up. I have been working on the script for the <a href="http://contact.rhinosphere.com">contact form</a> during the weekend. It uses AJAX and <a href="http://jquery.com/">jQuery</a> to send emails without reloading the page and to add some cool effects. I haven&#8217;t had time to test it thoroughly so it may contain some bugs. If you notice anything wrong, don&#8217;t hesitate to post it here.</p>
]]></content:encoded>
			<wfw:commentRss>http://renaudbourassa.com/blog/2008/11/30/contact-me/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Day</title>
		<link>http://renaudbourassa.com/blog/2008/11/27/the-day/</link>
		<comments>http://renaudbourassa.com/blog/2008/11/27/the-day/#comments</comments>
		<pubDate>Thu, 27 Nov 2008 17:46:01 +0000</pubDate>
		<dc:creator>Rhino</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[Robot]]></category>
		<category><![CDATA[Robotics]]></category>
		<category><![CDATA[SE101]]></category>
		<category><![CDATA[University]]></category>

		<guid isPermaLink="false">http://blog.rhinosphere.com/?p=46</guid>
		<description><![CDATA[Today was The Day for our Software Engineering 101 robot. After more than two months of programming, our robot has finally been put to the test. The goal of this project was to program a robot that tracks a green line and turns when it hits squares of a certain color. I was the leader [...]]]></description>
			<content:encoded><![CDATA[<p>Today was The Day for our <a href="http://www.uwaterloo.ca/">Software Engineering 101</a> robot. After more than two months of programming, our robot has finally been put to the test. The goal of this project was to program a robot that tracks a green line and turns when it hits squares of a certain color. I was the leader of a team of 9 peoples called team Nerdcore. We did pretty good, ending with the best time average. However, our robot having been benchmarked as one of the fastest had a big time modification factor so we ended up finishing sixth out of thirteen which is still pretty good. Here are the videos of our two forward runs.</p>
<p style="text-align: center;"><object width="400" height="300"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=2363001&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=2363001&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="300"></embed></object></p>
<p style="text-align: center;"><object width="400" height="300"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=2363013&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=2363013&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="300"></embed></object></p>
<p>We also wrote a backward program for extra points. We are one of the only team who got it to work. Here is the video of it.</p>
<p style="text-align: center;"><object width="400" height="300"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=2363096&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=2363096&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="300"></embed></object></p>
<p>So this is it for this project. The only thing remaining is adding the final touches to the final report and send it. If we can do as good with the final report as we did with the preliminary design report, this project would be nearly perfect. Well done Team Nerdcore!</p>
]]></content:encoded>
			<wfw:commentRss>http://renaudbourassa.com/blog/2008/11/27/the-day/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Portfolio Beta</title>
		<link>http://renaudbourassa.com/blog/2008/11/02/portfolio-beta/</link>
		<comments>http://renaudbourassa.com/blog/2008/11/02/portfolio-beta/#comments</comments>
		<pubDate>Mon, 03 Nov 2008 00:43:39 +0000</pubDate>
		<dc:creator>Rhino</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[JQuery]]></category>
		<category><![CDATA[Portfolio]]></category>
		<category><![CDATA[Web Design]]></category>

		<guid isPermaLink="false">http://blog.rhinosphere.com/?p=35</guid>
		<description><![CDATA[With the end of the midterm rush I got more time to work on non-school stuff so I decided to work on my portfolio. I just released a beta version of it which I&#8217;m pretty happy with. It is a mix of PHP and javascript. PHP to retrieve the information on the different projects and [...]]]></description>
			<content:encoded><![CDATA[<p>With the end of the midterm rush I got more time to work on non-school stuff so I decided to work on my <a href="http://portfolio.rhinosphere.com/">portfolio</a>. I just released a beta version of it which I&#8217;m pretty happy with. It is a mix of PHP and javascript. PHP to retrieve the information on the different projects and javascript to display it with some eye candy. I used <a href="http://jquery.com/">jQuery</a> for all the animations. On the design side, I wanted something that integrated well with this blog and I thing I succeeded quite well at that. I could write more about it but I think the best way to judge it is to go and take a look so here is the link: <a href="http://portfolio.rhinosphere.com/">http://portfolio.rhinosphere.com/</a>.</p>
<p>I also wrote a directory view script to display the files of projects that are not web projects. It uses PHP to retrieve the file list and a jQuery script I wrote to reorder the files without reloading the whole page every time. It also more visually appealing than the classic Apache directory view.</p>
]]></content:encoded>
			<wfw:commentRss>http://renaudbourassa.com/blog/2008/11/02/portfolio-beta/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Portfolio Started</title>
		<link>http://renaudbourassa.com/blog/2008/10/20/portfolio-started/</link>
		<comments>http://renaudbourassa.com/blog/2008/10/20/portfolio-started/#comments</comments>
		<pubDate>Mon, 20 Oct 2008 16:39:58 +0000</pubDate>
		<dc:creator>Rhino</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[JQuery]]></category>
		<category><![CDATA[Portfolio]]></category>
		<category><![CDATA[Web Design]]></category>

		<guid isPermaLink="false">http://blog.rhinosphere.com/?p=25</guid>
		<description><![CDATA[I started working on my portfolio during the weekend. The frontend is practicly done. I use JQuery a lot for different animations and since it is the first time I use this library extensively it takes me more time than usual to code the frontend but I&#8217;m really happy with the current result. As of [...]]]></description>
			<content:encoded><![CDATA[<p>I started working on my portfolio during the weekend. The frontend is practicly done. I use <a href="http://jquery.com">JQuery</a> a lot for different animations and since it is the first time I use this library extensively it takes me more time than usual to code the frontend but I&#8217;m really happy with the current result. As of now I don&#8217;t have a demo version but I will release one as soon as I have time to finish the scripts and correct the bugs. This will probably be next week or so since all the midterm exams and projects are taking a lot of my time right now.</p>
]]></content:encoded>
			<wfw:commentRss>http://renaudbourassa.com/blog/2008/10/20/portfolio-started/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Globami Extended</title>
		<link>http://renaudbourassa.com/blog/2008/10/17/globami-extended/</link>
		<comments>http://renaudbourassa.com/blog/2008/10/17/globami-extended/#comments</comments>
		<pubDate>Fri, 17 Oct 2008 05:19:30 +0000</pubDate>
		<dc:creator>Rhino</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[Globami]]></category>
		<category><![CDATA[JQuery]]></category>
		<category><![CDATA[Web Apps]]></category>

		<guid isPermaLink="false">http://blog.rhinosphere.com/?p=20</guid>
		<description><![CDATA[I added a new feature to Globami. This will probably be one of the final updates since I don&#8217;t think of anything else to add. So this new feature is called the &#8220;more&#8221; option. It gives more informations about a certain friend when you click on the &#8220;more&#8221; link at the bottom right of his [...]]]></description>
			<content:encoded><![CDATA[<p>I added a new feature to <a href="http://globami.rhinosphere.com">Globami</a>. This will probably be one of the final updates since I don&#8217;t think of anything else to add. So this new feature is called the &#8220;more&#8221; option. It gives more informations about a certain friend when you click on the &#8220;more&#8221; link at the bottom right of his info bubble. It then launch a <a href="http://jquery.com">JQuery</a> dialog with more complete informations on the person. This is my first try at JQuery so it is a pretty simple script.</p>
<p>Also, I have no plan to add any other networks now. If you have a request for a specific network, just post it here and I will see what I can do.</p>
]]></content:encoded>
			<wfw:commentRss>http://renaudbourassa.com/blog/2008/10/17/globami-extended/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
