Laccio Framework
[1/19] from: ale870::gmail::com at: 22-Aug-2007 0:04
Hello,
I wish to highlight a new project I started, and currently in beta-test.
It is called Laccio Framework.
I just published some information, Laccio source code, and three examples
(I'm completing the quickstart tutorial).
*Laccio* is a framework, very small, for Rebol, composed by two objects. It
includes several important functionalities:
- Introduces (and standardize) the concept of "components" in Rebol.
Basically, a component is a reusable piece of code, composed by several
methods, variables, etc… used to create simple or complex components.
- A component is a "template" that you can use to make other component
instances (it works even with visual components, like Rebol View!).
- Every component uses a MVC-like model. In fact, every component is
divided in two parts: *View *(that manages user interaction) and *
Controller-Model* (grouped in a single object, that manages either the
business logic or the data).
- Laccio framework efficiently implements *messages *notification (the
so-called events). The concept is similar to the listeners: a component can
send a message, under specific conditions, to every other component or Rebol
application that requested to be notified when such condition is verified
(an application can "*listen*" a specific message). I wish to
highlight this feature: in many languages, only a single method (function)
can receive a message, and such method has to "spread" the message by
calling other functions; in Laccio, you can directly register as many
functions as you want, using a simple syntax!
- Creating and/or using components is a *very simple task*, and a *very
small amount of work *must be done.
Every comment, information, opinions, suggestions are welcome.
I think it is a great help for Rebol developers, and it will help us to
increase the collaboration, cooperation to create better and more complex
Rebol applications.
Home page is:
http://laccio.wordpress.com/
Thank you! :-)
--
--Alessandro
[2/19] from: tim-johnsons::web::com at: 21-Aug-2007 18:20
On Tuesday 21 August 2007, Alessandro Manotti wrote:
> Hello,
>
> I wish to highlight a new project I started, and currently in beta-test.
> It is called Laccio Framework.
< .. snip .. >
Hi Alessandro:
I downloaded your first sample and will take a look at it.
I'm sure that I will have some questions to ask, and I will
post them to this ML.
BTW: I'm referring to a very proprietory organization - so I'm
not at liberty to say *who* and must leave out some details, but
here's their scenario:
Many - perhaps hundreds - of small rebol scripts running and
being managed project-wise via TCP/IP. Including message-passing.
Different from my way of doing things, but very rebol-ish in fact, I think.
I manage large projects by "loading" or "importing" modules via
'do, whereas they are using TCP/IP. I don't know if they use
rugby or if rugby would be helpful.
tim
[3/19] from: anton:wilddsl:au at: 22-Aug-2007 15:51
Hi Allessandro,
Rebol3 has a MVC-like architecture in the new VID.
Regards,
Anton.
[4/19] from: ale870::gmail::com at: 22-Aug-2007 8:47
Hello Anton,
can you give me more info about it?
Can I take a look to the technical documentation or a demo?
On 8/22/07, Anton Rolls <anton-wilddsl.net.au> wrote:
> Hi Allessandro,
> Rebol3 has a MVC-like architecture in the new VID.
<<quoted lines omitted: 9>>
> To unsubscribe from the list, just send an email to
> lists at rebol.com with unsubscribe as the subject.
--
--Alessandro
[5/19] from: ale870::gmail::com at: 22-Aug-2007 9:25
Hi Alessandro:
> I downloaded your first sample and will take a look at it.
> I'm sure that I will have some questions to ask, and I will
<<quoted lines omitted: 10>>
> rugby or if rugby would be helpful.
> tim
Hello,
there is no restriction using Laccio Framework and tcp/ip or other
protocols.
Infact, Laccio is a single ".R" file, that you can directly download and
import using something like:
>> do read http://myserver/laccio.r
Furthermore, the components could be created using a single ".R" file or
more files, that you can download and use in your environment.
About message passing, it is not used to exchange information, since Rebol
already supports several protocols and method to efficently solve the scope.
WHen I talk about "message", I'm talking about events. I named them
messages, since a message is a signal that a method can send, and if your
procedure is registered to receive such event, it will grab it. And consider
that, usually when you use the typical event dispatcher, you can associate
only a method to a single event. Example: if you create a button, you can
associate only a function to its click; instead, if you use Laccio, you can
associate as many "listeners" as you want to a single event (message).
I downloaded your first sample and will take a look at it.
> I'm sure that I will have some questions to ask, and I will
> post them to this ML.
>
You are welcome! Please don't hesitate to make me any question!
On 8/22/07, Tim Johnson <tim-johnsons-web.com> wrote:
> On Tuesday 21 August 2007, Alessandro Manotti wrote:
> > Hello,
<<quoted lines omitted: 20>>
> To unsubscribe from the list, just send an email to
> lists at rebol.com with unsubscribe as the subject.
--
--Alessandro
[6/19] from: jblake:arsenaldigital at: 22-Aug-2007 8:41
Example: if you create a button, you can associate only a function to
its click; instead, if you use Laccio, you can associate as many
listeners" as you want to a single event (message)."
Like an Enterprise Service Bus (SOA like)?
John
[7/19] from: ale870::gmail::com at: 22-Aug-2007 15:53
Like an Enterprise Service Bus (SOA like)?
Here a simple example:
you use a component called "calculator" that is a real calculator (with the
operations for sum, subtraction, multiply, divide).
You want to insert the calculator in your application, but you want to get a
message every time the user press "total" button (button "="). So you create
a function in your program called "saveResults" (which save the results in a
text file). Then you insert the following code in your application:
==============================================
; CREATE AND INIT CALCULATOR COMPONENT
myCalculator: make TCalculator[ ]
myCalculator/init
; REGISTER YOUR FUNCTION TO GET THE MESSAGE "msgAfterTotal"
myCalculator/controller/addListener "msgAfterTotal" 'saveResults
==============================================
That's all. Now, one month later, you need to display the results in a
different form, like a stream, with all the results calculated. You create
another function (so you don't touch original function, that works very well
;-) ) called "showResultsToVideo".
You simply add in your program the new function (obviously, you need to
create it!), then insert the following line (after the previous lines):
==============================================
myCalculator/controller/addListener "msgAfterTotal" 'showResultsToVideo
==============================================
Now, when the user press the "=" key, both of functions will be called, in
the same order of the registration.
On 8/22/07, John Blake <jblake-arsenaldigital.com> wrote:
> "
> Example: if you create a button, you can associate only a function to
<<quoted lines omitted: 98>>
> To unsubscribe from the list, just send an email to
> lists at rebol.com with unsubscribe as the subject.
--
--Alessandro
[8/19] from: tim-johnsons:web at: 22-Aug-2007 11:29
Hi Alessandro:
No need to post this to the list, but I have an error:
line 47, it.sguish.tutorials.sum.r
code:
do %laccio.r
generates an Access error:
Reason: Should be %Laccio.r
Upcase "L" ^
Unix systems are case sensitive.
regards
Tim
[9/19] from: ale870:g:mail at: 22-Aug-2007 21:52
Ops... sorry. I work on Windows! Thank you, I will fix I immediately :-)
On 8/22/07, Tim Johnson <tim-johnsons-web.com> wrote:
> Hi Alessandro:
> No need to post this to the list, but I have an error:
<<quoted lines omitted: 10>>
> To unsubscribe from the list, just send an email to
> lists at rebol.com with unsubscribe as the subject.
--
//Alessandro
http://sguish.wordpress.com
http://laccio.wordpress.com
[10/19] from: jasonic:nomadics at: 22-Aug-2007 21:53
Alessandro Manotti wrote:
> =========================================
> ; CREATE AND INIT CALCULATOR COMPONENT
<<quoted lines omitted: 3>>
> myCalculator/controller/addListener "msgAfterTotal" 'saveResults
> myCalculator/controller/addListener "msgAfterTotal" 'showResultsToVideo
Hi Alessandro..
examples examples examples >> oh yes please..
very nice - like Flash Actionscript without all the ECMA syntax junk ;-)
Perhaps you can put presentation with examples into an EasyVID
active-book format [one of Rebols undedeveloped jewels imo]
This is just what I need for my next project -- which uses both flash
and rebol.
Ah how sweet to have a reasonably consistent implementation of interface.
btw, do you know MaxMSP or PD PureData ??
prgrammable patchbay metaphor software for musicians and others...
MaxMSP is the parent system - color, very sexy, sophisticated, powerful. [$]
PD Pure Data is the opensource free child of Max, spawned by one of the
original authors [Miller Puckette]
Anyway, among many great ideas they have neat syntax for ketting
patches and things to communicate
send and receive -- its so sweet and simple -- no 'lucid' like the best
parts of REBOL.
check it out..
http://en.wikipedia.org/wiki/Pure_Data
see the main docs and search for "send" -- generally read intro and
read down from here
http://crca.ucsd.edu/~msp/Pd_documentation/x2.htm#s1.3
thanks
Jason
[11/19] from: ale870::gmail::com at: 22-Aug-2007 22:03
Hello Jason,
I not yet red your links (I will do as soon as possible !).
If I understood what you say (I'm sorry, I'm Italian, and sometimes english
language could be not so clear for me!) you think I could implement
something to let the components communicate one with each other in a easy
way?
On 8/22/07, Jason Cunliffe <jasonic-nomadics.org> wrote:
> Alessandro Manotti wrote:
> > =========================================
<<quoted lines omitted: 34>>
> To unsubscribe from the list, just send an email to
> lists at rebol.com with unsubscribe as the subject.
--
//Alessandro
http://sguish.wordpress.com
http://laccio.wordpress.com
[12/19] from: jasonic:nomadics at: 22-Aug-2007 22:56
Re: Laccio Framework >> PD PureData inspiration
Alessandro Manotti wrote:
> Hello Jason,
>
> I not yet red your links (I will do as soon as possible !).
> If I understood what you say (I'm sorry, I'm Italian, and sometimes english
> language could be not so clear for me!) you think I could implement
> something to let the components communicate one with each other in a easy
> way?
>
Yes..
1) I believe PD PureData offers a superb interface metaphor/paradigm for
your components and for Rebol3.
2) PD has an open source API. That means *someones* [not me alas] could
write a Rebol interface to PD.
Then all sorts of cool modeling could happen very quickly, including
hopefully engaging a larger very creative community of
programmer-musicians-experimental innovators.
One could also join the rebol parts via PD to lots of others... yay!
Ruby Python and other languages have been used to write PD patches. In
general this is because people want to do something in PD and use the
language they know and love.
However, it can also work the other way around -- I'd call it "host
system and interface symbiosis" ...
The Wiki for PD API is
http://www.puredata.org/docs/developer/PdAPI
and one example using that, which I just found googling is
http://www.le-son666.com/software/pdj/
PDJ enables you to write java code to interact with pure-data objects.
another ...
mxdublin a Java/Python framework that can be used to sequence generic
events within pure-data or max.
http://le-son666.com/software/mxdublin/
uses Jython = Python implementation written in Java << ouch wow cool
3) The design philosophy is very familiar--- PD REBOL Laccio
fertile ground I think.
4) I also imagine/hope that a PD-inspired interface could be written in
100% rebol -- actually R3 [rebol3] probably best.
That would mean a light, fast, 100% rebol graphic interactive user
interface toolkit could support inter-component inter-system
communications and instrument building.
beautifully so :-) -- many advantages including opening access to
non-rebol programmers USE of such tools.
5) You might find this is perfect -- or too much, but inspiring none the
less I hope.
6) A delightful design feature of PD is that PD files ["patches" they
are called] are just simple TEXT files - interpreted by the PD
environment as dynamic interface.
You have to install and play with it to understand what I am talking
about really. It's a rich universe and thriving community.
But here's an example from the interactive user Manual when you install
the software.
'patch' = a file called 04.messages.pd
If you open that in PD it looks like this screen shot [but it works]
If you open in a text editor it look just like this:
#N canvas 0 0 595 446 12;
#X floatatom 225 110 0 0 0 0 - - -;
#X floatatom 184 109 0 0 0 0 - - -;
#X msg 184 56 5 6;
#X floatatom 132 108 0 0 0 0 - - -;
#X floatatom 64 105 0 0 0 0 - - -;
#X text 30 21 Most Pd messages are just numbers or short lists of numbers:
;
#X msg 64 55 5;
#X obj 64 80 + 9;
#X obj 132 83 +;
#X obj 184 84 unpack;
#X msg 288 55 5;
#X obj 288 107 print;
#X obj 288 81 pack 34 78;
#X msg 132 55 5 6;
#X floatatom 195 328 0 0 0 0 - - -;
#X obj 195 303 +;
#X msg 195 254 1.2 3.4;
#X msg 205 277 5 6;
#X text 36 206 Unlike Max \, in Pd all numbers are floating point.
Numbers whose values happen to be integers are displayed without decimal
points.;
#X text 31 363 For more on messages \, get help on any message box
by right-clicking.;
#X text 329 409 updated for Pd release 0.33;
#X text 34 149 If you send a list to an object with more than one inlet
\, the items in the list are spread out over the inlets \, as seen
in the 5+6 example above.;
#X connect 2 0 9 0;
#X connect 6 0 7 0;
#X connect 7 0 4 0;
#X connect 8 0 3 0;
#X connect 9 0 1 0;
#X connect 9 1 0 0;
#X connect 10 0 12 0;
#X connect 12 0 11 0;
#X connect 13 0 8 0;
#X connect 15 0 14 0;
#X connect 16 0 15 0;
#X connect 17 0 15 0;
hope this makes sense
regards
Jason
[13/19] from: ale870:g:mail at: 22-Aug-2007 23:08
Thank you!
I will start to study ;-)
I will look at it, to evaluate if it could be an "inspiration" for me (I
could get the same philosophy, concepts, etc...) and implement them in
Rebol, or I could try to create a direct interface!
On 8/22/07, Jason Cunliffe <jasonic-nomadics.org> wrote:
> Alessandro Manotti wrote:
> > Hello Jason,
<<quoted lines omitted: 100>>
> To unsubscribe from the list, just send an email to
> lists at rebol.com with unsubscribe as the subject.
--
//Alessandro
http://sguish.wordpress.com
http://laccio.wordpress.com
[14/19] from: jasonic:nomadics at: 22-Aug-2007 23:10
I wrote:
> 6) A delightful design feature of PD is that PD files ["patches" they
> are called] are just simple TEXT files - interpreted by the PD
<<quoted lines omitted: 5>>
> 'patch' = a file called 04.messages.pd
> If you open that in PD it looks like this screen shot [but it works]
... and here is a url to show what I am talking about:
http://tranzilla.net/instrumentalites/puredata/examples/
Jason
[15/19] from: ale870:g:mail at: 22-Aug-2007 23:17
Good! I added it to my links list!
Thank you!
On 8/22/07, Jason Cunliffe <jasonic-nomadics.org> wrote:
> I wrote:
> > 6) A delightful design feature of PD is that PD files ["patches" they
<<quoted lines omitted: 15>>
> To unsubscribe from the list, just send an email to
> lists at rebol.com with unsubscribe as the subject.
--
//Alessandro
http://sguish.wordpress.com
http://laccio.wordpress.com
[16/19] from: jasonic:nomadics at: 22-Aug-2007 23:19
Alessandro Manotti wrote:
> Thank you!
> I will start to study ;-)
>
> I will look at it, to evaluate if it could be an "inspiration" for me (I
> could get the same philosophy, concepts, etc...) and implement them in
> Rebol, or I could try to create a direct interface!
>
lovely..
A fun place you might find some help, and meet some nice people is dorkbots
/people doing strange things with electricity
/
http://dorkbot.org/
Many of them use PD
I see.there is group in Milano
http://dorkbot.org/dorkbotmil/
Where are you [geographically] ?
stay tuned
Jason
[17/19] from: ale870::gmail at: 22-Aug-2007 23:23
I'm in Rome, about 700 km far away from Milano.
But what is the link between PD and dorkbots? How do they use it?
On 8/22/07, Jason Cunliffe <jasonic-nomadics.org> wrote:
> Alessandro Manotti wrote:
> > Thank you!
<<quoted lines omitted: 18>>
> To unsubscribe from the list, just send an email to
> lists at rebol.com with unsubscribe as the subject.
--
//Alessandro
http://sguish.wordpress.com
http://laccio.wordpress.com
[18/19] from: jasonic::nomadics::org at: 23-Aug-2007 0:04
Alessandro Manotti wrote:
> I'm in Rome, about 700 km far away from Milano.
>
> But what is the link between PD and dorkbots? How do they use it?
>
Dorkbots is fun regular group event which started at Columbia University
Computer Music Department [Douglass Repetto and others].
They do all sorts of experimental interfacing of devices, ideas,
software, hardware, often musical but may be visual or other.
They are characteristically non-evangelical about solutions -- try
everything , love new ideas, techniques, fusions etc.
PD is used by that department and most other computer music departments
in universities all around the planet.
My idea about using PD and Rebol/Laccio is that one could leave aside
all the specifically musical features. Just focus on the question:
- How to interface openly programmable instruments and components in a
good way? -
As it happens, music imposes a great problem domain (especially since
MIDI) and its fun :-)
Programmable music toolkits must address lots of things -- message
passing, complex timing, event handling, interfacing virtual devices,
filtering and transformations etc etc.
PD scales pretty well. One work in the same interface at a high
[sophisticated] level, but also dive into that to reveal all the sub
component patches and modules which combine to make a whole.
The main paradigm is a 'patch bay' message architecture with graphical
interface. PD objects typically all have at least one input and one output.
You drag the mouse to connect these. Keep adding and combining to create
a useful 'patch'. Patches and objects can talk to each other uses a
nifty 'send' 'receive' object. Very similar to rebol send.
I look at most things as instruments -- piano, computer, telephone,
knife, drill, camera, programming language, hands, ideas....
Rebol is a beautiful language to build internet instruments and components.
Problem is finding versatile way to connect them up and to share the
results with a wide range of people so that they can do useful,
interesting things with them.
By design, rebol is toolkit suitable for laboratory type
experimentation. But it lacks a cool interface metaphor to build on its
inner strengths. It lacks easy interactivity.
It's a lot of work to build and maintain a huge set of functioning
widgets in any language. So why not take good advantage of existing user
interface toolkits?
But not any will do. You need ones which really have a compatible design
philosophy [Carl are you listening ?]
PD is a great candidate.
oh and here's some youtube demos of PD in action
http://video.google.com/videosearch?q=PD+pure+data
MaxMSP is also, but its expensive [PD is free]
http://www.cycling74.com/
However, I did test out a Flash interface to Max which worked great as
proof of concept
http://www.nullmedium.de/dev/flashserver/
I'll let you catch up this. keep me posted
Jason
[19/19] from: tim-johnsons::web::com at: 22-Aug-2007 17:47
Re: Laccio Framework
On Wednesday 22 August 2007, Alessandro Manotti wrote:
> Ops... sorry. I work on Windows! Thank you, I will fix I immediately :-)
A rebol gotcha - rebol ignores case on internal symbols but is
trumped by the OS file system...
tj
Notes
- Quoted lines have been omitted from some messages.
View the message alone to see the lines that have been omitted