<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en-us" xmlns="http://www.w3.org/2005/Atom"><title>Simon Willison's Weblog: sam-ruby</title><link href="http://simonwillison.net/" rel="alternate"/><link href="http://simonwillison.net/tags/sam-ruby.atom" rel="self"/><id>http://simonwillison.net/</id><updated>2009-07-04T12:51:15+00:00</updated><author><name>Simon Willison</name></author><entry><title>Quoting Alan Storm</title><link href="https://simonwillison.net/2009/Jul/4/alan/#atom-tag" rel="alternate"/><published>2009-07-04T12:51:15+00:00</published><updated>2009-07-04T12:51:15+00:00</updated><id>https://simonwillison.net/2009/Jul/4/alan/#atom-tag</id><summary type="html">
    &lt;blockquote cite="http://simonwillison.net/2009/Jul/4/xhtml/#c47024"&gt;&lt;p&gt;Yes, it'd be nice if everyone kept up to date on the progress of the various W3C working groups. They don't. There are a lot of people who asked what professional markup looked like and were told (right or wrong) that XHTML was the future. So they went ahead and learned XHTML, built their websites and chose watching a DVD or spending time with their kids over watching Mark Pilgrim and Sam Ruby do battle over Postel's Law. Now all of a sudden they're told XHTML is dead. Some wailing and gnashing of teeth is to be expected. What's needed is less "boy aren't I smarter than them" snideness, and more Hey, here's what's up.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p class="cite"&gt;&amp;mdash; &lt;a href="http://simonwillison.net/2009/Jul/4/xhtml/#c47024"&gt;Alan Storm&lt;/a&gt;&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/alan-storm"&gt;alan-storm&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/html5"&gt;html5&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/mark-pilgrim"&gt;mark-pilgrim&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/postelslaw"&gt;postelslaw&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/sam-ruby"&gt;sam-ruby&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/w3c"&gt;w3c&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/web-standards"&gt;web-standards&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/xhtml"&gt;xhtml&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/xhtml2"&gt;xhtml2&lt;/a&gt;&lt;/p&gt;



</summary><category term="alan-storm"/><category term="html5"/><category term="mark-pilgrim"/><category term="postelslaw"/><category term="sam-ruby"/><category term="w3c"/><category term="web-standards"/><category term="xhtml"/><category term="xhtml2"/></entry><entry><title>Sunsetting Quirks Mode</title><link href="https://simonwillison.net/2008/Jan/23/sam/#atom-tag" rel="alternate"/><published>2008-01-23T14:56:44+00:00</published><updated>2008-01-23T14:56:44+00:00</updated><id>https://simonwillison.net/2008/Jan/23/sam/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://intertwingly.net/blog/2008/01/23/Sunsetting-Quirks-Mode"&gt;Sunsetting Quirks Mode&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Apparently proper standards support in IE (or at least the IE8 renderer) will be triggered by the HTML5 doctype, providing an alternative to those who don’t wish to pollute their markup with an IE-specific meta tag.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/browsers"&gt;browsers&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/doctypes"&gt;doctypes&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/html5"&gt;html5&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ie8"&gt;ie8&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/internet-explorer"&gt;internet-explorer&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/sam-ruby"&gt;sam-ruby&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/xuacompatible"&gt;xuacompatible&lt;/a&gt;&lt;/p&gt;



</summary><category term="browsers"/><category term="doctypes"/><category term="html5"/><category term="ie8"/><category term="internet-explorer"/><category term="sam-ruby"/><category term="xuacompatible"/></entry><entry><title>Sam Ruby: Ruby 1.9 Strings - Updated</title><link href="https://simonwillison.net/2007/Dec/29/sam/#atom-tag" rel="alternate"/><published>2007-12-29T19:34:01+00:00</published><updated>2007-12-29T19:34:01+00:00</updated><id>https://simonwillison.net/2007/Dec/29/sam/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://intertwingly.net/blog/2007/12/29/Ruby-1-9-Strings-Updated"&gt;Sam Ruby: Ruby 1.9 Strings - Updated&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
A follow up to yesterday’s post: Sam’s principle complaints about Ruby 1.9’s character encoding support were down to a bug which has now been fixed.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/ruby19"&gt;ruby19&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/sam-ruby"&gt;sam-ruby&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/unicode"&gt;unicode&lt;/a&gt;&lt;/p&gt;



