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
Activity
-
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... -
Jon McCormack replied to Fergus Reilly
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...
-
Jon McCormack replied to Enrique P
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...
-
Jon McCormack replied to Enrique P
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.) -
Jon McCormack replied to Judy Barrass
Hi Judy,
The server was down (too many page requests) - its back up now.
Regards,Jon
-
Thanks all, "express" should have been "expression" -- I've corrected it in the quiz.
-
Jon McCormack replied to Michael Fitzgerald
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
-
Jon McCormack made a comment
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. -
Jon McCormack replied to Arnaud Le Roy
You can see some more about the software William Latham used here in a recent talk: http://www.imal.org/en/activity/artssciences15-william-latham
-
Jon McCormack replied to Mike Hall
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.
-
Jon McCormack replied to Federica Fiorani
:-)
-
Jon McCormack replied to Federica Fiorani
Yes, all the backgrounds are generated by Processing.
-
Jon McCormack replied to Shabir Buckas
Thanks, fixed!
-
Thanks Jerome,
I've updated the page. -
Jon McCormack replied to Jerome Herr (Mentor)
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!
-
Jon McCormack replied to Robert Bennet
Thanks for the corrections, I've updated the page.
-
Jon McCormack replied to David Nutting
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.
-
Jon McCormack made a comment
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!
-
Jon McCormack replied to David Nutting
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: https://github.com/processing/processing/blob/master/core/src/processing/core/PApplet.javaThe 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: http://www.theguardian.com/artanddesign/2009/jun/11/artist-tim-knowles for...
-
Jon McCormack replied to Leo Burke
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. -
Jon McCormack replied to Neroli Wesley
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 "CreativeCdingSketches.zip (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...
-
Jon McCormack replied to Laurie Mahon
I think you want:
if (bright > 4 && bright < 9) {
// do something here if bright is greater than 4 and less than 9
} -
Jon McCormack replied to Mike West
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. -
Jon McCormack replied to Arnaud Le Roy
Thanks, fixed.
-
Jon McCormack replied to Jerome Herr (Mentor)
Thanks Jerome, fixed now.
-
Jon McCormack replied to Ted Tchir
I've added more comments - you'll need to re-download the sketches in step 1.12 (https://www.futurelearn.com/courses/creative-coding/steps/11805/)
-
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 (https://www.futurelearn.com/courses/creative-coding/steps/11805/)
-
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...
-
Jon McCormack replied to Shabir Buckas
So it did generate an emotional response then (dislike?)
-
Jon McCormack replied to Penny Badowska
Ah, well spotted, the second loop should say list!
I've fixed it now, thanks. -
Jon McCormack replied to Leonard Pink
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.
-
Jon McCormack replied to Leonard Pink
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...
-
Jon McCormack replied to Penny Badowska
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.
-
Jon McCormack replied to Robyn Hovey
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...
-
Jon McCormack replied to Shabir Buckas
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. -
For a long time paintings were considered far more authentic than photographs. And to some extent they still are, because painting has a much longer history than photography. Photography was also a catalyst for important changes to painting, because it made image making mechanically reproducible. This was quite liberating for painting since it no longer had to...
-
Kind of like learning from a teacher then? If you go to art school you learn rules and algorithms about how to make art, but when you finish you probably wouldn't consider yourself dependent on your teacher.
-
Jon McCormack replied to Jerome Herr (Mentor)
Hi Jerome and Patricia,
Thanks for the feedback, we'll try and make this clearer in the next iteration of the course. Foldout sketches are always in the "Foldout Sketches" folder for the week, and they always have the title appended to the name (e.g. w3_01_Array_and_List). Also any pages for the course that have foldouts always mention the location of the... -
Jon McCormack replied to Leonard Pink
The 4 arguments to rect() are
x - x (horizontal) location of the top left corner
y - y (vertical) location of the top left corner
width - the width or the rectangle
height - the height of the rectangleSo rect(20,20,560,330) draw a rectangle of size 560 x 330 (w x h) with the top left corner 20 units across and 20 units down in the display window.
-
Nice work!
-
As many a slip twixt code and...foldout.
-
Yes, good point, we'll try and make it clearer in the next iteration of the course.
-
Yes, but that's important - parameter names for functions don't have to have the same name as the variables passed as arguments. Using the same name all the time might make you think that you have to use the same names for both all the time.
-
Jon McCormack replied to Mac Convery
Yes, that's right. It doesn't hurt to include it so the intention is clear.
-
Thanks for spotting this - I've fixed it and uploaded the corrected version.
-
Jon McCormack replied to Jerome Herr (Mentor)
Like I said, this one is quite tricky! It actually looks more complex than it really is, and like the previous sketches for this week, it's just animating shapes that are drawn on a fixed grid. If you don't understand it completely don't worry too much - you can always come back to it later in the course if you want to. As Ted suggests, sometimes it helps to...
-
Yes, sorry that's a typo in the comment - it should say 30 times.
Thanks for picking it up! -
Jon McCormack replied to david willows
It should be inside the draw() function.
-
Jon McCormack replied to Penny Badowska
Hi Penny,
You're on the right track but you need to make sure you generate a new random number each time around the loop. That is, move the "int n = (int) random(11);" inside the loop.You could even remove the in n bit and just say:
if ((int)random(11) > 8) {
etc. -
Jon McCormack replied to [Learner left FutureLearn]
Thanks guys, I fixed it.
-
Thanks Kathleen, good point!
-
Jon McCormack replied to Angel Sanchez
One subtle point: (float)x is a cast, float(x) is a function that converts x to a float. They effectively do the same thing, but the function call is slower. However, casting only works when there is what's called a defined promotion between two types. So
String s = "3.14";
println(float(s)); // this works, prints 3.14
println( (float)s ); // won't run -
Jon McCormack replied to Richard Thomas
Hi Richard,
Thanks, yes, you're correct! margin should be the border around the grid of circles and gap is the interior space between them. I have uploaded a new version of the code, but to access it you'll need to download the Creative Coding Sketches zip file from week 1 again.
Thanks for picking up on this. -
Jon McCormack replied to Mac Convery
Yes, x and y is the location of the ellipse, a is the width, b is the height. For (x,y) to be the centre, you need to have specified ellispeMode(CENTER) before calling the function.
You can find the details in the processing reference: http://www.processing.org/reference/ellipse_.html
-
There are 3 sketches in week 1, plus 1 in the "Foldout Sketches" folder.
-
Jon McCormack replied to Anmol Gupta
Hi Anmol,
Nice work! We'll be covering how to use images and textures in week 4. -
Jon McCormack replied to Pete Kearsey
Hi Peter,
There was some detail about using fill and colour specification in the video in Week 1. If you need reference for any processing function just highlight the text, right-click and select "Find in Reference..." - you can also see all the Processing reference at: http://www.processing.org/reference/ -
Jon McCormack replied to Phil Knight
Rather than framerate(0) you can say noLoop() in the setup function. That will only cause draw() to be called once.
The reason why the sketch 'knows' how to adjust the speed is because the rotation of the clock hands is set by the millis() function, which returns the elapsed real time since the sketch began. Its a good idea to use this function if you want...
-
Jon McCormack replied to Kristie Heyden
Have you checked inside the folder where the sketch is? saveFrame doesn't tell you anything when it saves. Also, as the frameRate is 1 you might need to hold down the s key momentarily.
And thanks Jerome for all the excellent help you've been providing, its very generous of you!
-
Jon McCormack replied to Stuart Kemp
The video has been corrected now.
-
Jon McCormack replied to Alison Sherwood
There's no reason why you have to use the ++ style operators. They're whats referred to as "syntactic sugar" (the programming equivalent of eye candy I guess). They don't add any new functionality to the programming language, just convenience.
So if you find them counterintuitive, don't use them for now. As you get more practiced you may find they become...
-
Jon McCormack replied to Jon McCormack
Hi Heather,
Thanks for your comments and sorry to see you go! If you are finding all the coding too difficult there are still parts of the course you can do without the need for coding. These include the discussions and non-programming sections (such as What is Interactivity 2.8 - 2.10 this week, Creativity and computers 3.16-3.19 next week and so... -
also you can use #### (hashes) which get replaced by the current frame number in the environment variable frameCount, eg:
saveFrame("filename-####.jpg"); -
Hi Eileen,
You could optimise your brain function just a little for better efficiency :-)
if (thirsty==true)
speak("Yes", POSITIVE);
else
speak("No", NEGATIVE);Assuming speak is a function that takes some words to say and a mood:
void speak(String wordsToSay, Mood m) {
...
}
This kind of algorithmic thinking will come in handy for week 3... -
Jon McCormack replied to Neroli Wesley
Yes, num is an integer (the number of rows and columns) but cellsize must be a float so the (float) cast forces the conversion. 5/2 (2 is an int) is different than 5/2.0 (2.0 is a float).
cellsize needs to be a float because the sizes passed to the rect() function are floats. -
Hi Nigel,
Thanks for your feedback and sorry to hear you don't like the foldouts. We will try to address your concerns in the next iteration of the course. In the meantime, if you are using a pdf viewer you can enlarge them to any size for on-screen viewing. -
Jon McCormack replied to [Learner left FutureLearn]
Thanks David, I've updated the sketch.
-
ok, thanks for the feedback everyone, we'll try to make it clearer.
-
Jon McCormack replied to Stuart Kemp
Quite right Stuart, I should have said evaluates to FALSE will cause the loop to exit. Apologies, we'll fix it for the next fun of the course.