• Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search
 

AltME groups: search

Help · search scripts · search articles · search mailing list

results summary

worldhits
r4wp1023
r3wp10555
total:11578

results window for this page: [start: 1801 end: 1900]

world-name: r3wp

Group: RAMBO ... The REBOL bug and enhancement database [web-public]
Anton:
10-Feb-2005
Oldes, good ideas. Do you think the "?" -> "%3F" is a replacement 
which is more prone to collision (than a longer string such as "_query_" 
) ?
Sunanda:
11-Feb-2005
It's a wierd problem, and RT don't seem able to fix it/
reset-dates.r is a sort of symptom suppressant.


I've had to do full reysncs a couple of times.....Not a good thing 
to ask **everyone** to do.
Anton:
20-Feb-2005
INMOLD: func [

 format [block!] "internal formatting to apply eg. [newline all skip 
 3]"
	value [block!] "block you would like formatted"
	/local path code
][
	; wrap NEW-LINE
	code: reduce [path: to-path 'new-line 'value true]
	parse format [
		any [
			'remove (poke tail code -1 false)
			| 'newline () ; redundant
			| 'all  (append path 'all)
			| ['skip set n integer!] (append path 'skip append code n)
		]
	]
	do code
]
Anton:
22-Feb-2005
DIR?  -  This function, useful as it is, is confusing, because it 
is not obvious that it goes to the filesystem or network to check. 
Perhaps it should be called EXISTS-DIR?

I also feel the lack of a function just to see if a file or url ends 
with a slash. If you work with the filesystem at all you quickly 
find yourself checking for final slashes all the time. Here is my 
latest way of detecting that:
#"/" = pick tail file -1

That sure is ugly to put into code all the time, and I keep wishing 
this is what DIR? would do.

