Bitworking - theories of software development

by Joe Gregorio

Back To The Rocking Horse

:: 2002-09-29T22:49:10-04:00:00

More discussion of the use of namespaces in RSS 2.0 ensued over the weekend. Scanning the blogs and groups it looks like Phil's Option #1 has the majority of the mind-share. This would allow the inclusion of namespaces thusly:


<rss version="2.0"  xmlns:foo="http://example.com/foo/">
<channel>
    <title>The Title</title>
    <foo:heading>A Heading</foo:heading>

But that does raise a question for me, if you're an RSS minimalist and just interested in the basic 'title', 'link', and 'description' and want to segregate all the other info into namespaced elements then why not use:


<rss version="0.91"  xmlns:foo="http://example.com/foo/">
<channel>
    <title>The Title</title>
    <foo:heading>A Heading</foo:heading>

That is, just step back to the original Netscape specification and start enhancing it from there using namespaces. The 0.91 spec is pretty nice and includes a bunch of restrictions that I've heard requested recently including the restriction of the size of the 'description' element and keeping it's content plain text. It also comes with a nice DTD that includes definitions for many of the most commonly used character entities, which is the most frequent problem I have seen in non-well-formed feeds.

This entry is Titled with apologies to Poison

news.google.com

:: 2002-09-29T00:47:42-04:00:00

Google is now beta testing http://news.google.com. Nice and clean, just what you'd expect from Google. Though, isn't this just DayPop for BigPubs?

RSS 2.0 and namespaces

:: 2002-09-29T00:24:48-04:00:00

Simon Fell has done some testing of namespace awareness of RSS aggregators. The current version of Aggie in CVS comes out smelling like a rose. Ziv Caspi outlines Aggie's method for success.

I like XSS

:: 2002-09-29T00:09:48-04:00:00

I like XSS.

More cool stuff with Aggie

:: 2002-09-27T16:17:36-04:00:00

Sean Slavin is porting Aggie over to be a browser based application. Can't wait for those screenshots!

To L1 and beyond

:: 2002-09-27T11:22:20-04:00:00

It was interesting to read in this MSNBC article, NASA plots a course for deep space, that much of the plan hinges on the placement of a spacestation at the L1 Lagrange point. Neat to see what was once considered a curiosity of orbital mechanics transformed into a key resource for their new plans.

Updated FOAF

:: 2002-09-26T15:34:10-04:00:00

Just updated my FOAF file to include Ziv Caspi. Also added a link to Eric Vitiello's FOAF file.

Itinerary

:: 2002-09-26T00:43:32-04:00:00

Theoretical Itinerary

7:10 AM Monday
Arrive in Chicago
8:30 AM Monday
Spend Monday setting up booth at tradeshow.
10:04 PM Tuesday
Return to Raleigh/Durham

Actual Itineray

