<?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/"
	>

<channel>
	<title>UW Ruby Blog</title>
	<atom:link href="http://uwruby.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://uwruby.com</link>
	<description>UW Ruby Class Blog!</description>
	<pubDate>Thu, 04 Jun 2009 21:20:26 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Week 9 Slides</title>
		<link>http://uwruby.com/2009/06/week-9-slides-3/</link>
		<comments>http://uwruby.com/2009/06/week-9-slides-3/#comments</comments>
		<pubDate>Thu, 04 Jun 2009 21:20:26 +0000</pubDate>
		<dc:creator>Aaron Patterson</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[Slides]]></category>

		<guid isPermaLink="false">http://uwruby.com/2009/06/week-9-slides-3/</guid>
		<description><![CDATA[Here you go!  All 11 slides!
]]></description>
			<content:encoded><![CDATA[<p>Here you go!  <a href='http://uwruby.com/wp-content/uploads/2009/06/week-9.pdf'>All 11 slides</a>!</p>
]]></content:encoded>
			<wfw:commentRss>http://uwruby.com/2009/06/week-9-slides-3/feed/</wfw:commentRss>
		</item>
		<item>
		<title>week N slides</title>
		<link>http://uwruby.com/2009/05/week-n-slides/</link>
		<comments>http://uwruby.com/2009/05/week-n-slides/#comments</comments>
		<pubDate>Thu, 28 May 2009 02:37:00 +0000</pubDate>
		<dc:creator>zenspider</dc:creator>
		
		<category><![CDATA[Slides]]></category>

		<guid isPermaLink="false">http://uwruby.com/?p=160</guid>
		<description><![CDATA[Week-6.pdf
]]></description>
			<content:encoded><![CDATA[<p><a href="http://uwruby.com/wp-content/uploads/2009/05/week-61.pdf" title="Week-6.pdf">Week-6.pdf</a></p>
]]></content:encoded>
			<wfw:commentRss>http://uwruby.com/2009/05/week-n-slides/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Homework for Week 6, 7, 8, and 9</title>
		<link>http://uwruby.com/2009/05/homework-for-week-6-7-8-and-9/</link>
		<comments>http://uwruby.com/2009/05/homework-for-week-6-7-8-and-9/#comments</comments>
		<pubDate>Thu, 14 May 2009 20:48:24 +0000</pubDate>
		<dc:creator>Aaron Patterson</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://uwruby.com/?p=156</guid>
		<description><![CDATA[For week 6, 7, 8, and 9, everyone should work on their approved projects.  Each week (Friday night by midnight) please email Ryan and I with either a repository where we can find your project or a zip/gem of your project.

We would also like you to write a little about what you accomplished each [...]]]></description>
			<content:encoded><![CDATA[<p>For week 6, 7, 8, and 9, everyone should work on their approved projects.  Each week (Friday night by midnight) please email Ryan and I with either a repository where we can find your project or a zip/gem of your project.</p>

<p>We would also like you to write a little about what you accomplished each week, along with something new that you learned while working on your project.</p>

<p>We will be grading you on your productivity (how much you&#8217;ve accomplished during the week), tests, code cleanliness, and the ever illusive goal of <b>doing the simplest thing possible to get the job done</b>.</p>
]]></content:encoded>
			<wfw:commentRss>http://uwruby.com/2009/05/homework-for-week-6-7-8-and-9/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Slides for week 6</title>
		<link>http://uwruby.com/2009/05/slides-for-week-6/</link>
		<comments>http://uwruby.com/2009/05/slides-for-week-6/#comments</comments>
		<pubDate>Thu, 14 May 2009 01:22:50 +0000</pubDate>
		<dc:creator>Aaron Patterson</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://uwruby.com/2009/05/sildes-for-week-6/</guid>
		<description><![CDATA[Here are your slides for week 6.

Yay!  Slides!
]]></description>
			<content:encoded><![CDATA[<p>Here are your slides for <a href='http://uwruby.com/wp-content/uploads/2009/05/week-6.pdf'>week 6</a>.</p>

<p>Yay!  Slides!</p>
]]></content:encoded>
			<wfw:commentRss>http://uwruby.com/2009/05/slides-for-week-6/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Week 5 Homework</title>
		<link>http://uwruby.com/2009/05/week-5-homework/</link>
		<comments>http://uwruby.com/2009/05/week-5-homework/#comments</comments>
		<pubDate>Thu, 07 May 2009 01:48:59 +0000</pubDate>
		<dc:creator>zenspider</dc:creator>
		
		<category><![CDATA[Homework]]></category>

		<guid isPermaLink="false">http://uwruby.com/?p=143</guid>
		<description><![CDATA[2 HTTP Servers (really basic HTTP 0.9/GET only):


gserver for thread spawning per connection
tcpserver w/ prespawned thread pool


requirements:


craft your own request / response objects
servelets of your own design. start with time of the day app.
static files from the filesystem.
html files served plain
html.erb files should render via erb.
no caching, no clever.


Bare minimum HTTP protocol:


request:



GET /index.html HTTP/1.0 CRLF
CRLF



response:



HTTP/1.1 [...]]]></description>
			<content:encoded><![CDATA[<h2>2 HTTP Servers (really basic HTTP 0.9/GET only):</h2>

<ul>
<li>gserver for thread spawning per connection</li>
<li>tcpserver w/ prespawned thread pool</li>
</ul>

<h2>requirements:</h2>

<ul>
<li>craft your own request / response objects</li>
<li>servelets of your own design. start with time of the day app.</li>
<li>static files from the filesystem.</li>
<li>html files served plain</li>
<li>html.erb files should render via erb.</li>
<li>no caching, no clever.</li>
</ul>

<h2>Bare minimum HTTP protocol:</h2>

<ul>
<li>request:</li>
</ul>

<p><pre>
GET /index.html HTTP/1.0 CRLF
CRLF
</pre></p>

<ul>
<li>response:</li>
</ul>

<p><pre>
HTTP/1.1 200 OK CRLF
Date: Thu, 07 May 2009 01:06:01 GMT CRLF
Last-Modified: Mon, 19 Jan 2009 23:02:19 GMT CRLF
Content-Length: 3750 CRLF
Content-Type: text/html CRLF
CRLF
...content...
</pre></p>

<ul>
<li>other responses are:</li>
<li>304 redirected</li>
<li>404 missing</li>
<li>500 app error</li>
</ul>

<h2>2 Chat Servers:</h2>

<h3>drb-based centralized chat server &amp; client</h3>

<ul>
<li>port 31337</li>
<li>multiple users, nick</li>
<li>multiple channels</li>
<li>join/leave</li>
<li>no protocol otherwise</li>
<li>client does no authentication, just connects.</li>
<li>server announces connection, etc.</li>
<li>protocol is objects, not text.</li>
</ul>

<h3>multicast plaintext chat server/client (distributed `wall`)</h3>

<ul>
<li>port 7387</li>
<li>broadcast text to others.</li>
<li>print all text you see.</li>
<li>zero protocol</li>
</ul>

<h2>General Requirements:</h2>

<ul>
<li>must be TDD. start with direct objects, no network.</li>
<li>check your manifest before you package or I&#8217;ll dock you w/o mercy.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://uwruby.com/2009/05/week-5-homework/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Week 5 Slides</title>
		<link>http://uwruby.com/2009/05/week-5-slides-3/</link>
		<comments>http://uwruby.com/2009/05/week-5-slides-3/#comments</comments>
		<pubDate>Thu, 07 May 2009 01:44:52 +0000</pubDate>
		<dc:creator>zenspider</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://uwruby.com/?p=136</guid>
		<description><![CDATA[week-5.pdf
]]></description>
			<content:encoded><![CDATA[<p><a href='http://uwruby.com/wp-content/uploads/2009/05/week-5.pdf'>week-5.pdf</a></p>
]]></content:encoded>
			<wfw:commentRss>http://uwruby.com/2009/05/week-5-slides-3/feed/</wfw:commentRss>
		</item>
		<item>
		<title>HELLO!  HERE IS YOUR WEEK 4 HOMEWORK</title>
		<link>http://uwruby.com/2009/04/hello-here-is-your-week-4-homework/</link>
		<comments>http://uwruby.com/2009/04/hello-here-is-your-week-4-homework/#comments</comments>
		<pubDate>Thu, 30 Apr 2009 02:25:01 +0000</pubDate>
		<dc:creator>Aaron Patterson</dc:creator>
		
		<category><![CDATA[Homework]]></category>

		<guid isPermaLink="false">http://uwruby.com/?p=127</guid>
		<description><![CDATA[Your week four homework is two parts.  The first part is making your week 3 homework use threads.  Make the tasks in your week 3 homework run in parallel.  Make sure to synchronize when appropriate.

The second part is writing an apache log processor.  For this project you will:


  Provide a [...]]]></description>
			<content:encoded><![CDATA[<p>Your week four homework is two parts.  The first part is making your week 3 homework use threads.  Make the tasks in your week 3 homework run in parallel.  Make sure to synchronize when appropriate.</p>

<p>The second part is writing an apache log processor.  For this project you will:</p>

<ul>
  <li>Provide a commandline tool that safely modifies files</li>
  <li>Change IP Address at the beginning of the line in an Apache logfile</li>
  <li>Must be multithreaded</li>
  <li>Must maintain log order</li>
  <li>Cache name lookups across invocations</li>
  <li>Age the cache items (expire lookups)</li>
  <li>Commandline option to limit number of threads (you should determine a sensible default)</li>
  <li>Look at &#8220;resolv&#8221; for DNS lookups</li>
  <li>This homework can be completed using only tools from ruby&#8217;s standard library</li>
</ul>

<p>The file format will look like this:
<pre>
208.77.188.166 - - [29/Apr/2009:16:07:38 -0700] "GET / HTTP/1.1" 200 1342
75.119.201.189 - - [29/Apr/2009:16:07:44 -0700] "GET /favicon.ico HTTP/1.1" 200 1406
75.146.57.34 - - [29/Apr/2009:16:08:38 -0700] "GET / HTTP/1.1" 304 -
75.119.201.189 - - [29/Apr/2009:16:09:53 -0700] "GET / HTTP/1.1" 200 1340
208.77.188.166 - - [29/Apr/2009:16:11:51 -0700] "GET / HTTP/1.1" 304 -
75.146.57.34 - - [29/Apr/2009:16:12:00 -0700] "GET / HTTP/1.1" 304 -
75.119.201.189 - - [29/Apr/2009:16:13:15 -0700] "GET / HTTP/1.1" 304 -
208.77.188.166 - - [29/Apr/2009:16:13:15 -0700] "GET / HTTP/1.1" 304 -
75.119.201.189 - - [29/Apr/2009:16:13:17 -0700] "GET / HTTP/1.1" 304 -
75.146.57.34 - - [29/Apr/2009:16:13:50 -0700] "GET / HTTP/1.1" 200 1294
75.146.57.34 - - [29/Apr/2009:16:13:55 -0700] "GET /stylesheets/main.css?1240264242 HTTP/1.1" 200 2968
74.125.67.100 - - [29/Apr/2009:16:13:55 -0700] "GET /stylesheets/home.css?1240264242 HTTP/1.1" 200 7829
</pre></p>

<p>We want the file to end up looking like this:</p>

<p><pre>
example.com - - [29/Apr/2009:16:07:38 -0700] "GET / HTTP/1.1" 200 1342
example.com - - [29/Apr/2009:16:07:44 -0700] "GET /favicon.ico HTTP/1.1" 200 1406
example.com - - [29/Apr/2009:16:08:38 -0700] "GET / HTTP/1.1" 304 -
example.com - - [29/Apr/2009:16:09:53 -0700] "GET / HTTP/1.1" 200 1340
example.com - - [29/Apr/2009:16:11:51 -0700] "GET / HTTP/1.1" 304 -
example.com - - [29/Apr/2009:16:12:00 -0700] "GET / HTTP/1.1" 304 -
example.com - - [29/Apr/2009:16:13:15 -0700] "GET / HTTP/1.1" 304 -
example.com - - [29/Apr/2009:16:13:15 -0700] "GET / HTTP/1.1" 304 -
example.com - - [29/Apr/2009:16:13:17 -0700] "GET / HTTP/1.1" 304 -
example.com - - [29/Apr/2009:16:13:50 -0700] "GET / HTTP/1.1" 200 1294
example.com - - [29/Apr/2009:16:13:55 -0700] "GET /stylesheets/main.css?1240264242 HTTP/1.1" 200 2968
example.com - - [29/Apr/2009:16:13:55 -0700] "GET /stylesheets/home.css?1240264242 HTTP/1.1" 200 7829
</pre></p>

<p>These domain names aren&#8217;t correct, but your output format should be similar.</p>

<p>Here is an example session using the command line tool you will write for your homework:
<pre>
$ apache_lookup my_logs.log
</pre></p>

<p>After execution you should be able to examine my_logs.log and see that the ip addresses have been replaced with domain names.  You should also be able to do this:
<pre>
$ apache_lookup -t 100 my_logs.log
</pre>
The above execution should spawn 100 threads to process your logfile.</p>

<p>This homework MUST be test driven.  We will dock points for non-test driven code.  You MUST turn your homework in as a tar.gz or as a gem.  Remember to email the mailing list, use IRC, start early, test all the time, and have fun!</p>
]]></content:encoded>
			<wfw:commentRss>http://uwruby.com/2009/04/hello-here-is-your-week-4-homework/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Week 4 Slides</title>
		<link>http://uwruby.com/2009/04/week-4-slides-2/</link>
		<comments>http://uwruby.com/2009/04/week-4-slides-2/#comments</comments>
		<pubDate>Thu, 30 Apr 2009 01:03:37 +0000</pubDate>
		<dc:creator>Aaron Patterson</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://uwruby.com/2009/04/week-4-slides-2/</guid>
		<description><![CDATA[Hello everyone, here are your week 4 slides.
]]></description>
			<content:encoded><![CDATA[<p>Hello everyone, here are your <a href='http://uwruby.com/wp-content/uploads/2009/04/week4.pdf'>week 4 slides</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://uwruby.com/2009/04/week-4-slides-2/feed/</wfw:commentRss>
		</item>
		<item>
		<title>YOUR WEEK 3 HOMEWORK!</title>
		<link>http://uwruby.com/2009/04/your-week-3-homework/</link>
		<comments>http://uwruby.com/2009/04/your-week-3-homework/#comments</comments>
		<pubDate>Thu, 23 Apr 2009 01:08:22 +0000</pubDate>
		<dc:creator>Aaron Patterson</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://uwruby.com/?p=119</guid>
		<description><![CDATA[This week, your homework will be to write a program similar to Rake.  Your program must deal with tasks and dependencies.

Here are the Phase 1 requirements:


  tasks - take a block and can execute it
  
    run outputs task execution including nesting of dependencies
    tasks are [...]]]></description>
			<content:encoded><![CDATA[<p>This week, your homework will be to write a program similar to Rake.  Your program must deal with tasks and dependencies.</p>

<p>Here are the Phase 1 requirements:</p>

<ul>
  <li>tasks - take a block and can execute it</li>
  <ul>
    <li>run outputs task execution including nesting of dependencies</li>
    <li>tasks are executed via tests/code. cmdline interface extra credit.</li>
  </ul>
  <li>dependencies amongst tasks - deps must run first</li>
  <ul>
    <li>dependencies are intellegently run, they won&#8217;t re-execute if met.</li>
    <li>declaration order doesn&#8217;t matter - aka resolve dependencies late.</li>
    <li>architect this so it can be made multithreaded later</li>
  </ul>
  <li>This will be TDD from the ground up with good coverage.</li>
</ul>

<p>Here is an example task recipe w/ the basic public API needed:
<pre>
require 'worker_bee'</p>

<p>WorkerBee.recipe do
  work :sammich, :meat, :bread do
    puts "** sammich!"
  end</p>

<p>work :meat, :clean do
    puts "** meat"
  end</p>

<p>work :bread, :clean do
    puts "** bread"
  end</p>

<p>work :clean do
    puts "** cleaning!"
  end
end</p>

<p>WorkerBee.run :sammich
</pre></p>

<p>Executing this should output:
<pre>
running sammich
  running meat
    running clean
** cleaning!
** meat
  running bread
    not running clean - already met depnedency
** bread
** sammich!
</pre></p>

<p>When building your project use &#8220;sow&#8221;.  Just execute:</p>

<p><pre>
$ sow WorkerBee
</pre></p>

<p>Fill out the project with tests, and make it go.</p>
]]></content:encoded>
			<wfw:commentRss>http://uwruby.com/2009/04/your-week-3-homework/feed/</wfw:commentRss>
		</item>
		<item>
		<title>WEEK 3 SLIDES</title>
		<link>http://uwruby.com/2009/04/week-3-slides-3/</link>
		<comments>http://uwruby.com/2009/04/week-3-slides-3/#comments</comments>
		<pubDate>Thu, 23 Apr 2009 00:52:10 +0000</pubDate>
		<dc:creator>Aaron Patterson</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://uwruby.com/2009/04/week-3-slides-3/</guid>
		<description><![CDATA[HEY EVERYONE GUESS WHAT?  HERE ARE YOUR WEEK 3 SLIDES, THAT&#8217;S WHAT!

HAPPY WEEK 3!
]]></description>
			<content:encoded><![CDATA[<p>HEY EVERYONE GUESS WHAT?  HERE ARE YOUR <a href='http://uwruby.com/wp-content/uploads/2009/04/week-3.pdf'>WEEK 3 SLIDES</a>, THAT&#8217;S WHAT!</p>

<p>HAPPY WEEK 3!</p>
]]></content:encoded>
			<wfw:commentRss>http://uwruby.com/2009/04/week-3-slides-3/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