</summary><category term="ruby19"/><category term="sam-ruby"/><category term="unicode"/></entry><entry><title>Quoting Sam Ruby</title><link href="https://simonwillison.net/2007/Dec/28/sam/#atom-tag" rel="alternate"/><published>2007-12-28T19:05:01+00:00</published><updated>2007-12-28T19:05:01+00:00</updated><id>https://simonwillison.net/2007/Dec/28/sam/#atom-tag</id><summary type="html">
    &lt;blockquote cite="http://intertwingly.net/blog/2007/12/28/3-1-2"&gt;&lt;p&gt;I definitely like Python 3K's Unicode support better [...] In fact, I think I prefer Ruby 1.8's non-support for Unicode over Ruby 1.9's "support". The problem is one that is all to familiar to Python programmers. You can have a fully unit tested library and have somebody pass you a bad string, and you will fall over.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p class="cite"&gt;&amp;mdash; &lt;a href="http://intertwingly.net/blog/2007/12/28/3-1-2"&gt;Sam Ruby&lt;/a&gt;&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/rubi18"&gt;rubi18&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ruby"&gt;ruby&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ruby19"&gt;ruby19&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/sam-ruby"&gt;sam-ruby&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/testing"&gt;testing&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/unicode"&gt;unicode&lt;/a&gt;&lt;/p&gt;



</summary><category term="python"/><category term="rubi18"/><category term="ruby"/><category term="ruby19"/><category term="sam-ruby"/><category term="testing"/><category term="unicode"/></entry><entry><title>Email addresses your OpenID via DNS</title><link href="https://simonwillison.net/2007/Sep/30/sam/#atom-tag" rel="alternate"/><published>2007-09-30T21:36:27+00:00</published><updated>2007-09-30T21:36:27+00:00</updated><id>https://simonwillison.net/2007/Sep/30/sam/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://intertwingly.net/blog/2007/09/28/Email-addresses-your-OpenID-via-DNS"&gt;Email addresses your OpenID via DNS&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Sam Ruby has warmed to the idea of making e-mail addresses usable as OpenIDs via a DNS SRV record.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/dns"&gt;dns&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/email"&gt;email&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/openid"&gt;openid&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/sam-ruby"&gt;sam-ruby&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/srv"&gt;srv&lt;/a&gt;&lt;/p&gt;



</summary><category term="dns"/><category term="email"/><category term="openid"/><category term="sam-ruby"/><category term="srv"/></entry><entry><title>calendar.timegm()</title><link href="https://simonwillison.net/2007/Sep/3/calendar/#atom-tag" rel="alternate"/><published>2007-09-03T01:54:35+00:00</published><updated>2007-09-03T01:54:35+00:00</updated><id>https://simonwillison.net/2007/Sep/3/calendar/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://docs.python.org/lib/module-calendar.html#l2h-719"&gt;calendar.timegm()&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
An “unrelated but handy function” that converts a time.gmtime() in to a corresponding Unix timestamp. I’ve been hand-rolling this one for years; never thought to look in calendar.

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="http://intertwingly.net/blog/2007/09/02/Dealing-With-Dates"&gt;Sam Ruby&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/calendar"&gt;calendar&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/datetime"&gt;datetime&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/sam-ruby"&gt;sam-ruby&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/time"&gt;time&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/timezones"&gt;timezones&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/unixtimestamp"&gt;unixtimestamp&lt;/a&gt;&lt;/p&gt;



</summary><category term="calendar"/><category term="datetime"/><category term="python"/><category term="sam-ruby"/><category term="time"/><category term="timezones"/><category term="unixtimestamp"/></entry><entry><title>Sam Ruby: 2to3</title><link href="https://simonwillison.net/2007/Sep/3/sam/#atom-tag" rel="alternate"/><published>2007-09-03T01:38:34+00:00</published><updated>2007-09-03T01:38:34+00:00</updated><id>https://simonwillison.net/2007/Sep/3/sam/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://intertwingly.net/blog/2007/09/01/2to3"&gt;Sam Ruby: 2to3&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Sam’s report on an attempt to port the Universal Feed Parser to Python 3.0. The 2to3 tool does most of the work, but it seems the unicode changes can be pretty tricky.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/2to3"&gt;2to3&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/feedparser"&gt;feedparser&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python3"&gt;python3&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/sam-ruby"&gt;sam-ruby&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/unicode"&gt;unicode&lt;/a&gt;&lt;/p&gt;



