Mai 2020 NEWS I co-founded FIELD 🔹🔷.

⏰ Attention! Life updates more frequently than this website.

September 2017 OLD NEWS I do freelance work - Hire me for product thinking sessions, workshop facilitation and design management. You'll find my latest activity on

⚠️ Warning! Old Content Below!

September 2012 OLDER NEWS I joined Christophe and Johannes as partner at precious design studio. You'll find my latest activity on

Below are projects I created between 2009 and 2012.

Please Note!

There is an ongoing discussion about prcessing.js and the iPhone over at the Processing.js google group.
Update Febuary 2010 May be of interest: iProcessing by Luckybite

Experiment: Processing.js on iPhone

8th Dec. 2009. I am fascinated how fast John Resigs processing.js runs in Safari on the iPhone. I adopted examples from Johns site and made some small modifications, for fullscreen experience and touch events:

I am really looking forward to implement more iPhone specific events and gestures in processing.js. Then it is easy to build prototype of iPhone apps without using the iPhone SDK.

The Examples

to view on iPhone, add to Home-Screen to see examples fullscreen without UI Components
watch a video on vimeo

Related Reading


build with processing.js by John Resig
uses examples by Casey Reas and Ben Fry

Source Code

1. changes in processing.js

attach( curElement, "touchmove", function(e) {
      var scrollX = window.scrollX != null ? window.scrollX : window.pageXOffset;
      var scrollY = window.scrollY != null ? window.scrollY : window.pageYOffset;
      p.pmouseX = p.mouseX;
      p.pmouseY = p.mouseY;
      p.mouseX = e.targetTouches[0].pageX - curElement.offsetLeft + scrollX;
      p.mouseY = e.targetTouches[0].pageY - curElement.offsetTop + scrollY;
      if ( p.mouseMoved ) {

      if ( mousePressed && p.mouseDragged ) {

2. HTML, processing code

<!DOCTYPE html>
<title>Distance2D - Processing.js on iPhone</title>
<meta name="viewport" content="width=320; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;"/>
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black" />
<script src="iprocessing.js"></script>
<script src="init.js"></script>
<style type="text/css">
body {
	margin: 0;
<script type="application/processing">
float max_distance;

void setup() {
  size(320, 460); 
  max_distance = dist(0, 0, width, height);

void draw() 

  for(int i = 0; i <= width; i += 20) {
    for(int j = 0; j <= width; j += 20) {
      float size = dist(mouseX, mouseY, i, j);
      size = size/max_distance * 66;
      ellipse(i, j, size, size);
}</script><canvas width="200" height="200"></canvas></div>
<div style="height:0px;width:0px;overflow:hidden;"></div>
based on <a href="">Processing.js</a> by <a href="">John Resig</a><br />
Example written by <a href="">Casey Reas</a> and <a href="">Ben Fry</a>