<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en-us" xmlns="http://www.w3.org/2005/Atom"><title>Simon Willison's Weblog: dave-winer</title><link href="http://simonwillison.net/" rel="alternate"/><link href="http://simonwillison.net/tags/dave-winer.atom" rel="self"/><id>http://simonwillison.net/</id><updated>2009-04-11T17:37:55+00:00</updated><author><name>Simon Willison</name></author><entry><title>rev=canonical bookmarklet and designing shorter URLs</title><link href="https://simonwillison.net/2009/Apr/11/revcanonical/#atom-tag" rel="alternate"/><published>2009-04-11T17:37:55+00:00</published><updated>2009-04-11T17:37:55+00:00</updated><id>https://simonwillison.net/2009/Apr/11/revcanonical/#atom-tag</id><summary type="html">
    &lt;p&gt;I've watched the proliferation of URL shortening services over the past year with a certain amount of dismay. I care about the health of the web and try to ensure that URLs I am responsible will last for as long as possible, and I think it's very unlikely that all of these new services will still be around in twenty years time. Last month &lt;a href="http://simonwillison.net/2009/Mar/8/twitter/"&gt;I suggested&lt;/a&gt; that the Internet Archive start mirroring redirect databases, and last week I was &lt;a href="http://simonwillison.net/2009/Apr/3/tinyurl/"&gt;pleased to hear&lt;/a&gt; that Archiveteam, a different organisation, had &lt;a href="http://archiveteam.org/index.php?title=TinyURL"&gt;already started crawling&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The most recent discussion was kicked off by &lt;a href="http://joshua.schachter.org/2009/04/on-url-shorteners.html"&gt;Joshua Schachter&lt;/a&gt; and &lt;a href="http://www.scripting.com/stories/2009/03/07/solvingTheTinyurlCentraliz.html"&gt;Dave Winer&lt;/a&gt;, and &lt;a href="http://laughingmeme.org/2009/04/03/url-shortening-hinting/" title="URL Shortening Hinting"&gt;a solution has emerged&lt;/a&gt; driven by some lightning fast hacking by Kellan Elliott-McCrea. The idea is simple: sites get to chose their preferred source of shortened URLs (including self-hosted solutions) and specify it from individual pages using &lt;code&gt;&amp;lt;link rev="canonical" href="... shorter URL here ..."&amp;gt;&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;By hosting their own shorteners, the reliability should match that of the host site - and the amount of damage caused by a major shortener going missing can be dramatically reduced.&lt;/p&gt;

&lt;p&gt;I've been experimenting with this new pattern today. Here are a few small contributions to the wider discussion.&lt;/p&gt;

&lt;h4&gt;A URL shortening bookmarklet&lt;/h4&gt;

&lt;p&gt;Kellan's &lt;a href="http://revcanonical.appspot.com/"&gt;rev=canonical service&lt;/a&gt; exposes rev=canonical links using a server-side script running on App Engine. An obvious next step is to distil that logic in to a bookmarklet. I decided to combine the rev=canonical logic with my &lt;a href="http://simonwillison.net/2008/Aug/27/jsontinyurl/"&gt;json-tinyurl&lt;/a&gt; web service (also on App Engine), which allows browsers to lookup or create TinyURLs using a cross-domain JSONP request. The resulting bookmarklet will display the site's rev=canonical link if it exists, or create and display a TinyURL link otherwise:&lt;/p&gt;

&lt;p&gt;Bookmarklet: &lt;a href="javascript:(function(){var url=document.location;var links=document.getElementsByTagName('link');var found=0;for(var i = 0, l; l = links[i]; i++){if(l.getAttribute('rev')=='canonical'||(/alternateshort/).exec(l.getAttribute('rel'))) {found=l.getAttribute('href');break;}}if (!found) {for (var i = 0; l = document.links[i]; i++) {if (l.getAttribute('rev') == 'canonical') {found = l.getAttribute('href');break;}}}if (found) {prompt('URL:', found);} else {window.onTinyUrlGot = function(r) {if (r.ok) {prompt('URL:', r.tinyurl);} else {alert('Could not shorten with tinyurl');}};var s = document.createElement('script');s.type='text/javascript';s.src='http://json-tinyurl.appspot.com/?callback=onTinyUrlGot&amp;amp;url=' +document.location;document.getElementsByTagName('head')[0].appendChild(s);}})();"&gt;Shorten&lt;/a&gt; (drag to your browser toolbar)&lt;/p&gt;

&lt;p&gt;You can also grab the &lt;a href="http://gist.github.com/93591"&gt;uncompressed source code&lt;/a&gt;.&lt;/p&gt;

&lt;h4&gt;Designing short URLs&lt;/h4&gt;

&lt;p&gt;I've also implemented rev=canonical on this site. I ended up buying a new domain for this, since simonwillison.net is both difficult to spell and 17 characters long. I ended up going with swtiny.eu - 9 characters, and keeping tiny in the domain helps people guess the nature of the site from just the URLs it generates. Be warned: the DNS doesn't appear to have finished resolving yet.&lt;/p&gt;

&lt;p&gt;For the path component, I turned to a variant of base 62 encoding. Decimal integers are represented using 10 digits (0-9), but base 62 uses those digits plus the letters of the alphabet in both lower and upper case. A 13 character integer such as 7250397214971 compresses down to just 8 characters (CDeIPpOD) using base62. My &lt;a href="http://www.djangosnippets.org/snippets/1431/"&gt;baseconv.py module&lt;/a&gt; implements base62, among others. I considered using base 57 by excluding o, O, 0, 1 and l as being too easily confused but decided against it.&lt;/p&gt;

&lt;p&gt;This site has three key types of content: entries, blogmarks and quotations. Each one is a separate Django model, and hence each has its own underlying database table and individual ID sequence. Since the IDs overlap, I need a way of separating out the shortened URLs for each content type.&lt;/p&gt;

&lt;p&gt;I decided to spend a byte on namespacing my shortened URLs. A prefix of E means an entry, Q means a quotation and B means a blogmark. For example:&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;&lt;samp&gt;http://swtiny.eu/EZ8&lt;/samp&gt;: Entry with ID 1584&lt;/li&gt;
    &lt;li&gt;&lt;samp&gt;http://swtiny.eu/BBEQ&lt;/samp&gt;: Blogmark with ID 4108&lt;/li&gt;
    &lt;li&gt;&lt;samp&gt;http://swtiny.eu/QE5&lt;/samp&gt;: Quotation with ID 279&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By using upper case letters for the prefixes, I can later define custom paths starting with a lower case letter. I also have another 23 upper case prefix letters reserved in case I need them.&lt;/p&gt;

&lt;p&gt;I &lt;a href="http://twitter.com/simonw/status/1496864191"&gt;asked on Twitter&lt;/a&gt; and consensus opinion was that a 301 permanent redirect was the right thing to do (as opposed to a 302), both for SEO reasons and because the content will never exist at the shorter URL.&lt;/p&gt;

&lt;h4&gt;Implementation using Django and nginx&lt;/h4&gt;

&lt;p&gt;I run all of my Django sites using Apache and &lt;a href="http://code.google.com/p/modwsgi/"&gt;mod_wsgi&lt;/a&gt;, proxied behind &lt;a href="http://nginx.net/"&gt;nginx&lt;/a&gt;. Each site gets an Apache running on a high port, and nginx deals with virtual host configuration (proxying each domain to a different Apache backend) and static file serving. I didn't want to set up a full Django site just to run swtiny.eu, especially since my existing blog engine was required in order to resolve the shortened URLs.&lt;/p&gt;

&lt;p&gt;Instead, I implemented the shortened URL direction as just another view within my existing site: &lt;samp&gt;http://simonwillison.net/shorter/EZ8&lt;/samp&gt;. I then configured nginx to invisibly requests to &lt;samp&gt;swtiny.eu&lt;/samp&gt; through to that URL. The correct incantation took a while to figure out, so here's the relevant section of my nginx.conf:&lt;/p&gt;

&lt;pre&gt;&lt;code class="nginx-conf"&gt;server {
    listen 80;
    server_name www.swtiny.eu swtiny.eu;
    location / {
        rewrite (.*) /shorter$1 break;
        proxy_pass http://simonwillison.net;
        proxy_redirect off;
    }
}&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;code&gt;proxy_redirect off&lt;/code&gt; is needed to prevent nginx from replacing &lt;samp&gt;simonwillison.net&lt;/samp&gt; in the resulting location header with &lt;samp&gt;swtiny.eu&lt;/samp&gt;. My Django view code is relatively shonky, but if you're interested you can &lt;a href="http://www.djangosnippets.org/snippets/1430/"&gt;find it here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The nice thing about this approach is that it makes it trivial to add custom URL shortening domains to other projects - a quick view function and a few lines of nginx configuration are all that is needed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; The bookmarklet now supports the rev attribute on A elements as well - &lt;a href="http://simonwillison.net/2009/Apr/11/revcanonical/#c44088"&gt;thanks for the suggestion&lt;/a&gt;, Jeremy.&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/bookmarklets"&gt;bookmarklets&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/dave-winer"&gt;dave-winer&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/django"&gt;django&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/joshua-schachter"&gt;joshua-schachter&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/kellan-elliott-mccrea"&gt;kellan-elliott-mccrea&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/projects"&gt;projects&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/revcanonical"&gt;revcanonical&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/tinyurl"&gt;tinyurl&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/urls"&gt;urls&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="bookmarklets"/><category term="dave-winer"/><category term="django"/><category term="joshua-schachter"/><category term="kellan-elliott-mccrea"/><category term="projects"/><category term="python"/><category term="revcanonical"/><category term="tinyurl"/><category term="urls"/></entry><entry><title>Dare left something out (and it's important)</title><link href="https://simonwillison.net/2008/Aug/18/dare/#atom-tag" rel="alternate"/><published>2008-08-18T09:39:16+00:00</published><updated>2008-08-18T09:39:16+00:00</updated><id>https://simonwillison.net/2008/Aug/18/dare/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.scripting.com/stories/2008/08/17/dareLeftSomethingOutAndIts.html"&gt;Dare left something out (and it&amp;#x27;s important)&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Dave Winer: “You should at least learn the lessons and add to REST what it needs to catch up with XML-RPC. Seriously. What’s missing in REST, btw, is a standard method of serializing structs, lists and scalar types.” That would be JSON.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/dare-obasanjo"&gt;dare-obasanjo&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/dave-winer"&gt;dave-winer&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/json"&gt;json&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/rest"&gt;rest&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/xml-rpc"&gt;xml-rpc&lt;/a&gt;&lt;/p&gt;