</summary><category term="2to3"/><category term="feedparser"/><category term="python"/><category term="python3"/><category term="sam-ruby"/><category term="unicode"/></entry><entry><title>Inline SVG in MSIE</title><link href="https://simonwillison.net/2007/May/4/sam/#atom-tag" rel="alternate"/><published>2007-05-04T19:29:14+00:00</published><updated>2007-05-04T19:29:14+00:00</updated><id>https://simonwillison.net/2007/May/4/sam/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://intertwingly.net/blog/2007/05/04/Inline-SVG-in-MSIE"&gt;Inline SVG in MSIE&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Sam Ruby has a neat proof of concept that converts inline SVG (currently only the path element) to the Silverlight equivalent.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/sam-ruby"&gt;sam-ruby&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/silverlight"&gt;silverlight&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/svg"&gt;svg&lt;/a&gt;&lt;/p&gt;



</summary><category term="sam-ruby"/><category term="silverlight"/><category term="svg"/></entry><entry><title>OpenID for non-SuperUsers</title><link href="https://simonwillison.net/2007/Jan/7/super/#atom-tag" rel="alternate"/><published>2007-01-07T22:21:29+00:00</published><updated>2007-01-07T22:21:29+00:00</updated><id>https://simonwillison.net/2007/Jan/7/super/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.intertwingly.net/blog/2007/01/03/OpenID-for-non-SuperUsers"&gt;OpenID for non-SuperUsers&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Sam Ruby explains the key concepts of OpenID that many first-time users tend to miss.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/openid"&gt;openid&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/sam-ruby"&gt;sam-ruby&lt;/a&gt;&lt;/p&gt;



</summary><category term="openid"/><category term="sam-ruby"/></entry><entry><title>Unobtrusive OpenID</title><link href="https://simonwillison.net/2006/Dec/28/unobtrusive/#atom-tag" rel="alternate"/><published>2006-12-28T21:00:08+00:00</published><updated>2006-12-28T21:00:08+00:00</updated><id>https://simonwillison.net/2006/Dec/28/unobtrusive/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.intertwingly.net/blog/2006/12/28/Unobtrustive-OpenID"&gt;Unobtrusive OpenID&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Sam’s implementation passes association data in the URL rather than using sessions. I need to do that here.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/openid"&gt;openid&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/sam-ruby"&gt;sam-ruby&lt;/a&gt;&lt;/p&gt;



</summary><category term="openid"/><category term="sam-ruby"/></entry><entry><title>Sam Ruby: REXML on Expat</title><link href="https://simonwillison.net/2006/Jul/30/sam/#atom-tag" rel="alternate"/><published>2006-07-30T21:59:00+00:00</published><updated>2006-07-30T21:59:00+00:00</updated><id>https://simonwillison.net/2006/Jul/30/sam/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.intertwingly.net/blog/2006/07/30/REXML-on-Expat"&gt;Sam Ruby: REXML on Expat&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Sam does something frighteningly clever with continuations.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/sam-ruby"&gt;sam-ruby&lt;/a&gt;&lt;/p&gt;



</summary><category term="sam-ruby"/></entry><entry><title>Sam Ruby: Sincerest Form Of Flattery</title><link href="https://simonwillison.net/2005/May/9/sam/#atom-tag" rel="alternate"/><published>2005-05-09T00:21:07+00:00</published><updated>2005-05-09T00:21:07+00:00</updated><id>https://simonwillison.net/2005/May/9/sam/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.intertwingly.net/blog/2005/05/08/Sincerest-Form-Of-Flattery"&gt;Sam Ruby: Sincerest Form Of Flattery&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
How Sam’s funky referral tracking works. I talked to Ping about a similar system at SxSW.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/sam-ruby"&gt;sam-ruby&lt;/a&gt;&lt;/p&gt;



</summary><category term="sam-ruby"/></entry><entry><title>Wiki Spam Update</title><link href="https://simonwillison.net/2005/Feb/27/wiki/#atom-tag" rel="alternate"/><published>2005-02-27T17:18:14+00:00</published><updated>2005-02-27T17:18:14+00:00</updated><id>https://simonwillison.net/2005/Feb/27/wiki/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.intertwingly.net/blog/2005/02/27/Wiki-Spam-Update"&gt;Wiki Spam Update&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Sam Ruby suggests blocking changes that add 10 or more new links.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/sam-ruby"&gt;sam-ruby&lt;/a&gt;&lt;/p&gt;



