I want to highlight a comment from a recent story in which I was reflecting on how to approach Processing, and – in a larger sphere – design simplicity. Tom writes:

My opinion – the problem with Processing is that is not part of a software ecosystem. Flash is aligned with Illustrator and After Effects et al., when the solution is not in one, it can help to rephrase the problem in another. When trying to create a piece of art I might sweep back and forwards between each, looking for the first jigsaw piece.

I always start with a vision of what I want to see and will then scribble it. The idea of code snippets as the START of something is just not interesting – I need to scribble, then refine. Processing reminds me of computer graphics from the bad old days pre – Amiga. Isolated and demanding.

While ‘industry standards’ are sacred cows, it’s also true that some packages are popular because they appeal to a variety of users: the painter and the programmer.

Tom has a point here, and I think offers good insight into how people work creatively with Adobe Creative Suite, but I want to address the relevance to the blank-slate, free and open source, code world of Processing. He raises some good questions – questions worth talking about.

There are two ideas here. One is that you need to start by scribbling. I couldn’t agree more – but speaking for myself personally, the place to do that is in a sketchbook, on paper, with a pen. I would choose Processing over Adobe Creative Suite for sketching because Processing’s window is truly a blank slate, because the ability to type in code that covers all the worlds of 3D, 2D, sound, pixels, video, and so on to me offers tremendous freedom, and because the syntax of Processing encourages you to try compact ideas – small haikus rather than expansive essays – at least when beginning an idea.

But Processing versus paper? Sorry, no contest. I’ve found I’m massively more productive in Processing if I have a paper notebook handy, if I walk away from the computer and sketch an idea on a subway, if I start drawing an outcome before I begin to think in code. Also, perhaps it’s because I always had to work at math, but I find that I solve problems of geometry and structure much faster if I simply draw them. This moves you from the abstract to the concrete. Not sure how to structure an array, or how to rotate geometry, or why something isn’t working? Why not try working it out on scratch paper? In fact, I think Creative Suite is itself a selection of abstractions, not a tool in which you would want to sketch. I think it’s a myth that the Graphical User Interface makes things concrete; rather, it makes certain things concrete, certain things more abstract, and certain things more rigid. I’m committed to the computer as a tool. But even with sophisticated digital tablets, pen and paper introduce muscle and tactile sensations different from the computer, and for that alone, they’re valuable.

The value of Processing – or any code tool – is that you can conceive a structure, something generative, something interactive, something dynamic in ways that you can’t with graphical tools alone. In fact, back in Creative Suite land, Flash gurus like Joshua Davis do just the same – they try executing an idea that you can’t draw on the computer (though perhaps you can start thinking about that structure by drawing on paper). Without ActionScript in Flash and Expressions in After Effects, Creative Suite would lack this ecosystem, too.

That brings us to the second point Tom makes, which is the ecosystem. Processing certainly can be its own ecosystem, at least in terms of media, because it can deal with 2D, 3D, pixels, video, sound, electronics, hardware, type, data, and, with the larger Java library world, pretty much anything else. And in fairness, the heft of Creative Suite can be as much a liability as an asset, as you learn interfaces that are not always consistent, and workflows that are not always complete. Adobe is constantly working on closing those gaps, but the nature of these tools makes it a matter of tradeoffs – always a necessary evil.

But Tom is absolutely right. It’s not always more productive to code every tool from scratch. So it sounds to me like this is perhaps just a misunderstanding of the role of a tool like Processing, on two levels:

1. It is possible to use a code tool alongside non-code tools. Processing has long worked effortlessly with graphics, and via libraries and core development, is improving its import/export workflows with video, sound, and 3D models. Let’s take 3D as an example. An increasing amount of software is now supporting COLLADA, and one indepedendent developer (Matt Ditton) has built an amazing loader for Processing – GPL open-source; check out its Google Code page. There’s no Adobe to make these things magically happen; it falls to users. That also means that users determine priorities and features, and there’s no massive company with its own commercial goals. For that reason, I think it’s essential to ahve both. But you’re probably more likely to grab those photos from your digital camera using Google Picasa for touch-up and organization rather than writing a Java app to do it – of course, it’d be silly to argue otherwise. That said:

2. When you know code, you may find yourself scripting to save time. What if you want to take a 100×100 pixel square from three hundred vacation photos and assemble into a montage? Ah – yes, once you know how to code, you have an extra tool in your arsenal. Suddenly, tasks that previously required back-breaking manual labor for several hours can be accomplished in a matter of minutes. And you may find that big, monolithic tools – useful as they can be in some circumstances – aren’t the right tool for every circumstance after all. Things that seemed “powerful” or like “timesavers” may suddenly seem just the reverse.

Now, by “Processing,” what I really mean is “a code environment that is productive to you.” ActionScript isn’t quite as comparable here, because – see the two points above – it doesn’t have the kind of rich file system access or 3D capabilities or library support or language speed and functionality of Java and Processing. That’s not to say one is better than the other; ActionScript, Flex, and Flash are simply more focused on a specific task, and lack some of the extensibility of a truly open source environment.

