I believe that coding is an essential skill for people making live digital visuals. At the same time, there’s no question that learning to code has been a big obstacle for visually creative people — especially as they have plenty of other things on their mind. You need somewhere to start, and you need to make the learning curve manageable. Processing has been a great tool for doing that, but the point isn’t to learn Processing — it’s to learn how to code.

For that reason, I’m thrilled that Dan Shiffman’s book Learning Processing is now in print and available. I’ve been waiting for this for some time. There are already a couple of great books out there for Processing, but Dan’s book is unique in that it’s entirely focused on teaching you to code visuals step by step, even if you haven’t coded before. Dan teaches coding to creative-minded non-coders at NYU’s ITP program, and the book comes out of that teaching technique.

I know the book very well as I served as a technical editor during its development. We’ll be running an exclusive set of excerpts this week, but here’s a look at what’s included:

  • Basics of code structure, pixels, interaction, and fundamentals like how the coordinate system works
  • Using arrays to make lots of stuff appear on the screen, including particle systems
  • Basics of images, video, data, and networking
  • How to use object-oriented programming to make coding easier and more efficient
  • Extending Processing with Java and more advanced coding techniques

By the time you’re done, you’ll be processing pixels, drawing generative visuals, and writing well-organized code.

To me, one of the real strengths of this book for teaching and learning is its strong emphasis on object-oriented programming, in a way people can actually understand. Explained properly, objects can really help keep your code clean. For some reason, this is often viewed as an “advanced” concept, but on the contrary, I’ve found using objects actually helps keep beginners from getting tripped up. And, to put it in visual terms, understanding objects is a terrific skill for getting lots of glitzy eye candy up on the screen.

Here’s what Dan has to say about the book (emphasis mine):

My goal for “Learning Processing” was to write something for the complete and total programming beginner. If you’ve never written a line of code before in your life, but want to get started creating your own digital media tools then I wrote this book for you. There are several other wonderful Processing books out there and I hope mine will complement them nicely. A special thanks to Casey, Ben, and Ira who kept encouraging and inspiring me as their books were being published.

The book is also geared towards the teacher. It’s not my belief that such a person will necessarily learn any new skills from the book (assuming they have a programming background), however, my hope is that the book will encourage and help facilitate the teaching of programming. It is structured with 10 lessons (complete with examples and exercises) and can act as a ready-made syllabus for a beginner interactive media / programming class. In fact, the book is modeled exactly on ITP’s Introduction to Computational Media course.

The book is available on Amazon.com. It shows out of stock, but those kind of screw-ups are common when a book has just come out (speaking as a published author here).

Stay tuned for those excerpts later this week; I’m editing them now!