4 AM
Awake for drive to RDU for 6 AM flight.
4:45 AM
Incredibly intrusive scan at airport. I was wanded twice, once on entering the gate area and a second time before getting on the plane. At first wanding the security guard spent a lot of effort explaining to me that my shoes set off the metal detector, thus I needed a wanding. He waved the wand near the ground to prove his point. Beep beep. Sent my shoes off for individual inspection. Wanded again, now shoeless, wand still goes off around my ankles. ( Resist urge smack guard on head and say, "Hello dufus, didya ever hear of steel re-inforced concrete?"). Finally get shoes and belt back and head to gate. At gate spend 2 minutes waiting for a guard to decide whether my one inch scissors that came with my travel sewing kit need to be confiscated. Common sense won the day and I was allowed to keep them. Board the plane not feeling very safe at all.
7:10 AM Monday
Arrive in Chicago
8-9
Spend one hour in rush-hour traffic driving the 18 miles from O'Hare into Chicago.
9-10
Only a fraction of the equipement sent to the show has arrived. Setup the piddling amount that has arrived. Sit on hands for what seems like hours for the rest of the stuff to arrive.
12-1
$10 for a chicken sandwich?
1-3
After many phone calls the rest of equipment and booth arrives.
3 PM - 4 PM
Setup booth and layout equipment
4PM -11 PM
We'll just refer to this as "Debugging."
11PM
Leave show floor. Don't feel so bad as we pass a couple of people going in.
11:30 PM
Supper at hotel restaurant, The Weber Grill. One pound N.Y. Strip Steak and an equally sized mound of garlic smashed potatoes, I top it off with the chocolate cake for dessert. My only excuse is that it had been close to 11 hours since I last ate.
12:30 AM
Sleep
9 AM Tuesday
Go back to show floor for final setup details.
10 AM-3PM
Keep equipement running, wander show floor, talk to potential customers. Alarmed that no-one seemed alarmed with me talking to potential customers.
3:00-3:30
Figure out route from convention center to airport using public transportation.
4 PM
Eat a very late lunch of Shrimp Tempura right down the street from the Chicago Board of Trade. Watch sporadic clusters of blue and green coated men swarm by the restaurant and disappear up the adjacent street.
5 PM
Arrive at O'Hare. Total transportation costs: $3.35. Security scans not nearly as obtrusive as RDU, though I did pre-emptively remove my shoes and belt and put them through the x-ray machine. I also moved the travel sewing kit into my checked luggage.
10:04 PM Tuesday
Return to Raleigh/Durham

FOAF

:: 2002-09-21T21:53:02-04:00:00

The meme of the week (okay, maybe just the meme-of-the-weekend, you know how quickly these things pass these days, call it meme-flation) is FOAF. Mark Pilgrim, as usual, explains it much better than I ever could so drop by his site and get the skinny. Here is my FOAF file.

Eric Vitiello Jr. has a relationship module for FOAF, just so you can put a finer point on your relationship with your FOAF-mates. The only thing it's missing is rel:miniMeOf :)

If enough people deploy FOAF then there could be an opportunity to build some cool intertwingly RDF goodness out of it. Maybe the community can come up with that concrete benefit of having RDF in RSS, and I can stop badgering poor Bill Kearney.

TiVo vs. GameCube

:: 2002-09-21T00:52:45-04:00:00

I didn't think it could happen but we finally reached the tipping point and our house is more popular with the neighborhood kids more for the TiVo than the GameCube. For my two older sons and their friends it's particularly important now that they are showing all new episodes of Dragonball Z.

Wow, that was fast.

:: 2002-09-21T00:39:32-04:00:00

Glad to see that Erin Clerico has not only backed off threatening Dave Johnson with lawsuits over Dave's choice of a name for his blogging tool, but publicly apologized for doing so. I think it's great that Dave stood his ground. I am also impressed with Erin's public apology, swallowing his pride and admitting he was wrong.

Would any other TLA smell as sweet?

:: 2002-09-18T23:27:49-04:00:00

The idea of a name change from RSS to something else is underway on [rss-dev]. Monstrous kudos to Bill Kearney for kicking off the discussion.

Lunch

:: 2002-09-18T21:19:30-04:00:00

This Tuesday was another RTP Bloggers lunch and as usual it was great. We added four new people bringing us up to twelve members. If this were the mid 90's we'd have filed for an IPO by now.

Blink Tag

:: 2002-09-17T15:56:18-04:00:00

Mark Pilgrim is stumping for the addition of a blink tag to the RSS 2.0 specification.

Aggie RC4 and RSS 2.0

:: 2002-09-17T09:31:01-04:00:00

Lucky users of Aggie RC4 will be glad to know that it supports the new RSS 2.0 format right out of the box, including support for content:encoded, which Jon Udell's blog is sporting right now.

Chicago

:: 2002-09-16T15:16:29-04:00:00

I am going to be in Chicago this coming Monday and Tueday. On the off chance I don't need to work like a mad dog for 36 hours straight, does anybody have suggestions for places to eat and things to see while I'm in the windy city?

