zeh@Posted: Mon Nov 03, 2008 5:03 pm :
After 4 years of suffering, I'm finally (almost) done with college.

The last college year on my "digital interface design" bachelor degree is spent building the thesis project. My thesis is a node-based visual programming language for image and audio manipulation using a mathematical/functional approach - it's a lot like Max, vvvv, or Pd. However, it runs inside the browser. Here's a video in which I build some animation from scratch:

http://www.vimeo.com/2109843

Or development images on Flickr:

Image

Not done yet, but I'm quite proud of what I've managed to build so far.



TinMan@Posted: Mon Nov 03, 2008 8:27 pm :
That's awesome zeh. Nice choice of Flash/Flex, a nice solid vector drawing system to have as a base for drawing the nodes. (I still need to learn it some time heh).
I've had a visual programming project banging around in my head for a number of different applications for a while now, but I've never even made the first step of out-of-my-head onto design :lol:



Ww3@Posted: Tue Nov 04, 2008 12:42 am :
Kudos, it looks very nice!

How do you deal with keeping the screen readable as soon as an application becomes too big to be represented on a screen, do you do some visualisation clustering, or is that for future research?



zeh@Posted: Tue Nov 04, 2008 1:14 am :
Thanks guys.

WW3 - basically you have a large canvas that you can drag around, Illustrator/Photoshop-style. So in theory you can create large projects and just move around. But the sanest thing to do when a Patch (that's how Fnk's "program" or document is called) becomes too complex is to build subpatches that you can place and then reuse. Think of them like functions in normal programming languages - you create them and you can call them from several other places, or reuse them at will. Each subpatch is a separate instance of the same patch, you can "enter" then and then go back, and they look like a normal node - you can create input and output parameters. So basically you build nodes that have more nodes inside of themselves. You can't loop them (ie, you cannot do any kind of recursion - it goes directly against the principles of the dataflow approach, and there's absolutely no workaround for that), but other than that they're like metaphors of how a functional language works.

If you look at a tool like vvvv, it's easy to see how that kind of approach works. It's very helpful. On my most complex projects using vvvv I'd usually have an "index.v4p" file that did the higher-level work, and had some inputs and outputs, but the grunt work was done by separate, "internal" patches. That's how I hope will work inside Fnk, although it'll all be kept to a single document (vvvv uses separate files linked together).

However, as it depends on a more polished document/project handling, that feature is not available right now in the current Fnk version. It's definitely a basic part of the whole plan and something I intend to build into the final thesis version (due later this month), but I'm short on time so I'm not sure it'll be possible - I kept it out of my initial project paper for now. Still, the final thesis project is just the initial version. There's a lot of stuff I'll be adding later.



zeh@Posted: Mon Nov 03, 2008 5:03 pm :
After 4 years of suffering, I'm finally (almost) done with college.

The last college year on my "digital interface design" bachelor degree is spent building the thesis project. My thesis is a node-based visual programming language for image and audio manipulation using a mathematical/functional approach - it's a lot like Max, vvvv, or Pd. However, it runs inside the browser. Here's a video in which I build some animation from scratch:

http://www.vimeo.com/2109843

Or development images on Flickr:

Image

Not done yet, but I'm quite proud of what I've managed to build so far.



TinMan@Posted: Mon Nov 03, 2008 8:27 pm :
That's awesome zeh. Nice choice of Flash/Flex, a nice solid vector drawing system to have as a base for drawing the nodes. (I still need to learn it some time heh).
I've had a visual programming project banging around in my head for a number of different applications for a while now, but I've never even made the first step of out-of-my-head onto design :lol:



Ww3@Posted: Tue Nov 04, 2008 12:42 am :
Kudos, it looks very nice!

How do you deal with keeping the screen readable as soon as an application becomes too big to be represented on a screen, do you do some visualisation clustering, or is that for future research?



zeh@Posted: Tue Nov 04, 2008 1:14 am :
Thanks guys.

WW3 - basically you have a large canvas that you can drag around, Illustrator/Photoshop-style. So in theory you can create large projects and just move around. But the sanest thing to do when a Patch (that's how Fnk's "program" or document is called) becomes too complex is to build subpatches that you can place and then reuse. Think of them like functions in normal programming languages - you create them and you can call them from several other places, or reuse them at will. Each subpatch is a separate instance of the same patch, you can "enter" then and then go back, and they look like a normal node - you can create input and output parameters. So basically you build nodes that have more nodes inside of themselves. You can't loop them (ie, you cannot do any kind of recursion - it goes directly against the principles of the dataflow approach, and there's absolutely no workaround for that), but other than that they're like metaphors of how a functional language works.

If you look at a tool like vvvv, it's easy to see how that kind of approach works. It's very helpful. On my most complex projects using vvvv I'd usually have an "index.v4p" file that did the higher-level work, and had some inputs and outputs, but the grunt work was done by separate, "internal" patches. That's how I hope will work inside Fnk, although it'll all be kept to a single document (vvvv uses separate files linked together).

However, as it depends on a more polished document/project handling, that feature is not available right now in the current Fnk version. It's definitely a basic part of the whole plan and something I intend to build into the final thesis version (due later this month), but I'm short on time so I'm not sure it'll be possible - I kept it out of my initial project paper for now. Still, the final thesis project is just the initial version. There's a lot of stuff I'll be adding later.