Processing for iOS

This post originally appeared on my former business site. It is reproduced here for posterity.

We've been searching for a great product idea to kick-off our little enterprise. We've come across that idea, developed it a bit, and now we're showing it to you. Processing is a visual design language developed a few years ago by some cool MIT dudes. To leech-quote Wikipedia:

Processing is an open source programming language and integrated development environment (IDE) built for the electronic arts and visual design communities with the purpose of teaching the basics of computer programming in a visual context, and to serve as the foundation for electronic sketchbooks ... One of the stated aims of Processing is to act as a tool to get non-programmers started with programming, through the instant gratification of visual feedback."

Processing can run on the big three desktop operating systems, on old-school J2ME cell phones, on Android smartphones and in the browser as an applet. Thanks to the guys at LuckyBite we have hacky way of putting Processing on the iOS platform with iProcessing. iProcessing is similar to products like Appcelerator Titanium and PhoneGap, whereby a Processing.js sketch is embedded within a normal UIWebView and compiled against a wrapper project. The downside of this approach is that:

  1. If you're a Processing user who has grown to love the Processing IDE, XCode can be intimidating if you have to do anything fancy or modify the template provided
  2. Your code is running on the old Mobile Safari JS engine, not the new and sexy Nitro with JIT.
  3. WebGL isn't a part of Mobile Safari (and by extension a UIWebView), so doing 3D stuff is out of the question

So basically it all boils down to the fact that while it's great for simple sketches, complex sketches cannot currently be written for iOS. Which is a shame, because like Steve says, it's freaking magical. So that's the problem, and we're working on a solution. What we have going right now, as you'll see down in the video below, is a proof-of-concept for getting Processing onto iOS in a fully-native way:

We still have a long way to go before shipping. The API is going to be as close to the open-source version as much as possible, but invariably there will be differences because of the nature of the platform. We're really looking forward to see what people will do with Processing on touch devices, because they both seem right for each other. Freaking magical indeed.