Code Improvements

:: 2002-09-13T22:12:07-04:00:00

I have been spending a little time on Pamphlet, first converting from RSS 1.0 to 2.0 and then moving from an FTP based upstreaming model to a HTTP PUT based model. You know you're on the right track with code changes when you spend the majority of your time deleting code.

Sounds like a plan

:: 2002-09-12T16:02:13-04:00:00

Shelly Powers posted her A,B,Cs of RDF to which Ziv responds.

I do agree with Ziv's obervations about the advantages of out-of-band data and how RDF doesn't operate that way. I think it would have been better if RDF operated more like CSS, but then again, we all know what a CSS bigot I am. :) This does make me think that Sjoerd's tactic for getting RSS and RDF to co-exist may be more generally applicable than to just RSS feeds. I thought his idea was a good stop gap until more RDF tools were available, but now I think it could be a long term technique. The advantage of the idea can be seen in three cases.

  1. I could define a simple blogger-info-format in XML that contains information about the person, their favorite books, and all their cats info too. Now you can process this XML file with different XSL transformations to get different RDF files, one for FOAF, one for a book list, and a third for the cats. Now if an RDF vocabulary for the cats doesn't exists you still have that info and can just add the XSLT later when the CDT (Cat Description Taxonomy) is complete :). You can also apply an XSL transform to turn that XML file into HTML. Note that in all these cases the transformation is from general XML to a restricted subset of XML.
  2. Since I am producing valid XHTML on my site I don't actually need to produce a separate RSS file, I can just have an XSLT file that transforms my main page into RDF, say RSS 1.0.
  3. Say the RSS 1.0 group made a wee little mistake and their format ends up not being valid RDF, or say it doesn't quite mean what they intended when consumed by pure RDF tools. If the RDF were produced through a transformation then fixing the error would only be a matter of updating that XSLT file, while today it would be a large effort distributed across all the tools that generate RSS 1.0. (ok, maybe that was a vast oversimplification, but updating the XSLT would still be easier than the current situation.)

I like RDF. I like the promise of RDF. RDF that worked like CSS would be better. RDF via XSLT comes real close.

Dorothea Salo follows on with thoughts on vocabulary mixing in XML documents. Leigh Dodds isthinking along the same lines, also see here.

In the middle, in the middle, in the middle of the street.

:: 2002-09-11T16:18:42-04:00:00

With aplogies to TMBG.

With Sjoerd Visscher's XSLT file that converts RSS 2.0 to pure RDF it looks like we can have the best of both worlds. That is we can use the simpler RSS 2.0 format and still provide RDF for all those applications that consume it. The last peice of the puzzle is to expose both pieces to the world so that news aggregators and semantic web apps alike can find the correct information. The way to do that is to update how we all put link attributes in our HTML. Current practice is:


<link rel="alternate" type="application/rss+xml" title="RSS" href="http://scripting.com/rss.xml" />

Which requires two updates, one to change the RSS type back to application/xml since application/rss+xml isn't a valid mime type, and the other is to include the RDF link.


<link rel="alternate" type="application/xml" title="RSS" href="http://www.scripting.com/rss.xml" />
<link rel="alternate" type="application/rdf+xml" title="RDF" href="http://www.w3.org/2000/06/webd...ransform=Submit" />

Note, I have elided part of the URL for the RDF transformation to make the example more readable. The href="" component of the RDF link should be a full URL that transforms the RSS into RDF, in this case using Sjoerd's XSLT file and the W3C's XSLT service. Of course there are caveats, like the fact that application/rdf+xml isn't a valid mime type, but let's not split hairs.

The future will be drop-shipped

:: 2002-09-10T22:13:24-04:00:00

The whole family went to the mall a few weeks ago and after spending over $500 we walked out of the mall empty handed.

On the way in we walked by the Dell store, well not so much a store as a kiosk. Setup outside the food court sales reps demo'd PCs and busily rang up the orders via the Dell web site. It struck me what a sweet setup they had, no inventory, returns handled by the factory, and the kiosk only costs a fraction of what a traditional store front would cost.