</summary><category term="dare-obasanjo"/><category term="dave-winer"/><category term="json"/><category term="rest"/><category term="xml-rpc"/></entry><entry><title>Why JSON isn't just for JavaScript</title><link href="https://simonwillison.net/2006/Dec/20/json/#atom-tag" rel="alternate"/><published>2006-12-20T23:49:34+00:00</published><updated>2006-12-20T23:49:34+00:00</updated><id>https://simonwillison.net/2006/Dec/20/json/#atom-tag</id><summary type="html">
    &lt;p&gt;Dave Winer's &lt;a href="http://www.scripting.com/2006/12/20.html#godBlessTheReinventers" title="God bless the re-inventers"&gt;discovery of JSON&lt;/a&gt; (and shock that "it's not even XML") has triggered an interesting discussion thread, &lt;a href="http://scripting.wordpress.com/2006/12/20/scripting-news-for-12202006/"&gt;on his blog&lt;/a&gt; and &lt;a href="http://technorati.com/search/www.scripting.com%2F2006%2F12%2F20.html%23godBlessTheReinventers" title="Technorati links to that URL"&gt;elsewhere&lt;/a&gt;. Plenty of people have re-assured him (and themselves) that it's only used for JavaScript - it's convenient in the browser but irrelevant elsewhere.&lt;/p&gt;

&lt;p&gt;That simply isn't true. Let's look at the problem &lt;a href="http://www.json.org/"&gt;JSON&lt;/a&gt; solves:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;I have a data structure on server / platform / programming environment A. I want to use it on server / platform / programming environment B.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Surely that problem has been solved a hundred times before? That's what XML's for, right?&lt;/p&gt;

&lt;p&gt;Here's an example data structure, of the kind you might want to transmit from one place to another (represented as a Python dictionary; mentally replace with the syntax from your programming language of choice).&lt;/p&gt;

&lt;pre&gt;&lt;code class="javascript"&gt;person = {
  "name": "Simon Willison",
  "age": 25,
  "height": 1.68,
  "urls": [
    "http://simonwillison.net/",
    "http://www.flickr.com/photos/simon/",
    "http://simon.incutio.com/"
  ]
}&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;It's a simple example, but it demonstrates the core data structures that any modern dynamic language is likely to support: strings, integers, floating points, hashes (or dictionaries or associative arrays depending on terminology) and lists (or sequences or arrays).&lt;/p&gt;

&lt;p&gt;So how do I represent this in a language-neutral format? Obviously I can use XML. I could invent my own custom representation:&lt;/p&gt;

&lt;pre&gt;&lt;code class="xml"&gt;&amp;lt;person&amp;gt;
  &amp;lt;name&amp;gt;Simon Willison&amp;lt;/name&amp;gt;
  &amp;lt;age&amp;gt;25&amp;lt;/age&amp;gt;
  &amp;lt;height&amp;gt;1.68&amp;lt;/height&amp;gt;
  &amp;lt;urls&amp;gt;
    &amp;lt;url&amp;gt;http://simonwillison.net/&amp;lt;/url&amp;gt;
    ...
  &amp;lt;/urls&amp;gt;
&amp;lt;/person&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;But this means writing a bunch of boilerplate code. I need code to build the XML format, and code to parse it (using SAX or DOM or whatever) at the other end. I need to write this code in every language/platform that I want to communicate with. That's a lot of extra effort!&lt;/p&gt;

&lt;p&gt;So let's be smarter about this and reuse an existing format. If there's an XML-based standard for the exact data I'm representing I could use that; if there are good libraries supporting it for the languages that I'm using I don't have to write any extra parsing code.&lt;/p&gt;

&lt;p&gt;If that isn't the case, I need to look at XML standards that can represent our standard data types. As Dave points out, our principle options here are SOAP and XML-RPC.&lt;/p&gt;

&lt;p&gt;By most accounts SOAP is a total pain to get anything done with, so let's look at XML-RPC. XML-RPC encodes the exact data types we want, but wraps them up in a RPC mechanism. I have no need for any of the &amp;lt;methodCall&amp;gt; / &amp;lt;methodResponse&amp;gt; boiler plate; I just want to represent the data, not specify a remote method to call.&lt;/p&gt;

&lt;p&gt;So I could use a subset of XML-RPC that's just the data representation - in fact, that's really not a bad idea. But then I'd have to figure out how to get the various XML-RPC libraries to parse just the data structures without barfing at the lack of an envelope.&lt;/p&gt;

&lt;p&gt;I also face the problem that XML-RPC isn't particularly human-readable. In fact, XML itself tends not to be brilliantly readable: the data gets lost among the angle brackets.&lt;/p&gt;

&lt;p&gt;Enter JSON. The smartest thing about JSON is that it addresses the need for a light-weight standard for representing those core data types and, rather than inventing a new one, uses a subset of an existing one: ECMAScript, more commonly known as JavaScript.&lt;/p&gt;

&lt;p&gt;JavaScript has excellent syntax for both object and array literals (something Java could certainly learn from); remember, in JavaScript an object is basically an associative array. JSON takes that syntax and makes it generally applicable. Because JavaScript is a programming language, JSON syntax is naturally readable and writable by human beings.&lt;/p&gt;

&lt;p&gt;If you take away the assignment statement the Python example I gave earlier is also valid JSON. JSON is also a subset of YAML, an earlier attempt at a human readable/writable serialization format. More importantly, JSON libraries almost certainly exist for your language of choice (there are 24 languages represented in the list on &lt;a href="http://www.json.org/"&gt;JSON.org&lt;/a&gt;). Most of them provide two functions - &lt;samp&gt;json_encode($data)&lt;/samp&gt; and &lt;samp&gt;json_decode($json)&lt;/samp&gt;  - and that's all you need.&lt;/p&gt;

&lt;p&gt;The sweet spot for JSON is serializing simple data structures for transfer between programming languages. If you need more complex data structures (maybe with some kind of schema for validation), use XML. If you want to do full blown RPC use SOAP or XML-RPC. If you just want a light-weight format for moving data around, JSON fits the bill admirably.&lt;/p&gt;

&lt;p&gt;What do we lose from not using XML? The ability to use XML tools. If you're someone who breathes XSLT that might be a problem; if like me your approach when faced with XML is to parse it in to a more agreeable data structure as soon as possible you'll find JSON far more productive.&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/javascript"&gt;javascript&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/json"&gt;json&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/soap"&gt;soap&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/xml"&gt;xml&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/xml-rpc"&gt;xml-rpc&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="dave-winer"/><category term="javascript"/><category term="json"/><category term="soap"/><category term="xml"/><category term="xml-rpc"/></entry><entry><title>Quoting Dave Winer</title><link href="https://simonwillison.net/2006/Dec/20/ohthehumanity/#atom-tag" rel="alternate"/><published>2006-12-20T19:21:48+00:00</published><updated>2006-12-20T19:21:48+00:00</updated><id>https://simonwillison.net/2006/Dec/20/ohthehumanity/#atom-tag</id><summary type="html">
    &lt;blockquote cite="http://www.scripting.com/2006/12/20.html#godBlessTheReinventers"&gt;&lt;p&gt;I read on Niall Kennedy that del.icio.us has come up with an API that returns a JSON structure, and I figured, sheez it can't be that hard to parse, so let's see what it looks like, and damn, IT'S NOT EVEN XML! [...] Who did this travesty? Let's find a tree and string them up. Now.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p class="cite"&gt;&amp;mdash; &lt;a href="http://www.scripting.com/2006/12/20.html#godBlessTheReinventers"&gt;Dave Winer&lt;/a&gt;&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/delicious"&gt;delicious&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/douglas-crockford"&gt;douglas-crockford&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/json"&gt;json&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/niall-kennedy"&gt;niall-kennedy&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/xml"&gt;xml&lt;/a&gt;&lt;/p&gt;



</summary><category term="dave-winer"/><category term="delicious"/><category term="douglas-crockford"/><category term="json"/><category term="niall-kennedy"/><category term="xml"/></entry><entry><title>The myth of RSS compatibility [dive into mark]</title><link href="https://simonwillison.net/2004/Feb/4/myth/#atom-tag" rel="alternate"/><published>2004-02-04T19:45:15+00:00</published><updated>2004-02-04T19:45:15+00:00</updated><id>https://simonwillison.net/2004/Feb/4/myth/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://diveintomark.org/archives/2004/02/04/incompatible-rss"&gt;The myth of RSS compatibility [dive into mark]&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Sometimes I think Mark’s raison d etre is to upset Dave Winer


    &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/mark-pilgrim"&gt;mark-pilgrim&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/rss"&gt;rss&lt;/a&gt;&lt;/p&gt;



