Mailing List Archive: 49091 messages
  • Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search
 

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:gma:il 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:gmai:l 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:gmai:l 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:g:mail 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