<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xml" href="http://www.dzone.com/links/misc/rss.xsl"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dz="http://www.developerzone.com/modules/dz/1.0" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>DZone links by vidarh</title>
    <link>http://www.dzone.com/links/users/links/279649.html</link>
    <description>DZone: fresh links for developers</description>
    <language>en-us</language>
    <copyright>Copyright (c) 2006 DZone, Inc.</copyright>
    <pubDate>Fri, 22 Aug 2008 04:25:49 GMT</pubDate>
    <dc:creator>The DZone community</dc:creator>
    <dc:date>2008-08-22T04:25:49Z</dc:date>
    <dc:language>en-us</dc:language>
    <dc:rights>Copyright (c) 2006 DZone, Inc.</dc:rights>
    <dz:selfLink>http://www.dzone.com/links/feed/user/279649/rss.xml</dz:selfLink>
    <image>
      <title>DZone: fresh links for developers</title>
      <url>http://www.dzone.com/images/std/dzone.com_258x55.gif</url>
      <link>http://www.dzone.com/links/</link>
    </image>
    <item>
      <title>Writing a compiler in Ruby bottom up - step 8</title>
      <link>http://www.dzone.com/links/rss/writing_a_compiler_in_ruby_bottom_up_step_8.html</link>
      <description>Part 8 adds support for assignment, and adds some minor runtime support (in C temporarily) for arithmetic and comparisons, and briefly discusses how to translate the C functions into primitives in the compiler in Ruby.</description>
      <category>how-to</category>
      <category>other languages</category>
      <category>ruby</category>
      <pubDate>Mon, 02 Jun 2008 15:03:05 GMT</pubDate>
      <guid isPermaLink="false">http://www.dzone.com/links/84474.html</guid>
      <dc:creator>vidarh</dc:creator>
      <dc:date>2008-06-02T15:03:05Z</dc:date>
      <content:encoded><![CDATA[<a href='http://www.dzone.com/links/rss/writing_a_compiler_in_ruby_bottom_up_step_8.html'><img src='http://www.dzone.com/links/images/thumbs/120x90/84474.jpg' style='width:120;height:90;margin:6;float:left;vertical-align:top;border:1px solid #ccc;' /></a> Part 8 adds support for assignment, and adds some minor runtime support (in C temporarily) for arithmetic and comparisons, and briefly discusses how to translate the C functions into primitives in the compiler in Ruby.]]></content:encoded>
      <dz:linkId>84474</dz:linkId>
      <dz:submitDate>2008-06-02T15:03:05Z</dz:submitDate>
      <dz:voteUpCount>4</dz:voteUpCount>
      <dz:voteDownCount>0</dz:voteDownCount>
      <dz:clickCount>10</dz:clickCount>
      <dz:commentCount>0</dz:commentCount>
      <dz:thumbnail>http://www.dzone.com/links/images/thumbs/120x90/84474.jpg</dz:thumbnail>
      <dz:submitter>
        <dz:username>vidarh</dz:username>
        <dz:userimage>http://www.dzone.com/links/images/avatars/279649.gif</dz:userimage>
      </dz:submitter>
    </item>
    <item>
      <title>TraceViz: Visualizing traceroute output with graphivz</title>
      <link>http://www.dzone.com/links/rss/traceviz_visualizing_traceroute_output_with_graph.html</link>
      <description>At one point I quickly hacked together a Ruby script to merge the paths generated by multiple traceroute runs together into directed graphs, showing the routing from a few selected host in our environment to all our other hosts. I generated dot-files suitable for GraphViz from it. Here's a rewrite and step by step instructions to turn it into nice SVG and/or bitmap diagrams.</description>
      <category>how-to</category>
      <category>ruby</category>
      <category>tools</category>
      <pubDate>Thu, 29 May 2008 13:35:30 GMT</pubDate>
      <guid isPermaLink="false">http://www.dzone.com/links/83749.html</guid>
      <dc:creator>vidarh</dc:creator>
      <dc:date>2008-05-29T13:35:30Z</dc:date>
      <content:encoded><![CDATA[<a href='http://www.dzone.com/links/rss/traceviz_visualizing_traceroute_output_with_graph.html'><img src='http://www.dzone.com/links/images/thumbs/120x90/83749.jpg' style='width:120;height:90;margin:6;float:left;vertical-align:top;border:1px solid #ccc;' /></a> At one point I quickly hacked together a Ruby script to merge the paths generated by multiple traceroute runs together into directed graphs, showing the routing from a few selected host in our environment to all our other hosts. I generated dot-files suitable for GraphViz from it. Here's a rewrite and step by step instructions to turn it into nice SVG and/or bitmap diagrams.]]></content:encoded>
      <dz:linkId>83749</dz:linkId>
      <dz:submitDate>2008-05-29T13:35:30Z</dz:submitDate>
      <dz:voteUpCount>3</dz:voteUpCount>
      <dz:voteDownCount>0</dz:voteDownCount>
      <dz:clickCount>18</dz:clickCount>
      <dz:commentCount>0</dz:commentCount>
      <dz:thumbnail>http://www.dzone.com/links/images/thumbs/120x90/83749.jpg</dz:thumbnail>
      <dz:submitter>
        <dz:username>vidarh</dz:username>
        <dz:userimage>http://www.dzone.com/links/images/avatars/279649.gif</dz:userimage>
      </dz:submitter>
    </item>
    <item>
      <title>Reducing coupling through unit tests</title>
      <link>http://www.dzone.com/links/rss/reducing_coupling_through_unit_tests.html</link>
      <description>After my previous post on the subject of coupling and cohesion, a lot of the feedback I've gotten has been from people who want examples of lowering coupling, or want to know how they can see if their code is loosely coupled. This post briefly gives some advice on how unit testing encourages structuring code in ways that tends to reduce coupling.</description>
      <category>how-to</category>
      <category>methodology</category>
      <category>opinion</category>
      <pubDate>Fri, 23 May 2008 19:58:14 GMT</pubDate>
      <guid isPermaLink="false">http://www.dzone.com/links/82647.html</guid>
      <dc:creator>vidarh</dc:creator>
      <dc:date>2008-05-23T19:58:14Z</dc:date>
      <content:encoded><![CDATA[<a href='http://www.dzone.com/links/rss/reducing_coupling_through_unit_tests.html'><img src='http://www.dzone.com/links/images/thumbs/120x90/82647.jpg' style='width:120;height:90;margin:6;float:left;vertical-align:top;border:1px solid #ccc;' /></a> After my previous post on the subject of coupling and cohesion, a lot of the feedback I've gotten has been from people who want examples of lowering coupling, or want to know how they can see if their code is loosely coupled. This post briefly gives some advice on how unit testing encourages structuring code in ways that tends to reduce coupling.]]></content:encoded>
      <dz:linkId>82647</dz:linkId>
      <dz:submitDate>2008-05-23T19:58:14Z</dz:submitDate>
      <dz:voteUpCount>3</dz:voteUpCount>
      <dz:voteDownCount>0</dz:voteDownCount>
      <dz:clickCount>20</dz:clickCount>
      <dz:commentCount>0</dz:commentCount>
      <dz:thumbnail>http://www.dzone.com/links/images/thumbs/120x90/82647.jpg</dz:thumbnail>
      <dz:submitter>
        <dz:username>vidarh</dz:username>
        <dz:userimage>http://www.dzone.com/links/images/avatars/279649.gif</dz:userimage>
      </dz:submitter>
    </item>
    <item>
      <title>Writing a compiler in Ruby bottom up - step 7</title>
      <link>http://www.dzone.com/links/rss/writing_a_compiler_in_ruby_bottom_up_step_7.html</link>
      <description>Seventh in my series on writing a compiler in Ruby: Using lambda/call to implement control structures, and finally making it possible to access function arguments.</description>
      <category>how-to</category>
      <category>other languages</category>
      <category>ruby</category>
      <pubDate>Fri, 16 May 2008 15:56:22 GMT</pubDate>
      <guid isPermaLink="false">http://www.dzone.com/links/81341.html</guid>
      <dc:creator>vidarh</dc:creator>
      <dc:date>2008-05-16T15:56:22Z</dc:date>
      <content:encoded><![CDATA[<a href='http://www.dzone.com/links/rss/writing_a_compiler_in_ruby_bottom_up_step_7.html'><img src='http://www.dzone.com/links/images/thumbs/120x90/81341.jpg' style='width:120;height:90;margin:6;float:left;vertical-align:top;border:1px solid #ccc;' /></a> Seventh in my series on writing a compiler in Ruby: Using lambda/call to implement control structures, and finally making it possible to access function arguments.]]></content:encoded>
      <dz:linkId>81341</dz:linkId>
      <dz:submitDate>2008-05-16T15:56:22Z</dz:submitDate>
      <dz:voteUpCount>3</dz:voteUpCount>
      <dz:voteDownCount>0</dz:voteDownCount>
      <dz:clickCount>12</dz:clickCount>
      <dz:commentCount>0</dz:commentCount>
      <dz:thumbnail>http://www.dzone.com/links/images/thumbs/120x90/81341.jpg</dz:thumbnail>
      <dz:submitter>
        <dz:username>vidarh</dz:username>
        <dz:userimage>http://www.dzone.com/links/images/avatars/279649.gif</dz:userimage>
      </dz:submitter>
    </item>
    <item>
      <title>How to beat comment spam (for now, anyway)</title>
      <link>http://www.dzone.com/links/rss/how_to_beat_comment_spam_for_now_anyway.html</link>
      <description>Thoughts on defeating comment spam without user visible captcha's by using javascript.</description>
      <category>how-to</category>
      <category>javascript</category>
      <category>opinion</category>
      <category>web 2.0</category>
      <pubDate>Thu, 15 May 2008 11:03:34 GMT</pubDate>
      <guid isPermaLink="false">http://www.dzone.com/links/81125.html</guid>
      <dc:creator>vidarh</dc:creator>
      <dc:date>2008-05-15T11:03:34Z</dc:date>
      <content:encoded><![CDATA[<a href='http://www.dzone.com/links/rss/how_to_beat_comment_spam_for_now_anyway.html'><img src='http://www.dzone.com/links/images/thumbs/120x90/81125.jpg' style='width:120;height:90;margin:6;float:left;vertical-align:top;border:1px solid #ccc;' /></a> Thoughts on defeating comment spam without user visible captcha's by using javascript.]]></content:encoded>
      <dz:linkId>81125</dz:linkId>
      <dz:submitDate>2008-05-15T11:03:34Z</dz:submitDate>
      <dz:voteUpCount>2</dz:voteUpCount>
      <dz:voteDownCount>0</dz:voteDownCount>
      <dz:clickCount>17</dz:clickCount>
      <dz:commentCount>0</dz:commentCount>
      <dz:thumbnail>http://www.dzone.com/links/images/thumbs/120x90/81125.jpg</dz:thumbnail>
      <dz:submitter>
        <dz:username>vidarh</dz:username>
        <dz:userimage>http://www.dzone.com/links/images/avatars/279649.gif</dz:userimage>
      </dz:submitter>
    </item>
    <item>
      <title>A brief introduction to Semantic Dictionary Encoding</title>
      <link>http://www.dzone.com/links/rss/a_brief_introduction_to_semantic_dictionary_encod.html</link>
      <description>SDE is, at it's most basic, a compression mechanism for the intermediate representation of a compiler. Similiarly to Huffman coding, an SDE encoder and decoder pair both builds a dictionary of the datastream while building it and decoding it respectively. The dictionary entries is the used to encode/decode the following part of the data stream, which cause more entries to be added to the dictionary, etc., meaning that the later you are in the data stream, the more of the stream will refer to previously added dictionary entries instead of having to be all verbose and include the full definition.&#xD;
&#xD;
But to call it just a compression method would be selling it very short. The appeal of SDE is that it can be used as a machine independent representation of a program, while at the same time it can (if used properly) retain far more semantic information about the program than a typical bytecode. Contrary to most bytecode, SDE retains the structure of the program as represented by the compiler.</description>
      <category>methodology</category>
      <category>other languages</category>
      <category>research</category>
      <pubDate>Wed, 07 May 2008 15:04:32 GMT</pubDate>
      <guid isPermaLink="false">http://www.dzone.com/links/79739.html</guid>
      <dc:creator>vidarh</dc:creator>
      <dc:date>2008-05-07T15:04:32Z</dc:date>
      <content:encoded><![CDATA[<a href='http://www.dzone.com/links/rss/a_brief_introduction_to_semantic_dictionary_encod.html'><img src='http://www.dzone.com/links/images/thumbs/120x90/79739.jpg' style='width:120;height:90;margin:6;float:left;vertical-align:top;border:1px solid #ccc;' /></a> SDE is, at it's most basic, a compression mechanism for the intermediate representation of a compiler. Similiarly to Huffman coding, an SDE encoder and decoder pair both builds a dictionary of the datastream while building it and decoding it respectively. The dictionary entries is the used to encode/decode the following part of the data stream, which cause more entries to be added to the dictionary, etc., meaning that the later you are in the data stream, the more of the stream will refer to previously added dictionary entries instead of having to be all verbose and include the full definition.

But to call it just a compression method would be selling it very short. The appeal of SDE is that it can be used as a machine independent representation of a program, while at the same time it can (if used properly) retain far more semantic information about the program than a typical bytecode. Contrary to most bytecode, SDE retains the structure of the program as represented by the compiler.]]></content:encoded>
      <dz:linkId>79739</dz:linkId>
      <dz:submitDate>2008-05-07T15:04:32Z</dz:submitDate>
      <dz:voteUpCount>2</dz:voteUpCount>
      <dz:voteDownCount>0</dz:voteDownCount>
      <dz:clickCount>10</dz:clickCount>
      <dz:commentCount>0</dz:commentCount>
      <dz:thumbnail>http://www.dzone.com/links/images/thumbs/120x90/79739.jpg</dz:thumbnail>
      <dz:submitter>
        <dz:username>vidarh</dz:username>
        <dz:userimage>http://www.dzone.com/links/images/avatars/279649.gif</dz:userimage>
      </dz:submitter>
    </item>
    <item>
      <title>Writing a compiler in Ruby bottom up - step 6</title>
      <link>http://www.dzone.com/links/rss/writing_a_compiler_in_ruby_bottom_up_step_6.html</link>
      <description>Sixth in my series on writing a compiler in Ruby: "How about some deferred evaluation and anonymous functions?&#xD;
&#xD;
Lambdas, or anonymous functions, can be passed around like values and called at your convenience (or not at all). Generally, they can access variables from the surrounding scope that gets "bound" to the function as an environment that allows it to pass state. That's a closure. What we're going to do this time is not going to bring full closure support, but it's the start, and we'll get to full closures down the road."</description>
      <category>how-to</category>
      <category>other languages</category>
      <category>ruby</category>
      <pubDate>Tue, 06 May 2008 13:25:59 GMT</pubDate>
      <guid isPermaLink="false">http://www.dzone.com/links/79080.html</guid>
      <dc:creator>vidarh</dc:creator>
      <dc:date>2008-05-06T13:25:59Z</dc:date>
      <content:encoded><![CDATA[<a href='http://www.dzone.com/links/rss/writing_a_compiler_in_ruby_bottom_up_step_6.html'><img src='http://www.dzone.com/links/images/thumbs/120x90/79080.jpg' style='width:120;height:90;margin:6;float:left;vertical-align:top;border:1px solid #ccc;' /></a> Sixth in my series on writing a compiler in Ruby: "How about some deferred evaluation and anonymous functions?

Lambdas, or anonymous functions, can be passed around like values and called at your convenience (or not at all). Generally, they can access variables from the surrounding scope that gets "bound" to the function as an environment that allows it to pass state. That's a closure. What we're going to do this time is not going to bring full closure support, but it's the start, and we'll get to full closures down the road."]]></content:encoded>
      <dz:linkId>79080</dz:linkId>
      <dz:submitDate>2008-05-03T18:26:20Z</dz:submitDate>
      <dz:promoteDate>2008-05-06T13:25:59Z</dz:promoteDate>
      <dz:voteUpCount>5</dz:voteUpCount>
      <dz:voteDownCount>0</dz:voteDownCount>
      <dz:clickCount>142</dz:clickCount>
      <dz:commentCount>0</dz:commentCount>
      <dz:thumbnail>http://www.dzone.com/links/images/thumbs/120x90/79080.jpg</dz:thumbnail>
      <dz:submitter>
        <dz:username>vidarh</dz:username>
        <dz:userimage>http://www.dzone.com/links/images/avatars/279649.gif</dz:userimage>
      </dz:submitter>
    </item>
    <item>
      <title>Software ICs: Reuse should not always mean inheritance or configuration</title>
      <link>http://www.dzone.com/links/rss/software_ics_reuse_should_not_always_mean_inherit.html</link>
      <description>Inheritance or configuration options has a cost in terms of increased complexity that can in some cases with advantage be avoided by maintaining multiple versions of the component and adding new features to new branches instead of continuing to work on a single code base, in the same way integrated circuits often exist in a wide range of similar, static, models with the same basic functionality. Better merging support in modern version control systems make this model increasingly viable for software.</description>
      <category>methodology</category>
      <category>opinion</category>
      <category>tools</category>
      <pubDate>Thu, 01 May 2008 21:51:05 GMT</pubDate>
      <guid isPermaLink="false">http://www.dzone.com/links/78833.html</guid>
      <dc:creator>vidarh</dc:creator>
      <dc:date>2008-05-01T21:51:05Z</dc:date>
      <content:encoded><![CDATA[<a href='http://www.dzone.com/links/rss/software_ics_reuse_should_not_always_mean_inherit.html'><img src='http://www.dzone.com/links/images/thumbs/120x90/78833.jpg' style='width:120;height:90;margin:6;float:left;vertical-align:top;border:1px solid #ccc;' /></a> Inheritance or configuration options has a cost in terms of increased complexity that can in some cases with advantage be avoided by maintaining multiple versions of the component and adding new features to new branches instead of continuing to work on a single code base, in the same way integrated circuits often exist in a wide range of similar, static, models with the same basic functionality. Better merging support in modern version control systems make this model increasingly viable for software.]]></content:encoded>
      <dz:linkId>78833</dz:linkId>
      <dz:submitDate>2008-05-01T21:51:05Z</dz:submitDate>
      <dz:voteUpCount>1</dz:voteUpCount>
      <dz:voteDownCount>0</dz:voteDownCount>
      <dz:clickCount>8</dz:clickCount>
      <dz:commentCount>0</dz:commentCount>
      <dz:thumbnail>http://www.dzone.com/links/images/thumbs/120x90/78833.jpg</dz:thumbnail>
      <dz:submitter>
        <dz:username>vidarh</dz:username>
        <dz:userimage>http://www.dzone.com/links/images/avatars/279649.gif</dz:userimage>
      </dz:submitter>
    </item>
    <item>
      <title>Customizing the Ruby syntax highlighter for x86 assembler</title>
      <link>http://www.dzone.com/links/rss/customizing_the_ruby_syntax_highlighter_for_x86_a.html</link>
      <description>I wrote about syntax hightlighting in Ruby  a while ago. The Ruby Syntax library supports Ruby, YAML and XML out of the box. But it's also pretty easy to extend to handle other languages. Since I've been writing my compiler in Ruby series and including a lot of x86 assembler, I figured I'd see how much (or little) work adding a syntax highlighter for assembler would take</description>
      <category>how-to</category>
      <category>other languages</category>
      <category>ruby</category>
      <pubDate>Wed, 30 Apr 2008 18:05:44 GMT</pubDate>
      <guid isPermaLink="false">http://www.dzone.com/links/78608.html</guid>
      <dc:creator>vidarh</dc:creator>
      <dc:date>2008-04-30T18:05:44Z</dc:date>
      <content:encoded><![CDATA[<a href='http://www.dzone.com/links/rss/customizing_the_ruby_syntax_highlighter_for_x86_a.html'><img src='http://www.dzone.com/links/images/thumbs/120x90/78608.jpg' style='width:120;height:90;margin:6;float:left;vertical-align:top;border:1px solid #ccc;' /></a> I wrote about syntax hightlighting in Ruby  a while ago. The Ruby Syntax library supports Ruby, YAML and XML out of the box. But it's also pretty easy to extend to handle other languages. Since I've been writing my compiler in Ruby series and including a lot of x86 assembler, I figured I'd see how much (or little) work adding a syntax highlighter for assembler would take]]></content:encoded>
      <dz:linkId>78608</dz:linkId>
      <dz:submitDate>2008-04-30T18:05:44Z</dz:submitDate>
      <dz:voteUpCount>2</dz:voteUpCount>
      <dz:voteDownCount>0</dz:voteDownCount>
      <dz:clickCount>12</dz:clickCount>
      <dz:commentCount>0</dz:commentCount>
      <dz:thumbnail>http://www.dzone.com/links/images/thumbs/120x90/78608.jpg</dz:thumbnail>
      <dz:submitter>
        <dz:username>vidarh</dz:username>
        <dz:userimage>http://www.dzone.com/links/images/avatars/279649.gif</dz:userimage>
      </dz:submitter>
    </item>
    <item>
      <title>Rebuilding the build server on every build</title>
      <link>http://www.dzone.com/links/rss/rebuilding_the_build_server_on_every_build.html</link>
      <description>I argue that with virtualization, there's a lot of compelling reasons and few downsides with not only rebuilding your applications from scratch regularly, but also rebuilding your _build server_ from scratch on every full build.</description>
      <category>methodology</category>
      <category>opinion</category>
      <category>tools</category>
      <category>unix-linux</category>
      <pubDate>Mon, 21 Apr 2008 08:35:55 GMT</pubDate>
      <guid isPermaLink="false">http://www.dzone.com/links/76520.html</guid>
      <dc:creator>vidarh</dc:creator>
      <dc:date>2008-04-21T08:35:55Z</dc:date>
      <content:encoded><![CDATA[<a href='http://www.dzone.com/links/rss/rebuilding_the_build_server_on_every_build.html'><img src='http://www.dzone.com/links/images/thumbs/120x90/76520.jpg' style='width:120;height:90;margin:6;float:left;vertical-align:top;border:1px solid #ccc;' /></a> I argue that with virtualization, there's a lot of compelling reasons and few downsides with not only rebuilding your applications from scratch regularly, but also rebuilding your _build server_ from scratch on every full build.]]></content:encoded>
      <dz:linkId>76520</dz:linkId>
      <dz:submitDate>2008-04-18T15:46:23Z</dz:submitDate>
      <dz:promoteDate>2008-04-21T08:35:55Z</dz:promoteDate>
      <dz:voteUpCount>6</dz:voteUpCount>
      <dz:voteDownCount>0</dz:voteDownCount>
      <dz:clickCount>356</dz:clickCount>
      <dz:commentCount>3</dz:commentCount>
      <dz:thumbnail>http://www.dzone.com/links/images/thumbs/120x90/76520.jpg</dz:thumbnail>
      <dz:submitter>
        <dz:username>vidarh</dz:username>
        <dz:userimage>http://www.dzone.com/links/images/avatars/279649.gif</dz:userimage>
      </dz:submitter>
    </item>
    <item>
      <title>Writing a compiler in Ruby bottom up - step 4</title>
      <link>http://www.dzone.com/links/rss/writing_a_compiler_in_ruby_bottom_up_step_4.html</link>
      <description>Fourth in a series on writing a compiler targeting x86. This part shows how to define functions, and adds a mechanism for adding a runtime library.</description>
      <category>how-to</category>
      <category>open source</category>
      <category>other languages</category>
      <category>ruby</category>
      <pubDate>Sun, 20 Apr 2008 01:40:54 GMT</pubDate>
      <guid isPermaLink="false">http://www.dzone.com/links/76518.html</guid>
      <dc:creator>vidarh</dc:creator>
      <dc:date>2008-04-20T01:40:54Z</dc:date>
      <content:encoded><![CDATA[<a href='http://www.dzone.com/links/rss/writing_a_compiler_in_ruby_bottom_up_step_4.html'><img src='http://www.dzone.com/links/images/thumbs/120x90/76518.jpg' style='width:120;height:90;margin:6;float:left;vertical-align:top;border:1px solid #ccc;' /></a> Fourth in a series on writing a compiler targeting x86. This part shows how to define functions, and adds a mechanism for adding a runtime library.]]></content:encoded>
      <dz:linkId>76518</dz:linkId>
      <dz:submitDate>2008-04-18T15:43:46Z</dz:submitDate>
      <dz:promoteDate>2008-04-20T01:40:54Z</dz:promoteDate>
      <dz:voteUpCount>8</dz:voteUpCount>
      <dz:voteDownCount>0</dz:voteDownCount>
      <dz:clickCount>217</dz:clickCount>
      <dz:commentCount>0</dz:commentCount>
      <dz:thumbnail>http://www.dzone.com/links/images/thumbs/120x90/76518.jpg</dz:thumbnail>
      <dz:submitter>
        <dz:username>vidarh</dz:username>
        <dz:userimage>http://www.dzone.com/links/images/avatars/279649.gif</dz:userimage>
      </dz:submitter>
    </item>
    <item>
      <title>Mini reviews of 19 Ruby template engines</title>
      <link>http://www.dzone.com/links/rss/mini_reviews_of_19_ruby_template_engines.html</link>
      <description>I've seen lots of template systems in Ruby, but haven't been really been happy with any of them. Over the last few months or so I've kept notes of the ones I looked at. This is the list I came up with, and some comments on each.</description>
      <category>frameworks</category>
      <category>reviews</category>
      <category>ruby</category>
      <category>web design</category>
      <pubDate>Sun, 13 Apr 2008 10:29:33 GMT</pubDate>
      <guid isPermaLink="false">http://www.dzone.com/links/75594.html</guid>
      <dc:creator>vidarh</dc:creator>
      <dc:date>2008-04-13T10:29:33Z</dc:date>
      <content:encoded><![CDATA[<a href='http://www.dzone.com/links/rss/mini_reviews_of_19_ruby_template_engines.html'><img src='http://www.dzone.com/links/images/thumbs/120x90/75594.jpg' style='width:120;height:90;margin:6;float:left;vertical-align:top;border:1px solid #ccc;' /></a> I've seen lots of template systems in Ruby, but haven't been really been happy with any of them. Over the last few months or so I've kept notes of the ones I looked at. This is the list I came up with, and some comments on each.]]></content:encoded>
      <dz:linkId>75594</dz:linkId>
      <dz:submitDate>2008-04-12T12:04:49Z</dz:submitDate>
      <dz:promoteDate>2008-04-13T10:29:33Z</dz:promoteDate>
      <dz:voteUpCount>11</dz:voteUpCount>
      <dz:voteDownCount>0</dz:voteDownCount>
      <dz:clickCount>337</dz:clickCount>
      <dz:commentCount>0</dz:commentCount>
      <dz:thumbnail>http://www.dzone.com/links/images/thumbs/120x90/75594.jpg</dz:thumbnail>
      <dz:submitter>
        <dz:username>vidarh</dz:username>
        <dz:userimage>http://www.dzone.com/links/images/avatars/279649.gif</dz:userimage>
      </dz:submitter>
    </item>
    <item>
      <title>Writing a compiler in Ruby bottom up - Step 3</title>
      <link>http://www.dzone.com/links/rss/writing_a_compiler_in_ruby_bottom_up_step_3.html</link>
      <description>Third in a series - this part covers chaining expressions and compiling sub-expressions, and also includes a list of the upcoming parts. This one's fairly short - the next ones will be longer, I promise...</description>
      <category>how-to</category>
      <category>other languages</category>
      <category>ruby</category>
      <pubDate>Mon, 07 Apr 2008 01:45:48 GMT</pubDate>
      <guid isPermaLink="false">http://www.dzone.com/links/74434.html</guid>
      <dc:creator>vidarh</dc:creator>
      <dc:date>2008-04-07T01:45:48Z</dc:date>
      <content:encoded><![CDATA[<a href='http://www.dzone.com/links/rss/writing_a_compiler_in_ruby_bottom_up_step_3.html'><img src='http://www.dzone.com/links/images/thumbs/120x90/74434.jpg' style='width:120;height:90;margin:6;float:left;vertical-align:top;border:1px solid #ccc;' /></a> Third in a series - this part covers chaining expressions and compiling sub-expressions, and also includes a list of the upcoming parts. This one's fairly short - the next ones will be longer, I promise...]]></content:encoded>
      <dz:linkId>74434</dz:linkId>
      <dz:submitDate>2008-04-05T12:14:32Z</dz:submitDate>
      <dz:promoteDate>2008-04-07T01:45:48Z</dz:promoteDate>
      <dz:voteUpCount>7</dz:voteUpCount>
      <dz:voteDownCount>0</dz:voteDownCount>
      <dz:clickCount>372</dz:clickCount>
      <dz:commentCount>0</dz:commentCount>
      <dz:thumbnail>http://www.dzone.com/links/images/thumbs/120x90/74434.jpg</dz:thumbnail>
      <dz:submitter>
        <dz:username>vidarh</dz:username>
        <dz:userimage>http://www.dzone.com/links/images/avatars/279649.gif</dz:userimage>
      </dz:submitter>
    </item>
    <item>
      <title>Making Graphviz diagrams pretty with XSL</title>
      <link>http://www.dzone.com/links/rss/making_graphviz_diagrams_pretty_with_xsl.html</link>
      <description>A couple of years back I posted on my blog about an XSL transformation I used to clean up Graphviz output to make my diagrams prettier. I never posted the XSL, though, but since I've dug it out again, here it is. It uses Graphviz' SVG output and transforms it to add dropshadows and gradients to the resulting diagrams, but can be easily used as an example of how to apply other changes to the Graphviz output</description>
      <category>how-to</category>
      <category>open source</category>
      <category>tools</category>
      <category>xml</category>
      <pubDate>Tue, 01 Apr 2008 00:39:21 GMT</pubDate>
      <guid isPermaLink="false">http://www.dzone.com/links/73339.html</guid>
      <dc:creator>vidarh</dc:creator>
      <dc:date>2008-04-01T00:39:21Z</dc:date>
      <content:encoded><![CDATA[<a href='http://www.dzone.com/links/rss/making_graphviz_diagrams_pretty_with_xsl.html'><img src='http://www.dzone.com/links/images/thumbs/120x90/73339.jpg' style='width:120;height:90;margin:6;float:left;vertical-align:top;border:1px solid #ccc;' /></a> A couple of years back I posted on my blog about an XSL transformation I used to clean up Graphviz output to make my diagrams prettier. I never posted the XSL, though, but since I've dug it out again, here it is. It uses Graphviz' SVG output and transforms it to add dropshadows and gradients to the resulting diagrams, but can be easily used as an example of how to apply other changes to the Graphviz output]]></content:encoded>
      <dz:linkId>73339</dz:linkId>
      <dz:submitDate>2008-03-30T13:38:30Z</dz:submitDate>
      <dz:promoteDate>2008-04-01T00:39:21Z</dz:promoteDate>
      <dz:voteUpCount>9</dz:voteUpCount>
      <dz:voteDownCount>0</dz:voteDownCount>
      <dz:clickCount>384</dz:clickCount>
      <dz:commentCount>0</dz:commentCount>
      <dz:thumbnail>http://www.dzone.com/links/images/thumbs/120x90/73339.jpg</dz:thumbnail>
      <dz:submitter>
        <dz:username>vidarh</dz:username>
        <dz:userimage>http://www.dzone.com/links/images/avatars/279649.gif</dz:userimage>
      </dz:submitter>
    </item>
    <item>
      <title>Track your latest referrers using Rack and Ruby</title>
      <link>http://www.dzone.com/links/rss/track_your_latest_referrers_using_rack_and_ruby.html</link>
      <description>As most bloggers I like to keep an eye on where my traffic is coming from, and especially when there are surges in traffic. I'm using both Google Analytics and Feedburner for stats, and it works great for trends, but not see what's happening right now.&#xD;
This morning I needed a distraction and figured I'd just throw together a quick and dirty Rack middleware class to keep track of the latest referrers.</description>
      <category>frameworks</category>
      <category>how-to</category>
      <category>open source</category>
      <category>ruby</category>
      <pubDate>Sat, 29 Mar 2008 12:26:56 GMT</pubDate>
      <guid isPermaLink="false">http://www.dzone.com/links/73244.html</guid>
      <dc:creator>vidarh</dc:creator>
      <dc:date>2008-03-29T12:26:56Z</dc:date>
      <content:encoded><![CDATA[<a href='http://www.dzone.com/links/rss/track_your_latest_referrers_using_rack_and_ruby.html'><img src='http://www.dzone.com/links/images/thumbs/120x90/73244.jpg' style='width:120;height:90;margin:6;float:left;vertical-align:top;border:1px solid #ccc;' /></a> As most bloggers I like to keep an eye on where my traffic is coming from, and especially when there are surges in traffic. I'm using both Google Analytics and Feedburner for stats, and it works great for trends, but not see what's happening right now.
This morning I needed a distraction and figured I'd just throw together a quick and dirty Rack middleware class to keep track of the latest referrers.]]></content:encoded>
      <dz:linkId>73244</dz:linkId>
      <dz:submitDate>2008-03-29T12:26:56Z</dz:submitDate>
      <dz:voteUpCount>3</dz:voteUpCount>
      <dz:voteDownCount>0</dz:voteDownCount>
      <dz:clickCount>22</dz:clickCount>
      <dz:commentCount>0</dz:commentCount>
      <dz:thumbnail>http://www.dzone.com/links/images/thumbs/120x90/73244.jpg</dz:thumbnail>
      <dz:submitter>
        <dz:username>vidarh</dz:username>
        <dz:userimage>http://www.dzone.com/links/images/avatars/279649.gif</dz:userimage>
      </dz:submitter>
    </item>
    <item>
      <title>Why coupling is always bad / Cohesion vs. coupling</title>
      <link>http://www.dzone.com/links/rss/why_coupling_is_always_bad_cohesion_vs_coupling.html</link>
      <description>In the discussion following my entry "Why Rails is total overkill and why I love Rack" several comments raised the issue of whether high coupling is always bad. My answer was that I believe it is, but at the same time it can be worth it _sometimes_. This post expands on that.</description>
      <category>frameworks</category>
      <category>opinion</category>
      <pubDate>Fri, 28 Mar 2008 16:10:20 GMT</pubDate>
      <guid isPermaLink="false">http://www.dzone.com/links/73155.html</guid>
      <dc:creator>vidarh</dc:creator>
      <dc:date>2008-03-28T16:10:20Z</dc:date>
      <content:encoded><![CDATA[<a href='http://www.dzone.com/links/rss/why_coupling_is_always_bad_cohesion_vs_coupling.html'><img src='http://www.dzone.com/links/images/thumbs/120x90/73155.jpg' style='width:120;height:90;margin:6;float:left;vertical-align:top;border:1px solid #ccc;' /></a> In the discussion following my entry "Why Rails is total overkill and why I love Rack" several comments raised the issue of whether high coupling is always bad. My answer was that I believe it is, but at the same time it can be worth it _sometimes_. This post expands on that.]]></content:encoded>
      <dz:linkId>73155</dz:linkId>
      <dz:submitDate>2008-03-28T16:10:20Z</dz:submitDate>
      <dz:voteUpCount>1</dz:voteUpCount>
      <dz:voteDownCount>0</dz:voteDownCount>
      <dz:clickCount>38</dz:clickCount>
      <dz:commentCount>0</dz:commentCount>
      <dz:thumbnail>http://www.dzone.com/links/images/thumbs/120x90/73155.jpg</dz:thumbnail>
      <dz:submitter>
        <dz:username>vidarh</dz:username>
        <dz:userimage>http://www.dzone.com/links/images/avatars/279649.gif</dz:userimage>
      </dz:submitter>
    </item>
    <item>
      <title>http://www.hokstad.com/why-coupling-is-always-bad-cohesion-vs-coupling.html</title>
      <link>http://www.dzone.com/links/rss/httpwwwhokstadcomwhycouplingisalwaysbadcohesionvs.html</link>
      <description>In the discussion following my entry "Why Rails is total overkill and why I love Rack" several comments raised the issue of whether high coupling is always bad. My answer was that I believe it is, but at the same time it can be worth it _sometimes_. This post expands on that.</description>
      <category>frameworks</category>
      <category>opinion</category>
      <pubDate>Fri, 28 Mar 2008 16:09:15 GMT</pubDate>
      <guid isPermaLink="false">http://www.dzone.com/links/73154.html</guid>
      <dc:creator>vidarh</dc:creator>
      <dc:date>2008-03-28T16:09:15Z</dc:date>
      <content:encoded><![CDATA[<a href='http://www.dzone.com/links/rss/httpwwwhokstadcomwhycouplingisalwaysbadcohesionvs.html'><img src='http://www.dzone.com/links/images/thumbs/120x90/73154.jpg' style='width:120;height:90;margin:6;float:left;vertical-align:top;border:1px solid #ccc;' /></a> In the discussion following my entry "Why Rails is total overkill and why I love Rack" several comments raised the issue of whether high coupling is always bad. My answer was that I believe it is, but at the same time it can be worth it _sometimes_. This post expands on that.]]></content:encoded>
      <dz:linkId>73154</dz:linkId>
      <dz:submitDate>2008-03-28T16:09:15Z</dz:submitDate>
      <dz:voteUpCount>0</dz:voteUpCount>
      <dz:voteDownCount>0</dz:voteDownCount>
      <dz:clickCount>0</dz:clickCount>
      <dz:commentCount>2</dz:commentCount>
      <dz:thumbnail>http://www.dzone.com/links/images/thumbs/120x90/73154.jpg</dz:thumbnail>
      <dz:submitter>
        <dz:username>vidarh</dz:username>
        <dz:userimage>http://www.dzone.com/links/images/avatars/279649.gif</dz:userimage>
      </dz:submitter>
    </item>
    <item>
      <title>Writing a compiler in Ruby bottom up - Step 2</title>
      <link>http://www.dzone.com/links/rss/writing_a_compiler_in_ruby_bottom_up_step_2.html</link>
      <description>Second part of my series on writing a compiler targeting i386 in Ruby. This part adds support for function calls, so a simple hello world can be compiled.</description>
      <category>how-to</category>
      <category>other languages</category>
      <category>ruby</category>
      <pubDate>Thu, 27 Mar 2008 17:07:29 GMT</pubDate>
      <guid isPermaLink="false">http://www.dzone.com/links/72974.html</guid>
      <dc:creator>vidarh</dc:creator>
      <dc:date>2008-03-27T17:07:29Z</dc:date>
      <content:encoded><![CDATA[<a href='http://www.dzone.com/links/rss/writing_a_compiler_in_ruby_bottom_up_step_2.html'><img src='http://www.dzone.com/links/images/thumbs/120x90/72974.jpg' style='width:120;height:90;margin:6;float:left;vertical-align:top;border:1px solid #ccc;' /></a> Second part of my series on writing a compiler targeting i386 in Ruby. This part adds support for function calls, so a simple hello world can be compiled.]]></content:encoded>
      <dz:linkId>72974</dz:linkId>
      <dz:submitDate>2008-03-27T17:07:29Z</dz:submitDate>
      <dz:voteUpCount>3</dz:voteUpCount>
      <dz:voteDownCount>0</dz:voteDownCount>
      <dz:clickCount>28</dz:clickCount>
      <dz:commentCount>0</dz:commentCount>
      <dz:thumbnail>http://www.dzone.com/links/images/thumbs/120x90/72974.jpg</dz:thumbnail>
      <dz:submitter>
        <dz:username>vidarh</dz:username>
        <dz:userimage>http://www.dzone.com/links/images/avatars/279649.gif</dz:userimage>
      </dz:submitter>
    </item>
    <item>
      <title>Writing a compiler in Ruby bottom up - Step 1</title>
      <link>http://www.dzone.com/links/rss/writing_a_compiler_in_ruby_bottom_up_step_1.html</link>
      <description>This is part 1 in what will be a long series (ca. 30 parts written so far) about writing a small compiler in Ruby "bottom up", in other words starting with the code generator, rather than the more conventional approach of starting with the parser. The focus is not so much on Ruby as it is on how to build a code generator and how to implement low level features of a language in the simplest possible way.</description>
      <category>how-to</category>
      <category>other languages</category>
      <category>ruby</category>
      <pubDate>Wed, 26 Mar 2008 20:58:36 GMT</pubDate>
      <guid isPermaLink="false">http://www.dzone.com/links/72627.html</guid>
      <dc:creator>vidarh</dc:creator>
      <dc:date>2008-03-26T20:58:36Z</dc:date>
      <content:encoded><![CDATA[<a href='http://www.dzone.com/links/rss/writing_a_compiler_in_ruby_bottom_up_step_1.html'><img src='http://www.dzone.com/links/images/thumbs/120x90/72627.jpg' style='width:120;height:90;margin:6;float:left;vertical-align:top;border:1px solid #ccc;' /></a> This is part 1 in what will be a long series (ca. 30 parts written so far) about writing a small compiler in Ruby "bottom up", in other words starting with the code generator, rather than the more conventional approach of starting with the parser. The focus is not so much on Ruby as it is on how to build a code generator and how to implement low level features of a language in the simplest possible way.]]></content:encoded>
      <dz:linkId>72627</dz:linkId>
      <dz:submitDate>2008-03-25T21:04:05Z</dz:submitDate>
      <dz:promoteDate>2008-03-26T20:58:36Z</dz:promoteDate>
      <dz:voteUpCount>11</dz:voteUpCount>
      <dz:voteDownCount>0</dz:voteDownCount>
      <dz:clickCount>570</dz:clickCount>
      <dz:commentCount>1</dz:commentCount>
      <dz:thumbnail>http://www.dzone.com/links/images/thumbs/120x90/72627.jpg</dz:thumbnail>
      <dz:submitter>
        <dz:username>vidarh</dz:username>
        <dz:userimage>http://www.dzone.com/links/images/avatars/279649.gif</dz:userimage>
      </dz:submitter>
    </item>
    <item>
      <title>URLs do not belong in the Views</title>
      <link>http://www.dzone.com/links/rss/urls_do_not_belong_in_the_views.html</link>
      <description>It's bothered me for some time to hardcode URLs in my views. It means that if I want to revise the linking structure, I may need to modify the views in a huge number of places. At the same time I don't like the thought of putting it in the model either. This post briefly look at alternatives.</description>
      <category>frameworks</category>
      <category>opinion</category>
      <category>ruby</category>
      <category>web 2.0</category>
      <pubDate>Tue, 25 Mar 2008 20:55:59 GMT</pubDate>
      <guid isPermaLink="false">http://www.dzone.com/links/72466.html</guid>
      <dc:creator>vidarh</dc:creator>
      <dc:date>2008-03-25T20:55:59Z</dc:date>
      <content:encoded><![CDATA[<a href='http://www.dzone.com/links/rss/urls_do_not_belong_in_the_views.html'><img src='http://www.dzone.com/links/images/thumbs/120x90/72466.jpg' style='width:120;height:90;margin:6;float:left;vertical-align:top;border:1px solid #ccc;' /></a> It's bothered me for some time to hardcode URLs in my views. It means that if I want to revise the linking structure, I may need to modify the views in a huge number of places. At the same time I don't like the thought of putting it in the model either. This post briefly look at alternatives.]]></content:encoded>
      <dz:linkId>72466</dz:linkId>
      <dz:submitDate>2008-03-25T08:17:30Z</dz:submitDate>
      <dz:promoteDate>2008-03-25T20:55:59Z</dz:promoteDate>
      <dz:voteUpCount>14</dz:voteUpCount>
      <dz:voteDownCount>0</dz:voteDownCount>
      <dz:clickCount>703</dz:clickCount>
      <dz:commentCount>0</dz:commentCount>
      <dz:thumbnail>http://www.dzone.com/links/images/thumbs/120x90/72466.jpg</dz:thumbnail>
      <dz:submitter>
        <dz:username>vidarh</dz:username>
        <dz:userimage>http://www.dzone.com/links/images/avatars/279649.gif</dz:userimage>
      </dz:submitter>
    </item>
    <item>
      <title>Why Rails is total overkill and why I love Rack</title>
      <link>http://www.dzone.com/links/rss/why_rails_is_total_overkill_and_why_i_love_rack.html</link>
      <description>Rails is total overkill. It tries to do "everything" in a massive framework where major components are tightly intervowen. Smaller frameworks like Merb and Camping have already shown you don't NEED this. I argue you don't need a framework at all - you need highly cohesive, loosely coupled components. That is why I love Rack - it does one thing and does it well, and leave me to write applications, not learn frameworks.</description>
      <category>frameworks</category>
      <category>opinion</category>
      <category>ruby</category>
      <category>web 2.0</category>
      <pubDate>Mon, 24 Mar 2008 09:48:12 GMT</pubDate>
      <guid isPermaLink="false">http://www.dzone.com/links/72183.html</guid>
      <dc:creator>vidarh</dc:creator>
      <dc:date>2008-03-24T09:48:12Z</dc:date>
      <content:encoded><![CDATA[<a href='http://www.dzone.com/links/rss/why_rails_is_total_overkill_and_why_i_love_rack.html'><img src='http://www.dzone.com/links/images/thumbs/120x90/72183.jpg' style='width:120;height:90;margin:6;float:left;vertical-align:top;border:1px solid #ccc;' /></a> Rails is total overkill. It tries to do "everything" in a massive framework where major components are tightly intervowen. Smaller frameworks like Merb and Camping have already shown you don't NEED this. I argue you don't need a framework at all - you need highly cohesive, loosely coupled components. That is why I love Rack - it does one thing and does it well, and leave me to write applications, not learn frameworks.]]></content:encoded>
      <dz:linkId>72183</dz:linkId>
      <dz:submitDate>2008-03-23T11:40:29Z</dz:submitDate>
      <dz:promoteDate>2008-03-24T09:48:12Z</dz:promoteDate>
      <dz:voteUpCount>8</dz:voteUpCount>
      <dz:voteDownCount>0</dz:voteDownCount>
      <dz:clickCount>1038</dz:clickCount>
      <dz:commentCount>9</dz:commentCount>
      <dz:thumbnail>http://www.dzone.com/links/images/thumbs/120x90/72183.jpg</dz:thumbnail>
      <dz:submitter>
        <dz:username>vidarh</dz:username>
        <dz:userimage>http://www.dzone.com/links/images/avatars/279649.gif</dz:userimage>
      </dz:submitter>
    </item>
    <item>
      <title>Rack middleware: Adding cache headers</title>
      <link>http://www.dzone.com/links/rss/rack_middleware_adding_cache_headers.html</link>
      <description>Rack is an interface between web servers and Ruby web frameworks. This entry shows how to add cache headers to arbitrary Rack apps by plugging in a tiny Rack middleware class - it can rewrite headers from plain rack apps, Merb, Ramaze, Sinatra, Rails or any other framework with a Rack adapter.</description>
      <category>frameworks</category>
      <category>how-to</category>
      <category>ruby</category>
      <category>tools</category>
      <pubDate>Sat, 22 Mar 2008 12:41:47 GMT</pubDate>
      <guid isPermaLink="false">http://www.dzone.com/links/72103.html</guid>
      <dc:creator>vidarh</dc:creator>
      <dc:date>2008-03-22T12:41:47Z</dc:date>
      <content:encoded><![CDATA[<a href='http://www.dzone.com/links/rss/rack_middleware_adding_cache_headers.html'><img src='http://www.dzone.com/links/images/thumbs/120x90/72103.jpg' style='width:120;height:90;margin:6;float:left;vertical-align:top;border:1px solid #ccc;' /></a> Rack is an interface between web servers and Ruby web frameworks. This entry shows how to add cache headers to arbitrary Rack apps by plugging in a tiny Rack middleware class - it can rewrite headers from plain rack apps, Merb, Ramaze, Sinatra, Rails or any other framework with a Rack adapter.]]></content:encoded>
      <dz:linkId>72103</dz:linkId>
      <dz:submitDate>2008-03-22T12:41:47Z</dz:submitDate>
      <dz:voteUpCount>1</dz:voteUpCount>
      <dz:voteDownCount>0</dz:voteDownCount>
      <dz:clickCount>21</dz:clickCount>
      <dz:commentCount>0</dz:commentCount>
      <dz:thumbnail>http://www.dzone.com/links/images/thumbs/120x90/72103.jpg</dz:thumbnail>
      <dz:submitter>
        <dz:username>vidarh</dz:username>
        <dz:userimage>http://www.dzone.com/links/images/avatars/279649.gif</dz:userimage>
      </dz:submitter>
    </item>
    <item>
      <title>Web2.0 style logo reflection with Ruby and Cairo</title>
      <link>http://www.dzone.com/links/rss/web20_style_logo_reflection_with_ruby_and_cairo.html</link>
      <description>I keep trying to learn more about Cairo, and cheesy logo effects seems to be as good a way as any. This evening I was playing around with clip paths, and decided to use it to create some reflections. I wrote up this short how-to to explain what I did.</description>
      <category>how-to</category>
      <category>ruby</category>
      <category>web 2.0</category>
      <category>web design</category>
      <pubDate>Sat, 22 Mar 2008 02:13:10 GMT</pubDate>
      <guid isPermaLink="false">http://www.dzone.com/links/72057.html</guid>
      <dc:creator>vidarh</dc:creator>
      <dc:date>2008-03-22T02:13:10Z</dc:date>
      <content:encoded><![CDATA[<a href='http://www.dzone.com/links/rss/web20_style_logo_reflection_with_ruby_and_cairo.html'><img src='http://www.dzone.com/links/images/thumbs/120x90/72057.jpg' style='width:120;height:90;margin:6;float:left;vertical-align:top;border:1px solid #ccc;' /></a> I keep trying to learn more about Cairo, and cheesy logo effects seems to be as good a way as any. This evening I was playing around with clip paths, and decided to use it to create some reflections. I wrote up this short how-to to explain what I did.]]></content:encoded>
      <dz:linkId>72057</dz:linkId>
      <dz:submitDate>2008-03-22T02:13:10Z</dz:submitDate>
      <dz:voteUpCount>2</dz:voteUpCount>
      <dz:voteDownCount>0</dz:voteDownCount>
      <dz:clickCount>22</dz:clickCount>
      <dz:commentCount>0</dz:commentCount>
      <dz:thumbnail>http://www.dzone.com/links/images/thumbs/120x90/72057.jpg</dz:thumbnail>
      <dz:submitter>
        <dz:username>vidarh</dz:username>
        <dz:userimage>http://www.dzone.com/links/images/avatars/279649.gif</dz:userimage>
      </dz:submitter>
    </item>
    <item>
      <title>Using Sequel and Ruby to import the Geonames database</title>
      <link>http://www.dzone.com/links/rss/using_sequel_and_ruby_to_import_the_geonames_data.html</link>
      <description>A short howto on how to import the Geonames dataset into a database using Ruby and the Sequel ORM. The example uses Sqlite but can easily be adapter to MySQL or Postgres etc.. Even if you're not interested in Geonames it serves as a simple example of using Sequel model classes.</description>
      <category>database</category>
      <category>how-to</category>
      <category>ruby</category>
      <pubDate>Fri, 21 Mar 2008 15:18:53 GMT</pubDate>
      <guid isPermaLink="false">http://www.dzone.com/links/72019.html</guid>
      <dc:creator>vidarh</dc:creator>
      <dc:date>2008-03-21T15:18:53Z</dc:date>
      <content:encoded><![CDATA[<a href='http://www.dzone.com/links/rss/using_sequel_and_ruby_to_import_the_geonames_data.html'><img src='http://www.dzone.com/links/images/thumbs/120x90/72019.jpg' style='width:120;height:90;margin:6;float:left;vertical-align:top;border:1px solid #ccc;' /></a> A short howto on how to import the Geonames dataset into a database using Ruby and the Sequel ORM. The example uses Sqlite but can easily be adapter to MySQL or Postgres etc.. Even if you're not interested in Geonames it serves as a simple example of using Sequel model classes.]]></content:encoded>
      <dz:linkId>72019</dz:linkId>
      <dz:submitDate>2008-03-21T15:18:53Z</dz:submitDate>
      <dz:voteUpCount>3</dz:voteUpCount>
      <dz:voteDownCount>0</dz:voteDownCount>
      <dz:clickCount>53</dz:clickCount>
      <dz:commentCount>0</dz:commentCount>
      <dz:thumbnail>http://www.dzone.com/links/images/thumbs/120x90/72019.jpg</dz:thumbnail>
      <dz:submitter>
        <dz:username>vidarh</dz:username>
        <dz:userimage>http://www.dzone.com/links/images/avatars/279649.gif</dz:userimage>
      </dz:submitter>
    </item>
    <item>
      <title>Draw a logo with gradients with Ruby and Cairo</title>
      <link>http://www.dzone.com/links/rss/draw_a_logo_with_gradients_with_ruby_and_cairo.html</link>
      <description>A short tutorial showing how to draw a logo with a gradient and simple drop shadow using Ruby and Cairo.</description>
      <category>how-to</category>
      <category>ruby</category>
      <category>web 2.0</category>
      <category>web design</category>
      <pubDate>Thu, 20 Mar 2008 22:59:54 GMT</pubDate>
      <guid isPermaLink="false">http://www.dzone.com/links/71924.html</guid>
      <dc:creator>vidarh</dc:creator>
      <dc:date>2008-03-20T22:59:54Z</dc:date>
      <content:encoded><![CDATA[<a href='http://www.dzone.com/links/rss/draw_a_logo_with_gradients_with_ruby_and_cairo.html'><img src='http://www.dzone.com/links/images/thumbs/120x90/71924.jpg' style='width:120;height:90;margin:6;float:left;vertical-align:top;border:1px solid #ccc;' /></a> A short tutorial showing how to draw a logo with a gradient and simple drop shadow using Ruby and Cairo.]]></content:encoded>
      <dz:linkId>71924</dz:linkId>
      <dz:submitDate>2008-03-20T22:59:54Z</dz:submitDate>
      <dz:voteUpCount>4</dz:voteUpCount>
      <dz:voteDownCount>0</dz:voteDownCount>
      <dz:clickCount>26</dz:clickCount>
      <dz:commentCount>0</dz:commentCount>
      <dz:thumbnail>http://www.dzone.com/links/images/thumbs/120x90/71924.jpg</dz:thumbnail>
      <dz:submitter>
        <dz:username>vidarh</dz:username>
        <dz:userimage>http://www.dzone.com/links/images/avatars/279649.gif</dz:userimage>
      </dz:submitter>
    </item>
  </channel>
</rss>

