Presenting...a presentation tool 
One of the things i wanted to do with opml is using the tool to organize my project work, i find it ideal for this, and wanted some way to make presentations for my outlines (this seems to be a frequent use of this technology)
In the past I used the nice S5 presentation system, which comes integrated with Plone and thought it was the perfect fit as a base for an opml presentation tool.
| | it is possible to build an s5 presentation using the xoxo outline format |
| | it is easy to translate an opml into xoxo presentation |
So i have done this:
| | An xsl is used to producea xoxo rendering of the opml file directly on the client |
| | the xsl adds also all the required tags: links to css files, javascript, mandatory div elements |
| | An s5Incremental attribute on the outlines drives the slide dynamics |
| | if it is set to 'true' the contained outlines |
| | The xsl can be added on top of the opml file |
| | There are some issues with the file extension and the browsers: the browsers need to know that a file is xml to apply the xsl so we should use the .xml extension or the server has to send the 'text/xml' mime-type |
I have also built a small tool with all the things needed to build and customize a presentation
| | download the tool from here |
| | unzip the archive in the OPML directory you will find |
| | a new tool in the "Guest Databases\apps\Tools" directory |
| | a directory lucaHacks in the OPML dir: here you will find the s5 dir which contains all the css and javascript files for s5 |
| | restart the OPML program, the new tool does some intialization: |
| | the presentation base url is set to your space on the hosting.opml.org host |
| | the s5 files are copied to your upstream directory |
| | the xsl file (personalized with the base url above) is written to the upstream directory |
| | Now you can start to publish your presentations: open an outline, choose Tools >> lucaHacks >> S5 presentation >> Export outline, save it on the upload directory and open it with the browser. |
Hacking OPML #1 
When building a tool it is sometimes useful to execute some initialization code upon install. In my lucaHacks tool i'm using this technique:
| | I have a boolean lucaHacksData.init.done which is false when the tool is installed |
| | The lucaHacksThread has code which checks the value of lucaHacksData.init.done: if it is false then the initialization code is executed |
| | The initialization code sets lucaHacksData.init.done to true upon termination |
| | If later i'd want to redo the initialization, all i have to do is set the boolean back to false |
This could also be done with a thread whose script sets the thread enabled state to false but i wanted to leave room for other uses of the thread
A trick to make the distribution for a tool which uses a thread for initialization is to stop the threads (Programmers Menu >> Scheduler >> Stop Threads) before setting the initial tool state and then exiting the application to make a copy of your tool.
A quick note to point to the tool that Cori Shlegel has done (the "Set Windows Maximize" feature solves the the only real annoyance that i had with the tool usability!). You can see the instructions here (the download is here) 
Hacking OPML #0 
By the way I've started to grok the OPML internals trying to understand how to the thing works and (specially) how it can be programmed. More in this in the afternoon. For the moment here are some links to informations I found which can be useful to OPML hackers(they are for Userland Frontier and Radio, but they are relevant also for OPML which sits on the same fondation technology) .
For the time being, i should say that the tool is much more than a "simple" outlining tool, it is a real platform: it's easily programmable, understands well the main web (services) protocols, has an integrated object db, and much more. But most importantly it has a ton of code, ready to be read, to learn from (most of the functionality of the editor is there in dotOpml.root and dotOpmlData.root).
It definitly goes into my "easy, powerful, productive tools" drawer.
It seems that the tool is gaining momentum, it's nice to see newbies turning into hackers! 
Dave is looking for someoune to build a set of bittorrent verbs. Hmm it would be an interesting programming project! 