Past the Dell kiosk was our Saturday afternoon destination, the Select Comfort store. They had a little coloring area and TV setup in the back of the store to keep the kids occupied while Lynne and I tried out all the mattresses. After waffling on getting the extra padding layer for ten minutes we laid down the plastic and they took our order. The boxes, we were told, would arrive by UPS in five to seven business days. Select Comfort, like the Dell store, carries no inventory. All their sales are drop-shipped, that is shipped directly from the factory to the customer, and just like Dell their sales staff uses the internet to enter the order into the company web site.

The internet was supposed to kill the mall, but instead it is transforming it. And before you think that there is some price barrier that an item has to cross before this inventory-less store could work, take a look at oki-ni. They have stores but no inventory, you go in, try on the clothes and shoes and then your order is entered onto their web site and the product drop-shipped to you. If it works for mattresses, PCs, and clothes is there anything this formula wouldn't work for? Is inventory-less storefronts the future of the mall. Will you love or hate going to Barnes&Noble just to browse, because they only keep one of each book on the shelves?

As we walked back to the car in the sweltering heat I, for one, was happy for the change, just knowing it would be the UPS guy and not me lugging those boxes up to my front door.

The SOAP of Syndication

:: 2002-09-10T13:41:59-04:00:00

Dave Winer responded to my message on [rss-dev] yesterday. After emailing a bit here is what he has to say.

Just walk away

:: 2002-09-09T22:21:18-04:00:00

On the rss-dev mailing list Chris Croome asked:

What do people think about Dave Winer's plan to issue RSS 2.0 tomorrow?

Is it just a matter of fixing the details as Ben Hammersley implies (I could add internationalisation to that list...) or is there a far bigger _fundamental_ problem with the 'benevolent dictator' appoach to the production of web standards?

Well, I hate to split semantic hairs, but RSS 0.9x and 2.0 are not web standards, they are proprietary formats of Userland. They were not developed in an open fashion, nor are they associated with any standards bodies. They are updated at one persons whim. They are not standards.

Now as far as the name RSS goes, that and the 0.9 spec were written by Netscape and then, ummm, taken over by Userland. Was that the right thing to do? Is that nice behaviour? It doesn't matter. Even if it did matter to someone that someone isn't you unless you work at Userland or Netscape, since the problem just ends up being a tradename/trademark/copyright dispute between Userland and Netscape. Just because Userland did that doesn't make it okay for everyone to charge in and grab the RSS name. Now usually companies will, after sheperding a format for a while, voluntarily turn over such formats to standards bodies to gain wider acceptance. Hell, even Microsoft has submitted WSDL to the W3C. Userland, as is their perogative, has decided not to do this. It damages the format but it is still their decision. So no, I don't care if Userland issues RSS 2.0 tomorrow, or RSS 3.0 next Thursday, or RSS 4.0 two years from last Tuesday.

For the very same reasons I also do not consider RSS 1.0 a legitimate web standard either. The rss-dev group took the name from Userland without permission and they are not associated with any standards group. Their claim to a 'standard' and the RSS name are just as tenuous as Userlands.

My suggestion, just walk away from the name. We need to pick another TLA, form a new working group, get associated with a standards body, and never look back. But the most important thing is to pick a new TLA, might I suggest Reader Documentation Format? ;-)

Obvious Utility

:: 2002-09-09T12:57:10-04:00:00

HTTP and HTML were obviously useful from day one.

On Dec. 12, 1991, the first Web server outside Europe went online at SLAC in Stanford, Calif. The next month, Berners-Lee demonstrated his Web application to more than 200 physicists at a conference in France. For his grand finale, he connected to the Stanford server and performed a search on the bibliographic database.

"People went home from this meeting telling their colleagues of a new way to access [the database]," Kunz says. "It was called the World Wide Web, and it was great."