</summary><category term="sam-ruby"/></entry><entry><title>Sam Ruby: Copy and Paste</title><link href="https://simonwillison.net/2004/Sep/23/sam/#atom-tag" rel="alternate"/><published>2004-09-23T22:22:53+00:00</published><updated>2004-09-23T22:22:53+00:00</updated><id>https://simonwillison.net/2004/Sep/23/sam/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.intertwingly.net/blog/2004/09/23/Copy-and-Paste"&gt;Sam Ruby: Copy and Paste&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
This character encoding glitch has bitten me more times than I care to say.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/sam-ruby"&gt;sam-ruby&lt;/a&gt;&lt;/p&gt;



</summary><category term="sam-ruby"/></entry><entry><title>Sam Ruby: Electronic Forgery</title><link href="https://simonwillison.net/2004/Aug/23/sam/#atom-tag" rel="alternate"/><published>2004-08-23T14:54:38+00:00</published><updated>2004-08-23T14:54:38+00:00</updated><id>https://simonwillison.net/2004/Aug/23/sam/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.intertwingly.net/blog/2004/08/23/Electronic-Forgery"&gt;Sam Ruby: Electronic Forgery&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
A nice, simple explanation of the collision in MD5.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/sam-ruby"&gt;sam-ruby&lt;/a&gt;&lt;/p&gt;



</summary><category term="sam-ruby"/></entry><entry><title>Sam Ruby: DÃ©tente</title><link href="https://simonwillison.net/2004/May/29/sam/#atom-tag" rel="alternate"/><published>2004-05-29T19:53:02+00:00</published><updated>2004-05-29T19:53:02+00:00</updated><id>https://simonwillison.net/2004/May/29/sam/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.intertwingly.net/blog/2004/05/28/detente"&gt;Sam Ruby: DÃ©tente&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Absolute required reading for anyone with an interest in syndication.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/sam-ruby"&gt;sam-ruby&lt;/a&gt;&lt;/p&gt;



</summary><category term="sam-ruby"/></entry><entry><title>Sam Ruby: Learning to Rest</title><link href="https://simonwillison.net/2003/Dec/11/sam/#atom-tag" rel="alternate"/><published>2003-12-11T00:52:22+00:00</published><updated>2003-12-11T00:52:22+00:00</updated><id>https://simonwillison.net/2003/Dec/11/sam/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.intertwingly.net/blog/1667.html"&gt;Sam Ruby: Learning to Rest&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Every time Sam talks about Rest my eyes begin to cross over


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/sam-ruby"&gt;sam-ruby&lt;/a&gt;&lt;/p&gt;



</summary><category term="sam-ruby"/></entry><entry><title>The Verbosity of Echo</title><link href="https://simonwillison.net/2003/Jul/2/theVerbosityOfEcho/#atom-tag" rel="alternate"/><published>2003-07-02T16:24:10+00:00</published><updated>2003-07-02T16:24:10+00:00</updated><id>https://simonwillison.net/2003/Jul/2/theVerbosityOfEcho/#atom-tag</id><summary type="html">
    &lt;p&gt;Sam Ruby has &lt;a href="http://www.intertwingly.net/blog/1506.html" title="necho 0.1"&gt;called&lt;/a&gt; for people to start experimenting with the current (very early) Echo example feeds, and the response has been pretty impressive; check out these feeds from &lt;a href="http://www.joelonsoftware.com/echo.xml"&gt;Joel Spolsky&lt;/a&gt;, &lt;a href="http://philringnalda.com/feed.xml"&gt;Phil Ringnalda&lt;/a&gt; and &lt;a href="http://diveintomark.org/xml/necho-prototype-20030701.xml"&gt;Mark Pilgrim&lt;/a&gt;. Now that Echo has progressed to a stage where there are concrete feeds to examine, I have some serious concerns over the verbosity of the format. As they stand, Echo feeds contain a lot of duplicated information. Considering that the default behaviour of aggregators is to poll a feed for updates once an hour, any unnecessary information in the feed itself is going to have a very real monetary cost in terms of burnt bandwidth.&lt;/p&gt;

&lt;p&gt;I've posted some further thoughts on this subject in &lt;a href="http://www.intertwingly.net/blog/1506.html#c1057143717" title="necho 0.1: comments"&gt;Sam Ruby's comments&lt;/a&gt;, but I think the Echo development community need to spare some thought for the size of the feed. I've seen the justification before that requiring elements rather than making them optional makes it easier to write Echo implementations and I agree that this is a worthwhile consideration, but I think the trade-off in terms of additional bandwidth costs needs to be given a higher priority.&lt;/p&gt;