But you could certainly apply this to ActionScript, Ruby, Python, OpenFrameworks, PHP, C… whatever you like to use.

I didn’t have the time to make this a concise story (I can write a rambling explanation in no time at all, and an elegant explanation only after hours of work). But hopefully this is food for thought.

I was once wary of learning programming, because I thought it was for specialized “progr
ammers” rather than “artists,” or that it’d be a time sink (well, okay, that’s true, but so are all technologies and many things worth doing). But what I’ve found is simply that programming – like drawing on my sketchpad – is a way of expressing ideas and solving problems that has no other replacement. And because it is so essential to the work I do, it’s equally essential that my primary environment be free and open source, have robust, flexible capabilities, and have a community around it. Any tool that fits those qualifications to me is a great choice. If you learn nothing more than drawing boxes, you may find it useful to your design.

  • Adam

    I appreciate this discussion. I would be interested in hearing more about not just the tools…but actual workflow and creative process.

    Amen to pen and paper.

  • http://fareastcoastnoise.blogspot.com Luke Noonan

    Well I often find that my creative process often starts with an algorithm, or code fragment. It's not until later that I have any sort of idea what it will look or sound like.
    So I guess I work in the opposite direction as Tom.

    (In fact Adobe CS products are usually the last step not the first)

  • http://createdigitalmusic.com Peter Kirn

    @Luke: that's a good point – sometimes you may imagine an algorithm and not know what it looks like, which makes sketching directly in code advantageous.

  • http://visualinformation.org Johan Wastring

    Excellent discussion. I especially like the part where knowing code makes your toolkit that much bigger, you have that extra tool when you need it, even if you didn't know you had the need for it one hour earlier. And to be frank, the fact that you know code, i.e. twist that computer to do whatever is in your head, makes your everyday life a little more exciting and a little more nerve-tingling. An idea on paper is good, an idea made alive in processing feels even better.

  • http://experimentaclub.com/druhb Jaime Munarriz

    Programming for visual artists has opened a whole new world of art pieces. Evolving, mutating, interactive… and Processing is just the perfect tool to create them.
    3D soft is not an alternative to photo-retouching, it is a brand new artistic medium. Coded images are just another new categorie (don't forget the early pioneers!)

  • David

    what I have been wishing for is a front end along the lines of Matchware Mediator 9 or Mediachance Multimedia Builder with the option to use the regular processing code environment.
    Everyone has there own way of working and this platform will grow when it accommodates these different styles of working.

  • http://createdigitalmusic.com Peter Kirn

    @David: Actually, it's very possible to build something like that now, possibly using one of these UML generator tools. It's an idea upon which I'll have to reflect.

  • Tom

    Ooh. Came back later and found this. (Scratches head).
    I'm thinking of Douglas Hofstadter's tale of the anteater and the ant hill. One one level the anteater is eating ants, but on another level it's talking to the ant hill and the syntax is ants of lack of them.

    There's some people that love using MaxMSP for the amount of control they can achieve whereas I am much happier working with a free synthesiser by Ichiro Toda called Synth One. It has a fairly limited set of parameters (two oscillators, filter) but the sounds you can make with it seem endless. That's more like painting. Ants and anthills.

    There's a place for code and for brushes, I would like to be able to move between both. Like the way you can make a brush stroke in Illustrator, which looks like a stroke but underneath is a set of instructions for recreating that stroke. It's a way of telling the computer 'do it like this'.

    Now it would be nice to program in that way. Take a brush and paint some and then have the computer engage in a dialogue of refinement. 'When you did that you mean this?'

    That's very 'top down', and sooner or later you'd have to clean it up with 'bottom up' coding. But wouldn't it be nice to chip away at the problem from the top and the bottom?

    There's a interactive literature designer called Inform 7 that kind of does what I mean. You tell it a story about where things are and what people do and it then builds up a story world which can then be 'played'. If there was visual software like that I'd be all over it.

    Anyway, everyone is right and should do what they need to do.

  • http://meowman.com Woofers

    vvvv <3</p>

  • Pingback: Basic Guidelines to Product Sketching Web Burning Blog

  • Pingback: Basic Guidelines to Product Sketching Resources

  • Pingback: Basic Guidelines To Product Sketching | How It Easy (HIE) Computing community

  • bgrggfe

    The City Council is examining a request to open a Louis Vuitton Handbags and retail shop at 11502 Middlebelt in the Livonia Crossroads shopping center on the southeast corner of Plymouth and Middlebelt roads.The council heard at a study session on Monday from Taylor Bond, president of Children’s Orchard, who wants to open a 7,500-square-foot Louis Vuitton Handbags Sale store at the site of the former Family Buggy restaurant, which was closed several years ago.

  • Pingback: Basic Guidelines To Product Sketching | creativectors.com