See also: Dan Shiffman’s blog, Facebook Page, Official Site, free download of TOC and first chapter

  • Darren Landrum

    You know, I've been wondering if it might be possible to use Processing to create a matting/compositing system, a la Shake, for the open source world.

  • @Darren, no, Processing wouldn't really be an appropriate development tool for that.

    There is an existing project along those lines: http://jahshaka.org/

    — I don't think it'd be fair to compare Jahshaka to Shake, but it is a tool that shows some promise. Building a full-blown matting / compositing system is an enormous project, and my sense is the current state of the Java platform wouldn't support it adequately, let alone Processing which isn't intended for this kind of development.

    What Processing *is* good for is as a code "sketchbook", for reducing ideas to simpler elements. At least for some, that can be *more* satisfying that working with an all-in-one tool, as it gets you closer to the processes that generate what you see on the screen.

  • Darren Landrum

    Well, it was certainly a question worth asking. Thanks!

    I'm actually aware of Jahshaka and I've played with it a bit. To be honest, any high-end editing, compositing, and special effects solutions for Linux are lacking significantly.

    And I'm now completely off-topic. Sorry about that.

  • Well, actually, quite a lot of high-end visual solutions run on Linux. They're just not open source. I wouldn't draw any larger conclusions about open-source development from that — I mean, we're talking about the hardest software to develop, by definition, well beyond the means of most developers, proprietary, open source, or otherwise.

    But I'd say Linux as an OS has a whole lot going for it in the high-end visual market; it's getting a ton of use there, but doesn't have Apple or Microsoft to tout its use. And naturally, in the server farm there's a huge amount of Linux action.

  • Darren Landrum

    Okay, you got me. I confused Linux with general open-source again.

    You're right, of course, that many special effects houses build their own in-house compositing solutions, and they usually run on Linux. Since these are a number of in-house developments like this, that to me implies that there must be a reference body of work out there on the math and processes involved. Like music DSP, it's a very specialized field, so no doubt a lot of this knowledge is locked up somewhere.

  • Er. Autodesk Flame, Smoke, Inferno and Lustre all run on LinuxTezro, Red Hat Enterprise and use AJA HD/2K Video IO cards. Linux runs non custom, enterprise level, high end software for compositing, editing, visual effects and 3D just fine…

    Those are NOT DIY, and ARE industry standards.

  • er, Linux and SGI Tezro/IRIX hardware I meant to say. Mostly Linux, as SGIs workstations are…. not keeping pace.

  • @vade — right, exactly my point.

    But this is all off-topic. Let's keep it to Processing, please, which is nothing like these other tools.

    On the other hand, what I think IS on topic — these kinds of tools work well as part of workflows that involve easily dozens or hundreds of people working on something at a time. Artists very rarely are able to — or, indeed, even want to — work on that scale. A tool like Processing isn't capable of these kinds of results, but it's capable of its own forms of expression, and better-suited to people working individually or in small teams. And in those cases, I'd ask whether you're not better served by building the tool to create a piece of art or a performance rather than trying to adapt lots of heavy-weight tools.

    So — back to Processing discussion, please!

  • Darren Landrum

    Sorry, that was my fault. How about ways in which Processing can be used in video/film production?

    My first thought is titling, especially with the many artistic flourishes you can throw in. I'm also thinking generative video intended to be composited into another scene.

    A lot of this has been on my mind lately, as it's long been a dream of mine to make a movie or serial (BBC style), and the technology and software now makes it easier than ever to try this. Processing could fit into this workflow perfectly for what it's good at.

  • Well, for one thing, you can generate motion visuals in Processing and composite them into whatever else you're doing. Here's a really nice example of that: http://dev.motiontheory.com/nikegolf/

    You can also do some pretty lovely things with pixels and video, which you'll see in the excerpts we're running here on CDM of Dan's book. Unfortunately, I can't say I would currently recommend Processing for live video because of the sorry state of QuickTime for Java, on which it's built. But the good news is, I believe we (the community of Processing users) should remedy that soon, and in the meantime, Processing now includes Dan's own MovieMaker library, which makes it very easy to output anything you're doing as a rendered QuickTime video.

  • Ian

    "I believe that coding is an essential skill for people making live digital visuals."

    Essential?? Easy to say for a coder! 🙂 Does it have to be that way? Should it be that way?

    I'm working on bringing a live graphics platform to everyone: http://launchpad.net/luz Ruby + OpenGL + Cairo. Supports MIDI, OpenSoundControl, joysticks, gamepads, Wacom tablets, touchpads as X/Y pads.

  • Ian, I should have said … "basic coding" … and by essential, maybe that's an exaggeration. But I do think it's important to being able to express what you want to express. It might be in the form of a patching interface, or Processing, or even Ruby/Cairo scripting for the tool you're building.

    But I'm a coder only in the sense that I code; I'm nearly entirely self-taught and not really an expert.

    Text code can be an elegant way of describing things. That's why I'd hope that environments like yours continue to support those means of interacting. It's just another interface; you don't have to be a specialist to use it to achieve something you want artistically.

  • grigori

    flight405 anyone:) …:)?

  • Speaking as a coder first…maybe this is a little ridiculous (sometimes I think it is, sometimes I don't), but I feel like someone needs to release a reverse book. Coding is no problem for me…it's the art and graphic side that baffles me. I can't be the only programmer out there that loves this stuff, but has no idea what to do with it.

  • @mike, there're no literal "how to" books that i know of, but there are a few that are great starting points for thinking about the how's and why's of visual design:

    "envisioning information" by edward tufte
    "the power of limits" by gyorgi doczi

    both are great for approaching visual design from a relatively technical standpoint.

  • @mike, there are loads of creative people around (including myself) who would jump at a chance to collaborate with a programmer wanting to get creative…great way to quickly share ideas and working methods

  • Pingback: Bookmarks about Coding()

  • Ckgvun comment3 ,

  • 8wBQWy Good point. I hadn't thgouht about it quite that way. 🙂