Presenting...a presentation tool Permanent link to this item in the archive.

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.

 Here is an example

Hacking OPML #1 Permanent link to this item in the archive.

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 herePermanent link to this item in the archive.

Hacking OPML #0 Permanent link to this item in the archive.

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) .

 Documentation and resources for Radio UserLand developers

 Manila's built-in verbs (DocServer documents the hundreds of UserTalk language verbs used in Manila.)

 Frontier Programming Pointers

 The UserTalk Language

 Writing Frontier Scripts

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! Permanent link to this item in the archive.

Dave is looking for someoune to build a set of bittorrent verbs. Hmm it would be an interesting programming project! Permanent link to this item in the archive.