&lt;p&gt;To that end I've &lt;a href="http://www.intertwingly.net/wiki/pie/EchoFeedWithAuthorRefs" title="EchoFeedWithAuthorRefs"&gt;proposed&lt;/a&gt; a small alteration to Echo to remove redundant author information from entries. If you are following the development of Echo I encourage you to take a look.&lt;/p&gt;

&lt;p&gt;On a related note, &lt;a href="http://www.dehora.net/journal/archives/000313.html" title="The Echo wiki"&gt;this Java blogger&lt;/a&gt; has some interesting thoughts on the WikiNature (or lack there-of) of the Echo Wiki.&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/sam-ruby"&gt;sam-ruby&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="sam-ruby"/></entry><entry><title>Lively discussion on SOAP</title><link href="https://simonwillison.net/2003/Apr/4/livelyDiscussionOnSoap/#atom-tag" rel="alternate"/><published>2003-04-04T14:54:21+00:00</published><updated>2003-04-04T14:54:21+00:00</updated><id>https://simonwillison.net/2003/Apr/4/livelyDiscussionOnSoap/#atom-tag</id><summary type="html">
    &lt;p&gt;If you get the basic idea of web services but are still looking to get your head around &lt;acronym title="Simple Object Access Protocol"&gt;SOAP&lt;/acronym&gt; (I know I am) the &lt;a href="http://www.intertwingly.net/blog/1312.html" title="Bruce Eckel said SOAP sucks?"&gt;lively discussion&lt;/a&gt; currently taking place in Sam Ruby's comment section looks like a great place to start.&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/sam-ruby"&gt;sam-ruby&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/soap"&gt;soap&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="sam-ruby"/><category term="soap"/></entry><entry><title>Spell check in web applications</title><link href="https://simonwillison.net/2003/Mar/8/spellCheckInWebApplications/#atom-tag" rel="alternate"/><published>2003-03-08T17:23:17+00:00</published><updated>2003-03-08T17:23:17+00:00</updated><id>https://simonwillison.net/2003/Mar/8/spellCheckInWebApplications/#atom-tag</id><summary type="html">
    &lt;p&gt;Sam Ruby has &lt;a href="http://www.intertwingly.net/blog/1247.html" title="Preview now with spellcheck"&gt;enabled spell checking&lt;/a&gt; for the preview comment tool on his blog. I wonder how it works... I've lost track of the scripting language Sam uses for Intertwingly (&lt;acronym title="PHP: Hypertext Preprocessor"&gt;PHP&lt;/acronym&gt;? Python? Perl?) but I know &lt;acronym title="PHP: Hypertext Preprocessor"&gt;PHP&lt;/acronym&gt; can be compiled with support for the &lt;a href="http://www.php.net/manual/en/ref.pspell.php"&gt;Pspell&lt;/a&gt; module.&lt;/p&gt;

&lt;p&gt;Sam's user interface is pretty neat - misspelled words are marked up with a span, underlined in dashed red and have suggested spellings listed in the span's title attribute. Theoretically, it should be possible to build a javascript right-click menu offering alternatives instead (preferably dynamically generated from the list of words in the title attribute using the &lt;acronym title="Document Object Model"&gt;DOM&lt;/acronym&gt;). Actually modifying the preview textarea text based on the menu selection would be quite a lot harder - it could be done with a simple search-and-replace operation, but doing so might change other words with the same "incorrect" spelling without the user realising.&lt;/p&gt;