I understand that there is probably a huge body of code that would 
be adversely affected by this renaming, so I am looking for a nice 
short name. So far I thought of DIR-SPEC?  (ie. "does this file have 
the specification of a dir ?") but....
DideC:
25-Feb-2005
>> do http://www.lexicon.net/antonr/rebol/util/demo-request-dir.r
connecting to: www.lexicon.net
Script: "Demo request-dir" (28-Dec-2003)
Script: "scroll-table style" (7-Mar-2004)
Script: "List Sort Button" (10-Dec-2003)
Script: "header-group" (7-Feb-2004)
connecting to: www.lexicon.net

Include: Couldn't load-thru http://www.lexicon.net/anton/rebol/util/request-dir.r
** Script Error: request-dir has no value
** Near: request-dir/initial %./
Anton:
26-Feb-2005
eh? what do you mean ? Oh do you mean you can also see files at the 
bottom of the list ? Yes, that is by design. But the directories 
are the only items that are selectable. It always annoyed me not 
to be able to see all the contents of a directory in other directory 
selectors.
Anton:
10-Mar-2005
Sorry Romano, I meant it to be negative. -2147483648 becomes a decimal! 
too. This is a problem for code that deals with flags etc. I have 
some code for FMOD and one of the flags uses the highest bit, but 
it gets loaded to a decimal! :-/  I do not wish to make a special 
test for that case. I wonder if this behaviour is really necessary, 
so I would like to make a wish report.
Anton:
14-Mar-2005
Do you want to submit a bug ? I'm pretty sure you don't need an account 
to do that (although it *looks* like you do).
Gabriele:
21-Mar-2005
try to paste that into a string and then try to DO the string. the 
problem is only there after the OPEN. so, OPEN does trigger it anyway.
Group: Parse ... Discussion of PARSE dialect [web-public]
Tomc:
30-Jan-2005
that said parse/all could do better at  truly ignoring all  as it 
is being asked to
Tomc:
20-Mar-2005
Joe:   What do you need a perl comatible regular expression  to do?
Tomc:
20-Mar-2005
and being very careful to never  effectivly 

do [ user-input]


without being sure user-input  could not cause unintended side effectd
sqlab:
6-Jun-2005
If you do not want to change the parse rules, you can just add
	if not flowtext [halt]
before
	append text flowtext
Graham:
7-Jun-2005
what you could do, is extract Didier's implementation of the TOP 
command, and then get the first line of each header in your mailbox. 
 If it has the return-path set to <>, then note it in a list.  When 
finished, go thru and issue deletes on all of those.
BrianW:
13-Aug-2005
yargh. I know how to split with a single character as the delimiter:

	chunks: parse/all text "^/"


How do I split where a blank line (2 newlines with nothing in between) 
is the delimiter? The naive solution I can think of just doesn't 
work:

	chunks: parse/all text "^/^/"
Group: !Readmail ... a Rebol mail client [web-public]
Cyphre:
2-Mar-2010
Nicolas, try this:
do http://www.rebol.cz/~cyphre/scripts/r2/toys/imap-cli.r


this is very simple CLI for access to google IMAP server (others 
should work too).


Once you run it you can just type at thh prompt IMAP commands. Snippet 
of example session:

Script: "IMAP CLI in REBOL" (none)
{* OK Gimap ready for requests from 90.183.64.72 27if531665fxm.20
}
IMAP>>login user pass

{* CAPABILITY IMAP4rev1 UNSELECT LITERAL+ IDLE NAMESPACE QUOTA ID 
XLIST CHILDREN X-GM-EXT-1 UIDPLUS COMPRESS=DEFLATE
A0001 OK [user-:-gmail-:-com] authenticated (Success)
}
IMAP>>examine inbox
{* FLAGS (\Answered \Flagged \Draft \Deleted \Seen)
* OK [PERMANENTFLAGS ()]
* OK [UIDVALIDITY 2]
* 5989 EXISTS
* 0 RECENT
* OK [UIDNEXT 70472]
A0002 OK [READ-ONLY] inbox selected. (Success)
}
IMAP>>

Hope this can be useful...
Group: SDK ... [web-public]
Allen:
4-May-2005
OS has a proxy auto detect  option. Does anyone have an example to 
do this?
Allen:
4-May-2005
Try again. Altme has an OS proxy auto detect  option. Does anyone 
have an example to do this?
Tomc:
7-Sep-2005
I have recently started testing with Rebol/View 1.3, and decided 
to

purchase Rebol/SDK.  I have a function in one of my scripts that 
was
working in View during testing, but as soon I start using the SDK
binaries it no longer... um... functions.


In the function, I am trying to set a value in an array using an 
index
variable.

In view, I could do:
   values/:index: value
But in the SDK, I get:
   ** Syntax Error: Invalid word -- :index:

Again, any help would be appreciated.

Thank you,
robert w. dumond
Micha:
10-Oct-2005
how do to write in rebolu this ?
Benjamin:
10-Oct-2005
unsiged integers can safely be casted to integers, you sould know 
that some dll's wont work just because the need special arguments 
like pointers to certain data etc... nay whay why do you need to 
write a file using windows API can't you use rebol ?
Henrik:
1-Nov-2005
gabriele, too messy :-) "Do I really need that big R icon on my desktop?" 
It has to be one click to run. Grandma style.
Pekr:
4-Dec-2005
But ask yourself, how often do you need to remove some specific code 
from your app? How mcuh will you save? Rebol is not resources savy 
anyway, at least not in the runtime, for most embedded apps to work 
with ...
Ashley:
4-Dec-2005
Most of the GUI work I do does not use VID or networking, so enface 
without any of the view-* or prot-* scripts is what I want. I do 
not want to use a loader front-end based on rebview that includes 
all this code. The cost in executable size may be small (less than 
100Kb), but it's the start-up time and memory cost that I like to 
get as lean as possible. This will become more of an issue if and 
when REBOL is ported to small memory footprint devices.
Graham:
5-Dec-2005
If you have an up-to-date SDK license, you can download the new distribution 
from: www.rebol.net/builds/sdk If you do not have an SDK or command 
license, we encourage you to buy one and help support REBOL development.
Group: !RebGUI ... A lightweight alternative to VID [web-public]
Pekr:
31-Mar-2005
Dunno if I am clear about what do I mean, but maybe ability of getting 
focus to group-box should be enough, it it provides focus isolation 
described above ....
shadwolf:
31-Mar-2005
apporting code to any project is hard I understand this but a first 
step (what I try to do ) is to apport yet existing bunch of code 
that are fitted to REBGUI Ashley takes then the role of merger and 
last adapter. I hope this free some time for him  to focus on work 
of the engine.
Ammon:
31-Mar-2005
So do we want to use the global event system so that we can have 
modal and auto-closing dialogs or does someone know another way to 
accomplish it?
shadwolf:
31-Mar-2005
or do we prefer by this work to convince people
shadwolf:
31-Mar-2005
Contributed code: sure but yet existing amazing thing wasn't thinked 
to be added to RebGUI so If we want a good time average and retake 
yet existing widget. I think it can be seen as an omage to those 
ppl that spent lot of time try to implement this widgets. If we find 
a way to include them it's like we have a parternity and a real look 
over what exists in the rebol free community that"s a king of concretisation 
and that allow us to improve faster I don't think pruning ctx-menu 
is slower that redone the work from scratch ;). And As I say earlier 
that shows our consern and attention to what exists in rebol free 
community ;). Like "Thank you man you give us this widget now look 
what we can do with how it grow and how it became self dependent. 
If your still want to apport to it or have some ideas on it to share 
with us your very welcome" :)
Carl:
31-Mar-2005
But, I think the non-VID GUI projects are good too.  Because, when 
people use the SDK, they can use whatever GUI engine they prefer. 
They do not need to include VID in their code at all.
shadwolf:
31-Mar-2005
Carl If I had the knowledge to do so I will do so but most of what 
I learn about it was learn through the simple but amazing anamonitor 
and every day I learn new things Ashley is very y mentor  like cyphre 
or didec or Etienne Alaurent  :)
shadwolf:
9-Apr-2005
how do you plan to detect the fact that the button header content 
of the notepad widget is bigger dans the window :)
Ashley:
9-Apr-2005
Brock: validation is also on my ToDo list (you can see the beginnings 
of it in the field widget character length limits). A couple of questions 
though (both how it is done in .Net and how it *should* be done in 
RebGUI):

	What's the granularity of the validation?

 Does it allow the specification of a mask (e.g. for phone numbers)?

 Is it validated as I type, when I leave the field, or when I save 
 the form? (Or is it flexible enough to let me choose the level of 
 validation?)


