<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" version="2.0">

<channel>
	<title>Matthew Williams</title>
	
	<link>http://www.matthewdavidwilliams.com</link>
	<description>Another Ruby/Mac/Nerd Blog.</description>
	<lastBuildDate>Fri, 12 Jun 2009 23:22:02 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/MatthewWilliams" type="application/rss+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
		<title>Technical Document PDFs on the Kindle DX</title>
		<link>http://www.matthewdavidwilliams.com/2009/06/12/technical-document-pdfs-on-the-kindle-dx/</link>
		<comments>http://www.matthewdavidwilliams.com/2009/06/12/technical-document-pdfs-on-the-kindle-dx/#comments</comments>
		<pubDate>Fri, 12 Jun 2009 23:17:31 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[document]]></category>
		<category><![CDATA[kindle dx]]></category>
		<category><![CDATA[pdf]]></category>
		<category><![CDATA[technical]]></category>

		<guid isPermaLink="false">http://www.matthewdavidwilliams.com/?p=14</guid>
		<description><![CDATA[With the recent release of the Kindle DX, many have wondered how its electronic ink display stacks up against PDF related technical documents.  Here, I attempt to get some decent shots of some complex and not so complex technical PDFs.

Quick review:
The Kindle DX has finally made it worth owning a Kindle for the purpose of [...]]]></description>
			<content:encoded><![CDATA[<p>With the recent release of the Kindle DX, many have wondered how its electronic ink display stacks up against PDF related technical documents.  Here, I attempt to get some decent shots of some complex and not so complex technical PDFs.</p>
<p><span id="more-14"></span></p>
<p><strong>Quick review:</strong><br />
The Kindle DX has finally made it worth owning a Kindle for the purpose of reading technical books.  The native PDF rendering works wonderfully.  Also, many of the books below, if not free in the first place, were significantly cheaper than the dead tree equivalent which resulted in a large cost savings.  Finally, the weight of the Kindle, roughly 18oz, is significantly lighter to carry than all of these books (which only represent a few of the 100+ PDFs on the device which only occupy a few percentage of the total storage capacity).</p>
<p>Worth the $500?  I&#8217;d say so.</p>
<p>(Click any of the images for their original 12MP image)</p>
<p><a href="http://poignantguide.net/ruby/">_Why&#8217;s Poignant Guide to Ruby</a></p>
<p><a href="http://farm4.static.flickr.com/3602/3619950259_96528e5459_o.jpg"><img src="http://farm4.static.flickr.com/3602/3619950259_112712da3d.jpg" alt="" width="375" height="500" /></a></p>
<p><a href="http://farm4.static.flickr.com/3414/3619952237_a809d199a0_o.jpg"><img src="http://farm4.static.flickr.com/3414/3619952237_d04469e37b.jpg" alt="" width="375" height="500" /></a></p>
<p><a href="http://farm4.static.flickr.com/3403/3619954127_8e61260fea_o.jpg"><img src="http://farm4.static.flickr.com/3403/3619954127_b724480193.jpg" alt="" width="375" height="500" /></a></p>
<p><a href="http://gogaruco.com/downloads/Wrap2009.pdf">Golden Gate Ruby Conference Wrap-up</a></p>
<p><a href="http://farm4.static.flickr.com/3352/3619955669_e99cdc90b5_o.jpg"><img src="http://farm4.static.flickr.com/3352/3619955669_26fcfa6570.jpg" alt="" width="500" height="375" /></a></p>
<p><a href="http://manning.com/black2/">The Well Grounded Rubyist</a></p>
<p><a href="http://farm3.static.flickr.com/2479/3619957495_d040ab755c_o.jpg"><img src="http://farm3.static.flickr.com/2479/3619957495_71a4b82af0.jpg" alt="" width="375" height="500" /></a></p>
<p><a href="http://farm3.static.flickr.com/2448/3619959071_d4428d2d7a_o.jpg"><img src="http://farm3.static.flickr.com/2448/3619959071_6972323379.jpg" alt="" width="500" height="375" /></a></p>
<p>Random Lambda Calculus PDF</p>
<p><a href="http://farm4.static.flickr.com/3619/3620779874_fb4a6b8174_o.jpg"><img src="http://farm4.static.flickr.com/3619/3620779874_5739ea8d67.jpg" alt="" width="500" height="375" /></a></p>
<p><a href="http://pragprog.com/titles/dscpq/cocoa-programming">Pragmatic Programmers &#8211; Programming Cocoa</a></p>
<p><a href="http://farm4.static.flickr.com/3300/3619963315_705b67d83b_o.jpg"><img src="http://farm4.static.flickr.com/3300/3619963315_ba5f53d7f5.jpg" alt="" width="500" height="375" /></a></p>
<p><a href="http://peepcode.com/products/git-internals-pdf">Peepcode &#8211; Git Internals</a></p>
<p><a href="http://farm4.static.flickr.com/3340/3619967061_dfd867269f_o.jpg"><img src="http://farm4.static.flickr.com/3340/3619967061_a315644b89.jpg" alt="" width="500" height="375" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.matthewdavidwilliams.com/2009/06/12/technical-document-pdfs-on-the-kindle-dx/feed/</wfw:commentRss>
		<slash:comments>31</slash:comments>
		</item>
		<item>
		<title>RubyConf 2008 – Dave Thomas Keynote Notes</title>
		<link>http://www.matthewdavidwilliams.com/2008/11/07/rubyconf-2008-dave-thomas-keynote-notes/</link>
		<comments>http://www.matthewdavidwilliams.com/2008/11/07/rubyconf-2008-dave-thomas-keynote-notes/#comments</comments>
		<pubDate>Sat, 08 Nov 2008 05:13:49 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Orlando]]></category>
		<category><![CDATA[RubyConf]]></category>
		<category><![CDATA[notes]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[rubyconf2008]]></category>

		<guid isPermaLink="false">http://www.matthewdavidwilliams.com/?p=13</guid>
		<description><![CDATA[Dave Thomas presented tonight as the keynote speaker on day 2 of RubyConf 2008.  He introduced an interesting challenge to the Ruby community; fork Ruby and get creative with it.  Here are my notes from the talk, they&#8217;re a bit rough around the edges but you can get an idea of his vision and the [...]]]></description>
			<content:encoded><![CDATA[<p>Dave Thomas presented tonight as the keynote speaker on day 2 of RubyConf 2008.  He introduced an interesting challenge to the Ruby community; fork Ruby and get creative with it.  Here are my notes from the talk, they&#8217;re a bit rough around the edges but you can get an idea of his vision and the message he was trying to get out.</p>
<p><span id="more-13"></span></p>
<p>First RubyConf since 2005 &#8211; conferenced out.  But he missed it.  Glad to be back.</p>
<p>Background &#8211; Coming up on 10th anniversary working with Ruby.  Early 1999, version 1.2 or 1.4.  Was much younger than (shows photos of a young kid).  Downloaded new languages daily.</p>
<p>Downloaded Ruby, thought it was cool, it made it past lunch, made it into the night.  Fell in love and it&#8217;s been the case ever since.  Was Java and C and moved everything to Ruby, serious for 10 years.</p>
<p>Is it OK to love a software tool?  Is that something you want to do?</p>
<p>You HAVE to love your software tools &#8211; the work we do is some of the most difficult on the planet (no dangerous), programmers, like poets, constantly start with a blank sheet of paper and construct completely out of imagination and make something from nothing.  You&#8217;re tired at the end of the day.  You have to love the tools or else you&#8217;ll resent what you do and it&#8217;ll show in your work.  Really really important to work with tools you love.  Grateful to Matz.  Went to Japan to talk to Matz, but Matz left, (Dave speaks to Matz and shows his appreciation).</p>
<p>Wrote books<br />
Talked at lots of events<br />
Went to lots of conferences (Ruby and Rails)<br />
Learned at Rails conferences, to be cool, you need to swear on your slides.</p>
<p>F**K RUBY (in reference to the famous DHH slide)</p>
<p>(takes away the asterisks)<br />
FORK RUBY</p>
<p>It&#8217;s time to fork Ruby!  But isn&#8217;t JRUBY, Rubunious, etc etc enough?  They&#8217;re not forks.  They&#8217;re implementations.</p>
<p>It&#8217;s time to fork the language.</p>
<p>(Shows a chart of times between releases)</p>
<p>1.0 -&gt; 1.4 &#8211; 14 months<br />
-&gt; 1.4 &#8211; 8 months<br />
-&gt; 1.6 &#8211; 13 months<br />
-&gt; 1.8 &#8211; 48 months<br />
-&gt; 1.9 &#8211; 54 months</p>
<p>There&#8217;s a problem with this&#8230;  The bigger the time gap, the more stuff gets stuffed in and too many changes to manages.</p>
<p>Big changes == Slow adoption</p>
<p>Slow adoption == Unproven</p>
<p>Ruby 1.9 has great international language support for character encoding.  It was done nicely but the first library to be ported ran into many problems.  Not enough people using 1.9 to send feedback.</p>
<p>Shows a Katamari image (big ball of garbage), calls it a pattern.  The language picks up features as it rolls around the landscape and gets bigger.</p>
<p>Bigger is not better.  Bigger is scary.</p>
<p>Proposes tonight as a community to fork the Ruby language.</p>
<p>Some project ideas<br />
• Ruby LIte<br />
• Parallel Ruby<br />
• Optionally-typed Ruby<br />
• Closure-based Ruby</p>
<p>Ruby Lite<br />
• Do we need it?<br />
• Shows a chart of download sizes from release to release, they gradually increase over releases.  Starts under 2.5mb, gets to 10mb by 1.8.  1.9 is 32mb.  As of August, almost 40mb.  It has grown exponentially<br />
• Can use this information to find out when Ruby 2.0 will be released: June 11, 2011.  100mb (laughs)<br />
• Looks at number of methods<br />
∘ Same pattern<br />
• TOO BLOODY BIG<br />
• Maybe there&#8217;s room for a light version?<br />
• What would you do?<br />
∘ Attack the language, built in classes or libraries<br />
• Lose language features<br />
∘ ?x (?\M-?C-x)<br />
∘ -&gt; (a,b) {c}<br />
∘ Strange %q delimiters<br />
∘ Here documents?<br />
∘ Implicit sting concat<br />
∘ Alias<br />
∘ Nested assignment<br />
∘ :: for method call<br />
• Can live without these!<br />
• All trivial things, what about bigger things<br />
• Lose language features<br />
∘ Class variables<br />
∘ Global variables<br />
∘ 70% of $vars<br />
∘ unless/untill<br />
∘ Protected<br />
∘ Proc<br />
• Not here to get rid of Ruby, just forking it<br />
• Roll back encoding support, utf-8 is OK for the lite version, get rid of encoding support.  Much smaller!<br />
• Lose built-in classes/modules<br />
∘ Complex<br />
∘ File::Stat<br />
∘ FIleTest<br />
∘ Mutex<br />
∘ ObjectSpace<br />
∘ Process:Gid/Status/Sys/Uid<br />
∘ Rational?<br />
∘ ThreadGroup<br />
• Tirm down built in classes/modules<br />
∘ String &#8211; 106<br />
∘ Array &#8211; 81<br />
∘ IO &#8211; 76<br />
∘ Module &#8211; 59<br />
∘ Hash &#8211; 53<br />
∘ Time &#8211; 48<br />
• ls x in (start..end)?<br />
∘ To find out if x is in the range, how many methods to find this out?  4 methods.  ===, cover? include? member? All practically do the same thing.<br />
• Trim down standard library<br />
∘ Currently 127<br />
∘ Trim to 10<br />
‣ dlk<br />
‣ irb<br />
‣ mkmf<br />
‣ minitest<br />
‣ open-uri<br />
‣ optparse<br />
‣ rake<br />
‣ rbconfig<br />
‣ rdoc<br />
‣ rubygems<br />
∘ Everything else is a gem!  You don&#8217;t need to throw anything away!</p>
<p>Parallel Ruby &#8211; PUBY &#8211; not such a good name&#8230; PRUBY it is, squash it together<br />
• How do we do it?<br />
• We already have the construct.  The = sign<br />
• a, b = b,a<br />
∘ Assignment happens in parallel<br />
∘ Values on LHS don&#8217;t impact calculations on RHS<br />
∘ Documented as parallel assignment<br />
• We can take this and make it more powerful<br />
• a, b = calc1(c), calc2(y)<br />
∘ Could perform calculation sin separate threads/processes<br />
∘ Assignment only completes when all values become available<br />
• But we can&#8217;t take the = operator, we need a new one<br />
• //e?<br />
• a, b, .. //= x, y, xx<br />
• If any rvalue is a proc, call it rather than assign it<br />
• (Shows code for finding the longest work in a (very) long list&#8230;.) &#8211; Great candidate for parallelism, break up the work into chunks<br />
∘ Shows a divvy-up function to do such a task<br />
∘ *results //= *divvy_up(words, 10, longest) &#8211; Spanned out to multiple parts and all procs executed independently.  Sends out N processes, returns N results<br />
∘ p results.max_by (|size,word|, word}<br />
∘ Map/Reduce in 3-4 lines of code<br />
∘ Kind of fun<br />
• Is this the whole story?<br />
• How do we share data without stepping on each other?  No idea!<br />
• Possible idea&#8230;<br />
• Within binding block, only variables listed as parameters are available and they are frozen/deep copied<br />
• Will it work?  Who knows, but fun to investigate<br />
• Hey, it&#8217;s just a concept</p>
<p>oTuby &#8211; Optionally typed Ruby<br />
• Why?  Documentation aid to IDEs Runtime Checking (maybe)<br />
• Type != Class<br />
• Need to find a middle ground<br />
• Possible approaches<br />
∘ Just go for it &#8212; annotate with class or module names<br />
∘ Command-line option to freeze built-in classes to allow optimizations<br />
∘ Runtime type inference?</p>
<p>CLUBY &#8211; Closure-based Ruby, Ruby with blocks<br />
• Make it easier to create lambas or project objects<br />
• First, free the braces!  No need to spell lambda anymore!<br />
• Next, rationalize blocks and procs<br />
• Replace them all with { |prams|    }<br />
• 3.times { |val| puts val * 9 }<br />
• More cool examples of passing blocks<br />
• Re-work the while syntax<br />
• We can do much of this today but we don&#8217;t because it&#8217;s too damn ugly<br />
• Re-writing class methods&#8230;.Get rid of class variables<br />
• Lose some keywords; class, modules, def, if, then, else, elsif, while, unless, until, case, when<br />
• Lose a lot of syntax<br />
• Gain a lot of flexibility<br />
∘ What were once control structures are now methods&#8230;</p>
<p>Let&#8217;s play!  Experiment!</p>
<p>Just for Avi&#8230;  Yes, Smalltalk did this a long time ago&#8230;</p>
<p>Four different ideas of many ideas.  Thousands of experiments!</p>
<p>Would love to see more people doing this.,,,</p>
<p>More radical re-writing of the syntax</p>
<p>There&#8217;s a word for all of this&#8230;  Bullshit.  Who knows if any of it is going to work!</p>
<p>Tath &#8211; Old Scottish word,  A wonderful word!  The luxuriant grass which rises in tufts where the dung of cattle has been deposited.</p>
<p>Dave has done the depositing!  Go be nourished!</p>
<p>Summary<br />
What&#8217;s wrong with Ruby?  Not much!</p>
<p>But this should not stop us from having fun.  Lets produce all of these wild ideas and see what works, and if they do work, maybe they will roll back into core.</p>
<p>Surprise him!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.matthewdavidwilliams.com/2008/11/07/rubyconf-2008-dave-thomas-keynote-notes/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>RubyConf 2008 – Matz Opening Keynote Notes</title>
		<link>http://www.matthewdavidwilliams.com/2008/11/06/rubyconf-2008-matz-opening-keynote-notes/</link>
		<comments>http://www.matthewdavidwilliams.com/2008/11/06/rubyconf-2008-matz-opening-keynote-notes/#comments</comments>
		<pubDate>Fri, 07 Nov 2008 00:32:27 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[RubyConf]]></category>
		<category><![CDATA[2008]]></category>
		<category><![CDATA[keynote]]></category>
		<category><![CDATA[matz]]></category>
		<category><![CDATA[notes]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[rubyconf2008]]></category>

		<guid isPermaLink="false">http://www.matthewdavidwilliams.com/?p=12</guid>
		<description><![CDATA[Notes from today&#8217;s opening keynote at RubyConf 2008 by Matz, the creator of Ruby.  It was an absolute pleasure to hear him speak and he did a fantastic job.  Here are my notes from the talk&#8230;.

First RubyConf &#8211; 30 or so users.  Has grown a lot. (~500 here today)
Keynote Topic: Reasons behind Ruby
Matz wanted to [...]]]></description>
			<content:encoded><![CDATA[<p>Notes from today&#8217;s opening keynote at RubyConf 2008 by Matz, the creator of Ruby.  It was an absolute pleasure to hear him speak and he did a fantastic job.  Here are my notes from the talk&#8230;.</p>
<p><span id="more-12"></span></p>
<p>First RubyConf &#8211; 30 or so users.  Has grown a lot. (~500 here today)</p>
<p>Keynote Topic: Reasons behind Ruby</p>
<p>Matz wanted to create a programming language.</p>
<p>Matz _loves_ freedom and wants to maximize it.</p>
<p>Ruby is Imperfect.</p>
<p>Complaints:<br />
• Ruby is slow<br />
• Ruby lacks features<br />
• Ruby is too complex<br />
• Ruby inconsistent<br />
• Ruby consumes too much memory<br />
• This list goes forever</p>
<p>Why do we love Ruby?  &#8230;Or how I learned to Stop Worrying and Love Ruby.</p>
<p>Love matters.  It&#8217;s the greatest reason behind Ruby.</p>
<p>But why do we love it?  It&#8217;s enjoyable.  It made programming fun again.  Again?  It used to be fun.  But no longer.</p>
<p>In 1980, BASIC.  Matz first computer &#8211; Sharp pocket computer<br />
• Great pleasure<br />
• Matz could make intelligence<br />
• Gave a sense of creation<br />
• At same time though, great pain<br />
• Aristocracy<br />
∘ Language designers and implementers on top<br />
∘ Programmers on the bottom<br />
∘ Barrier between</p>
<p>No command can be added.  No data type can be added.  No abstraction.</p>
<p>Lisp, found a year or two later<br />
• Everything was opposite of BASIC<br />
• No discrimination<br />
• Extreme abstraction<br />
• You can change everything<br />
• Great pleasure</p>
<p>Matz used Lisp<br />
• Didn&#8217;t make him THAT happy<br />
• Parentheses?<br />
• (Lost<br />
∘ (In<br />
‣ (Stupid<br />
• (Parentheses<br />
• Macros?<br />
∘ Partially<br />
• Smart people just underestimate ordinarily of ordinary people<br />
• Aristocracy<br />
∘ Happy with it (not in real life)<br />
∘ As long as he has power<br />
∘ And to be able to become designer when he wants</p>
<p>Conflict between owelty and safety.</p>
<p>BASIC gives you no power.  Lisp gives you full power.</p>
<p>Why not go all Lisp?  At both ends, we lose popularity.</p>
<p>Language popularity chicken race</p>
<p>BASIC<br />
&#8211;CLIFF&#8211;<br />
LISP</p>
<p>If you stay with BASIC you are a coward &#8230;</p>
<p>If you go to Lisp you are brave &#8230; or you risk your life</p>
<p>(Photos from Rebel Without a Cause)</p>
<p>Balance.  We all love power.  Flexibility  Freedom.  But it&#8217;s not free.  It&#8217;s like a pilgrimage or walking in the minefield.</p>
<p>Do you want that?  It&#8217;s not a task for everyone.  Matz wants it.  He&#8217;s done it for 15 years.  And willing to continue.  Help him.</p>
<p>You don&#8217;t need to learn Lisp because we have Ruby!</p>
<p>Policy matters.  Policy matters most.<br />
Philosophy.<br />
Attitude.<br />
People Matter.<br />
The community.<br />
&#8220;Ruby People are NIce&#8221; &#8211; Martin Fowler.<br />
Money matters (sometimes).<br />
Productivity Matters.<br />
Efficiency Matters.</p>
<p>Why do we choose Ruby?<br />
Ruby on Rails&#8230;<br />
Interesting point&#8230;<br />
Turned Ruby into a web DSL<br />
Added vocabulariy<br />
Rules (or syntax)<br />
Rake!<br />
RSPec</p>
<p>&#8220;Programming is a process of designing a DSL for your own pplication&#8221; &#8212; Dave Thomas.</p>
<p>Lisp is very good at being a DSL.</p>
<p>Increases overall productivity</p>
<p>Four million plus Ruby developers by 2013.  Under one million now.  Professional developers. (eWeek projection)</p>
<p>The future is bright.  Too bright, maybe.</p>
<p>Beware of commercial success.</p>
<p>If we are driven by money, we may lose something very important.</p>
<p>What we have<br />
• The community<br />
• Enthusiasm<br />
• Rise of commercial success</p>
<p>What we will have<br />
• More money<br />
• More job titles<br />
• More resources<br />
• Better implementations (faster JRuby makes him sad)  (Rubinious, good try!)<br />
• Faster<br />
• Feature rich<br />
• Provide more satisfactory experiences<br />
• Most Importantly&#8230;<br />
∘ We will have more poeple in the community<br />
∘ Some people behave nice&#8230;  Some just troll.  But people count.<br />
∘ Matz welcomes them, asks others to welcome them<br />
∘ Nourish them<br />
∘ Feed them better projects, themes, inspiring ideas<br />
∘ Love them.  Great power behind Ruby and the very reason behind Ruby<br />
∘ Matz loves you all.  Loves people using Ruby.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.matthewdavidwilliams.com/2008/11/06/rubyconf-2008-matz-opening-keynote-notes/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Introducing Barduino – The Ruby Powered Bar Monkey</title>
		<link>http://www.matthewdavidwilliams.com/2008/10/17/introducing-barduino-the-ruby-powered-bar-monkey/</link>
		<comments>http://www.matthewdavidwilliams.com/2008/10/17/introducing-barduino-the-ruby-powered-bar-monkey/#comments</comments>
		<pubDate>Fri, 17 Oct 2008 17:21:34 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Arduino]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[ORUG]]></category>
		<category><![CDATA[Orlando]]></category>
		<category><![CDATA[barduino]]></category>
		<category><![CDATA[physical computing]]></category>
		<category><![CDATA[rad]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://www.matthewdavidwilliams.com/?p=11</guid>
		<description><![CDATA[On October 10, 2008, I presented on the Ruby Arduino development framework, RAD for the Orlando Ruby Users Group.  After two years of attending ORUG, I decided it was time to make my contribution back to the community and that contribution was&#8230;.

(Photo credit: Anthony Eden)

Barduino is an Arduino based bar monkey implementation.  To sum up [...]]]></description>
			<content:encoded><![CDATA[<p>On October 10, 2008, I presented on the Ruby Arduino development framework, <a title="Ruby Arduino Framework Home" href="http://rad.rubyforge.org">RAD</a> for the <a title="Orlando Ruby Users Group" href="http://orug.org">Orlando Ruby Users Group</a>.  After two years of attending ORUG, I decided it was time to make my contribution back to the community and that contribution was&#8230;.</p>
<p><img src="http://farm4.static.flickr.com/3183/2948553177_06c1190acb.jpg" alt="Barduino Introduction" /><br />
(Photo credit: <a href="http://anthony.mp/">Anthony Eden</a>)</p>
<p><span id="more-11"></span></p>
<p>Barduino is an <a title="Arduino Home" href="http://arduino.cc">Arduino</a> based bar monkey implementation.  To sum up a bar monkey, it&#8217;s typically a computer control drink dispensing system.  The Arduino, a very <a title="Arduino at Sparkfun.com" href="http://www.sparkfun.com/commerce/product_info.php?products_id=666">cost effective</a> physical computing platform was the perfect base for the Barduino.  And the ability to work with a language I&#8217;m comfortable with, <a title="Ruby Home" href="http://www.ruby-lang.org/en/">Ruby</a>, to write the software that runs on the Arduino made this a relatively simple project.  All of this being made possible with the <a title="RAD Home" href="http://rad.rubyforge.org">Ruby Arduino Development Framework</a>.</p>
<p>So first off, let&#8217;s take a look at the Barduino in action:</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="400" height="300" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="flashvars" value="intl_lang=en-us&amp;photo_secret=75c35dc234&amp;photo_id=2945307979" /><param name="bgcolor" value="#000000" /><param name="allowFullScreen" value="true" /><param name="src" value="http://www.flickr.com/apps/video/stewart.swf?v=61761" /><embed type="application/x-shockwave-flash" width="400" height="300" src="http://www.flickr.com/apps/video/stewart.swf?v=61761" allowfullscreen="true" bgcolor="#000000" flashvars="intl_lang=en-us&amp;photo_secret=75c35dc234&amp;photo_id=2945307979"></embed></object></p>
<p>So how was this accomplished?  You can take a look at the <a title="GitHub Barduino Link" href="http://github.com/mwilliams/barduino/tree/master/barduino.rb">source code over at GitHub</a>.</p>
<p>Here&#8217;s the basic breakdown of what the Arduino is doing:</p>
<ul>
<li>Verify there&#8217;s a glass sitting under the dispense area.  This is accomplished with a <a title="Photoresistor at Radio Shack" href="http://www.radioshack.com/product/index.jsp?productId=2062590&amp;cp=&amp;sr=1&amp;kw=photoresistor&amp;origkw=photoresistor&amp;parentPage=search">photoresistor</a> that detects light</li>
<li>Verify the Arduion has a serial connection for it to receive commands</li>
<li>Listen for either a &#8220;1&#8243; or &#8220;2&#8243; being send to the board over the serial line (via the USB port)</li>
<li>If a &#8220;1&#8243; or &#8220;2&#8243; is received, call the dispense method pass it the pump it needs to turn on</li>
<li>Dispense a single ounce of liquid on the given pump and return back to the main loop</li>
</ul>
<p>So now we have the Arduino programmed and ready to go, but how do we send those characters over the serial port to actually make some drinks?  With a domain specific language written with Ruby of course.  In the case of the Barduino, you have the Barduino-tender.  You build a recipe in a very elegant Ruby like manner and from there, you let the Barduino-tender go ahead and tell the Barduino which pumps to turn on and how many times.  So let&#8217;s take a look at an example recipe.</p>

<div class="wp_syntax"><div class="code"><pre class="ruby ruby" style="font-family:monospace;">drink <span style="color:#996600;">'Screwdriver'</span> <span style="color:#9966CC; font-weight:bold;">do</span>
  serve_in <span style="color:#996600;">'Highball Glass'</span>
  ingredients <span style="color:#9966CC; font-weight:bold;">do</span>
    2.<span style="color:#9900CC;">ounces</span> <span style="color:#ff3333; font-weight:bold;">:vodka</span>
    5.<span style="color:#9900CC;">ounces</span> <span style="color:#ff3333; font-weight:bold;">:orange_juice</span>
  <span style="color:#9966CC; font-weight:bold;">end</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre></div></div>

<p>Now that&#8217;s all left to do is run that recipe against the barduino-tender and the Barduino will proceed to dispense 8 single ounce shots from the respective pumps.  You can <a title="Barduino-tender on GitHub" href="http://github.com/mwilliams/barduino-tender/">take a look at the DSL on GitHub</a>.</p>
<p>So what does the circuit look like that&#8217;s driving the Barduino?  Here&#8217;s a photo, give it a click to head on over to Flickr so you can see what each of the components are.</p>
<p><a title="Barduino - Circuit Overview by MatthewAndLindsey, on Flickr" href="http://www.flickr.com/photos/mdweezer/2945309387/"><img src="http://farm4.static.flickr.com/3285/2945309387_4b57c6d089.jpg" alt="Barduino - Circuit Overview" width="500" height="375" /></a></p>
<p>How about cost?  It was very minimal.  $34.99 for the Arduino.  <a href="http://www.sciplus.com/singleItem.cfm/terms/14315">$9.75 for each pump</a>.  And the rest of the parts came from Radio Shack.  The total cost of this project was less than $75.  And thanks to Mike Wheeler for whipping up the rig for me to mount everything on!</p>
<p>Lastly, the presentation slides, some links, and some other photos courtesy of <a href="http://anthony.mp">Anthony Eden</a> (who also contributed to the project with his <a href="http://orug.org/articles/2007/10/19/orug-meeting-notes">DSL talk last year at an ORUG meeting</a>).</p>
<div id="__ss_663960" style="width:425px;text-align:left"><a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" title="Physical Computing with Ruby and Arduino" href="http://www.slideshare.net/orug/physical-computing-with-ruby-and-arduino-presentation?type=powerpoint">Physical Computing with Ruby and Arduino</a><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="355" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://static.slideshare.net/swf/ssplayer2.swf?doc=mwilliamsarduinoorug-1224216426229036-8&amp;stripped_title=physical-computing-with-ruby-and-arduino-presentation" /><embed type="application/x-shockwave-flash" width="425" height="355" src="http://static.slideshare.net/swf/ssplayer2.swf?doc=mwilliamsarduinoorug-1224216426229036-8&amp;stripped_title=physical-computing-with-ruby-and-arduino-presentation" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;">View SlideShare <a style="text-decoration:underline;" title="View Physical Computing with Ruby and Arduino on SlideShare" href="http://www.slideshare.net/orug/physical-computing-with-ruby-and-arduino-presentation?type=powerpoint">presentation</a> or <a style="text-decoration:underline;" href="http://www.slideshare.net/upload?type=powerpoint">Upload</a> your own. (tags: <a style="text-decoration:underline;" href="http://slideshare.net/tag/ruby">ruby</a> <a style="text-decoration:underline;" href="http://slideshare.net/tag/arduino">arduino</a>)</div>
</div>
<p><img style="visibility:hidden;width:0px;height:0px;" src="http://counters.gigya.com/wildfire/IMP/CXNID=2000002.0NXC/bT*xJmx*PTEyMjQyODc4MTQ*OTYmcHQ9MTIyNDI4NzgzMjMyMiZwPTEwMTkxJmQ9Jmc9MiZ*PSZvPTk1Y2Q2MWEzZGQzZjQ*NmY4YjFhMmVjMGNlZGIwZjI*.gif" border="0" alt="" width="0" height="0" /></p>
<p><a href="http://www.timrosenblatt.com/blog/2008/10/16/physical-computing-with-ruby-and-arduino/">Notes from Tim Rosenblatt with lots of links to various resources and components I discussed during the talk. (Thanks Tim!)</a></p>
<p><img src="http://farm4.static.flickr.com/3250/2949912286_129f51c450.jpg" alt="The audience waits" /></p>
<p><img src="http://farm4.static.flickr.com/3015/2949409248_bcc8a0426d.jpg" alt="Up close and personal" /></p>
<p><img src="http://farm4.static.flickr.com/3285/2948552227_6ec4d81dfb.jpg" alt="Setting up the Barduino" /></p>
<p><img src="http://farm4.static.flickr.com/3295/2949411918_8c5212c966.jpg" alt="Dispensing some blue fluid" /></p>
<p><img src="http://farm4.static.flickr.com/3184/2949411224_5fb562d494.jpg" alt="Dispensing some red liquid" /></p>
<p>Lastly, big thanks to <a href="http://railsenvy.com/">Gregg Pollack</a> for running the show at <a href="http://orug.org">ORUG</a> and be sure to check his latest project with partner in crime Jason, <a href="http://envycasts.com/">EnvyCasts</a> for some of the most well produced screencasts that you&#8217;re going to find in the Rails world.  Absolutely worth every penny.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.matthewdavidwilliams.com/2008/10/17/introducing-barduino-the-ruby-powered-bar-monkey/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>JRuby – Or how I manage to write Ruby in a strict corporate environment</title>
		<link>http://www.matthewdavidwilliams.com/2008/04/20/jruby-or-how-i-manage-to-write-ruby-in-a-strict-corporate-environment/</link>
		<comments>http://www.matthewdavidwilliams.com/2008/04/20/jruby-or-how-i-manage-to-write-ruby-in-a-strict-corporate-environment/#comments</comments>
		<pubDate>Sun, 20 Apr 2008 22:48:04 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false">http://www.matthewdavidwilliams.com/?p=10</guid>
		<description><![CDATA[One of the beauties of the Ruby community is the benefit of choice.  Original Ruby interpreter?  Check.  Ruby interpreter in Java?  Check.  Ruby interpreter in Ruby?  Check.  Ruby for .NET?  Check.  Projects like these make it easier to integrate Ruby in almost any environment.  
Specifically, the development of JRuby has been full steam ahead ever since [...]]]></description>
			<content:encoded><![CDATA[<p>One of the beauties of the Ruby community is the benefit of choice.  <a title="Ruby Interpreter" href="http://www.ruby-lang.org/en/" target="_blank">Original Ruby interpreter</a>?  Check.  <a title="JRuby Home" href="http://jruby.codehaus.org/" target="_blank">Ruby interpreter in Java</a>?  Check.  <a title="Rubinius" href="http://rubini.us/" target="_blank">Ruby interpreter in Ruby</a>?  Check.  <a title="IronRuby Home" href="http://www.ironruby.net/" target="_blank">Ruby for .NET</a>?  Check.  Projects like these make it easier to integrate Ruby in almost any environment.  </p>
<p>Specifically, the development of JRuby has been full steam ahead ever since Sun decided to <a title="Sun hires two developers full time" href="http://headius.blogspot.com/2006/09/jruby-steps-into-sun.html" target="_blank">hire two developers on full-time</a> to work on the JRuby project.  This has meant constant releases, each with a large change set.  The project has most recently hit its 1.1 state which includes a 100% compatible Ruby 1.8.6 interpreter written completely in Java.  This means you can simply drop the JRuby JAR file in your Java project and begin writing Ruby code.  Or you can go ahead and integrate Swing into your Ruby application; seamlessly.</p>
<p>I work for a Fortune 100 company, a defense contractor with a pretty strict development environment.  What does this mean?  For the most part I&#8217;m limited to Windows, anything I would like installed on my PC needs to go through an approval process (which can take 3-6 months, easily) and the existing choice of tools is quite limited.  Luckily, Java is one of the big hitters for development in the software department.  The standard load on my PC contains a pretty recent JRE/JDK which opens the door to JRuby.  JRuby at this point is simply a drop in, a tool I can integrate to my existing environment.  It&#8217;s not an executable that needs to be virus scanned or something that shows up in the wonderful Windows &#8220;Add/Remove Programs&#8221; dialog.  </p>
<p>And it is wonderful.</p>
<p>Next, enter <a title="NetBeans IDE" href="http://www.netbeans.org" target="_blank">NetBeans</a>, an IDE for the big hitter languages; C++, Java and most recently, Ruby and Javascript.  NetBeans is one of the few tools that makes working in Windows a pleasure.  I&#8217;m a Mac guy, so spending 9 hours at work on a PC can be painful at times but a properly configured NetBeans can give me an IDE that looks similar to <a title="TextMate" href="http://macromates.com/" target="_blank">TextMate</a>.  Couple this with <a title="Cygwin" href="http://www.cygwin.com/" target="_blank">Cygwin</a> and I&#8217;ve got a pretty similar development environment as I would in a Mac or Linux environment.  Built in Autotest, incredible code completion (including <a title="ActiveRecord auto-completion example" href="http://blogs.sun.com/tor/entry/ruby_screenshot_of_the_week20" target="_blank">completion on your ActiveRecord models</a>) and integration with the major SCM tools out there makes NetBeans a necessary tool when working with Ruby in Windows.</p>
<p>JRuby has full support for Rails.  Now I have the option to either work in Rails or the company blessed solution of ColdFusion.  Tough choice, eh?  With JDBC drivers for every major database out there, I can quickly prototype and develop applications against both Oracle and PostgreSQL which I have at my disposal.  </p>
<p>JRuby also has a great community with an active mailing list.  Hit a bug?  Missing a feature?  Go ahead and submit a ticket to their <a title="JRuby JIRA" href="http://jira.codehaus.org/browse/JRUBY">JIRA bug tracking instance</a> and chances are it will get addressed in the next release.  I ran into a bug with the JDBC-PostgreSQL driver, browsed their bug tracking library and found that not only had it been submitted already, but <a title="Ola Binis Blog" href="http://ola-bini.blogspot.com/" target="_blank">Ola Bini</a>, one of their active developers had corrected the bug that morning and posted a fix that I was able to grab and continue on with my development.</p>
<p>But what about getting Ruby accepted by others in your environment?  I think the general consensus on this has been to simply go ahead an whip up an application and go ahead and demo it.  Show off the benefits, the clean code and the time saved by using Ruby over whatever you would have otherwise built the tool with.  Ask for forgiveness later.  </p>
<p>So the next time you have that itch to integrate Ruby (or Rails) at work, go ahead and give JRuby a look.  You&#8217;ll be a much happier person because of it and your co-workers who are unfamiliar with Ruby will thank you.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.matthewdavidwilliams.com/2008/04/20/jruby-or-how-i-manage-to-write-ruby-in-a-strict-corporate-environment/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Code anywhere: 9 programming languages in your browser</title>
		<link>http://www.matthewdavidwilliams.com/2008/04/09/code-anywhere-9-programming-languages-in-your-browser/</link>
		<comments>http://www.matthewdavidwilliams.com/2008/04/09/code-anywhere-9-programming-languages-in-your-browser/#comments</comments>
		<pubDate>Thu, 10 Apr 2008 01:59:58 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[development iphone EC2]]></category>

		<guid isPermaLink="false">http://www.matthewdavidwilliams.com/?p=7</guid>
		<description><![CDATA[Steven Hazel, the developer behind http://codepad.org/ has a great write up on how he&#8217;s using Amazon EC2 to scale codepad as well as taking advantage of its firewalled nature to compile code safely.

Te idea behind codepad is that it acts as both a &#8220;code paste&#8221; site but it then takes the concept one step further by [...]]]></description>
			<content:encoded><![CDATA[<p><a title="Steven Hazels blog" href="http://www.hackerdashery.com/">Steven Hazel</a>, the developer behind <a title="Codepad.org" href="http://codepad.org/">http://codepad.org/</a> has a <a title="Steven Hazel - Scaling with EC2" href="http://www.hackerdashery.com/2008/03/scaling-at-2am-with-ec2.html" target="_self">great write up</a> on how he&#8217;s using <a title="Amazon EC2" href="http://www.amazon.com/gp/browse.html?node=201590011" target="_self">Amazon EC2</a> to scale codepad as well as taking advantage of its firewalled nature to compile code safely.</p>
<p><span id="more-7"></span></p>
<p>Te idea behind codepad is that it acts as both a &#8220;code paste&#8221; site but it then takes the concept one step further by actually compiling the code and displaying the output in your browser.  The code is then available for 24 hours through a unique URL.  From that URL anyone can view your code and its output and even fork the code to create their own paste.</p>
<p>Here&#8217;s a quick example of a little Ruby code:</p>
<p><a href="http://www.matthewdavidwilliams.com/wp-content/uploads/2008/04/picture-1.png"><img class="alignright size-full wp-image-8" title="Codepad Ruby Example" src="http://www.matthewdavidwilliams.com/wp-content/uploads/2008/04/picture-1.png" alt="A simple proc in Codepad" width="458" height="268" /></a></p>
<p>While <a title="Pastie" href="http://pastie.caboo.se/" target="_self">http://pastie.caboo.se/</a> seems to be paste site of choice right now within much of the Ruby community, especially with the release of <a title="Pastie Packer" href="http://pastiepacker.rubyforge.org/" target="_self">Pastie Packer</a> from <a title="Dr. Nic Williams" href="http://drnicwilliams.com/" target="_self">Dr Nic</a>, I think codepad will open some eyes with a little more exposure.</p>
<p>It&#8217;s also a great service for learning something new or teaching someone else.</p>
<p>Give it a look, you&#8217;ve got 9 languages to work with:</p>
<ul>
<li>C</li>
<li>C++</li>
<li>D</li>
<li>Haskell</li>
<li>OCaml</li>
<li>Perl</li>
<li>Python</li>
<li>Ruby</li>
<li>Scheme</li>
<li>Tcl</li>
</ul>
<div>And if you don&#8217;t want to run the code but just want some code formatted correctly with some color styling, you can do that too.</div>
<div>It also runs great on the iPhone, so the next time you&#8217;re stuck somewhere with an EDGE connection and want to work on your obfuscated C code contest entry, go for it! </div>
<p> </p>
<div><a href="http://www.matthewdavidwilliams.com/wp-content/uploads/2008/04/picture-3.png"><img class="aligncenter size-full wp-image-9" title="Codepad on iPhone" src="http://www.matthewdavidwilliams.com/wp-content/uploads/2008/04/picture-3.png" alt="" width="386" height="742" /></a></div>
]]></content:encoded>
			<wfw:commentRss>http://www.matthewdavidwilliams.com/2008/04/09/code-anywhere-9-programming-languages-in-your-browser/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>BarCamp Orlando, Community Involvement and the Twitter</title>
		<link>http://www.matthewdavidwilliams.com/2008/04/06/barcamp-orlando-community-involvement-and-the-twitter/</link>
		<comments>http://www.matthewdavidwilliams.com/2008/04/06/barcamp-orlando-community-involvement-and-the-twitter/#comments</comments>
		<pubDate>Mon, 07 Apr 2008 03:11:37 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Orlando]]></category>
		<category><![CDATA[Orlando BarCamp 2008 Twitter]]></category>

		<guid isPermaLink="false">http://www.matthewdavidwilliams.com/?p=4</guid>
		<description><![CDATA[On Saturday April 5th 2008, some of the brightest minds in Florida got together for the 2nd annual Barcamp Orlando.  The topics ranged from microformats to the latest agile development strategies.  One talk that stood out however was Gregg Pollack&#8217;s talk entitled &#8220;Ranting about the community&#8221;.  The talk was the last of [...]]]></description>
			<content:encoded><![CDATA[<p>On Saturday April 5th 2008, some of the brightest minds in Florida got together for the 2nd annual <a title="Barcamp Orlando" href="http://www.barcamporlando.com" target="_self">Barcamp Orlando</a>.  The topics ranged from <a title="Microformats" href="http://microformats.org/" target="_self">microformats</a> to the latest <a title="Scrum Alliance" href="http://www.scrumalliance.org/" target="_self">agile development strategies</a>.  One talk that stood out however was <a title="Rails Envy" href="http://www.railsenvy.com" target="_self">Gregg Pollack&#8217;s</a> talk entitled &#8220;Ranting about the community&#8221;.  The talk was the last of the evening and BarCampers packed the room.  Gregg clearly strategically timed this talk to be the last of the evening as 30 minutes later the room was going to empty and pack the offices of <a title="Izea" href="http://www.izea.com" target="_self">Izea</a> for the <a title="Geek Out 2008!" href="http://www.geekoutparty.com/" target="_self">Geek out 2008 Party</a>.</p>
<p>Gregg focused strongly on the importance of community and how you should be involved in it.  He pointed out the many options one would have to get involved in their local tech communities; blogging, going to user group meetings and getting your involvement wherever you can.</p>
<p>This blog is my reaction to Gregg&#8217;s talk.  It&#8217;s one of the easiest way to gain yourself some exposure within the community and not just local but the <strong>the entire</strong> community; world wide.  I&#8217;m unfortunately a little bit of a drive away from Orlando but I do my best to get to Orlando for their <a title="Orlando Ruby Users Group" href="http://www.orug.org" target="_self">Ruby User Group</a> meetings.  I would love to get to lunch_fu which is put on by <a title="Florida Creatives" href="http://floridacreatives.com/" target="_self">Florida Creatives</a> every once in a while but it&#8217;s not feasible with my distance from Orlando.</p>
<p><a title="Twitter" href="http://twitter.com/" target="_self">Twitter</a> has been an incredible resource for me personally.  It has allowed me to be in the know with what&#8217;s going on out in Orlando as well as add some input every once in a while.  One of the craziest Twitter moments so far would have to be my encounter with <a title="Josh Blount's Twitter" href="http://twitter.com/stickwithjosh" target="_self">Josh Blount</a>.  He had been out in the rain with his iPhone which resulted with some technical problems so I went ahead and <a title="My Twitter response" href="http://twitter.com/mwilliams/statuses/782897663" target="_self">replied to his tweet</a> with a suggestion on how it could be fixed.  It corrected his issue.  He even <a title="Josh Blount's Blog" href="http://log.joshuablount.com/2008/04/04/how-to-fix-a-rained-on-iphone/" target="_self">blogged about it</a>, giving me a little credit.</p>
<p>Back to Gregg&#8217;s talk.  He finished with a little exercise that got everyone shaking hands with someone they had never met before and introducing themselves.  This exercise continued at the Izea party.  After playing some Rock Band I noticed a small group chatting so I went over and introduced myself.  Low and behold, Josh was in that group.  Conversation quickly turned to topics such as Python and pinging a MySQL employee with database questions.  It was a great night with a lot of good conversation.  I really enjoyed networking with a lot of people this weekend.</p>
<p>I now have almost 100 followers on Twitter and if I can pull 100 followers on this blog I&#8217;ll consider it a success.  So feel free to subscribe or just drop me an e-mail at <a href="mailto:matthew.d.williams@gmail.com">matthew.d.williams@gmail.com</a> if we didn&#8217;t get a chance to talk at BarCamp.  Until then, stay tuned and I&#8217;ll try to keep it interesting.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.matthewdavidwilliams.com/2008/04/06/barcamp-orlando-community-involvement-and-the-twitter/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss><!-- Dynamic Page Served (once) in 0.378 seconds -->