</summary><category term="dave-winer"/><category term="mark-pilgrim"/><category term="rss"/></entry><entry><title>Sitting nervously on the fence</title><link href="https://simonwillison.net/2003/Jul/11/winerWatcher/#atom-tag" rel="alternate"/><published>2003-07-11T21:02:11+00:00</published><updated>2003-07-11T21:02:11+00:00</updated><id>https://simonwillison.net/2003/Jul/11/winerWatcher/#atom-tag</id><summary type="html">
    &lt;p&gt;Today's hot topic is the &lt;a href="http://diveintomark.org/ww/"&gt;Winer Watcher&lt;/a&gt;, Mark Pilgrim's new tool that tracks and highlights edits made to Dave Winer's &lt;a href="http://www.scripting.com/"&gt;Scripting News&lt;/a&gt;. The blogosphere is pretty much evenly split on this: some people think it is a blatant attack on Dave Winer, tantamount o blogger bullying, while others see it as a neat technical solution to a very real problem.&lt;/p&gt;

&lt;p&gt;I've been using &lt;a href="http://www.technorati.com/cosmos/links.html?rank=&amp;amp;url=http%3A%2F%2Fdiveintomark.org%2Fww%2F&amp;amp;sub=Get+Link+Cosmos" title="Inbound Links to http://diveintomark.org/ww"&gt;Technorati&lt;/a&gt; to follow the discussion, but the real action is in the comments attached to &lt;a href="http://www.docuverse.com/blog/donpark/2003/07/10.html#a701" title="Mark Pilgrim Stalks Dave Winer"&gt;this entry&lt;/a&gt; by Don Park. To save you having to read all 80+ comments, here are some highlights (I've tried to pick out entries which represent the different opinions on display). Please note that by the very nature of this post I am quoting these people out of context. If that makes you uncomfortable, read &lt;a href="http://radiocomments.userland.com/comments?u=112479&amp;amp;p=701&amp;amp;link=http%3A%2F%2Fwww.docuverse.com%2Fblog%2Fdonpark%2F2003%2F07%2F10.html%23a701"&gt;the whole thread&lt;/a&gt;.&lt;/p&gt;

&lt;h4&gt;Már Örlygsson&lt;/h4&gt;

&lt;blockquote cite="http://radiocomments.userland.com/comments?u=112479&amp;amp;p=701&amp;amp;link=http%3A%2F%2Fwww.docuverse.com%2Fblog%2Fdonpark%2F2003%2F07%2F10.html%23a701"&gt;&lt;p&gt;
IMO Mark is acting like a school-yard bully, picking on someone he feels will make him look big. Hrrmphf! (Surely Mark has every right to dislike Dave - or anyone else for that matter - but constantly picking on people is just plain nasty and can have terrible psychological effects on even the strongest people.)
&lt;/p&gt;&lt;/blockquote&gt;

&lt;h4&gt;Greg Ritter&lt;/h4&gt;

&lt;blockquote cite="http://radiocomments.userland.com/comments?u=112479&amp;amp;p=701&amp;amp;link=http%3A%2F%2Fwww.docuverse.com%2Fblog%2Fdonpark%2F2003%2F07%2F10.html%23a701"&gt;&lt;p&gt;
There's editing posts and then there's what I call "de-publishing." &lt;a href="http://www.tenreasonswhy.com/weblog/archives/2003/07/10/the_ethics_of_depublishing.html"&gt;http://www.tenreasonswhy.com/weblog/archives/2003/07/10/the_ethics_of_depublishing.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;De-publishing is when an author deletes or substantively changes a post without any sort of retraction or notice that the change has taken place. Note that I'm talking about *substantive* changes -- not fixing grammer or spelling or text formatting, but changes that affect the meaning or impact of the post.&lt;/p&gt;

&lt;p&gt;Winer regularly writes something inflammatory and then later tries to "erase" it from existence by de-publishing it. I disapprove of that because with publishing should come accountability.&lt;/p&gt;

&lt;p&gt;Mark Pilgrim is using Winer's RSS feeds to track the "virtual paper trail" to reveal the kind of de-publishing that takes place on Scripting News.&lt;/p&gt;

&lt;p&gt;I find de-publishing far more unethical and detrimental to the blogosphere (especially when it comes from such a prominent blogger as Winer) than what Mark Pilgrim is doing. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;h4&gt;Blake Winton&lt;/h4&gt;

&lt;blockquote cite="http://radiocomments.userland.com/comments?u=112479&amp;amp;p=701&amp;amp;link=http%3A%2F%2Fwww.docuverse.com%2Fblog%2Fdonpark%2F2003%2F07%2F10.html%23a701"&gt;&lt;p&gt;
Am I the only person here who finds the Winer Watcher a fascinating look into the mind of a popular and experienced weblogger as he writes his posts? I read it compulsively, and find myself thinking "What changed there? Why did he rephrase that particular statement? How is the new phrasing better than the old?".
&lt;/p&gt;&lt;/blockquote&gt;

&lt;h4&gt;Dave Winer&lt;/h4&gt;

&lt;blockquote cite="http://radiocomments.userland.com/comments?u=112479&amp;amp;p=701&amp;amp;link=http%3A%2F%2Fwww.docuverse.com%2Fblog%2Fdonpark%2F2003%2F07%2F10.html%23a701"&gt;&lt;p&gt;
 "there's never a concept of a final posting"&lt;/p&gt;

&lt;p&gt;Not true. 10PM is the final, that's when the people who subscribe via email get their copy of Scripting.&lt;/p&gt;

&lt;p&gt;BTW, I've deleted a few paragraphs as I'm writing this post. Think about it. Did I do something wrong? That's how ridiculous this discussion is.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h4&gt;Mark Pilgrim&lt;/h4&gt;

&lt;blockquote cite="http://radiocomments.userland.com/comments?u=112479&amp;amp;p=701&amp;amp;link=http%3A%2F%2Fwww.docuverse.com%2Fblog%2Fdonpark%2F2003%2F07%2F10.html%23a701"&gt;
&lt;p&gt;1. Diff-like highlighting of changes within posts is an incredibly useful feature that all news aggregators should support.&lt;/p&gt;

&lt;p&gt;2. Dave's bandwidth claim is bogus. Winer Watcher uses a system of distributed mirrors and never touches scripting.com directly. If WW ceased to exist, Dave's bandwidth bill would change by precisely zero.&lt;/p&gt;

&lt;p&gt;3. Dave's copyright claim is bogus. Winer Watcher is no more infringing than these existing syndication services:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.oreillynet.com/meerkat/?c=584&amp;amp;t=ALL"&gt;http://www.oreillynet.com/meerkat/?c=584&amp;amp;t=ALL&lt;/a&gt; &lt;a href="http://newsisfree.com/sources/info/336/"&gt;http://newsisfree.com/sources/info/336/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;[...]&lt;/p&gt;

&lt;p&gt;For the record, Winer Watcher was started because Dave wrote a series of posts totally lashing out at Blogger, Movable Type, Google, Tim Bray, and myself, and then edited them within hours to erase all traces of his own slanderous flaming. This kind of slander is NOT ACCEPTABLE UNDER ANY CIRCUMSTANCES, and the fact that he seems to know this at some level and edits/deletes it later only makes it worse. WW tracks this kind of Orwellian rewriting of history and displays it. It would be more useful if it could distinguish between a relevant edit and a typo correction, but sometimes even a single word is relevant, so I don't know how it could tell.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h4&gt;Bill Brown&lt;/h4&gt;

&lt;blockquote cite="http://radiocomments.userland.com/comments?u=112479&amp;amp;p=701&amp;amp;link=http%3A%2F%2Fwww.docuverse.com%2Fblog%2Fdonpark%2F2003%2F07%2F10.html%23a701"&gt;&lt;p&gt;Dave: you're free to delete anything you want and do whatever you want on your blog. It's not wrong, it's just a pain in the ass for your regular readers. I might read in the morning and revisit by afternoon to a completely different page, one who's mood and tone have changed thoroughly. I personally don't like that because I'm hardly confident in my previous recollection -- it's unsettling.&lt;/p&gt;&lt;/blockquote&gt;

&lt;h4&gt;Mark Pilgrim&lt;/h4&gt;

&lt;blockquote cite="http://radiocomments.userland.com/comments?u=112479&amp;amp;p=701&amp;amp;link=http%3A%2F%2Fwww.docuverse.com%2Fblog%2Fdonpark%2F2003%2F07%2F10.html%23a701"&gt;
&lt;p&gt;For the record, here is a Scripting News post he posted on July 8 2003 and subsequently deleted (but Winer Watcher caught it):&lt;/p&gt;

&lt;p&gt;""" There's more to the story, in re Mark's control of the RSS validator. It seems people who accuse me of controlling RSS may have missed that Mark and Sam have actually been exerting silent control by changing key aspects of the validator, without telling anyone they were doing it. Mark's flaming in this thread, which caught the attention of quite a few people as being extrordinarily mean, even for Mark, was in exactly the area he wouldn't want you to look in the validator. I want to disclaim that I control RSS, folks, because since the RSS 2.0 spec was frozen, it was Mark and Sam that controlled it, not me. Ironically, no one knew. """&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h4&gt;Rogers Cadenhead&lt;/h4&gt;