shadwolf: Haven't really thought about it much, but I figured the 
tab-panel redraw feel was a logical place to do the work.
Vincent:
9-Apr-2005
construct: func [
    block [block!] /with object [object!]
/local nb spec values name value
][
    if not with [object: object!]
    spec: copy []
    values: copy []
    parse/all :block [
        any [
            to set-word! (nb: 0) some [
                set name set-word! (nb: nb + 1 append spec :name)
            ]
            set value skip (

                insert tail values nb insert/only tail values :value
            )
        ]
    ]
    append spec none
    object: make object spec
    foreach [nb value] values [
        loop nb [
            set in object (to-word first spec) 

                either find [true false none on off] :value [do value][:value]
            spec: next spec
        ]
    ]
    object
]
shadwolf:
11-Apr-2005
first change into the arrow/feel/engage down  event you will need 
to add if face/action [do face/action] to enable the arrow to launch 
action ;:)
shadwolf:
11-Apr-2005
another thing anoying is that we need to move the buttons so to do 
this easier we need to pack the header button of the tab-panel into 
two boxes in order to slide them ;)
Ashley:
25-Apr-2005
Robert: LED-Group attributes can be changed at runtime with:

	led-handler/pane/2/data: true
	led-handler/pane/2/text: "Test"
	show led-handler


but the specification (number of LEDs and orientation) is fixed at 
specification time. I have no plans to change this.


Pekr: Most folks are familiar with WinXP, it is something to model. 
The basic RebGUI color scheme is controlled by less than a dozen 
words, and arrow / chevron / other is fully inheritable; but the 
"look" (e.g. tab shape and active shading) is hard-coded in most 
cases. So the answer is that you can easily change the cosmetic aspects 
of the UI but not the fundamentals.

Gregg: known issue.