&lt;p&gt;It would be fun to integrate something like this with a rich text editor, such as the recently announced &lt;a href="http://www.interactivetools.com/staff/ben/htmlarea3_demo/example.html"&gt;htmlArea 3.0&lt;/a&gt;  that works with Mozilla 1.3b as well as &lt;acronym title="Internet Explorer"&gt;IE&lt;/acronym&gt; (more information &lt;a href="http://www.interactivetools.com/iforum/Open_Source_C3/htmlArea_v3.0_-_Alpha_Release_F14/htmlArea_3%3A_Alpha_release_P7101/" title=" htmlArea 3: Alpha release"&gt;here&lt;/a&gt;).&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/sam-ruby"&gt;sam-ruby&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="sam-ruby"/></entry><entry><title>Python power</title><link href="https://simonwillison.net/2003/Mar/6/pythonPower/#atom-tag" rel="alternate"/><published>2003-03-06T02:39:05+00:00</published><updated>2003-03-06T02:39:05+00:00</updated><id>https://simonwillison.net/2003/Mar/6/pythonPower/#atom-tag</id><summary type="html">
    &lt;p&gt;Sam Ruby's &lt;a href="http://www.intertwingly.net/blog/1237.html" title="wx3pa"&gt;ultra-simple 3-paned aggregator&lt;/a&gt; is a great example of the power of high level scripting languages. Using the &lt;a href="http://wxpython.org/"&gt;wxPython&lt;/a&gt; cross-platform &lt;acronym title="Graphical User Interface"&gt;GUI&lt;/acronym&gt; toolkit and Mark Pilgrim's &lt;a href="http://diveintomark.org/projects/rss_parser/"&gt;ultra-liberal RSS Parser&lt;/a&gt; it provides a full application in a mere 107 lines of (highly readable and maintainable) code.&lt;/p&gt;

&lt;p&gt;Linked to from Sam's comments are &lt;a href="http://diveintomark.org/archives/2002/04/15/investigating_opml.html" title="Investigating OPML"&gt;Mark Pilgrim's thoughts on OPML&lt;/a&gt; from April last year. I'm not too keen on &lt;acronym title="Outline Processor Markup Language"&gt;OPML&lt;/acronym&gt;'s "invent attributes as you need them" attitude but I am intrigued by Dave Winer's &lt;a href="http://davenet.userland.com/2002/06/02/theGooglishWayToDoDirectories" title="The Googlish Way To DO Directories"&gt;thoughts on using OPML&lt;/a&gt; as the basis for a massive, distributed directory of the web - a sort of decentralised &lt;a href="http://dmoz.org/" title="The Open Directory Project"&gt;dmoz&lt;/a&gt;.&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/mark-pilgrim"&gt;mark-pilgrim&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/opml"&gt;opml&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/rss"&gt;rss&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/sam-ruby"&gt;sam-ruby&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="mark-pilgrim"/><category term="opml"/><category term="python"/><category term="rss"/><category term="sam-ruby"/></entry><entry><title>You know me</title><link href="https://simonwillison.net/2003/Jan/20/youKnowMe/#atom-tag" rel="alternate"/><published>2003-01-20T23:19:36+00:00</published><updated>2003-01-20T23:19:36+00:00</updated><id>https://simonwillison.net/2003/Jan/20/youKnowMe/#atom-tag</id><summary type="html">
    &lt;p&gt;Dave Winer: &lt;a href="http://www.thetwowayweb.com/stories/storyReader$252"&gt;The "You Know Me" Button&lt;/a&gt;. Dave hates posting comments on blogs and then having to check back constantly to see if anyone has replied (I do too). Sam Ruby's &lt;a href="http://www.intertwingly.net/blog/1135.html" title="Subscribing to comments"&gt;solution&lt;/a&gt; is to provide the comments as a separate RSS feed for each of his entries, but Dave wants something more automatic that won't clog up his aggregator. Dave's new proposal is intruiging to say the least. When you sign up for an account with a discussion forum you have the option of configuring a link to an "identity server" able to respond to a specific protocol. Once this has been done, the discussion software "pings" your identity server with your username and a message whenever someone responds to one of your posts.&lt;/p&gt;

&lt;p&gt;The idea as it stands is great, but at the moment it fails to address discussion forums that do not require the user to create an account (many blog comment systems for example). These could probably be served by a single text field asking for your optional You-Know-Me address. The problem that arises then is that of authentication - what's to stop someone maliciously signing you up for comment threads without your consent? The spectre of spam can't be too far over the horizon.&lt;/p&gt;

&lt;p&gt;Maybe a solution would be to turn subscription in to a two-step process - first you tell the comment thread your details and have it ping your identity server, then later on you visit the web application running on the identity server and "approve" that subscription. That should defend against unwanted subscriptions, but it also adds another layer of complexity to what should be an automatic process. You would also have to do this for every unauthenticated thread you subscribed to (I imagine that authenticated account based subscriptions such as the ones Dave describes in his initial article would handl auto-subscribing you to all threads you participate in).&lt;/p&gt;

