People love Ruby… “is that appropriate?” Dave Thomas asks, “is a software tool something that should be the object of our love?”

“programmers, like poets, constantly start with a blank piece of paper… so we have to love our tools, since otherwise we grow frustrated and that ends up showing in our work.”

I enjoyed Dave Thomas’ RubyConf 2008 keynote in which he challenged the Ruby enthusiasts in the audience to f**k Ruby (get  your mind out of the gutter, he meant *fork*) to show love for the language.  Perhaps this talk was the genesis of “fork is the new friend” or perhaps that idea is new for me but well known for community.

Dave’s talk sheds light on delightful corners of the Ruby Language and is worth checking out. I’m increasingly enamored of open source tools that I use in my daily work and find that spending a little time now and then to contribute a patch or edit a wiki will streamline my later work and brings a joy akin to gardening.

Open Source Digital Voting is a digital public works project, pulling together a community of developers and designers to make it so we have software and hardware that we can trust to support all aspects of the voting process.

They have released this compelling video about the project:

I believe that open source is the most effective way to create software with appropriate security and privacy protections. It is a particularly great approach to creating software designed to protect democracy.

These are a bunch of dedicated folks doing great and important work, please spread the word.

Here’s a little form for sending an XML post in OpenLaszlo. This is a useful little snippet of code, since as if you get one little content header or something wrong, Rails will be unforgiving with its powerful, yet strict implementation of REST.

What the app looks like (enter text in the top, click the button, response is printed in the lower box):

blockquote.code {
font-style: normal;
font-family: Monaco,monospace;
font-size: 10px;
border: solid 1px #aaa;
padding: 6px;
background-color: #eee;
color: inherit;
overflow:auto;
margin: 10px 0px;
}

The code:

<canvas title="Test Post" proxied="false">
  <dataset src="http:/projects.xml" name="ds"
    ondata="response.setAttribute('text'this.childNodes[0].serialize())"/>
  <simplelayout spacing="4"/>
  <edittext id="postdata" multiline="true" width="400" height="200"
     text='&lt;project&gt; &lt;title&gt;XXX&lt;/title&gt; &lt;/project&gt;'/>
  <button text="post">
    <handler name="onclick">
    ds.setQueryParam("lzpostbody", postdata.text);
    ds.setAttribute("querytype", "POST");
    ds.setHeader("Content-Type", "application/xml")
    ds.doRequest();
  </handler>
  </button>
  <edittext id="response" multiline="true" width="400" height="280"/>
</canvas>