Volker: Not sure which way you mean. If you want to contribute new 
widgets that work with both VID and RebGUI then I'll be spending 
time optimizing them for RebGUI which will break their VID compatibility. 
If you mean that you want to make the RebGUI widgets work under VID 
then feel free to do so with the widgets I have authored. For other 
widgets, please contact their author(s).
Ashley:
26-Apr-2005
Nice, I understand what you want to do now ... create a GAL (GUI 
Abstraction Layer) that enables RebGUI widgets to be used in VID 
with zero RebGUI changes. Interesting to see whether you can get 
it working the other way (VID -> RebGUI) as painlessly! ;)
Volker:
26-Apr-2005
btw is the verbose dialect by design or to keep parser short. i guess 
i could do some automatic with few lines overhead. to allow strings 
and actions without the extra brackets.
shadwolf:
27-Apr-2005
Well after one day of work on the multicolumn list  here is a little 
screen shot of what I succed to do http://shadwolf.free.fr/rebgui-list.jpg
shadwolf:
27-Apr-2005
What I need to do :
Robert:
28-Apr-2005
How does this line work?
	| set arg word! (

  either in widgets arg [append-widget widget: arg] [attribute-color: 
  get arg]
	)


append-widget checks for 'widget but 'widget is set after the call 
to 'append-widget


Further, in the parse-rule the above line comes last. But it parses 
the widget words. When do the parameters get parsed? I would have 
expected this rule to be the first after the keyword rules.
shadwolf:
28-Apr-2005
robert yes this feature was yet passed to me by cr8825 on french 
forum for non visible data what I plan to do Is hadding a special 
flag like hid for example:)
shadwolf:
30-Apr-2005
graham do you know a way to happend things to a fonction instead 
of substituate it completly
shadwolf:
1-May-2005
hum not so easy to do ...
shadwolf:
1-May-2005
last thing to do is to draw a vertical line with effect draw at position 
of the mouse
Group: AJAX ... Web Development Using AJAX [web-public]
Chris:
3-Dec-2005
Really the whole buzz is focussed around the XmlHTTPRequest object 
that Microsoft, then others added to their Javascript environment. 
 It isn't pretty (by Rebol standards) and has some limitations, but 
is effective enough to have opened new avenues in what one can do 
in creating web applications.  **cough** Squigglz **cough**  You 
can tell this is a Microsoft 'innovation' by the awful name 'XmlHTTPRequest' 
(XML not required), but there it is...
Henrik:
5-Dec-2005
I still think it's a poor replacement for ordinary apps... browsers 
were never meant to do this kind of thing.
Henrik:
6-Dec-2005
sadly, it probably will. it's the same thing as using MS Word to 
build webpages. never meant to do it, but it was shoved in there 
for the sake of adding some random feature
Ashley:
8-Dec-2005
it needs to create a javascript dialect

 - then instead of waiting for someone else to do it, either create 
 one yourself or start a project of like-minded individuals. ;)
[unknown: 9]:
3-Mar-2006
Our plan is actually to split off a page and start the UI from scratch 
for the Framework.  it will be fun.  We will simply do everything 
one step at a time, and correctly.
Pekr:
11-Apr-2006
I just would like to ask, if there is any perspective for rebol - 
e.g. that we could have core in browser (not view) and do ajax too? 
:-)
Oldes:
11-Apr-2006
the netvibes site is nice, but the problem is still the same, - you 
have to do it in old way as well, if you want to make pages for more 
people then net-freaks
Henrik:
13-Apr-2006
Flash is starting to catch up on the GUI part and they are much more 
light weight than Java, but I'm not sure how easy/hard they are to 
do
Sunanda:
23-Apr-2006
Bear in mind that around 10% of all people do not have javascript 
enabled. That way be through choice, necessity, or following US government 
security advice.

Javascript usage stats: http://www.w3schools.com/browsers/browsers_stats.asp

Before clicking on a link to a web site that you are not familiar 
with or do not trust, take the precaution of disabling active content.
:
http://www.us-cert.gov/cas/tips/ST04-012.html


With PHP all the oomph is in the server , so it is under your control. 
As you cannot guarantee that JS will be available in the client if, 
extra steps are needed to ensure the website works without it -- 
even though it may work spectacularly better with it.
Chris:
23-Apr-2006
Of course there are glaring drawbacks, but they don't matter enough. 
 Widgets (read Reblets) do have a niche -- eg. Apple's Dashboard 
is a far better experience than Windows Live and its ilk -- but we're 
not in that space, Reblets are still too tricky to deploy...
BrianH:
29-Jan-2009
Not everyone can or will install Silverlight, and not every site 
can insist that their customers do so. MS developer tools division 
tries to support whatever their developers want to do on MS development 
platforms like ASP.NET. AJAX needs JS frameworks.
Group: Syncing ... Syncing technologies [web-public]
Pekr:
4-Jan-2006
I would like to have answered:


1) what technique to use for "timestamping" - do we continue with 
timestamps against one central time, or do we use hashes, or sequencing 
numbers, or mixture of mentioned techniqueues? We might look how 
others do it ...


2) better support for possible conflicts - imagine following scenario 
- you have some reblet, e.g. Contacts - one person starts editing 
it, then another person starts editing it too. First one syncs (saves 
changes), then second one does the same - changes of first ones are 
lost. How to aproach this - introduce some kind of resources locking? 
(not real locking, but we are message based, so could be queued)


It could work as follows - person 1 wants to edit some record. Edit 
button posts request-for-lock. Lock is assigned. I other person tries 
to edit, it will not obtain lock. We could even introduce protocol 
level support, so that the person is informed, who has the lock, 
and how long. The trouble usually comes, when person goes off-line 
after the edit started - we need to remove dead-locks, so by default, 
I would lock for 20 minutes e.g. and the lock would have to be renewed, 
if person 1 wants to work longer with the given document ...


another scenario is, when you actually start editing something which 
might require locking, but you start already being off-line. We could 
create lock-request, just not synced yet. Once you go on-line, you 
simply check seqno, if the lock is possible, and the given record 
not modified. But what if it was modified in the meantime? e.g. you 
might be working with stock system and someone else in the office 
sells few units, for which you may start writing offer for to another 
customer. Tough scenario - would like to know your opinion. Maybe 
some things simply need to be done on-line only?


3) I needed small file-sync scenario - could use IOS, but IOS can't 
sync and "forget". Simply idea is to have different kind of syncing 
techniques, so e.g. for file transfer you have dir to sync, if correctly 
synced, log it, forget it, delete it on client and or server (or 
not, it depends)


as for IOS, local storage could be encrypted (or not), imported into 
RebDB (no single better solution so far introduced for rebol), sync-per-record 
or record-set could remain (record=document). RebDB on Serve would 
speed things up significantly too ...


another possibility is to think outside the IOS terms, in more general 
way - simply thinking about world of objects, being in various states, 
with various life-time around internet and on-line or off-line devices. 
I think that maybe we could find some simpler solution than SyncML 
and the likes ...


another point - such techniques should be transport independent, 
so I would not like to hear that it needs this or that ;-)

So, anyone?
Group: !Liquid ... any questions about liquid dataflow core. [web-public]
Maxim:
18-May-2007
ok, so what do you have to manage about the proxy?
Mario:
18-May-2007
I am wondering what to do: on one hand I'd really like to create 
a liquid application, on the other hand I must finish the program 
in a few days...
Mario:
18-May-2007
I will try to use the liquid concepts adding attributes to the nodes 
and do a "classical" plugin for the proxy
Maxim:
18-May-2007
but seeing people's real use cases helps me see where to put the 
time on whatever I do next, and your example shows me that I am dead 
on my priorities  :-)
Gabriele:
19-May-2007
my conclusion is the same as nenad's... it's overkill :) i think 
i can do all that users need to do with just event handling. that 
is, recognizing that in the ui everything is about events. the system 
does not need a network, just direct "links" between elements (call 
them widgets, styles, etc).
Gabriele:
19-May-2007
volker: broadcasting to everything... do you think that scales well?
Gabriele:
19-May-2007
also... we have network events, system events, you could have usb 
events and many more... do you broadcast everything to everything? 
when an event generates another event, is it broadcast to everything? 
it does not seem a great model to me... :)
Volker:
19-May-2007
It works for the gui. I dont step into theory about slow, if i have 
a real life example which is fast :) about everything to everything, 
that would be in a bad case: each event to 100 receivers, 100 events/sec, 
10k dispatches/sec. cpu can do 1 billion instructions. 10k instructions/event. 
most of them: i am interested? no. ~100.
Maxim:
22-May-2007
The truth is, I do not have the reflex of using liquid for most of 
my coding, still, but actuall exposure and use, is forcing me to 
value its effect on my code.  this is empiric use, not advocacy. 
 If you could see just how easy it was for me to build fully bug-free 
AGG gadgets in so little time, you'd understand.


its not about just sharing data between gadgets, its about allowing 
your code to know what's going on.
Maxim:
22-May-2007
and in fact, if we do add a measure of reflexivity to VID, we will 
just be redoing most of liquid, or run in the same issues, I had 
in my other prototypes, which led to this design.   ;-)