The Stanford database is considered the Web's first "killer app" because it provided a compelling reason to use the new technology. [The Story So Far]

So a very small group of people were able to put together a "killer app" and show a compelling reason to use the new technology. I see the "obvious utility" in many technologies available today.

XML, SOAP, and RESTian Web Services are examples of technologies that I have looked at and immediately seen how I could implement them, and even more importantly, get a benefit from doing so.

A few years into my software career I had written enough text file parsers to make me sick. Every project I worked on seemed to introduce a new text file format completely incompatible with all the formats I had seen before. XML came along and presented a very nice solution to the problem. I'll repeat, XML solved a problem. It was simple enough that I could hand write a simple parser for it once and then from that point on be done with dealing with the 'syntax' of the file and could now get back to concentrating on the application.

The same holds true for SOAP and RESTian Web Services, I have a problem: How do I get data from system to system across TCP/IP in a platform independent way? Please realize that many of the systems I am working on are small and would not have the space to handle something like Corba. SOAP and RESTian Web Services are 'obvious' solutions to my problem. They are easy to understand and implement and provide an immediate benefit, I can go back to working on the application and stop wasting time mucking with connection technologies.

I do not have a problem for which RDF is a solution.

Bridge Building

:: 2002-09-07T23:21:54-04:00:00

With some gentle (ok, not so gentle) coaxing the residents of the rss-dev mailing list have started putting their considerable talents toward showing that a simplified RSS and RDF are compatible. Sean B. Palmer, inspired by Shelly Powers, has come up with a very slick formulation. I have modified his original example to contain the same data as Mark's example in an earlier post. This is valid RDF as Sean explains in his message to rss-dev.


<Channel xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
   xmlns="http://purl.org/rss/2.0/" 
    >
    <title>dive into mark</title>
    <link>http://diveintomark.org/</link>
    <description>A lot of effort went into making this effortless.</description>
    <items rdf:parseType="Collection" >
      <item  >
        <title>Troubleshooting with single-user mode</title>
        <link>http://diveintomark.org/archives/2002/09/04.html#tbl</link>
        <description>On any Mac OS X box, you can ...</description>
      </item>

      <item  >
        <title>First of all</title>
        <link>http://diveintomark.org/archives/2002/09/04.html#first</link>
        <description>Ian Hickson: ...</description>
      </item>
    </items>
</channel>

Trying to decide what to highlight as different in this example was tough. Note that there is no enclosing RSS or RDF element. The enclosing element has been dropped but a new 'items' element has been added to contain all the 'item's. Also note that I didn't highlight the namespace declarations since they are to be legal in Mark's example.

The last difference to note for the minimalists in the audience is that in the RSS 0.9x series at some point the 'link' element became optional, so if you really wanted to avoid duplicate information you could drop the 'link' element and just put the URL in the items 'rdf:about' attribute.

An unfortunate footnote to all this is that Shelly has decided to pull back from the process. I do not blame her as both sides of the 1.0/0.9x split have some members that are deeply entrenched and belligerent to the idea of a merge. Dealing with, or even just trying to ignore those people can be emotionally exhausting. Thank you Shelly for all your effort.

RSS 2.0 (continued)

:: 2002-09-06T15:18:29-04:00:00

There is still a lot of activity related to RSS 2.0, unfortunately it is rather spread around the internet. Here are some of the bits I have found, in no particular order:

RSS 2.0

:: 2002-09-05T11:23:42-04:00:00

The ideas for RSS 2.0 are flying fast and furious today. Mark has posted this example.


<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<!-- THIS IS A PROTOTYPE! RSS 2.0 IS NOT A FORMAL SPECIFICATION! -->
  <channel>
    <title>dive into mark</title>
    <link>http://diveintomark.org/</link>
    <description>A lot of effort went into making this effortless.</description>

    <item>
      <title>Troubleshooting with single-user mode</title>
      <link>http://diveintomark.org/archives/2002/09/04.html#tbl</link>
      <description>On any Mac OS X box, you can ...</description>
    </item>

    <item>
      <title>First of all</title>
      <link>http://diveintomark.org/archives/2002/09/04.html#first</link>
      <description>Ian Hickson: ...</description>
    </item>