&lt;blockquote cite="http://radiocomments.userland.com/comments?u=112479&amp;amp;p=701&amp;amp;link=http%3A%2F%2Fwww.docuverse.com%2Fblog%2Fdonpark%2F2003%2F07%2F10.html%23a701"&gt;&lt;p&gt;
Regardless of the legality, though, it seems particularly ill-timed. If the Echo Project is going to move anyone beyond the intractable political fights over RSS, it's counterproductive to find novel new ways to piss each other off.
&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;The thread then devolves in to an argument about whether Mark's tool is a copyright infringment or is protected by "fair use", at which point I tuned out (there are good arguments either way on that one).&lt;/p&gt;

&lt;p&gt;Having thought things over, I love the functionality of the tool (Dave's edits have caught me out on more than one occasion) but I am uncomfortable with the way it is being used to attack Dave's personality. &lt;a href="http://www.rebeccablood.net/handbook/excerpts/weblog_ethics.html#deliberate"&gt;Point 4&lt;/a&gt; of Rebecca Blood's guide to weblog ethics is worth reading here: editing entries is best avoided, and when they are edited they should be accompanied by an addendum. Weblogs are a personal medium, but that does not absolve people from responsibility for what they have written. My own policy is to clearly mark any alterations I make to posts (with the exception of spelling mistakes), and I usually avoid making any edits at all. Dave's policy is to edit his blog "live" until 10pm. when the day's entries become frozen. It is not so much this policy that is under fire as the scale of Dave's edits, and the nature of the material he later deletes.&lt;/p&gt;

&lt;p&gt;If Winer Watcher was available as a standalone tool, I would use it. As a public resource, it does feel a little below the belt.&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/mark-pilgrim"&gt;mark-pilgrim&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="dave-winer"/><category term="mark-pilgrim"/></entry><entry><title>Google oddities</title><link href="https://simonwillison.net/2003/Jul/6/googleOddities/#atom-tag" rel="alternate"/><published>2003-07-06T15:39:56+00:00</published><updated>2003-07-06T15:39:56+00:00</updated><id>https://simonwillison.net/2003/Jul/6/googleOddities/#atom-tag</id><summary type="html">
    &lt;p&gt;&lt;a href="http://scriptingnews.userland.com/2003/07/06#When:6:37:37AM"&gt;Dave Winer&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote cite="http://scriptingnews.userland.com/2003/07/06#When:6:37:37AM"&gt;
&lt;p&gt;For several months this Google &lt;a href="http://www.google.com/search?hl=en&amp;amp;ie=UTF-8&amp;amp;oe=UTF-8&amp;amp;q=rss"&gt;search&lt;/a&gt;
would turn up a UserLand page as the number one hit. Today it's not in
the first ten pages. Must be a bug. Or do they play games with their
search engine? Straight question. It's really hard to believe it just
fell off the Web in the last few days. And while I'm at it, I don't
like it that they label my older specs as deprecated (in caps no less). [...]
&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;It is pretty strange that the &lt;a href="http://backend.userland.com/rss"&gt;RSS 2.0 specification&lt;/a&gt; isn't listed on the first page. There's an interesting &lt;a href="http://www.webmasterworld.com/forum3/15026.htm" title="Google&amp;apos;s 2 indexes &amp;amp; you"&gt;thread on WebMasterWorld&lt;/a&gt; at the moment about recent strange behaviour in Google's ranking algorithms, with a number of guesses as to the cause. As to the second complaint, google's descriptions of pagse are generall pulled from the &lt;a href="http://dmoz.org/"&gt;Open Directory&lt;/a&gt;. Sure enough, take a look at &lt;a href="http://directory.google.com/Top/Reference/Libraries/Library_and_Information_Science/Technical_Services/Cataloguing/Metadata/RDF/Applications/RSS/Specifications/?il=1" title="RSS &amp;gt; Specifications"&gt;this page&lt;/a&gt; listing RSS specifications, &lt;del&gt;currently maintained by &lt;a href="http://dmoz.org/profiles/bhammersley.html" title="Editor:  bhammersley"&gt;Ben Hammersley&lt;/a&gt;&lt;/del&gt; &lt;ins&gt;currently seeking a new editor (see &lt;a href="/2003/Jul/06/googleOdditiescomment3/"&gt;this comment&lt;/a&gt;)&lt;/ins&gt;.&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/google"&gt;google&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/rss"&gt;rss&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/seo"&gt;seo&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="dave-winer"/><category term="google"/><category term="rss"/><category term="seo"/></entry><entry><title>Scripting.com, with added CSS</title><link href="https://simonwillison.net/2003/May/19/scriptingWithCSS/#atom-tag" rel="alternate"/><published>2003-05-19T23:58:23+00:00</published><updated>2003-05-19T23:58:23+00:00</updated><id>https://simonwillison.net/2003/May/19/scriptingWithCSS/#atom-tag</id><summary type="html">
    &lt;p&gt;One of the aims of this course is to show how relatively simple &lt;acronym title="Cascading Style Sheets"&gt;CSS&lt;/acronym&gt; can be used to make dramatic improvements to existing sites. Today, I'll show how &lt;acronym title="Cascading Style Sheets"&gt;CSS&lt;/acronym&gt; can be used to reduce the amount of code needed for a small part of the design of &lt;a href="http://www.scripting.com/"&gt;Scripting.com&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Scripting.com presents the main blog entries as a series of paragraphs under a single header for each day. Here is a screenshot from today's edition of the site:&lt;/p&gt;

&lt;p class="img"&gt;&lt;img alt="Scripting.com entries, in a table based layout" height="145" src="https://static.simonwillison.net/static/2003/scripting/original.gif" width="411" /&gt;&lt;/p&gt;

&lt;p&gt;The &lt;acronym title="HyperText Markup Language"&gt;HTML&lt;/acronym&gt; behind the above screenshot is as follows:&lt;/p&gt;

&lt;pre&gt;&lt;code class="html"&gt;&amp;lt;table width="400" cellspacing="0" cellpadding="3" border="0"&amp;gt;
	&amp;lt;tr bgcolor="#000000"&amp;gt;
		&amp;lt;td colspan="2"&amp;gt;&amp;lt;font color="#F5F5F5"&amp;gt; &amp;lt;b&amp;gt;Monday, May 19, 
2003&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;
		&amp;lt;td valign="middle"&amp;gt;&amp;lt;font color="#F5F5F5"&amp;gt; 
&amp;lt;b&amp;gt;&amp;lt;a href="http://scriptingnews.userland.com/2003/05/19" 
title="Permanent link to Scripting News archive for Monday, May 19, 2003."&amp;gt;
&amp;lt;img src="http://www.scripting.com/images/home/dailyLinkIcon.gif" 
height="15" width="12" border="0"&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/td&amp;gt;
		&amp;lt;/tr&amp;gt;
	&amp;lt;tr bgcolor="white"&amp;gt;
		&amp;lt;td width="5"&amp;gt; &amp;lt;/td&amp;gt;
		&amp;lt;td valign="top"&amp;gt;
			&amp;lt;br&amp;gt;
			&amp;lt;a name="When:1:11:34PM"&amp;gt;
&amp;lt;a href="http://icann.blog.us/2003/05/19.html#a1356"&amp;gt;Bret Fausett&amp;lt;/a&amp;gt;: 
"It seems that an article making the rounds on Googlenews -- '.org Registry 
Vanishes Into Thin Air'  -- has no merit whatsoever.  
&amp;lt;a href="http://scriptingnews.userland.com/2003/05/19#When:1:11:34PM" 
title="Permanent link to this item in archive."&amp;gt;
&amp;lt;img src="http://www.scripting.com/images/2001/09/20/sharpPermaLink3.gif" 
height="9" width="6" border="0"&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;

&amp;lt;a name="When:7:06:28AM"&amp;gt;Guardian: 
&amp;lt;a href="http://www.guardian.co.uk/online/comment/story/0,12449,959151,00.html"&amp;gt;
The blog clog myth&amp;lt;/a&amp;gt;.  
&amp;lt;a href="http://scriptingnews.userland.com/2003/05/19#When:7:06:28AM" 
title="Permanent link to this item in archive."&amp;gt;&amp;lt;img 
src="http://www.scripting.com/images/2001/09/20/sharpPermaLink3.gif" 
height="9" width="6" border="0"&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;I've added some extra line breaks to fit all of the code in the space available, but other than that it's unmodified.&lt;/p&gt;

&lt;p&gt;First, let's reduce the above to the equivalent structural HTML, removing all of the presentational tags and adding in a few that might be useful. We're also going to remove the images - they'll still be there in the final version, but by using background images defined in the &lt;acronym title="Cascading Style Sheets"&gt;CSS&lt;/acronym&gt; we can save quite a lot of code.&lt;/p&gt;

&lt;pre&gt;&lt;code class="html"&gt;&amp;lt;div class="entry"&amp;gt;
&amp;lt;h2&amp;gt;&amp;lt;a href="http://scriptingnews.userland.com/2003/05/19" 
title="Permanent link to Scripting News archive for Monday, May 19, 2003."
class="permalink"&amp;gt;&amp;lt;span&amp;gt;#&amp;lt;/span&amp;gt;&amp;lt;/a&amp;gt;Monday, May 19, 2003&amp;lt;/h2&amp;gt;

&amp;lt;p&amp;gt;&amp;lt;a name="When:1:11:34PM"&amp;gt;&amp;lt;/a&amp;gt;
&amp;lt;a href="http://icann.blog.us/2003/05/19.html#a1356"&amp;gt;Bret Fausett&amp;lt;/a&amp;gt;: 
"It seems that an article making the rounds on Googlenews -- '.org Registry 
Vanishes Into Thin Air' -- has no merit whatsoever. 
&amp;lt;a href="http://scriptingnews.userland.com/2003/05/19#When:1:11:34PM" 
title="Permanent link to this item in archive." class="permalink"&amp;gt;&amp;lt;span&amp;gt;#&amp;lt;/span&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;

&amp;lt;p&amp;gt;&amp;lt;a name="When:7:06:28AM"&amp;gt;&amp;lt;/a&amp;gt;Guardian: 
&amp;lt;a href="http://www.guardian.co.uk/online/comment/story/0,12449,959151,00.html"&amp;gt;
The blog clog myth&amp;lt;/a&amp;gt;. 
&amp;lt;a href="http://scriptingnews.userland.com/2003/05/19#When:7:06:28AM" 
title="Permanent link to this item in archive." class="permalink"&amp;gt;&amp;lt;span&amp;gt;#&amp;lt;/span&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;

&amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;A few notes about the above. First, I've wrapped the whole entry in a div with the class "entry". This means I can use descendant selectors to style the other elements in the block qithout needing to add additional classes. The only classes I've added are the permalink classes on the various permalinks - these will be used in a moment. Note also that the '#' signs in the permalinks have a span tag around them. The reason for this will become apparent in a moment. The table used for the header has been replaced with a structural h2 tag. Header tags should be applied in order, with the most important header on the page using h1 and the other headers being used for sub headers, sub-sub headers and so on. I'm assuming that h1 would be used for the site title (or logo) so I'm using h2 in this example.&lt;/p&gt;

&lt;p&gt;The unstyled HTML can be seen &lt;a href="https://static.simonwillison.net/static/2003/scripting/stripped.html"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Now let's style it with some &lt;acronym title="Cascading Style Sheets"&gt;CSS&lt;/acronym&gt;. First up, Scripting.com's main layout table is 400 pixels wide. We can emulate that by applying a width to our &amp;lt;div&amp;gt;:&lt;/p&gt;

&lt;pre&gt;&lt;code class="css"&gt;div.entry {
  width: 400px;
}&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Now let's concentrate on the header. The date header on Scripting.com has a black background with white text. The text is bold, and is displayed at the same size as the body text of the rest of the site. In &lt;acronym title="Cascading Style Sheets"&gt;CSS&lt;/acronym&gt;, relative sizes can be specified using the em unit. 1em means 1 times the current text size, so we'll set the font-size to 1em. Finally, the header is padded with about 3 pixels on every side. Here's the &lt;acronym title="Cascading Style Sheets"&gt;CSS&lt;/acronym&gt;:&lt;/p&gt;

&lt;pre&gt;&lt;code class="css"&gt;h2 {
  background-color: black;
  color: white;
  font-size: 1em;
  font-weight: bold;
  padding: 3px;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;See the result &lt;a href="https://static.simonwillison.net/static/2003/scripting/header1.html" title="First styles applied to the header"&gt;here&lt;/a&gt;. So far, so good - but what about the funky permalink? It's an image, and it appears over on the right. Normally this would be a sign that we need a table, but we can achieve the same effect in &lt;acronym title="Cascading Style Sheets"&gt;CSS&lt;/acronym&gt; using the float property. Floats are actually one of the hardest properties to fully understand, but if you've ever used the align attribute on an image you should have a good idea of what they do. We will use &lt;code class="css"&gt;float: right&lt;/code&gt; on the permalink to cause it to shfit as far right as possible, appearing next to the main header text.&lt;/p&gt;

&lt;pre&gt;&lt;code class="css"&gt;
h2 a.permalink {
  float: right;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;But what about the image? Here's where things get tricky. We're going to use a technique called the &lt;a href="http://www.stopdesign.com/log/default.asp?date=20030314" title="More on Background-Image, I"&gt;Fahrner Image Replacement&lt;/a&gt;. This is what the extra spans are for - we can apply a background image to the a element, then make the contents of the span invisible using &lt;code class="css"&gt;display: none&lt;/code&gt;.&lt;/p&gt;

&lt;pre&gt;&lt;code class="css"&gt;h2 a.permalink {
  float: right;
  width: 12px;
  height: 15px;
  background-image: url("dailyLinkIcon.gif");
}
h2 a.permalink span {
  display: none;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;And &lt;a href="https://static.simonwillison.net/static/2003/scripting/header2.html" title="The completed header"&gt;here's the result&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;That's the header finished - now for the paragraphs. The first thing to notice is that they are indented approximately 15 pixels on the left hand side. This can be easily emulated in &lt;acronym title="Cascading Style Sheets"&gt;CSS&lt;/acronym&gt; using either a margin or padding - I'll use padding, but margin would work just fine as well.&lt;/p&gt;

&lt;pre&gt;&lt;code class="css"&gt;div.entry p {
  padding-left: 15px;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;We're nearly finished - all that's left to do now is the permalinks at the end of each paragraph. We will use  &lt;acronym title="Fahrner Image Replacement"&gt;FIR&lt;/acronym&gt; again, but this time the background image we are using is far smaller than the # sign it is replacing so we can take a slightly different approach:&lt;/p&gt;

&lt;pre&gt;&lt;code class="css"&gt;div.entry p a.permalink {
  background: #fff url("sharpPermaLink.gif") no-repeat center center;
  text-decoration: none;
}
div.entry p a.permalink span {
  visibility: hidden;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;This time the permalink is made invisible using the visiblility property rather than being removed entirely - that way we don't have to worry about adding a width or height to the link. The background image is placed using a shorthand property which allows all of the background properties to be specified at once - it should be relatively clear what the property does.&lt;/p&gt;

&lt;p&gt;The end result &lt;a href="https://static.simonwillison.net/static/2003/scripting/finished.html" title="Scripting.com entries with CSS"&gt;can be seen here&lt;/a&gt; - viewed in a standards compliant browser (I tried it in Firebird, IE 5 and Opera 7) I think you'll agree it's an almost exact replica of the original, but with a great deal less markup. Times that saving by several dozen entries on a page and it really starts to add up.&lt;/p&gt;

&lt;p&gt;Final note: this entry comes with apologies to Dave Winer of scripting.com, who has not been consulted prior to the publication of the article.&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/css"&gt;css&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/cssaintrocketscience"&gt;cssaintrocketscience&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/dave-winer"&gt;dave-winer&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="css"/><category term="cssaintrocketscience"/><category term="dave-winer"/></entry><entry><title>Tim Bray on RSS</title><link href="https://simonwillison.net/2003/Apr/22/timBrayOnRSS/#atom-tag" rel="alternate"/><published>2003-04-22T19:28:10+00:00</published><updated>2003-04-22T19:28:10+00:00</updated><id>https://simonwillison.net/2003/Apr/22/timBrayOnRSS/#atom-tag</id><summary type="html">
    &lt;p&gt;Tim Bray: &lt;a href="http://www.tbray.org/ongoing/When/200x/2003/04/22/RSS-Problems"&gt;RSS Needs Fixing&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote cite="http://www.tbray.org/ongoing/When/200x/2003/04/22/RSS-Problems"&gt;&lt;p&gt;
Because, boys and girls, RSS is no longer a science experiment, it's becoming an important part of the infrastructure, which means that a lot of programmmers are going to get the assignment of generating and parsing it, and they need better instructions.
&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;Tim's main problems are with escaped &lt;acronym title="HyperText Markup Language"&gt;HTML&lt;/acronym&gt; in the &lt;code&gt;&amp;lt;description&amp;gt;&lt;/code&gt; element and the lack of support in &lt;acronym title="Really Simple Syndication"&gt;RSS&lt;/acronym&gt; for relative &lt;acronym title="Uniform Resource Indicator"&gt;URI&lt;/acronym&gt; references. Tim says double-escaping of entities is "stupid", but it seems to me to be a fairly logical extension of escaped &lt;acronym title="HyperText Markup Language"&gt;HTML&lt;/acronym&gt;. Of course, escaped &lt;acronym title="HyperText Markup Language"&gt;HTML&lt;/acronym&gt; itself is probably the single ugliest thing about the current &lt;acronym title="Really Simple Syndication"&gt;RSS&lt;/acronym&gt; spec but there are good practical reasons for it, and if I've learnt anything about Dave Winer over the past few days it's that he prefers practical solutions to theoretical ones.&lt;/p&gt;

&lt;p&gt;I've calmed down a bit from my &lt;a href="/2003/Apr/04/lettingOffSomeSteam/" title="Letting off some steam"&gt;RSS is too complicated&lt;/a&gt; rant of a few weeks ago. I still think there is a huge challenge facing implementors of tools that consume &lt;acronym title="Really Simple Syndication"&gt;RSS&lt;/acronym&gt;, but when you compare that to the challenge of constructing a modern web browser it really isn't such a big deal. The biggest problem is probably keeping up with the myriad of versions, extensions and proposed extensions to the current standards.&lt;/p&gt;

&lt;p&gt;Sam Ruby has &lt;a href="http://www.intertwingly.net/blog/2003/04/22/" title="Intertwingly: Tue, 22 Apr 2003"&gt;plenty of RSS stuff&lt;/a&gt; today as well.&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/rss"&gt;rss&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/tim-bray"&gt;tim-bray&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="dave-winer"/><category term="rss"/><category term="tim-bray"/></entry><entry><title>Wiki Wiki Blogroll</title><link href="https://simonwillison.net/2003/Apr/21/wikiwikiBlogroll/#atom-tag" rel="alternate"/><published>2003-04-21T23:49:21+00:00</published><updated>2003-04-21T23:49:21+00:00</updated><id>https://simonwillison.net/2003/Apr/21/wikiwikiBlogroll/#atom-tag</id><summary type="html">
    &lt;p&gt;Dave Winer has &lt;a href="http://scriptingnews.userland.com/2003/04/21#lbd794384ceb3b7f979b2248d228b924b" title="Scripting News, 21st April 2003"&gt;launched&lt;/a&gt; an experimental &lt;a href="http://blogs.law.harvard.edu/crimson1/blogroll/" title="Blogroll Editor"&gt;"open" blogroll&lt;/a&gt;. It looks a bit too open to abuse for my liking (Wikis are protected to a certain extent by their revision historys) but the interface for changing the order of entries is one of the most elegant non-javascript solutions I've seen.&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/dave-winer"&gt;dave-winer&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="dave-winer"/></entry><entry><title>Flamin' CSS</title><link href="https://simonwillison.net/2003/Apr/20/flaminCSS/#atom-tag" rel="alternate"/><published>2003-04-20T17:27:32+00:00</published><updated>2003-04-20T17:27:32+00:00</updated><id>https://simonwillison.net/2003/Apr/20/flaminCSS/#atom-tag</id><summary type="html">
    &lt;p&gt;Dave Winer, in a &lt;a href="http://scriptingnews.userland.com/2003/04/18#When:4:01:26AM" title="Scripting News Archive"&gt;follow up&lt;/a&gt; to his recent &lt;a href="http://blogs.law.harvard.edu/crimson1/comments?u=crimson1&amp;amp;p=44&amp;amp;link=http%3A%2F%2Fblogs.law.harvard.edu%2Fcrimson1%2F2003%2F04%2F17%23a44" title="Comments in response to &amp;apos;This is simple, and it does what I want&amp;apos;"&gt;CSS problems&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote cite="http://scriptingnews.userland.com/2003/04/18#When:4:01:26AM"&gt;&lt;p&gt;
I used to work reasonably well with designers until CSS came along. Now my writing is supposed to be a soldier in the fight for Web "standards." Help. My work has to look great in MSIE, and I can't wait for the other browsers to fix their bugs. So I'm going to use paragraphs and breaks and old unbuggy stuff like that where I need to.
&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;Mark Pilgrim &lt;a href="http://diveintomark.org/archives/2003/04/18/enough_already.html" title="Enough already"&gt;responds&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote cite="http://diveintomark.org/archives/2003/04/18/enough_already.html"&gt;&lt;p&gt;
I used to work reasonably well with Dave Winer until the RSS validator came along. Now my feed is supposed to be a soldier in the fight for "validation" and "standards". Help. My syndicated feed has to look great in NetNewsWire (according to my site statistics, it has more than 4 times the market share of Radio), and I can’t wait for the other newsreaders to fix their bugs. So I’m going to skip required elements and use invalid XML whenever it suits me, and to hell with the validator, and to hell with these newfangled "standards".
&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;Jeffrey Zeldman offers some &lt;a href="http://www.zeldman.com/daily/0303a.shtml#csswiner" title="Winer and CSS: enough already"&gt;solid arguments&lt;/a&gt; against tag soup:&lt;/p&gt;

&lt;blockquote cite="http://www.zeldman.com/daily/0303a.shtml#csswiner"&gt;&lt;p&gt;
Over the past two years, Mr Winer has repeatedly complained about CSS and structural, semantic markup, and has even asked what is wrong with tag soup. As one who sees the web as a vehicle for writing, Mr Winer should know instinctively what is wrong with tag soup. Tag soup bloats web pages, slowing their delivery for all users and especially penalizing dialup users. Tag soup corrupts data by yoking it to nonstandard formatting instructions. These formatting instructions work in some environments but fail in others. For instance, they get in the way when trying to deliver content to text-oriented devices with small view ports, such as Palm Pilots and web-enabled cell phones. Why should the users of these devices be forced to download 40K of HTML formatting instructions that will not work for them? And then have to download 40K more when they link to a new page? And 40 more on the next?
&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;Those are the key posts. The resulting flame war can mostly be found &lt;a href="http://www.intertwingly.net/blog/1345.html"&gt;here&lt;/a&gt; (along with trackbacks to pretty much every other bit of blog coverage).&lt;/p&gt;

&lt;p&gt;Meanwhile, Sterling Hughes poses &lt;a href="http://www.edwardbear.org/blog/archives/000162.html" title="View Source"&gt;a valid point&lt;/a&gt; in favour of presentational markup in response to &lt;a href="http://www.intertwingly.net/blog/1346.html" title="View source"&gt;Sam Ruby&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote cite="http://www.edwardbear.org/blog/archives/000162.html"&gt;&lt;p&gt;
Your site [code] still is signifigantly harder to read, at least for me. I'm constantly cross referencing - HTML to CSS, HTML to CSS, HTML to CSS, HTML to ... When you dissassociate style information, I contend that its really not about the humans editing the file anymore. Its about robots understanding the file. This point is made even clearer by XHTML 2.0, where they remove the style attribute.
&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;This is certainly a problem with CSS layouts - their maintainability can suffer due to the separation of the presentation from the layout (itself the greatest advantage that CSS provides). Tools such as the &lt;a href="http://liorean.web-graphics.com/" title="liorean@web-graphics.com"&gt;ViewStyles&lt;/a&gt;, &lt;a href="http://www.squarefree.com/bookmarklets/webdevel.html" title="Web Development Bookmarklets"&gt;ancestors&lt;/a&gt; and &lt;a href="http://www.web-graphics.com/mtarchive/000300.php" title="CSS Bookmarklet - Show divs and spans"&gt;ShowDivs&lt;/a&gt; bookmarklets certainly make this easier but to my knowledge no one has written a bookmarklet that shows the inherited styles for the currently selected element - at least not yet. Pixy's &lt;a href="http://www.web-graphics.com/mtarchive/000817.php"&gt;List Computed Styles&lt;/a&gt; comes close, but shows styles for every element in the document all in one big window.&lt;/p&gt;

&lt;p&gt;So Dave dislikes &lt;acronym title="Cascading Style Sheets"&gt;CSS&lt;/acronym&gt; because support is buggy, while Sterling sees it as adding extra complexity. Buggy suport is pretty much a solved problem now, at least for most simple layouts - the &lt;a href="http://css-discuss.incutio.com/"&gt;CSS-Discuss Wiki&lt;/a&gt; is accumulating information on how to defeat bugs at a very decent rate and any problems not solved on there are certain to be understood by the friendly inhabitants of the &lt;a href="http://www.css-discuss.org/"&gt;CSS-Discuss mailing list&lt;/a&gt;. As for the extra complexity argument, laying out web sites with &lt;acronym title="HyperTextMarkup Language"&gt;HTML&lt;/acronym&gt; has &lt;em&gt;always&lt;/em&gt; been complicated - take a look at any site that uses nested tables to see what I mean.&lt;/p&gt;

&lt;p&gt;In my experience, resistance to &lt;acronym title="Cascading Style Sheets"&gt;CSS&lt;/acronym&gt; seems to come mostly from people who have been creating table based layouts for years. This is unsurprsing - they are being told to throw out everything they have learnt and start with a completely clean slate. I think the real evidence that &lt;acronym title="Cascading Style Sheets"&gt;CSS&lt;/acronym&gt; is a less complex way of laying out pages comes from new developers; I recently taught my girlfriend to design pages (starting from no previous experience) and she took to &lt;acronym title="Cascading Style Sheets"&gt;CSS&lt;/acronym&gt; &lt;a href="http://www.natbat.co.uk/" title="NatBat.co.uk"&gt;like a duck to water&lt;/a&gt;.&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/css"&gt;css&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/dave-winer"&gt;dave-winer&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/jeffrey-zeldman"&gt;jeffrey-zeldman&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/mark-pilgrim"&gt;mark-pilgrim&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="css"/><category term="dave-winer"/><category term="jeffrey-zeldman"/><category term="mark-pilgrim"/></entry><entry><title>The slashdot effect</title><link href="https://simonwillison.net/2003/Feb/5/slashdotEffect/#atom-tag" rel="alternate"/><published>2003-02-05T23:43:01+00:00</published><updated>2003-02-05T23:43:01+00:00</updated><id>https://simonwillison.net/2003/Feb/5/slashdotEffect/#atom-tag</id><summary type="html">
    &lt;p&gt;Dave Winer &lt;a href="http://scriptingnews.userland.com/backissues/2003/02/04#When:2:49:44PM" title="Scripting News: Tuesday, February 04, 2003"&gt;asks&lt;/a&gt; why Joel Spolsky gets much more traffic when slashdotted than UserLand's hosted sites tend to. Joel &lt;a href="http://www.joelonsoftware.com/news/20030205.html" title="Joel on Software: Wednesday, February 5, 2003"&gt;explains&lt;/a&gt; (it's all down to network effects) and mpt &lt;a href="http://mpt.phrasewise.com/2003/02/05#a456" title="Variations in the Slashdot Effect"&gt;kicks in a few ideas&lt;/a&gt; as well. &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/joel-spolsky"&gt;joel-spolsky&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/slashdot"&gt;slashdot&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="dave-winer"/><category term="joel-spolsky"/><category term="slashdot"/></entry><entry><title>Weblogs table as an ordered list</title><link href="https://simonwillison.net/2003/Jan/28/weblogsTableAsAnOrderedList/#atom-tag" rel="alternate"/><published>2003-01-28T02:34:46+00:00</published><updated>2003-01-28T02:34:46+00:00</updated><id>https://simonwillison.net/2003/Jan/28/weblogsTableAsAnOrderedList/#atom-tag</id><summary type="html">
    &lt;p&gt;&lt;a href="http://scriptingnews.userland.com/backissues/2003/01/27#When:1:14:17PM"&gt;Dave Winer&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote cite="http://scriptingnews.userland.com/backissues/2003/01/27#When:1:14:17PM"&gt;&lt;p&gt;
A question for CSS design gurus. What's the best you can do with a table that has three columns like the one on &lt;a href="http://www.weblogs.com/"&gt;Weblogs.Com&lt;/a&gt;. Let's see an example. I'd like the page to look good and load fast. Postscript: No one seems to understand -- I want to do weblogs.com without a table. Column 1 is the number, column 2 is the name of the weblog. Column 3 is the time it last updated. Look at the page.
&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;At first glance this seems an odd request - from a semantic point of view, the data on Weblogs.com is tabular in nature and would seem like a fine place for a table. I imagine Dave's request relates to performance - I don't know if modern browsers still refuse to render tables until they have loaded all of the content but if that is the case then the Weblogs page could be pretty slow on a narrow-band connection. In any case, the data on the page could also be interpreted as an ordered list. I can never resist a challenge so I &lt;a href="http://simon.incutio.com/css/demos/weblogs-list.html" title="Weblogs.com Table as a CSS Styled List"&gt;had a go&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I've tested it on Phoenix 0.5 and &lt;acronym title="Internet Explorer"&gt;IE&lt;/acronym&gt; 6 on the PC and it worked fine. However, I would be surprised if it worked flawlessly on all modern browsers as it makes heavy use of an absolutely positioned element inside a relatively positioned element. As a result, the data is probably best left as a (perfectly semantically valid) table.&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/css"&gt;css&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/dave-winer"&gt;dave-winer&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="css"/><category term="dave-winer"/></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>A global conversation</title><link href="https://simonwillison.net/2003/Jan/19/aGlobalConversation/#atom-tag" rel="alternate"/><published>2003-01-19T22:26:40+00:00</published><updated>2003-01-19T22:26:40+00:00</updated><id>https://simonwillison.net/2003/Jan/19/aGlobalConversation/#atom-tag</id><summary type="html">
    &lt;p&gt;&lt;a href="http://scriptingnews.userland.com/backissues/2003/01/19#When:10:50:42AM" title="Scripting News: Sunday, January 19, 2003"&gt;Dave Winer&lt;/a&gt; on TrackBacks and push backs (and presumably &lt;a href="http://www.hixie.ch/specs/pingback/pingback"&gt;PingBack&lt;/a&gt; as well):&lt;/p&gt;

&lt;blockquote cite="http://scriptingnews.userland.com/backissues/2003/01/19#When:10:50:42AM"&gt;&lt;p&gt;
I'm old school. I think the cool thing about weblogs is that they are not discussion groups or mail lists. If I want to know what all the people are saying there are ways to do that, but very often I'm content to read email and a few weblogs that I trust. Personally I don't think there's gold in them thar hills, but of course I've been wrong before.
&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;I think Dave has missed the boat on this one by a long way. Just the other day I realised that weblogs (or at least the one's I read) are essentially a huge global conversation. Anyone can join in, but the price of entry is having your own blog and something interesting to say. With those two pre-requisites the social network of the blogosphere does the rest - people will see what you have to say via random browsing, links on other blogs, TrackBack return links and so forth and before you know it your (useful) opinion will be being read by people who normally you wouldn't communicate with in your entire lifetime.&lt;/p&gt;

&lt;p&gt;Mark Pilgrim knows this, and his &lt;a href="http://diveintomark.org/projects/recommended_reading/"&gt;Recommended Reading&lt;/a&gt; and &lt;a href="http://diveintomark.org/archives/2002/04/20.html#automatic_linkbacks"&gt;Automatic Linkback&lt;/a&gt; tools provide him with an excellent way of participating in the global conversation. Dave Winer, as a contrast, appears to treat his blog as read-only - no comments, no trackbacks. There's nothing wrong with this (how someone runs their blog is a very personal thing) but I can't help but think that by doing so Dave is missing out on a truly remarkable example of the two way web in action.&lt;/p&gt;

&lt;p&gt;So that's my rant. Unfortunately, seeing as I'm unlikely to feature on Dave's "few weblogs" that he trusts the chances are he'll never read it. Çe la vie.&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/pingback"&gt;pingback&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/trackback"&gt;trackback&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="dave-winer"/><category term="pingback"/><category term="trackback"/></entry><entry><title>Dave on tag soup</title><link href="https://simonwillison.net/2002/Oct/12/daveOnTagSoup/#atom-tag" rel="alternate"/><published>2002-10-12T22:14:38+00:00</published><updated>2002-10-12T22:14:38+00:00</updated><id>https://simonwillison.net/2002/Oct/12/daveOnTagSoup/#atom-tag</id><summary type="html">
    &lt;p&gt;Dave Winer: &lt;a href="http://scriptingnews.userland.com/whatIsTagSoup"&gt;What is Tag Soup?&lt;/a&gt;&lt;/p&gt;

&lt;blockquote cite="http://scriptingnews.userland.com/whatIsTagSoup"&gt;
&lt;p&gt;They've already lost the argument. The Web is tag soup. People use blockquotes to indent. Even though the REST folk argue that it's anti-Web to do RPC, people do RPC anyway. There's a never-ending list of complaints, but they can be resolved. That's why I'm writing this little essaylet.&lt;/p&gt;

&lt;p&gt;Sometimes you invent something thinking you know how it's going to be used, and the world surprises you and uses it for something else. It's happened to me. I designed my first outliners to be "idea processors." To make a long story short, more people used outliners to create presentations. Eventually I tired of being right and wanted to make money, so we developed the idea, people loved it and we made our shareholders rich, and everyone lived happily ever after.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I think Dave's missed some important details on this one. Firstly, just because something can be used for a particular purpose does not make it the right tool for the job - in the case of HTML blockquotes CSS provides a far superior method of achieving indentation without having to add meaningless code to the site's markup. Dave is right in saying things often end up serving a different purpose to that for which they were intended but that doesn't necessarily make it a good idea. It sounds like Dave's outliners were a great tool for presentations without meaning to be - blockquote is &lt;em&gt;not&lt;/em&gt; a great tool for indenting; it gives you no control over how large the indent will be and doesn't even guarantee an indent in non-mainstream browsers.&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/html"&gt;html&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="dave-winer"/><category term="html"/></entry><entry><title>Pingback coverage</title><link href="https://simonwillison.net/2002/Sep/25/pingbackCoverage/#atom-tag" rel="alternate"/><published>2002-09-25T12:54:44+00:00</published><updated>2002-09-25T12:54:44+00:00</updated><id>https://simonwillison.net/2002/Sep/25/pingbackCoverage/#atom-tag</id><summary type="html">
    &lt;p&gt;The Pingback 1.0 specification is getting some serious attention. &lt;a href="http://diveintomark.org/archives/2002/09/23.html#now_heavily_medicated" title="Now heavily medicated"&gt;Mark Pilgrim&lt;/a&gt; and &lt;a href="http://scriptingnews.userland.com/backissues/2002/09/24#When:8:14:24PM" title="Form opinion"&gt;Dave Winer&lt;/a&gt; have linked to it. Ben Trott (co-author of Moveable Type and creator of TrackBack, the system that inspired Pingback) has &lt;a href="http://www.stupidfool.org/archives/2002/09/000211.shtml" title="Pingback"&gt;objected&lt;/a&gt; to Hixie's &lt;a href="http://ln.hixie.ch/?start=1032794857&amp;amp;count=1" title="Pingback 1.0"&gt;suggestion&lt;/a&gt; that Pingback is more transparent than TrackBack, claiming that TrackBack could be made just as transparent by the right blog tools. Ben &lt;a href="http://www.stupidfool.org/archives/2002/09/000212.shtml" title="More on PingBack and Transparency"&gt;blogged&lt;/a&gt; some further thoughts which lead to the following comment by Phil Ringnalda:&lt;/p&gt;

&lt;blockquote cite="http://www.stupidfool.org/archives/2002/09/000212.shtml"&gt;&lt;p&gt;I've avoided saying anything about PingBack until now, since I like and respect the people who've developed it, but it is *not* TrackBack. When you send a TrackBack ping, you are saying "I responded to this, and I think that your readers would also like to read what I said." You are leaving a remote comment. When you send a PingBack ping, you are saying "I linked to you", nothing more. It's a "show referrers" script that filters out non-weblog referrers, a way to avoid having to click your own links to be sure you send a referrer. It is *not* TrackBack.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;This is an interesting perspective, but I can't agree with it completely. Firstly, Pingbacks are meant to be sent by blogging tools. If you have blogged a link to someone else's entry you are linking to them for a purpose (which is almost certainly some form of comment on their entry) - this is why my Pingback implementation grabs an extract of their page from the text surrounding the link.&lt;/p&gt;

&lt;p&gt;michel v has some &lt;a href="http://tidakada.com/archives/p/1876/more/1"&gt;further thoughts&lt;/a&gt; on the differences between Pingback and TrackBack.&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/ben-trott"&gt;ben-trott&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/dave-winer"&gt;dave-winer&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/hixie"&gt;hixie&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/phil-ringnalda"&gt;phil-ringnalda&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/pingback"&gt;pingback&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="ben-trott"/><category term="dave-winer"/><category term="hixie"/><category term="mark-pilgrim"/><category term="phil-ringnalda"/><category term="pingback"/></entry><entry><title>RSS2 modules</title><link href="https://simonwillison.net/2002/Sep/18/rss2modules/#atom-tag" rel="alternate"/><published>2002-09-18T13:04:09+00:00</published><updated>2002-09-18T13:04:09+00:00</updated><id>https://simonwillison.net/2002/Sep/18/rss2modules/#atom-tag</id><summary type="html">
    &lt;p&gt;It seems RSS 2.0 has the capability to support modules (I was under the false impression that this ability was restricted to RDF modules in the rival RSS 1.0 specification). Following a post by Mark Pilgrim on &lt;a href="http://diveintomark.org/archives/2002/09/17.html#blink_and_youll_miss_it" title="Blink and you’ll miss it"&gt;B-linking&lt;/a&gt; (the blogging equivalent of a B-movie) Dave Winer has released a draft of &lt;a href="http://backend.userland.com/blogChannelModule" title="blogChannel RSS module"&gt;blogChannel&lt;/a&gt;, the first ever RSS 2.0 module.&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/mark-pilgrim"&gt;mark-pilgrim&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/rss"&gt;rss&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="dave-winer"/><category term="mark-pilgrim"/><category term="rss"/></entry><entry><title>Arouse your PC</title><link href="https://simonwillison.net/2002/Sep/12/arouseYourPC/#atom-tag" rel="alternate"/><published>2002-09-12T23:45:08+00:00</published><updated>2002-09-12T23:45:08+00:00</updated><id>https://simonwillison.net/2002/Sep/12/arouseYourPC/#atom-tag</id><summary type="html">
    &lt;p&gt;&lt;a href="http://scriptingnews.userland.com/backissues/2002/09/12#romanticWeb"&gt;Dave Winer&lt;/a&gt;: &lt;q cite="http://scriptingnews.userland.com/backissues/2002/09/12#romanticWeb"&gt;Why be Semantic when you can be Romantic?&lt;/q&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.disobey.com/dnn/2002/09/index.shtml#001375"&gt;Morbus Iff&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote cite="http://www.disobey.com/dnn/2002/09/index.shtml#001375"&gt;&lt;p&gt;
Well, buddy ol' pal, the pornoWeb already exists. The Semantic Web is all about making computers aroused, not humans. When computers are aroused, they're much happier pleasing the idiot desires of us fleshlings. So, really, the Semantic Web is about survival and prevention - I'd much rather have happy, complacent computers than angry robots plotting to overthrow the human regime.
&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;I'm pretty sure it's bad manners to quote an entire post like that but Morbus's comment just didn't seem to work if I broke it up any smaller :) To make up for it, here's an extra plug for the &lt;a href="http://www.disobey.com/dnn/" title="it rocks"&gt;Disobey Nonsense Network&lt;/a&gt; (and a plug for &lt;a href="http://www.disobey.com/amphetadesk/" title="it rocks too"&gt;AmphetaDesk&lt;/a&gt;as well, a very cool desktop RSS aggregator).&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/morbusiff"&gt;morbusiff&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/semantic"&gt;semantic&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="dave-winer"/><category term="morbusiff"/><category term="semantic"/></entry><entry><title>Wining and Dining</title><link href="https://simonwillison.net/2002/Sep/12/winingAndDining/#atom-tag" rel="alternate"/><published>2002-09-12T01:52:00+00:00</published><updated>2002-09-12T01:52:00+00:00</updated><id>https://simonwillison.net/2002/Sep/12/winingAndDining/#atom-tag</id><summary type="html">
    &lt;p&gt;Kevin Burton: &lt;a href="http://www.peerfear.org/rss/permalink/1031728134.shtml"&gt;My Dinner with Dave Winer&lt;/a&gt;. Something tells me this &lt;em&gt;won't&lt;/em&gt; be linked from Scripting News.&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/kevin-burton"&gt;kevin-burton&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="dave-winer"/><category term="kevin-burton"/></entry><entry><title>Joel on platforms</title><link href="https://simonwillison.net/2002/Sep/1/joelOnPlatforms/#atom-tag" rel="alternate"/><published>2002-09-01T12:44:19+00:00</published><updated>2002-09-01T12:44:19+00:00</updated><id>https://simonwillison.net/2002/Sep/1/joelOnPlatforms/#atom-tag</id><summary type="html">
    &lt;p&gt;Joel Spolsky: &lt;a href="http://www.joelonsoftware.com/articles/Platforms.html" title="Joel on Software - Platforms"&gt;Platforms&lt;/a&gt;. Plenty of food for thought. Dave Winer &lt;a href="http://scriptingnews.userland.com/backissues/2002/08/31#When:7:59:09PM" title="To Joel..."&gt;responds&lt;/a&gt; with a pointer to his 1996 article &lt;a href="http://davenet.userland.com/1996/04/09/theperfectparent"&gt;The Perfect Parent&lt;/a&gt; which touches on the reasons Groove can't count on making it as a platform.&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/joel-spolsky"&gt;joel-spolsky&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="dave-winer"/><category term="joel-spolsky"/></entry><entry><title>The Lessig debate</title><link href="https://simonwillison.net/2002/Aug/18/theLessigDebate/#atom-tag" rel="alternate"/><published>2002-08-18T11:08:27+00:00</published><updated>2002-08-18T11:08:27+00:00</updated><id>https://simonwillison.net/2002/Aug/18/theLessigDebate/#atom-tag</id><summary type="html">
    &lt;p&gt;I watched Laurence Lessig's &lt;acronym title="O&amp;apos;Reilly Open Source Convention"&gt;OSCON&lt;/acronym&gt; keynote the other day (an 8.4MB &lt;a href="http://randomfoo.net/oscon/2002/lessig/"&gt;Flash file&lt;/a&gt; courtesy of &lt;a href="http://randomfoo.net/"&gt;Leonard Lin&lt;/a&gt;). A transcript of the session is &lt;a href="http://www.oreillynet.com/pub/a/policy/2002/08/15/lessig.html" title="Lawrence Lessig Keynote from OSCON 2002 "&gt;also available&lt;/a&gt;. It was an excellent presentation and really opened my eyes to the issues facing intellectual property in the United States. It also appears to have raised some hackles - Dave Winer &lt;a href="http://scriptingnews.userland.com/backissues/2002/08/17#When:9:02:51AM"&gt;took offence&lt;/a&gt; to the implication that developers had not done anything about the problem, and Doc Searls has &lt;a href="http://doc.weblogs.com/2002/08/18#whoDoesWhat" title="Who does what"&gt;responded&lt;/a&gt; to Dave's criticism with some interesting background information on Lessig.&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/docsearls"&gt;docsearls&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/larry-lessig"&gt;larry-lessig&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/leonard-lin"&gt;leonard-lin&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="dave-winer"/><category term="docsearls"/><category term="larry-lessig"/><category term="leonard-lin"/></entry><entry><title>The Two Way Web</title><link href="https://simonwillison.net/2002/Jul/6/theTwoWayWeb/#atom-tag" rel="alternate"/><published>2002-07-06T22:14:01+00:00</published><updated>2002-07-06T22:14:01+00:00</updated><id>https://simonwillison.net/2002/Jul/6/theTwoWayWeb/#atom-tag</id><summary type="html">
    &lt;p&gt;Dave Winer: &lt;a href="http://www.thetwowayweb.com/"&gt;The Two Way Web&lt;/a&gt;. &lt;q cite="http://www.thetwowayweb.com/directory/8"&gt;The Two-Way-Web is a vision for the Web as an easy writing and publishing environment&lt;/q&gt;. This is an old essay from March 2001 (I only found it today) which describes a vision of a web where content can be quickly and easily edited through a variety of tools, which communicate with content management systems using &lt;acronym title="eXtensible Markup Language - Remote Procedure Calling"&gt;XML-RPC&lt;/acronym&gt; and &lt;acronym title="Simple Object Access Protocol"&gt;SOAP&lt;/acronym&gt;. This is all stuff I've been thinking about recently, so it looks like I'm only a year and a half behind Dave ;)&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/soap"&gt;soap&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/xml-rpc"&gt;xml-rpc&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="dave-winer"/><category term="soap"/><category term="xml-rpc"/></entry><entry><title>Stupid Danish newspapers</title><link href="https://simonwillison.net/2002/Jul/5/stupidDanishNewspapers/#atom-tag" rel="alternate"/><published>2002-07-05T17:24:24+00:00</published><updated>2002-07-05T17:24:24+00:00</updated><id>https://simonwillison.net/2002/Jul/5/stupidDanishNewspapers/#atom-tag</id><summary type="html">
    &lt;p&gt;More deep linking stupidity (via &lt;a href="http://scriptingnews.userland.com/backissues/2002/07/05#When:9:03:22AM"&gt;Scripting News&lt;/a&gt;). A judge in Denmark has &lt;a href="http://www.newsbooster.com/?pg=lost&amp;amp;lan=eng"&gt;ruled in favour&lt;/a&gt; of a newspaper who took a search engine to court over "deep linking", despite the search engine's spider following the &lt;code&gt;robots.txt&lt;/code&gt; standard (it seems the newspaper didn't bother to implement a &lt;code&gt;robots.txt&lt;/code&gt; file). Dave Winer summed things up perfectly:&lt;/p&gt;
&lt;blockquote cite="http://www.newsbooster.com/?pg=lost&amp;amp;lan=eng"&gt;&lt;p&gt;BTW, deep linking is an oxymoron. There's only one kind of linking on the Web. Why would you ever point to the home page of a news oriented site.&lt;/p&gt;&lt;/blockquote&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/denmark"&gt;denmark&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/linking"&gt;linking&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/robots-txt"&gt;robots-txt&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/stupid"&gt;stupid&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="dave-winer"/><category term="denmark"/><category term="linking"/><category term="robots-txt"/><category term="stupid"/></entry></feed>