Almost 4 years ago I went back to college, to get a “Digital Interface Design” bachelor degree. This meant putting on hold a lot of things in my personal and professional life, but it also meant having contact with a lot of new stuff.
One of those new things I had contact with was node-based programming environments – more specifically, Max and vvvv. I did a number of college works using these programs, and even ported Tweener to vvvv for one specific college project.
That kind of dataflow-based, visual programming environment was quite inspiring for me. It doesn’t replace our more imperative method of writing code, but working with a more concrete approach to graphic and sound manipulation was a lot of fun and I wondered what would it be like if an environment like that was built in Flash. For one thing, because it could bring the joy of dataflow programming for a broader audience (no installation needed etc); and for another, because in some specific points I believed the interface for those programs could be easier to work with.
It turns out this is my last year in college, and that year is used exclusively for a final thesis project. After a lot of ponderation, in december of 2007 I decided that I’d tackle the problem and try creating a dataflow-based visual programming language of my own. The result is what I almost incidentally came to call Fnk.
This video demonstration shows some simple math-based animation being built from scratch on Fnk.
While the editor and the language are far from done – it’s not even beta yet – the result is an editor that looks and works a lot like Max, vvvv or Puredata: you create nodes with different types of data, and everything is in constant execution; you can change values and the programming as you go. The biggest difference is that it’s meant to be ran inside a browser.
Now, before someone jumps the shark, I’ll be the first to say this is not meant to be revolutionary or anything. It’s not meant to improve your workflow, and it’s not meant to be anything more than Max/vvvv/Pd; if anything, I’m trying to make it more accessible, but the very fact that it runs inside the browser also means it has many limitations of its own. To be quite honest, the project has no clear goal; as an academic project, I’m just trying to make something that’s fun to use, can serve as a good learning environment to learn about dataflow languages (and maybe a step towards Max/vvvv and others), and can basically help you prototype visual/interactive pieces. There’s a few features I’ll be exploring in the near future, like an AIR-based standalone version, allowing normal ActionScript SWFs to load and execute Fnk patches, and allowing HTML embed of patch players, but this is still all quite experimental.
Again, it’s not finished as the editor’s missing a number of features, and the language vocabulary is quite limited; it can only do some rudimentary String and Number manipulation, as well as draw circles (duh). I’m finally getting into its last step, however, which is adding new nodes to the language.
More about it on the project website, which is also pretty much a work-in-progress. You can launch Fnk here (please notice: it requires Flash 10 to run, even though no Flash 10 feature is visible yet). There’s also a bigger explanation on the project’s About page, with a link to the draft thesis paper (in Brazilian Portuguese only for now!), a few more test videos here, and many development screenshots here.
So yeah, other than real work, this is what has been keeping me busy for the last 10 months. It’s good to get it out of the system I guess.
Finally, just before anyone brings this up: no, this is not like Aviary’s Peacock, or Source Binder. While the fact that all of those environments employ noded-based visual programming can easily fool anyone into thinking they to the same kind of stuff, that’s pretty much where the similarities end. If anything, it can look a bit like Source Binder in terms of possible application target, but Fnk’s approach is at the same much lower-level (because you do not use third-party classes; you have to build your own visual code using Fnk’s nodes) and also higher level (because you cannot use your own Actionscript code inside of it; you have to build your own visual code using Fnk’s nodes). Fnk runs on the Flash platform, but it tries to create a complete abstraction from ActionScript. Also, maybe I don’t need to say this, but the Fnk project was started before I knew either of those environments existed (and honestly I’m glad they’re pretty different so my work isn’t redundant).