</channel>
</rss>

My contribution is that with just some minor changes you can preserve the RDFness that is available with RSS 1.0 and still keep the simplicity:


<?xml version="1.0" encoding="utf-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
     xmlns="http://namespace.for/rss/2.0/">
<!-- THIS IS A PROTOTYPE! RSS 2.0 IS NOT A FORMAL SPECIFICATION! -->
  <channel  >
    <title>dive into mark</title>
    <link>http://diveintomark.org/</link>
    <description>A lot of effort went into making this effortless.</description>

    <items>
      <rdf:Bag>
        <rdf:li>
        <item  >
          <title>Troubleshooting with single-user mode</title>
          <link>http://diveintomark.org/archives/2002/09/04.html#tbl</link>
          <description>On any Mac OS X box, you can ...</description>
        </item>
        </rdf:li>

        <rdf:li>
        <item   >
          <title>First of all</title>
          <link>http://diveintomark.org/archives/2002/09/04.html#first</link>
          <description>Ian Hickson: ...</description>
        </item>
        </rdf:li>
      </rdf:Bag>
    </items>
</channel>
</rdf:RDF>

Updated: Added the rdf:li elements to make it valid RDF. Hmmm, it's not looking like minor changes anymore.

Learn by example, Learn by doing

:: 2002-09-05T09:59:28-04:00:00

I personally learn best when given a concrete example. That is why I was really happy to find a bunch of examples of how to convert RPC to REST on RESTwiki. Given that I already know how to do SOAP these examples are a great way to compare and contrast the two approaches. Paul Prescod also has an example of what UDDI would look like as a RESTian web service in his Second Generation Web Services article. Which leads me to the other way that I learn best, by doing. Armed with a little knowledge a lot of hubris I'm off to implement some RESTian web services.

For those of you who noticed that I have two 'best' ways of learning I offer you:

"Ooh, I liked that best too."
"You can't have two bests."
"Yes you can, they're equal bests."

Can you name that show?

How to convert RSS 1.0 into valid XHTML 1.1 using XSLT

:: 2002-09-04T10:25:19-04:00:00

For some reason I could not find an example of how to do this. It is easy to turn an RSS 1.0 file into HTML that any browser will accept. On the other hand I got tripped up on namespace handling when I tried to validate the output as XHTML 1.1. The biggest problem I had was that the RSS 1.0 namespaces tagged along into the HTML. I was looking for attributes of xsl:output to control it when it is controlled by the exclude-result-prefixes attribute of xsl:stylesheet. Here is the XSL file and the W3C shows that it produces validator output shows that is produces valid XHTML 1.1, at least when supplied with this example RSS file. Note that the link showing the validation report is taking the RSS and XSL files off bitworking.org and feeding them to the W3C XSLT Service and then feeding the output of that into the W3C HTML Validation Service. How very RESTian.

Spirit of Generosity

:: 2002-09-03T16:59:18-04:00:00

Morbus Iff has some comments on Dave Winers spirit of generosity. If you are curious this is the news article that Dave Winer is raging about, in which Ben Hammersley very clearly delineates the fact that he is talking about free news aggregators.

Slightly more accessible

:: 2002-09-02T00:06:40-04:00:00

I am slowly working through Mark's 30 days to a more accessible web site and as a consequence now have a spiffy new site search available on the navigation bar. I am using Google so you will have to endure the "Google Gap".

Architectural Principles of the World Wide Web Working Draft Published

:: 2002-09-01T23:27:07-04:00:00

The Architectural Principles of the World Wide Web Working Draft has been published, with heavy emphasis on the draft part, as it contains a very liberal dose of Issue:s and Editors Note:s. It's still a good read and in many respects a real eye opener, especially that some issues are still wide open.