Demo of DrawFBP on YouTube

297 views
Skip to first unread message

Paul Morrison

unread,
Apr 13, 2016, 2:17:03 PM4/13/16
to Flow Based Programming
I have just put up my first video on YouTube!  It is a demo of DrawFBP, with a (probably too short) intro about FBP. 

The URL is https://t.co/E5ZPYjyXGS - feedback would be appreciated!

Paul M.

stewart mackenzie

unread,
Apr 15, 2016, 7:57:05 PM4/15/16
to Flow Based Programming
Hi Paul,

Quite informative, though would have been good to see the entire network of components properly hooked up and displaying the actual word count.

I recall struggling with DrawFBP a long time ago, this video would have been quite helpful.

IMHO, I encourage you to make the video again, but polish it off by
* removing the fbp motivation - most folks at the stage of DrawFBP research already understand the benefits of fbp.
* make an example that's complex enough to make a non-fbp programmer umm and ahh a bit yet simple enough to get the point of fbp across in a fast manner. Show how the graph abstracts away all the code by (maybe) doing a line count on all the src files of all the components. Ie show how fbp makes flow a first class citizen.
* complete the app; how does one execute the final product? How does one deploy/distribute the code? How does one execute the distributed code, is DrawFBP a required dependency for deployed code? How can one do rapid prototyping (I did get a feel for it by you deleting the ReCompose component)?
* How do I navigate a complex graph?
* How do I create and navigate subnets?
* What do each of the radio buttons on the bottom do?

My 2c worth!

/sjm

Paul Morrison

unread,
Apr 15, 2016, 10:53:24 PM4/15/16
to flow-based-...@googlegroups.com
Hi Stewart, good feedback!

A couple of questions:
 
- my first try had nothing about FBP, and I felt that I was diving in to DrawFBP a bit too quickly.  I also wanted to bring the componentry issue more front and centre!  Could you suggest how to strike a balance between too much and too little?

- I got the impression that 15 mins is some kind of a limit for YouTube - or is it just that people don't want to watch long videos?  What is optimum length?

- Can I assume Eclipse?  Or demo Eclipse and command line running?

I can certainly take a stab at your other points...  In which case, should I keep replacing the video, or should I have DrawFBP (1), DrawFBP (2), etc.?   If the video gets too long, should I chop it up into multiple ones?

Dumb questions, but I'm a complete video newbie!

Best regards, and thanks again for the useful comments.

Paul


--
You received this message because you are subscribed to the Google Groups "Flow Based Programming" group.
To unsubscribe from this group and stop receiving emails from it, send an email to flow-based-progra...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

stewart mackenzie

unread,
Apr 16, 2016, 2:45:06 PM4/16/16
to Flow Based Programming
Hello,

I wouldn't worry about diving in too quickly, FBP is now on the tongues of many programmers, the concept is generally understood. The main issue is how to do fbp.

Strike a balance by writing up a page on your website going into as much detail as you want and linking in each perinent video as needed. You could break up the videos in 5~10 min special focus chunks. Optimum length? Make 10~20 small videos if you want, each with its own title and strictly keeping to topic. Order them too. I personally prefer a good 25 mins with few repeats of basic yet important concepts and capping it off with a hardcore demonstration.
I'll watch the video again and again if it's a serious knowledge drop.

If Eclipse is the normal tool to use then go for it, but i'd also encourage you to demonstrate on linux using the shell. Personally I feel more comfortable there.

Lastly, it might help to do the video a number of takes, each without cuts and only allow satisfaction once you complete the video in one smooth run. Delete it and start from scratch if you find you're ahhing and creating then deleting components unecessarily.

For example, I really like this video: https://m.youtube.com/watch?v=dP1xVpMPn8M

I feel like I can use this ACME application, it starts out simple enough, then towards the end he gets hardcore and blows me away in awe. Now I know what I could achieve given enough determination. If you're able to communicate the same feeling then IMHO you have succeeded.