but we will not gain the advantage of having generic dataflow!
Maxim:
22-May-2007
dataflow has nothing to do with GUI.
Maxim:
22-May-2007
you see, if we had a dataflow datatype, we would not even need to 
talk about "do we add this to VID"  people could just set values 
to attributes which are DF based.
DideC:
24-May-2007
Hi Max,

Do you have any demo apps using liquid ? Something simple, but usefull 
to help me (and others) understand how and when to use it.
Maxim:
24-May-2007
I do want to convert rebolek's famous color picker into using liquid... 
one of the thing which will be made better is the fact that I can 
sample colours from mouse events much more often than actual refreshes 
occur, so that it should feel smoother.
Maxim:
24-May-2007
so, my answer to DideC, I guess, is:  

Give me ideas on simple demo applications I can build ! 

And I'll consider which one I do first.  :-)


 I need and want this info to make the whole package more appealing 
 and comprehensible.  The current uber simple Sum example, just gives 
 a glimpse of the engine's capabilities, not of its application.
Maxim:
24-May-2007
my next step for liquid (what I was working on During the devcon, 
but wasn't able to get done do to lack of sleep) was the creation 
of liquid net.
Gregg:
25-May-2007
It would probably be easy to plug liquid in to nanosheets. I'd like 
to see that too. The current evaluation order is fixed L->R-->Top->Bottom; 
with liquid you might be able to do away with that entirely, and 
let the evaluation drive things.
Maxim:
25-May-2007
mario, mind maps are very cool... I would like to make an optimised 
tool for quickly creating and organising mind maps in elixir but 
I can say that I hope others will join me in adding toolsets... its 
the whole point of elixir, an open, common framework of integrated 
and live tools.  anything goes into anything, so you can do things 
like share data between, you graphics, mind map and project management... 
why not even use some of it to drive the GUI building for one of 
the panes... I mean, in the end, they are all being used for one 
goal.
Will:
6-Feb-2009
Maxim: do you have something cool to menage nodes and trees ? would 
you share? 8)
Josh:
26-Feb-2009
the !sum plug is a good example,but I get a little stuck beyond that. 
 From my first impression of trying to do this, it seems like I'm 
going to have to define so many variables to make it too troublesome. 
 But I'm sure that I'll have to learn how to think in the right way 
to avoid all that
Maxim:
27-Feb-2009
I did  a D&D character manipulation application once when prototyping 
liquid, so I understand exactly what you are trying to do  :-)
Maxim:
27-Feb-2009
then another aspect called "armour-class" can be added and it know 
to use the current dexterity bonus to itself.


now you can build up the whole character, up to 12th level like this 
(adding all skills and levels, etc), and at the end, decide you want 
to see how it results with an elf, instead... then paf, you change 
the root aspect "race" to elf, which causes dex to increase by one, 
and since everything is still connected, your ac is increased by 
one, without ANY single other thing to do than ask for the resulting 
character.
Maxim:
27-Feb-2009
using this technique, I was able to do skining which is independent 
of the gui engine underneith.  one only has to support the aspects 
in his skin and the skins (and gui using them) remain valid, even 
though you are running on opengl or vid.
Maxim:
27-Feb-2009
yeah I understand... really I do.


as I used to say... "I buit it, and it works really well... but I 
still don't know how to use it !"
Maxim:
27-Feb-2009
I've been wanting to do this for ages.... but having someone actively 
looking out for it... makes it much more compeling to do  ...
Josh:
1-Mar-2009
hehe, yeah, I'm starting to finally fix all my poor coding practices, 
especially with naming.   Anyways, sounds good,  again, you don't 
need to do the whole char gen or anything, but just a good chunk 
for me to see how to put things together
Maxim:
2-Mar-2009
next step will be to add some data to manipulate... I'll do a character 
attributes builder.  all 6 stats with a +/- counter besides each 
which you press and all the display magically adapts, even stopping 
the buttons when out of range, or no more points to attribute   :-)
Maxim:
5-Mar-2009
ok, so I have a bit of spare time tonight and will build you a stand-alone 
example of a small RPG character editor.   Using !plug objects directly, 
so you can see the process of subclassing the core plug to have it 
do something usefull.
Ammon:
7-Mar-2009
How hard do you think it's going to be for you to port Liquid to 
R3?
Ammon:
7-Mar-2009
Interesting...  I'm a heavy prototyper.  I need one statement that 
does something to start with and I often have to see each additional 
statement functional before I can move on to the next.  If I spend 
enough time within a given environment I'll eventually be able to 
rebuild it from scratch but your code has always been deceptively 
simple so I often need an explanation of why you do what you do how 
you do it.
Maxim:
7-Mar-2009
I'm REALLY happy to do it.  its a great opportunity for me to actually 
get some limelight on liquid  :-)
Sunanda:
7-Mar-2009
To some extent, yes. We do record counts of "likely human views" 
vs "likely bot views" -- but the stat you see is the sum of the two. 
And the division is not perfect by any means.

