r3wp [groups: 83 posts: 189283]
  • Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search
 

World: r3wp

[!Liquid] any questions about liquid dataflow core.

Maxim
5-Mar-2009
[688x4]
hehe, while working on stuff, I suddently entered one of those rare 
brainstorming states... so I've basically been in my mind for the 
last 3 days... but I now have a nice roadmap for something that will 
help me to make clear examples or liquid.
or = of
plus, its spring break and I'm with my kids... so taking time with 
them.
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.
Josh
6-Mar-2009
[692]
Awesome!  I understand the busyness.  I am in the midst of my final 
semester of my master's program.   Enjoy your time with your kids!
Maxim
6-Mar-2009
[693x2]
did most of the work yesterday, and will revise it to use VID.  it 
just going to take a little less code.  I think.
yippe, I'm almost done  :-)
Josh
6-Mar-2009
[695]
Wonderful :)
Maxim
6-Mar-2009
[696x5]
its already working, but will add a few gizmos to give it more depth. 
  liquid makes more and more sense, as an application grows.


so adding a few features will show you how simple an application 
remains, even when many things interdepend.
right now I have str, dex, int fields, which cannot contain anything 
else than an integer value, and which are bounded in value...

the detail here is that the bounding is NOT done in the field, but 
at the value level itself.  nothing can cause the data to be invalid.
not even trying to set it with the wrong data type!
it will just fall back to values within bounds, or the the previous 
value otherwise.
and the field, thus gets refreshed since its piped to the value.
Josh
6-Mar-2009
[701]
That's neat!  I will try not to set them to non integers! ;-)   j/k 
   I'll have to see how it all works under the hood, once I get it
Maxim
6-Mar-2009
[702x2]
it will definitely be available tonight.  btw, I found and squashed 
a little but in liquid, so will also release a newer version on rebol.org 
when I release the example.
I am now in the process of adding a skill editor (note, not in any 
way a valid D&D chargen, just a simple example to understand by anyone).
Josh
6-Mar-2009
[704]
Congrats on the bug squashing.  Just save some work for me to do! 
:)
Maxim
6-Mar-2009
[705x2]
hehe it was really minor, but probably something that's caused me 
some headaches in the past.  wouldn't have been possible without 
slim's verbose printing management  :-)
(finding the bug, that is)
Maxim
7-Mar-2009
[707x3]
the example is DONE, it has MANY interconnected plugs which handle 
all maner of data integrity, button style effects, even disabling 
some buttons, when values get out of bounds!

built with VID, latest version of liquid.
currently working on updating the stuff to rebol.org.
will also add a little integrated lib downloader.... to make it extra 
easy to use.
Ammon
7-Mar-2009
[710]
Sweet!  I'll be playing with it this weekend. =D
Maxim
7-Mar-2009
[711x2]
(in example app)
the code isn't intended to be compact... the goal is to help people 
understand.  I added a few comments which explain what/how/why some 
of the things.
Ammon
7-Mar-2009
[713]
How hard do you think it's going to be for you to port Liquid to 
R3?
Maxim
7-Mar-2009
[714x6]
I might also add a doc to explain some of the unobvious technical 
merits of the example.  people can say: "All that code just for that?" 
if they don't understand what is going on.
liquid R3... it could go really well, as it could be a bitch... if 
one little detail in a function breaks up the integrity of the whole.
the beauty of liquid is that broken code doesn't work, the side effect 
is that working code is unbreakable.
you can't "forget" to update something, everything is broken up into 
little systems.  the systems don't grow, you only have more of them, 
which is easier to manage and design, IMHO.
the one lib i can't wait to port is glob.  its like super gob, already 
in R2.
so in R3 its just going to be sooooo much faster.
Ammon
7-Mar-2009
[720]
You have such a strange way of wording things some times.  "broken 
code doesn't work, the side effect is that working code is unbreakable" 
 I'm not really sure what that means...
Maxim
7-Mar-2009
[721]
hehehe... means a system doesn't work at all until it does... and 
from that point on... its almost impossible to mess up.
Josh
7-Mar-2009
[722]
Where is the example?
Ammon
7-Mar-2009
[723x2]
What I've seen working in Liquid really is phenominal but I've never 
really groked it so I was never able to figure out where to start 
when I tried to build things with it.
I'm hoping this example of yours will break the ice for me.
Maxim
7-Mar-2009
[725x2]
you just move on, and forget what has been done so far.  adding stuff 
to a system, doesn't mean patching old code.  it simply means tacking 
new systems to the old, and deciding how they relate.
tacking = adding
Josh
7-Mar-2009
[727]
and apparently I missed the message saying you were uploading it
Maxim
7-Mar-2009
[728x3]
hehe.  I am just doing so... new version of slim just got uploaded 
(minor changes), liquid is almost ready.
the application will be there within the hour (need to build a friendly 
little rebol.org based slim lib D/L interface using VID)
if you can read (and understand) my last sentence... you are less 
tired than I am  ;-)
Ammon
7-Mar-2009
[731]
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.
Josh
7-Mar-2009
[732]
I really appreciate you making the example for me.  Hope you didn't 
mind the pestering, but it'll be good to finally see this dataflow 
in action
Maxim
7-Mar-2009
[733x5]
I added such comments throughout the code, it should be a pretty 
easy to grasp example, me thinks  :-)
I'm REALLY happy to do it.  its a great opportunity for me to actually 
get some limelight on liquid  :-)
I'll build a second version which has a skill editor  :-)
note, this application doesn't have the aspect-oriented stuff I was 
talking about... just pure liquid dataflow, all based on the !plug 
directly.
also note that liquid was NEVER optimised, so if you look at its 
code, you might find slow loops and such... I know!  for me, having 
it work without bugs and making it easy to maintain, is more important 
than raw speed... in all apps I've done using it, a single View face 
refresh slowed down the application more than alll liquid nodes combined, 
so the integrated lazy computing does enough optimisation on its 
own to make raw optimisation less of an issue.... but when I decide 
to go v2, I will make a "fast" version of the tool for production 
purposes... indentical in features, but with debugging removed and 
some loops optimised for speed.