Wednesday, November 02, 2005

Incubating An Idea: Springboard

An idea for a new tool manifested itself to me last night, and I wanted to make a record of it before my mind moves on to the next thing.

Springboard:

A system of pluggable components that can act at inputs, triggers, filters, activators, and outputs. This idea is very similar to Sprog, but with addition of triggers and activators. Another important difference is that a Springboard may have multiple inputs and multiple outputs.

Motive:

Promote code reuse.

Features:
  • Java based tool.
  • Configuration using Spring.
  • Different interfaces to fill different needs, a component may implement one or more.
  • Activator components execute an action, like sending an email, FTP a file, or execute an application.
  • Triggers lie in wait until an event occurs, like a timer, or when an email is recieved.
  • Input components talk to input devices, like the keyboard, a file, or IMAP.
  • Output components talk to output devices, like FTP, SMTP, or a file.
  • Filter components perform a transformation, like RSS to text.
Sample Scenario:

Trigger (timer - 1 hour)
-> Input (HTTP - fetch http://.../foo.rss)
-> Trigger (Input Changed - trigger if local copy differs from input)
-> Filter (RSS Diff - constructs a new RSS that is the difference between two RSS feeds)
-> Activator (RSS Loop - executes the next step once per RSS article)
-> Filter (RSS to Text - convert using "${title}\n\n${summary}")
-> Output (IM - send text to IM recipient list)

With this configuration it will attempt to load an RSS feed every hour, and when it changes send an IM to a list of recipients. What I have shown above is actually slightly simplified, as some of the components would require additional components for input and output. For example, the Input Changed Filter needs an Input/Ouput Component for local storage of the RSS feed.

Final Thoughts:


This is definately more complex than Sprog, but the idea is to be able to solve complex problems. Perhaps instead of using Spring for configuration, language constructs would be better.

Tags

1 comment:

Anonymous said...
This comment has been removed by a blog administrator.