I'll slightly reverse my previous statement......The "download this 
script" link is protected by a HTML attribute "rel=nofollow". That 
should prevent well-behaved bots from following the link. So the 
count of downloads is likely to to human rich.
Maxim:
7-Mar-2009
I have a newer version which has the "ability modifiers" added as 
extra labels to the right of the abilites... it took me 5 minutes 
to do, and it only needs one new simple !plug derivative:

;- !ability-mod
!ability-mod: make !plug [
	valve: make valve [
		type: 'ability-mod
		;-----------------
		;-     process()
		;-----------------
		process: func [
			plug
			data
		][
			vin [{!ability-mod/process()}]
			plug/liquid: 0
			vprobe data
			if integer? data: pick data 1 [
				plug/liquid: to-integer (data - 11 / 2)
			]
			vout
		]
	]
]


and necessary linkage within the !character setup, and appropriate 
faces in the window layout.
Maxim:
8-Mar-2009
just thought I'd share this list I built while coaching someone in 
using liquid last night...

SANITY PRESERVING KNOWLEDGE WHEN USING LIQUID:
--------------------------------------------


#1:  liquid isn't a bully  - liquid shares its state, but asks for 
data (pulls, observes, etc) from its subordinates ("parents"), not 
the other way around (it doesn' push or force feed, like a highly 
inneficient signal messaging engine).


#2:  liquid is lazy by default - unless a plug or one of its observers 
 ("children") is stainless, nothing will process automatically (thus, 
faces usually are set to stainless, so that they refresh automatically).

#3:  liquid has several computing modes in a single base class.  
  * linking is for once sided dependencies
  * piping is for inter-dependencies or synchronisation
  * containment is for data storage
  * linked-containment is for processed data storage   


#4:  liquid mutates - plugs automatically change computing modes 
when you call some methods like linking, piping and filling.  depending 
on the order of these operations, a plug may "stick" to its previous 
computing mode.  e.g. a piped node remains piped, even you attempt 
to link it to something.


#5:  liquid is alive - remember that as you are setting up a liquid 
network, your plugs will start receiving messages as you are building 
up the tree, meaning that the process() (and other) functions might 
be triggered before every expected connections are done. always verify 
the integrity of the data before starting the process.  (i just got 
stumped by this one again, 5 minutes ago).


#6:  liquid is a collection of droplets - each plug should do one 
thing or manage one step of a process.  the more you break up the 
network, the better you will be at making it stable, reusable, flexible, 
and fast.


#7:  liquid is highly memory efficient - !plug uses shared classes. 
 so all the liquid operations are in a sub-object called a valve. 
 Thus, when you call internal functions, remember they are within 
the valve, and you must supply the plug as its first argument.  my-plug/valve/stats 
my-plug


#8:  liquid is volubile - its slim-based verbose & indented console 
printing engine (vprint) is YOUR BEST FRIEND.  use it profusely, 
to understand the chain of events and what the hell is going on.
Maxim:
8-Mar-2009
SANITY PRESERVING KNOWLEDGE WHEN USING LIQUID:
--------------------------------------------


#1:  liquid isn't a bully  - liquid shares its state, but asks for 
data (pulls, observes, etc) from its subordinates ("parents"), not 
the other way around (it doesn' push or force feed, like a highly 
inneficient signal messaging engine).


#2:  liquid is lazy by default - unless a plug or one of its observers 
 ("children") is stainless, nothing will process automatically (thus, 
faces usually are set to stainless, so that they refresh automatically).

