

Visual Dataflow Implemented in Lisp [pdf] - isp
http://web.onetel.com/~hibou/fmj/interpreter.pdf

======
isp
Full Metal Jacket:

\- Home:
[http://web.onetel.com/~hibou/fmj/FMJ.html](http://web.onetel.com/~hibou/fmj/FMJ.html)

\- Tutorial:
[http://web.onetel.com/~hibou/fmj/tutorials/TOC.html](http://web.onetel.com/~hibou/fmj/tutorials/TOC.html)

~~~
analognoise
Can we download it and kick the tires?

~~~
DonaldFisk
Not yet. Please be patient. I still have to add the ability to define new data
structures and types before it's a complete language. I'm currently working on
that. Then I need to make the code more robust. I also have to eat my own dog
food for a while - if I don't use it, who else will?

After all that, I'll sort out the .303 release. This will allow free (as in
beer) non-commercial use.

------
jlarocco
Simple arithmetic and function definition are simple enough to follow, but the
iteration and conditionals seem clunky.

Also, I think there's a typo on this page because the images doesn't seem to
match the equation (or I'm not understanding the mapping between code and
graphics):
[http://web.onetel.com/~hibou/fmj/tutorials/Functions.html](http://web.onetel.com/~hibou/fmj/tutorials/Functions.html)

~~~
CyberDildonics
Pretty much. Iteration and conditionals are the bane of a making a DAG
elegant. I think the inverse is fairly true too, data flow is much better
visualized in a DAG and much more difficult to see in an imperative line by
line approach.

~~~
agumonkey
Funny in image compositing software the iteration is abstracted away as time
ticks over image sequences that update the input nodes thus pushing new
outputs. It's there without being there explicitely.

~~~
CyberDildonics
Right, and the iteration over pixels is hidden in plugins themselves. Complex
filters though are difficult or impossible to build since there is no
granularity and in fact gathering or scattering of arbitrary memory locations
is very awkward.

Anyone who has used Shake or Nuke knows that working with essentially a domain
specific interface is an enormous benefit.

I think there is a lot of value in learning from compositing systems as well
as Houdini when writing software - namely being able to freeze data in place
and iterate on one data transformation at a time.

~~~
agumonkey
Houdini especially since he deals with any kind of data, it's almost the Lisp
of computer graphics. Some tutorials are mixing geometry, analog signals
(audio), discrete signals (user inputs), through Houdini's builtin operators.
Never seen such versatility. I always say this should be taught in programming
classes (both for UX, ergonomy, programming paradigm).

And the virtual + freeze is also very present in audio production software.
All this things that are close to memoization, laziness are present there.

