Jon McCormack

Jon McCormack

Jon McCormack is a researcher in computing and an internationally acclaimed electronic media artist. He is currently a research fellow in the Faculty of Information Technology at Monash University.

Location Monash University, Melbourne, Australia


  • Thanks Ian, we have updated the code and the text - the variable is called "numCircles" (previously "noCircles")

  • Hi Ian,
    You can always start from scratch if you have an idea you want to explore. For this course we have provided a number of starting points so you don't need to begin with a blank canvas all the time, but often it's fun to test an idea from the beginning. You can also take bits of code from other sketches to help build a more complete program. Learning to...

  • Hi Ben,
    The example was meant to be a simple process that explains "emergence" using phase shifted cycles - this is a common motif in art and music (look at/listen to the works of Bridget Riley and Steve Reich for example). Having knowledge of what "works" in art and music is really helpful when it comes to creative coding, we're going to look at this in more...

  • Thank you Fergus.
    Remember you can download the transcript and the slides used in the video if you need them.

  • Hi Csilla,
    A great book with chapters on art and autonomy is Margaret Boden's "Creativity and Art: Three Roads to Surprise", published by Oxford University Press in 2012.

    A simple introduction to some of the main philosophical issues in Artificial Intelligence can be found in "Introducing Artificial Intelligence" by Henry Brighton & Howard Selina, Icon...

  • And @Ian is absolutely correct - in my example the ++x changes the value of x, whereas in the first example it doesn't. So the y = ++x is equivalent to:
    x = x + 1;
    y = x;

    You can see why the ++ was invented as it allows you to do the same thing with much less typing.

  • Remember that you can always come back to this earlier material later in the course. You may find after more practice that it's worth reviewing this material again as a refresher.

    Also, its easy to test simple things in Processing by trying them out. For example you can type statements into a new sketch window without the setup() and draw() functions and...

  • If you're not sure about which to use, a good solution is to use the normal + operator:
    y = x + 1;
    This is easier to understand and does the same thing as:
    y = ++x;
    The only reason these 'double' operators are there is to reduce the amount of typing programmers need to do. They don't allow you to do anything you can't do using the regular + (or -, / * etc.)

  • Hi Judy,
    The server was down (too many page requests) - its back up now.


  • Thanks all, "express" should have been "expression" -- I've corrected it in the quiz.

  • Hi Michael, yes, version 2.0.3 should be ok for the code used in this course.

  • We'll post pictures here at the end of week 1

  • Hi everyone,
    Thanks very much for all your feedback and comments. We really appreciate them and will try to address any of the concerns people have expressed, particularly with regard to the time commitment for the course. We look forward to seeing you again in future creative coding courses.
    Best wishes and thanks for participating in the course,

    Jon and...

  • Hi Paul, do you mean the screen image in the left side?
    The rest of the page is black (or coloured) text on white.

  • You can see some more about the software William Latham used here in a recent talk:

  • Well spotted, thanks Mike. I've fixed the error.

  • Hi Penny,
    We tried to provide all the examples discussed, but there are copyright issues - however you can find any of them through google.

  • Thanks Linda! We'll fix it for the next release.

  • :-)

  • Yes, all the backgrounds are generated by Processing.

  • Thanks, fixed!

  • Thanks Jerome,
    I've updated the page.

  • Hi Jerome,
    Its certainly possible to use variable names with the same name as a function. Java can tell the difference by the way they are used.

    Whether its good programming practice or not is an interesting question. That probably depends on personal style. It's certainly worth knowing that you can do it, and also knowing why you might not want to do it too!

  • Thanks for the corrections, I've updated the page.

  • The reason is that toxi (Karsten Schmidt) got the code from a group in the demo scene, who had a poor implementation. This code has been sitting in Processing since the very first release.

    See line 5537 of the Processing source in Github:

    // [toxi 030901]
    // implementation by the german demo group farbrausch
    // as used in their demo "art":...

  • Thanks Eelco, I've corrected the typos.

  • Hi everyone, these 1 pixel cinema sketches are really great, congratulations to everyone who has posted their work and made it this far in the course. There's enough here for a 1 pixel film festival.

  • Yes please!

  • Hi David,
    The code for the noise function that produces both images is available. As explained in this step, the correct implementation is provided with the w4_06 sketch and is based on Ken Perlin's code. The processing implementation is available at:

    The issue with...

  • If you take a look at Tim Knowles' work you'll see that the tree drawings are part of a continuing exploration that examines our connection with the environment and the "random" processes that mediate between them. Its a beautiful connection between people, land and environment. See: for...

  • You should get a "Missing a pushMatrix() to go with that popMatrix()" error from Processing if you try popping before pushing.

  • ...continued
    Multiplying by sdTreeSize expands or contracts the standard deviation (width of the bell curve). In this case it is 2, so 99.7% of the values assigned to treeSize will be 10 +/- 6, so between 4 and 16, with an average of 10 using the values in the example code for this lesson step.

  • If you were to call randomGaussian() many times (like thousands of times) and add all the values returned together then divide by the number of times you called randomGaussian(), the result would be the average, which would be about 0. Try pasting this into Processing:

    int n = 1000;
    float total = 0.0;

    for (int i = 0; i < n; ++i)
    total +=...

  • Yes, this is the latest version.

  • Hi Liz,
    Yes, this is great, but unfortunately its not possible currently from within FutureLearn. Maybe in the future...

  • Hi Penny,
    The main point to understand here is how to use colour in Processing, using the colorMode() function. If you can specify colours using HSB and RGB, then that's great. If you have time you could try to implement one of the suggested improvements in the challenge, but if not, don't worry.

  • Thanks Neroli!

  • Unfortunately FutureLearn doesn't allow this feature.

  • Hi everyone,
    I've made some improvements to the readability of the code and updated the " (which you'll need to re-download to use the new version.

  • Hi Jerome,
    Thanks, yes we hear you! And thanks so much for all the help you've been providing to people doing the course. We really value everyone's feedback and will do our best to improve the course the next time it is run.

  • Thanks Leo, no chance of real explosions here

  • Sage advice!

  • There are no errors with the foldout now (as far as I know). If you downloaded it earlier in the course the sin and cos were the wrong way around. The current version is correct, so if in doubt just download it again.

    Unfortunately there's no way to make announcements within FutureLearn, however we'll let everyone know in the email for week 4 to re-download...

  • I think you want:
    if (bright > 4 && bright < 9) {
    // do something here if bright is greater than 4 and less than 9

  • Hi Mike,
    You can access the course indefinitely, so you can always come back at any time and pick up where you left off. There's no need to complete everything in 6 weeks if you don't want to.

  • Thanks, fixed.

  • Thanks Jerome, fixed now.

  • I've added more comments - you'll need to re-download the sketches in step 1.12 (

  • duh! Thanks, fixed (hopefully for the last time).

  • Quite right Lorraine, thanks! Fixed.

  • Well, nice to see a meeting of minds in art and science!

  • Hi folks,
    Sorry about this! I've fixed the foldout and the associated sketch to make things clearer. Yes, y increases going down, not up. This is a hangover from the early days of resizable windows where is was easier to fix the 0 point rather than having it change if you changed the vertical dimensions of the window.

  • Hi Richard,
    You're right there were a number of ambiguities in the sketch, so I've re-written it, making it clearer I hope (and also updated the foldout).

    To access the new version of the sketch you'll need to re-download the Creative Coding sketches from step 1.12 (

  • Its not so much a matter of where the rules come from (art school, other artists, the world at large) or who came up with them (people apart from Harold Cohen could teach AARON rules if Harold were to let them).

    Most (all?) recognised artists have a unique style (identity) that allows people to identify a work as belonging to them (one reason copies or...

  • So it did generate an emotional response then (dislike?)

  • Ah, well spotted, the second loop should say list!
    I've fixed it now, thanks.

  • The course material will be available to anyone who has signed up for it indefinitely, so you can work at your own pace - take your time if you need to.

  • Hi Leonard,
    The course will remain available indefinitely for anyone who has signed up for it, so you don't have to finish everything in 6 weeks - you can take as long as you need (even to 2015!) to work through the material.

  • Thanks all for your suggestions.

    Linda: we did think about having live code examples that you can play with and run within your browser (similar to khan academy or code academy) and highlighting what changes occur where, however the FutureLearn platform isn't capable of this yet. I appreciate your comments about showing a row of dots and leaving out code,...

  • Hi everyone,
    One thing to point out is that once you have signed up for the course you will be able to access it indefinitely. It won't disappear after 6 weeks. So if you are finding it is taking more time than you have each week you can always work at your own pace and do as much or as little as you have time for.

    If you're having difficulty with...

  • Hello everyone. Thank you for your feedback on the course so far. We appreciate that many people have found the programming aspects of the course can be quite difficult, and also that 3 hours per week may not necessarily be enough time, particularly if you're a beginner.

    We really appreciate your feedback and will try and improve things for the next...

  • Arrays are a special kind of variable that's used to store a collection of things and keep them together. The reason is so that you can deal with this collection as a single entity, rather than having to deal with each individual element all the time.

    So in the example the array stores different grey values for element that is being drawn. The main things...

  • If by not strict you mean you're allowed to make changes to then, then AARON certainly does that. It also "bends" the rules as well.

  • Check the folder that your sketch is in. You should see a file called "yourName.jpg".
    When you press 's' there is no feedback from Processing that it has saved anything, but it does save the current image in the directory that the sketch is in.

  • "Chopin created something new - the computer only emulated it."
    Chopin didn't create the Mazurka style. He copied it from an existing form (which has certain rules).

    It's not that the computer-created Mazurka was a perfect emulation or copy of Chopin's Mazurka. Many people thought (even musical experts) that it was a brand new Chopin Mazurka that had been...

  • All you really need to do is listen to the music :-).
    As you're listening, think about the music you're hearing - how does it make you feel...happy, sad, indifferent? What do you think the composer is communicating in the work? Maybe listen a couple of times, then take a look at the discussion on the next page.