&lt;p&gt;I have no doubt that someone will come up with solutions to any issues with Dave's system, and I look forward to seeing the spec develop. Once a basic protocol has been laid down the possibilities are huge - I-Know-You to RSS/email/Jabber gateways are an obvious extension that could be great fun to hack around with. It's been a while since I've messed around with web services and my &lt;a href="http://scripts.incutio.com/xmlrpc/" title="The Incutio XML-RPC Library"&gt;XML-RPC library&lt;/a&gt; could do with an update.&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/dave-winer"&gt;dave-winer&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/sam-ruby"&gt;sam-ruby&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="dave-winer"/><category term="sam-ruby"/></entry><entry><title>PythonCard scriptlets</title><link href="https://simonwillison.net/2002/Oct/27/scriptletsAndPythonCard/#atom-tag" rel="alternate"/><published>2002-10-27T10:58:01+00:00</published><updated>2002-10-27T10:58:01+00:00</updated><id>https://simonwillison.net/2002/Oct/27/scriptletsAndPythonCard/#atom-tag</id><summary type="html">
    &lt;p&gt;Kevin Altis on &lt;a href="http://radio.weblogs.com/0102677/2002/10/21.html#a20" title="Kevin Altis: Monday, October 21, 2002"&gt;scripting applications&lt;/a&gt; written in PythonCard:&lt;/p&gt;

&lt;blockquote cite="http://radio.weblogs.com/0102677/2002/10/21.html#a20"&gt;&lt;p&gt;
The entire object model of a PythonCard application is exposed, so if an app doesn't have the feature you want, you can probably extend it with a short "macro" in Python. All scripts are run in the shell, so they share the shell namespace and thus scripts can share variables since the namespace doesn't go away until the application is closed.
&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;Kevin calls these scripts "scriptlets" and has posted an &lt;a href="http://radio.weblogs.com/0102677/categories/pythoncard/2002/05/10.html" title="codeEditor"&gt;example scriptlet&lt;/a&gt; that can insert the current date and time straight in to any text file opened with the PythonCard codeEditor.&lt;/p&gt;

&lt;p&gt;Sam Ruby was recently quoted as &lt;a href="http://weblog.infoworld.com/udell/2002/10/07.html#a461" title="Java, C#, Python, and Ruby"&gt;stating the following&lt;/a&gt; over on Jon Udell's blog:&lt;/p&gt;

&lt;blockquote cite="http://weblog.infoworld.com/udell/2002/10/07.html#a461"&gt;&lt;p&gt;
While Java and C# battle over who is the rightful successor to C++, it is quite possible that a language like Python (or, dare I say it, Ruby) will ultimately be the one that wins out.
&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;This is an interesting train of thought. Scripting languages such as Python undeniably lead to faster development times (no compile cycle, less book keeping syntax to worry about) and as computers continue to get faster and cheaper the overhead associated with these languages becomes less and less important. Kevin's concept of an application with an exposed object model that can be tweaked by the user is a powerful idea, and one that could bring real benefits; Python is not a difficult language to program in, and applications which can be scripted easily can become very popular (just look at the &lt;a href="http://www.mirc.com/"&gt;mIRC&lt;/a&gt; community for an example of that). Unfortunately the ability to script an application also leads to inherent security flaws, as have been seen with VBScript and Microsoft Office - although in the case of Office most of the problems stem from the ability to add macros to individual documents (there are surprisingly few mIRC security alerts despite the in built scripting engine).&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/jon-udell"&gt;jon-udell&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/sam-ruby"&gt;sam-ruby&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/pythoncard"&gt;pythoncard&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="jon-udell"/><category term="python"/><category term="sam-ruby"/><category term="pythoncard"/></entry><entry><title>Sam Ruby joins up</title><link href="https://simonwillison.net/2002/Oct/3/samRubyJoinsUp/#atom-tag" rel="alternate"/><published>2002-10-03T20:16:10+00:00</published><updated>2002-10-03T20:16:10+00:00</updated><id>https://simonwillison.net/2002/Oct/3/samRubyJoinsUp/#atom-tag</id><summary type="html">
    &lt;p&gt;Sam Ruby &lt;a href="http://www.intertwingly.net/blog/878.html" title="No pingbacks yet"&gt;has pingback&lt;/a&gt;. &lt;em&gt;Ping!&lt;/em&gt;&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/pingback"&gt;pingback&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/sam-ruby"&gt;sam-ruby&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="pingback"/><category term="sam-ruby"/></entry></feed>