#3:  liquid has several computing modes in a single base class.  
  * linking is for once sided dependencies
  * piping is for inter-dependencies or synchronisation
  * containment is for data storage
  * linked-containment is for processed data storage   


#4:  liquid mutates - plugs automatically change computing modes 
when you call some methods like linking, piping and filling.  depending 
on the order of these operations, a plug may "stick" to its previous 
computing mode.  e.g. a piped node remains piped, even you attempt 
to link it to something.


#5:  liquid is alive - remember that as you are setting up a liquid 
network, your plugs will start receiving messages as you are building 
up the tree, meaning that the process() (and other) functions might 
be triggered before every expected connections are done. always verify 
the integrity of the data before starting the process.  (i just got 
stumped by this one again, 5 minutes ago).


#6:  liquid is a collection of droplets - each plug should do one 
thing or manage one step of a process.  the more you break up the 
network, the better you will be at making it stable, reusable, flexible, 
and fast.


#7:  liquid is highly memory efficient - !plug uses shared classes. 
 so all the liquid operations are in a sub-object called a valve. 
 Thus, when you call internal functions, remember they are within 
the valve, and you must supply the plug as its first argument.  my-plug/valve/stats 
my-plug


#8:  liquid is volubile - its slim-based verbose & indented console 
printing engine (vprint) is YOUR BEST FRIEND.  use it profusely, 
to understand the chain of events and what the hell is going on.
Maxim:
8-Mar-2009
one note...  you might want to wait for me to release liquid-vid 
and glue... they will both simplify coding of things a lot.  and 
liquid-vid will even have a few dynamically adjusting faces like 
row and column.


funny thing is that its taking me far less energy (and code) to implement 
more dynamic and smart faces than glayout so far.  its also taking 
a lot less code to do a lot of the same things in glayout.
Maxim:
13-Mar-2009
-------------------------------------------------
NOTE:  

FROM NOW ON, 

every usable !plug definition that I post will be in black, to make 
it easy to differentiate from test code, and copy in your own libs.

-------------------------------------------------

	;-     glue-proc-face:
	glue-proc-face: make face [size: 100x100] 

	;-----------------
	;- !gfx-text-area
	;-----------------

 ; this class returns the area which a value, when represented as 
 a string, occupies.
	;
	; returns: a pair representing width and height
	;
	; usage:

 ;  linked only, unlabeled.  (filling this node will permanently freeze 
 it)
	;
	; inputs:
	; (1) [any!] value
	;     the first input is formed to a string, or set to ""
	;   	
	; (2) [object!:font] font to use

 ;     the test will be run with this font, irrelevant of what font 
 is currently set in the face.
	;
	; <TO DO>: add explicit support for /para facet
	;-----------------
	!gfx-text-area: make !plug [
		liquid: 0x0
		
		;-----------------
		;-    frozen?()
		;-----------------
		; plug won't do anything until you have proper linkage done.
		;-----------------
		frozen?: func [
		][
			vin ["" self/valve/type {/frozen?()}]
			vout
			(2 <> length? subordinates)
		]

		valve: make valve [
			;-----------------
			;-    process()
			;-----------------
			process: func [
				plug
				data
			][
				vin ["" self/valve/type {/process()}]
				plug/liquid: 0x0
				glue-proc-face/font: data/2
				glue-proc-face/size: 1000x1000
				glue-proc-face/text: any [
					attempt [to-string data/1]
					""
				]
				plug/liquid: size-text glue-proc-face
				
				vout
			]
			
			
		
		]
	]
Pekr:
13-Mar-2009
I think I still don't understand what in particular Liquid is, but 
would it be e.g. good system to do some animation system in? I mean 
- something like Scala. You have some objects, wipes, effects, happening 
at various times, and the might be cross dependant, etc., so that 
when something happens here, something else happens there :-)
Group: DevCon2007 ... DevCon 2007 [web-public]
Pekr:
10-May-2007
What are guys trying to do on their notebook? :-) I know one magic 
solution C:\> format c: (enter)
Pekr:
10-May-2007
Tell Maxim put some small bits of negativity around, as I am not 
there and he knows how to do it too :-)
[unknown: 9]:
10-May-2007
I do plan to use the list I posted for my session as my lead points 
for my talk.
1801 / 1157812345...1718[19] 2021...112113114115116