/sjm

Paul Morrison

unread,
Apr 16, 2016, 3:20:59 PM4/16/16
to flow-based-...@googlegroups.com
Thanks, Stewart!

Darn - I don't do Unix!  So someone else is going to have to contribute the Unix magic!  How about yourself?!

I am willing to buy that the concept is generally understood (my italics) - what I don't know is whether most people understand the scheduling rules, IIPs, etc., which are specific to "classical" FBP.  The little feedback I get suggests not, as most of the people who write to me are trying to write their own schedulers... without benefit of several decades of actually using the tool!  :-)  I hope this doesn't sound condescending - but it is a source of some frustration to me!  What would you recommend?

In your 2nd para, I see, "with few repeats of basic yet important concepts" - should that be "a few":...?

Not sure if you're saying 10~20 separate short (10~20 mins) videos, or a few 25 minute videos, or ...   There seems to be some concern that YouTube might charge for videos exceeding 15 minutes at some time in the future...

I'll take a look at the Acme video - thanks!

Thanks for the feedback!  Anyone else want to jump in?

Paul M.

stewart mackenzie

unread,
Apr 17, 2016, 12:08:57 PM4/17/16
to Flow Based Programming
"a few" - blush.

Important concepts like schedulers, IIPs, components etc is crucial knowledge for using FBP.
Might want to make a separate video describing the difference between classical and non-classical fbp.

But there is more to DrawFBP than FBP concepts, I'm highlighting the need for experienced developers to understand how to 1) build 2) execute 3) debug 4) package and distribute FBP graphs.

Option 1 : multiple short videos describing each concept in detail
Option 2 : one full length video describing everything together, if you're worried about charges then go for option 1.

kr
/sjm

P.S. we've gone to great lengths to implement classical fbp in Fractalide, if you see something dodgy in the scheduler or other places do let us know!

stewart mackenzie

unread,
Apr 17, 2016, 12:44:20 PM4/17/16
to Flow Based Programming
I tried to use DrawFBP, these are the blockages to adoption, IMHO.

1) lack of linux packages
2) sparse documentation on the tool
3) ship example functional component src with the tool, which is needed to demonstrate the component src structure. (I cannot recall if this is the case, but I do recall having a graph that 'did nothing' before me, my incompetence reigns supreme yet again.)

A webpage detailing a hands on approach to developing classical FBP in DrawFBP, which highlights each concept and how to use it with short video examples interwoven would solve problem 2. That would have smoothed my path to using DrawFBP.

Regarding me making the videos, my time is tied up between beekeeping and Fractalide, so I shan't take on this responsibility! What you could do is highlight in the video that it's crossplatform.

Besides one of the FBP godfathers should do that!

Paul Morrison

unread,
Apr 17, 2016, 9:58:16 PM4/17/16
to flow-based-...@googlegroups.com
Anyone want to collaborate on this?!  My problem is always that I am too close to the subject matter - can't see the forest for the trees!

Rob Halff

unread,
Apr 18, 2016, 2:44:28 PM4/18/16
to Flow Based Programming
HI y'all, I enjoyed watching the video.

Probably I will not be using DrawFBP, still it's interesting to see the features explained and the reasoning behind things.

There is no need in replacing this video, just create a new one explaining other details.

The next 'episode' could show how to run a graph, maybe the 'Telegram Problem' or another program showing the benefits of using FBP.

It would also be nice to show a network which solves a problem you would consider to be fit to run within production.

Does JavaFBP have any monitor capabilities build in?

Besides visually creating graphs having direct visual feedback of a running network is even more interesting to me. 


Paul Morrison

unread,
Apr 19, 2016, 1:36:09 PM4/19/16
to flow-based-...@googlegroups.com
Thanks Rob (and Stewart),

Sounds like I can leave "episode 1" up there in Youtube-land, and add further episodes as time becomes available.  Running a network sounds like it is an important topic - I think you will find that it is pretty trivial  (at least using Eclipse)!  :-)

Rob, JavaFBP per se doesn't have monitor capabilities built in - it is so easy to add a display process that I didn't bother.  Also, given the variety of data types that can travel across connections (e.g. IP tree structures), I didn't think it would be worth trying to come up with a multi-format display...  However, maybe we could do something using reflection...

I will deliver an "episode 2", hopefully in the next couple of weeks - I am beginning to think that my videos will never be as beautiful as the professional ones, but probably it's the cake that is important, not the icing!

Regards,

Paul

Paul Tarvydas

unread,
Apr 19, 2016, 1:52:13 PM4/19/16
to flow-based-...@googlegroups.com
On 16-04-19 01:36 PM, Paul Morrison wrote:
> ...
> Rob, JavaFBP per se doesn't have monitor capabilities built in - it is
> so easy to add a display process that I didn't bother.

Subject of next video: how to add a "probe" component and how to use it
to debug.

It's like using a voltmeter to probe an electric circuit.

Yes, it's obvious, but not "obvious enough" :-).

pt

Matthew Lai

unread,
Apr 19, 2016, 3:05:14 PM4/19/16
to Flow Based Programming
Sounds more like an ammeter :)

Matt

Paul Morrison

unread,
May 6, 2016, 10:40:50 PM5/6/16
to Flow Based Programming
Second video just posted, showing how to run a JavaFBP network in Eclipse, and how to add an "ammeter" into  a diagram. 

https://www.youtube.com/watch?v=9NXYNxDjFWY 

I did say it was simple!  :-)

Regards,

Paul M.

Paul Morrison

unread,
May 6, 2016, 10:46:56 PM5/6/16
to Flow Based Programming
By the way, I thought the run times were a bit high - turns out I was running with full tracing enabled.  With tracing switched off, the run time of the first ("unmonitored") network is 0.1 seconds (100 msecs).

Cheers,

Paul M.

Paul Morrison

unread,
May 28, 2016, 3:03:15 PM5/28/16
to Flow Based Programming
Just posted the 3rd video on DrawFBP and classical FBP - a bit dry, but IMHO it has some important concepts! 

https://youtu.be/-AmzfhV2hIU

Paul Morrison

unread,
Jun 30, 2016, 10:13:11 PM6/30/16
to Flow Based Programming, er...@rohlicek.at
I have posted an xsd file on the DrawFBP GitHub project - https://github.com/jpaulm/drawfbp/blob/master/lib/drawfbp_file.xsd .  This schema describes the format of the XML files which DrawFBP uses to store its diagrams (the extension is .drw).  Any diagramming tool that can generate this format can in turn take advantage of DrawFBP's network generation facility (JavaFBP, C#FBP, JSFBP, CppFBP).  Providing a schema was suggested by Ernst Rohlicek - Ernst, have you looked at this yet?

I only know at this point that the xml is valid, but I haven't validated the output of DrawFBP against it, but I hope to try it shortly.  Also, for any enhancements, attributes, etc., that people would like to see, please feel free to raise pull requests. 

Regards,

Paul

Paul Morrison

unread,
Jul 8, 2016, 11:20:32 AM7/8/16
to Flow Based Programming, er...@rohlicek.at, stewart mackenzie
I have added quite a few fields (mostly optional) to the XML Schema for DrawFBP diagram files (extension .drw), plus bends.  Subnet external ports still have to be added to the schema.

To accommodate the new schema, DrawFBP had to change the way a number of boolean fields were generated, so there is a new release (v2.12.1) which does this.  This release can still display diagrams encoded using the old format, but will generate the new format when the diagram file is rebuilt.

I would appreciate feedback on the tool (DrawFBP) and on the schema as well, as I am pretty green with this technology!

Cheers,

Paul M.


PS I miswrote - DrawFBP currently generates NoFlo-style JSON, not JSFBP networks  (in addition to JavaFBP and C#FBP).  I hope to add generation of JSFBP networks in a later release.

PPS Stewart, I have put up a sample .drw diagram on GitHub - https://github.com/jpaulm/drawfbp/blob/master/lib/ConcordR.drw .  Again, comments would be appreciated!

Henri Bergius

unread,
Jul 8, 2016, 2:09:28 PM7/8/16
to flow-based-...@googlegroups.com
Hi!


On Fri, Jul 8, 2016, 17:20 Paul Morrison <paul.m...@rogers.com> wrote:
PS I miswrote - DrawFBP currently generates NoFlo-style JSON, not JSFBP networks  (in addition to JavaFBP and C#FBP).  I hope to add generation of JSFBP networks in a later release.

While the JSON format was started with NoFlo, the spec now lives in "flowbased", and there is bunch of tooling and other FBP runtimes supporting it.


/Henri

stewart mackenzie

unread,
Jul 8, 2016, 2:17:12 PM7/8/16
to Paul Morrison, er...@rohlicek.at, Flow Based Programming

Hello Paul,

Yes, we've just moved to something called D3js for our front end, it's coming in slowly. We've developed a technique that will allow us to use fbp to construct a user interface. How to tie this with what Paul T refers to as a factbase, probably this .drw file is a similar concept. We're still a few steps away from that.

DrawFBP is starting to look a lot better, would love to see it published into maven though. With fractalide it was one of the first things we did, published it into the community package repo https://crates.io/crates/rustfbp

Now what in particular do you want me to comment on? This is the solution, what was the original problem?

Kind regards
Stewart

Paul Morrison

unread,
Jul 8, 2016, 6:50:43 PM7/8/16
to flow-based-...@googlegroups.com
Hi Henri, 

https://github.com/flowbased/fbp/blob/master/schemata/graph.yaml seems to be yet another schema!  Are they basically the same?  At what point in development do they come into play?

Regards,

Paul


/Henri

--

Paul Morrison

unread,
Sep 20, 2016, 11:23:26 AM9/20/16
to Flow Based Programming, paul.m...@rogers.com, er...@rohlicek.at, stewart mackenzie
Hi Stewart,

As you suggested, DrawFBP is up on Maven - it took a while, but I got there in the end!  I am not sure why it took me so long to realize the importance of doing this, but of course it makes DrawFBP a lot more accessible! 

Thanks for the suggestion!

Paul M.

stewart mackenzie

unread,
Sep 20, 2016, 12:29:45 PM9/20/16
to Paul Morrison, er...@rohlicek.at, Flow Based Programming

Hi Paul,

Ah yes, so I noticed! Really happy about that!

Next major thing for DrawFBP: when deploying/sharing a subnet it needs to be as simple as possible to get running for the end user. Can I receive a subnet from someone and run it immediately without having to click on each component and load up all the component binaries or jar files?

Are each of the component binaries/jars stored on maven? Is the DrawFBP vm smart enough to pull down component jars and link them into a graph-to-be-run?

Is this possible to do?

IMHO this is critical for operations. FBP might be good at reducing cost of the maintenance phase but it must also be good at operations.

So far in Fractalide we're able to achieve this:

a => a nand(${maths_boolean_nand}) output => output
b => b nand()

The above subnet undergoes a compilation step and ${maths_boolean_nand} resolves into a path `... a nand(/nix/store/<hash>-maths_boolean_nand) output ...`
containing a subnet or shared object, the fractalide vm is smart enough to determine if /nix/store/<hash>-maths_boolean_nand is a subnet or shared object.

When using the ${...} method, evaluation is lazy, therefore, one could have many 100,000s of components in your git repo and only a smaller subset of dependent components + subnets will be compiled when requested.... indeed our entire vm is built in these classical fbp components, so we're very meta! Thankfully nix immediately catches infinite recursions and component naming clashes!

We use this ${...} method for components that are to be committed into the fractalide repository, typically these components are generic. If users just want to slap and tickle (experiment) components i.e. pass in different IIPs, then just use `a nand(maths_boolean_nand) output` this file can be passed into the fractalide vm/shell called `lain`.

I.e. `lain /path/to/fbp.subnet`

(Still vapourware as I'm battling with parser combinators, but much of it already works)

Lain then will compile this script and run it accordingly. Obviously if you don't have that component it won't work.

BUT! Passing in dynamic IIPs via fbp flow script is still too verbose for most users, particularly operations! I'm currently working on a shell which compiles standard unix/gnu tool naming conventions i.e. `cd /directory` etc to fbp flowscript, quickly updating IIPs and creating new subnet hierarchies, again at the speed of short bash like commands... well a tad slower.
In other words a shell is a typical way to quickly run and execute program, it should be emulated! Besides the shell is the king of fbp, it kinda makes sense to implement a shell in classical fbp.

It should be possible to deploy and run subnets of 1000s of components with a single simple bash like command. So this will be a shell on steroids.

Probably a bit early to announce but I'm nearly done with this, I hope someone can test it out.

kr/sjm

Paul Morrison

unread,
Sep 21, 2016, 1:08:03 PM9/21/16
to flow-based-...@googlegroups.com, stewart mackenzie
First reactions:

On Tue, Sep 20, 2016 at 12:29 PM, stewart mackenzie <seto...@gmail.com> wrote:

Hi Paul,

Ah yes, so I noticed! Really happy about that!


Thanks!

Next major thing for DrawFBP: when deploying/sharing a subnet it needs to be as simple as possible to get running for the end user. Can I receive a subnet from someone and run it immediately without having to click on each component and load up all the component binaries or jar files?

In JavaFBP a subnet is treated as a (grey-box) component at run time, so the diagram can reference a subnet as if it were a component - i.e. not use the double-line subnet convention, in which case the subnet is opaque... 

Alternatively, you can use the double-line convention: in this case the subnet block references another .drw file, and the subnet is more of a white box (light grey)....  Double-clicking on the double-line block brings up the subnet's diagram in another panel, so you can work with both the master diagram and the subnet diagram independently. The class associations can be stored in the .drw files, so, yes, these could be provided by a 3rd party, as long as the relevant jar files are also provided.
 

Are each of the component binaries/jars stored on maven? Is the DrawFBP vm smart enough to pull down component jars and link them into a graph-to-be-run?


Currently DrawFBP lets you work with one component jar file at a time: you specify the jar file you want to work with using File/Locate JavaFBP Jar File (which actually contains all the components we have built so far), and then use this jar file while assigning component classes to individual diagram blocks (using Choose Component/Subnet Class).

We could perhaps arrange to preload a bunch of jar files, and then use the appropriate one for a given block - that doesn't seem like a big extension - there would of course have to be changes to some of the displays...

Is this possible to do?


"The difficult we do immediately - the impossible takes a little longer" .

I would be happy to work with you on any aspects of this that you think would be useful.


One question:  is there a role for both DrawFBP and Fractalide in the FBP universe? 

Regards,

Paul M.

stewart mackenzie

unread,
Sep 22, 2016, 1:05:47 AM9/22/16
to Paul Morrison, flow-based-...@googlegroups.com
> I would be happy to work with you on any aspects of this that you think
> would be useful.

We rely on Rust's ownership concept to automatically free IP memory
without needing a garbage collector. Which means our scheduler is
quite different from DrawFBP's scheduler.
Secondly Fractalide's IPs are encoded using Capnproto contracts
(capnproto.org) which allows us to send IPs to any language that
supports capnproto bindings outside of the our vm.
Thirdly fractalide's components support strong contracts. Components
only accept precisely defined data and reject IPs/connections
otherwise (unless you explicitly accept `any` contract). This is a
strong security mechanism to prevent weird machines or strange loops
as prescribed by the langsec.org group. I'm uncertain (longterm) if
strong contract support will be a bad choice. So far it hasn't been a
restricting factor at all, indeed quite the opposite, in the sense we
have strong confidence of data traversing our system. This seems to
have removed an entire debugging layer, that of needing to introspect
or probing IPs flowing through a system. One just needs to see the
capnproto schema to understand. I could be wrong but if it becomes a
problem it'll be addressed.

Refactoring DrawFBP to support such an environment would 1) require a
lot of work using the Java/C++ programming language, which means
Fractalide doesn't advance. 2) My suspicion is: the overhead of
manually managing the versions/compilations of all the components and
coordinating the build makes DrawFBP hostile to deployment, compared
to today's programming languages with language level package managers.
That's why Fractalide uses http://nixos.org/nix/ as its package
manager. Nix comes with it's own expression language and thus handles
the coordination and building of all our components automatically.
Shimming that into DrawFBP would be hard. I just don't see how it
would happen.
One serious advantage when using Nix: Nix isn't just a language level
package manager it also OS level, which means a component might have
third party dependencies such as openssl, and iff that component is
called into scope of a subnet compilation then openssl will be
downloaded and made available on the system. This means a component is
powerful enough to setup its own environment which might include
dependencies such as python or libffi or any library presented here:
http://nixos.org/nixos/packages.html, or indeed even closed src
components if needed. This is real power to developers and operations
teams, it removes an entire class of headaches from both parties.
Given that Nix has its own CI (http://nixos.org/hydra/) and CD
(http://nixos.org/nixops) solutions it means those problems are also
solved. Most importantly we rely on the very great nix community which
as you can see get shit done: https://octoverse.github.com/ (search
for "nixpkgs"), (Rust is also on that list too). So from a popularity
point of view this is the beginning of a very popular wave that's
about to hit. I think Fractalide is nicely placed to take advantage of
this "trend" wave. [1]

I'm also suspect companies that build their infrastructure off the
combination of nix+rust+fbp = fractalide will gain a good advantage
over other stacks.

example: https://github.com/fractalide/fractalide/blob/c2c918dee5999303b11ba426226accc4bf34a8d4/components/nucleus/find/component/default.nix#L10
this component calls nix into scope.
This is the implementation of the nucleus_find_component component
https://github.com/fractalide/fractalide/blob/c2c918dee5999303b11ba426226accc4bf34a8d4/components/nucleus/find/component/src/lib.rs

3) I'm not convinced having a flashy front ends increase FBP adoption.
I think it's eye candy that is very useful to the developer, but, and
this is crucial in my view, a developer will not chose something that
makes life difficult for people to deploy code, hence FBP remains a
developer's dream. Secondly, how does a developer debug remote
subnets? The graph editor should operate over ssh. So for us it would
seem we're taking a completely different path, that of using
https://github.com/Ticki/termion. Programmers must be able to remotely
access a machine and administer a subnet. Erlang with its shell sets a
good example. Hence we are going the direction of a shell cum graph
editor over ssh.

If you'd like to assist then it'll need to be on Fractalide I'm
afraid, too much infrastructure revolves around coordination of
dependencies and subnets and finding ways to leverage the best of nix
to liberate us from this inherent problem that arises due to separate
components in FBP. Nix really is a secret weapon here. Noflo gets away
with dissemination issues because their components are centralized and
their servers will disseminate the rendered frontend. I'm looking at
disseminating the components not just the user interface. But it means
one has to code in javascript || derivatives. Personally I prefer a
nice systems language. A mechanism which automates dependency
versioning and building IMHO is the needed ingredient for FBP to be
adopted en mass. Without this, FBP is dead in the water. The flashy
editor has already been shown not to be the essential ingredient to
FBP adoption, in other words a simple terminal based graph editor
should suffice!

> One question: is there a role for both DrawFBP and Fractalide in the FBP
> universe?

I'm not sure I understand this question or how to answer it.

Portraying Fractalide as an implementation of FBP only would be a mistake.

Fractalide uses FBP a subset of Dataflow, to solve a problem, namely
number 2 of https://github.com/fractalide/fractalide/blob/master/README.md.
Just pushing a programming concept won't get Fractalide anywhere. The
project needs to solve insanely expensive problems, we're operating on
new levels of abstractions which make it cheap for us! Hence we're
reorienting Fractalide to solve the same problem docker solves... only
done much better, with an add-on of allowing programs to compose and
pipe nicely thanks to FBP. The hopes are to create a streaming layer
whereby folks can use components to obtain decent insights into large
amounts of data. This would have to be exposed as a shell. In other
words... deploying code to your system means you _just_ type the
subnet name and press enter. An entire subnet of possibly thousands of
components would arrive and be executed on your machine nicely piping
data to other components you typed in the shell.

i.e. $ cat earthquakes.txt | stats count mean(mag), stdev(mag),
var(mag) BY magType

Keep in mind all these commands would be implemented in Fractalide
FBP/Flowscript

Granted the CLI is a limited in that full blown FBP explicit input
ports and output ports are made implicit, hidden and defaulted (named
pipes). If you wanted to implement the stats command you could press a
mode switch button and your terminal editor would switch to a textual
graph editor. This would allow you to connect the full FBP port names.
This is where we're going now and is unimplemented yet.

I'm experimenting with the name Flowscript over FBP. That way we won't
have an identity crisis (viz get embroiled in the whole classical FBP
vs non-classical FBP). Secondly, we'll be dealing with people who use
names like "bashscript", so something the is an incremental step up
from there might work. i.e. "flowscript" which would express the CLI
interface language and the full blown FBP .... I don't know maybe call
it Flowscript FBP would be a good balance? We have enough added
features that deviate from classical FBP in that we have this concept
of a teleportation portal called "portal" which like the Valve game
Portal (see https://www.youtube.com/watch?v=TluRVBhmf8w) allows one to
easily keep state around by simply throw the state into the portal and
it pops out on the next function run, to be sure state doesn't leak
outside the component. (see
https://github.com/fractalide/fractalide/blob/a480665034cb863c5e0d35e636d5e912ead0627a/components/nucleus/flow/scheduler/src/lib.rs#L54
for an example usage). Makes things super convenient with things like
hashmaps etc.

It would be really excellent having more people take Fractalide
seriously and contribute code that succinctly solves real world
problems.

[1] I really dislike these trend waves as it means our discipline
isn't firmly based in the scientific process but on the herd mentality
of people. But it's a fact of life at the moment.

Paul Morrison

unread,
Sep 22, 2016, 9:53:24 AM9/22/16
to stewart mackenzie, flow-based-...@googlegroups.com, Matt deepFriedCode
Hi Stewart, I confess to some confusion:  are you confusing DrawFBP with "classical" FBP?  DrawFBP is just a diagramming tool:  it doesn't have a scheduler - it is just a Swing ( https://en.wikipedia.org/wiki/Swing_(Java) ) application.  Although it was designed to support the "classical" FBP methodology, including stepwise development, componentry, rapid prototyping, etc., it can actually be used for a variety of other diagramming jobs.  This is the tool I was asking about.  I have just about given up on trying to understand and coordinate all the FBP-like solutions out there in the FBP-verse!  Matt Carkci makes a sterling effort, but I don't even understand some of the variants he describes!  :-)

If Fractalide is FBP-like, then DrawFBP could probably support it also.  My orientation is visual, and I prefer diagrams, while your examples seem to suggest a *nix style command format, which I personally find less friendly.  Of course, DrawFBP could be easily extended to generate such command strings, although DrawFBP assumes (multiple) named ports, and I haven't seen examples of this in your notation.  If your commands are straight-line, then we can just leave the port names blank, or have some kind of mode switch suppressing named ports altogether.

I'll study your post more fully, but I wanted to (try to) make sure there wasn't a misunderstanding at the outset...!

Regards,

Paul

Paul Morrison

unread,
Sep 22, 2016, 10:51:06 AM9/22/16
to stewart mackenzie, flow-based-...@googlegroups.com
Matt's email address seems to have changed - Matt, are you there?!

Stewart, it just occurred to me that you may have been thinking of DrawFBP as the control panel for a running job.  I'm afraid that's a bit too complex for me, and I don't feel classical FBP needs that to achieve its full potential.  IMO it's cleaner to keep diagramming and running separate.  Also, bear in mind that the first major application of FBP involved jobs running for hours, processing millions of transactions...  I see no point in attaching a visual front-end to such long-running jobs - even if we had had the technology to do that in those days (early '70s).

Also, the combination of DrawFBP and a powerful IDE produces a very straightforward natural interface IMHO!  See my 3 videos describing this interaction, especially the 2nd one: https://www.youtube.com/watch?v=9NXYNxDjFWY  .

Regards,

Paul M.

stewart mackenzie

unread,
Sep 22, 2016, 11:04:33 AM9/22/16
to Paul Morrison, flow-based-...@googlegroups.com

Okay, I see.

I'm very curious, in the 70ies,
* A typical installation consisted of how many components?
* How did you setup and install each component?

In distributed Erlang it's normal to have a shell you can connect to and debug a running erlang runtime system. Indeed it has a graphical frontend giving the programmer statistics of the system. It's even possible to hotswap a component.

My main point is not so much about the graph editor but more so how to easily pull dependencies into a graph, link them up and execute the graph. I'm very curious to know if you automated this process in the 70ies, if so how did you do it? Keeping in mind, if fbp wants to go global, it needs to globally share components which require a proper naming convention. See Zooko's triangle.

stewart mackenzie

unread,
Sep 22, 2016, 12:06:29 PM9/22/16
to Paul Morrison, flow-based-...@googlegroups.com

Interesting, thank you!

Regarding the naming, it's important to also factor in the compenent version. I dislike semantic versioning but many appreciate it. I think there are better ways of respecting ABI contracts when linking libraries. iirc java's naming scheme is just the reverse of your domain name n levels deep

I'm aware that Erlang and FBP occupy different spaces, I'm refering to drawing inspiration from the management and administration layers. Secondly FBP is actually very good for long lived server type environments (so is Erlang!), and servers are spun up automatically by the 100s in some cases. (This is because we have data dissemination built in at the application level, when it should me built in at the networking level. )


On 22 Sep 2016 23:45, "Paul Morrison" <jpau...@gmail.com> wrote:
I would guess from 50 to 200 processes.  On the IBM mainframe systems we used, an FBP application network was specified using macros, compiled, and linked, which would then automatically combine the network with the components ( https://en.wikipedia.org/wiki/Linker_(computing) ), resulting in what was called a load module.  As we controlled all the code, we merely needed a company-internal naming convention.  Program names were restricted to 8 characters max, so we had to be creative!

No hot-swapping  - these were batch jobs, so you simply modified the network if necessary, relinked, retested, promoted and restarted!  Job submission was typically under the control of job scheduling software.

Also, remember Erlang is a different application space: as I understand it, it supports multitudes of short-running processes, whereas classical FBP tends to lean to a smaller number of long-running processes.

As you suggested earlier, since you can have multiple component jar files, then that gives us basically a 2-level naming convention: jar file name/component name.  DrawFBP supports this currently, but I'm wondering if we should try to extend it (and the other classical FBP run-time implementations) to Maven 3-level artifact names.  That sounds like something worth doing...?

Regards,

Paul M.
Reply all
Reply to author
Forward
0 new messages