Document 17848405

advertisement
>>: Okay. It is my extreme pleasure today to introduce these three gentlemen I have here before me in the
front row. I have worked with all of them since about 1996-ish, 7-ish, in fact, the gentleman in the middle
interviewed me so it's all his fault. [laughter]. They've, they've all done amazing things. Michael Cohen is
a principal researcher in the Interactive Visual Media Group. He's been here for 16 years, since leaving
Princeton University where he was a faculty member. He sits at the intersection between computer
graphics and computer vision, but I would say now, dare I say, you dabble in HCI?
>> Michael Cohen: Oh yeah, that's right.
>>: Which is wonderful to me. Stephen Drucker is now, I'm proud to say, working in the Vibe Group, as a
manager of the View Group of Visual User Experiences, and he also dabbles on the intersection of things,
technology applications and information visualization. And apparently he's had the privilege of kicking
Bill Gates off the stage at a conference. You're going to have to ask him about that later. [laughter].
And Andrew Glassner is no longer with us, but was in MSR for a long time, and also in Product. I
remember he moved to Product and came back, right? You’re one of those few who’s tried that. Also in
the, well known in the computer graphics community and originator and editor of computer, of Graphics
Gems, excuse me, A Series and An Introduction to Ray Tracing. His most recent book is on Processing
and he's done all kinds of things including interactive fiction, writing and directing, 3-D, I remember Wild
Tangent was in his history somehow, right?
>> Andrew Glassner: Yes, something related to it.
>>: Yeah. We worked with you on that. So a fascinating background, lots of books, definitely. Hang
around and listen to these guys present what they been doing with girls programming and processing.
>> Michael Cohen: Thanks a lot Mary. So we’re going to do this a little informally. This all started
primarily because we had girls who've known each other essentially since they were born, and are now
classmates after many, many years. And we, summer came along, and we thought there'd be an
opportunity to kind of infect them with things that we think about a lot. And this was our attempt at doing
this. So mostly were just going to talk about the experience of doing this one-week class this past summer.
Should, you know, preface it to say this was something that was completely new for us to do, and we'll try
to share with you a few things that we learned and, in particular, if it's something that you're interested in
doing yourselves for a group of kids, we'd be happy afterwards to talk to you about, at more length, and
give you everything that we did, and help you set something like that up.
So, let's see, so first what were our goals in doing this? Clearly, at least the two of us wanted to introduce
programming to these girls. But importantly this had to be fun. It was in the summer; they had just
finished their school year. Of course we wanted to make this empowering for them. And a big goal also
was to create tangible artifacts. We didn't want them to just leave with some memories of some programs;
we wanted them to be able to carry something with them, which is always important in any of these little
classes, if you can show something to your parents at the end. We had no illusions that they were going to
walk out after a week and be self-sufficient programmers. But at the same time, we really also wanted to
avoid scaring them away. We wanted them to walk out and hopefully think that this was a fun thing, and
then maybe if it came up later in their coursework or in their lives, that they would have some sense as to
what was going on.
>> Steven Drucker: So part of this, by the way, was because while we wanted them to learn programming,
this was not necessarily an expressed wish that they had. They would put up with their fathers kind of
talking about how cool it is, but not so much their own great desire to do this.
>> Michael Cohen: Yes, so I should say, we tried another thing earlier on that was to do a robotics class.
This one took place, this one was at our house. That was reasonably successful. Those boys and girls, and
that's another reason why you see the word, art, here. What we did is we had a week. We did nine o'clock
in the morning until three in the afternoon. There were seven girls, all having just finished seventh grade,
going on to eighth grade. And they all knew each other. There at Lakeside School, if you know Lakeside
School. And they were all, I think all but one, were in the advanced math class there, and importantly, two
of them were our daughters. So this is not a, sort of a generic group of kids that just came together, and
didn't know each other. There was a lot of good dynamic going into it. Yeah?
[inaudible]
>> Michael Cohen: That's a really good question, because I think if we had just put out a call, we would
have got a lot of competition, so we kind of hand-picked them.
>> Steven Drucker: We picked them sort of based upon ones that got along not ones that were, oh my
God, they'd be great at this. It was more, is it a good group of people that could…
>> Michael Cohen: And also not ones where…
>> Steven Drucker: Prima donnas or…
>> Michael Cohen: Or where the parents will go, yeah, this'll get you ahead or something, these were,
yeah, we hand-picked them I guess is the way to go. And it wasn't hard, I think we asked maybe one
additional one, and everybody said, oh yeah, that would be great, so let's do it.
>> Steven Drucker: And actually, it was a little tricky because, there were a lot of others who would've
liked to do this but we didn't really want to have more than seven. In fact, I think we only wanted to have
six originally and…
>> Michael Cohen: We started out at sort of an idea of six and ended up with seven. So, so what do we
do? So this was proposed as a computer art camp, as opposed to a programming camp. Two keywords are,
so we geared this so that all the projects would be visual and essentially they’d have artifacts that they
could create, and clearly it had also to be a camp. Which meant there'd be a lot of downtime, a lot of time
for them to just run around. We had imagined actually we have a park not too far that they’d just go out
and run around, and do a lot of other things as we'll talk about. We didn't end up having a lot of downtime
and that was not our fault. It really was their fault because they just, it was very hard to get them to stop.
But anyway, so we also, as we were getting into this, trying to figure out what to do, we talked to Lynn
Langit, and she works with another guy named Llewellyn Falco, and they have been developing a program.
They’re down in California, and they actually came up here, which was great, and gave us a whole sort of
mini-classes if we were teaching. They use something we called small basic, which we can talk about a
little bit. But what really got from them, the big thing was this idea of always having them program in
pairs.
So in the beginning, so each day we would have them sit in pairs and since there were seven, sometimes a
group of three, and one person would be sitting there at the keyboard typing, the other person would be sort
of responsible for telling them what to type. And you know it just made for a very nice interaction.
>> Steven Drucker: And we alternated that a little bit and, although they were fine with just sort of mixing
it up themselves.
>> Michael Cohen : Anyway we let them sort of take the lead a lot. But the other thing is, at the
afternoons. So they would create a program that would do something, something they could do something
with, and then once they got it going, then they would spread out. They all have their own laptop; they'd
spread out; they'd all make their own art. So it wasn't sort of a, it was sort of a team effort to do the
programming aspect, but then an individual effort to create these artifacts. As you can see all, basically
everyone had a laptop, had to fit around our dining room table and that's pretty much the restriction of
seven. Maybe we could have, actually there was another chair here that wasn't there at the moment. They
all had memory sticks so they could share code that way; that was the easy thing. Although, in fact, they
didn't do a whole lot of that, because they were more or less staying kind of in lockstep until, you know
we'll talk about what happens towards the end. We had a projector just projecting upon a clipboard, a
flipchart, another flipchart. Didn't use the flipchart that much, a little bit. But often Steve and I are
standing down here and typing, and they can see what we are typing and could ask questions like that.
And then we had a nice color printer that we use mostly on the last day. We can talk about that. So we
made a bunch of other choices; one was to use Processing. And this was probably one of the touchiest and
most important choices one makes, and we'll talk about why we did that, and also Andrew is here, and I'll
introduce him more at the end, but he just finished this book. And I'll talk more about that in a little while.
But basically this is a language that was made essentially for artists. It was a bunch of pros and cons, I
don't know…
>> Steven Drucker: I'm, yeah, this was one of the tougher decisions that we made, because it’s got a
terrible IDE. It really is hard to debug, and it's hard to use. But if you look out on the net and we'll show
you a whole bunch of examples. A lot of artists are using this for installations, for their own artwork, for
visualizations and it was sort of that promise of being able to create exciting things that made us go in this
direction. It was also pretty easy for us to learn because it's really based on Java or you know, C sharp so
for us it was trivial and Michael and I spent quite a while beforehand going over, how do we teach this.
And that was actually a really interesting experience, because obviously we've been programming for years
and years, and we wanted to make something interesting, but that we could introduce slowly and then we
kept on saying, oh but that’s a hard math thing. And then we'd say oh, but this is, that’s really complicated,
so how do we structure this? And you'll see this more. But it was really helpful that we were fast on the
language so that we could teach it well.
>> Michael Cohen: And like I say, we had a lot of fun. [laughter]. This is coming up. We spent a lot of
time just sending little programs back and forth, and we said oh this is so cool, how do we get them, how
can we simplify the concept down to do that.
>> Steven Drucker: And you know we did look at, it’s a lot of work on teaching girls programming.
There's this work up called Alice, which is that kind of [inaudible] in fact there is even a Alice for telling
stories, which they use for teaching. In fact I think Mary actually helped advise that, that student at the
[inaudible]. But, and then there was Small Basic, which is from Microsoft, but again, we didn't see the
compelling artifacts right away. And that's kind of why we went this direction.
>> Michael Cohen: So one problem was that we really wanted them because it didn't have this nice
programming interface, we didn't want to bog them down with syntax. And so essentially Steve and I were
the auto debuggers. We were this sort of instant just push one of our buttons and we debug the
programming for them.
>> Steven Drucker: It's not working.
>> Michael Cohen: And you know syntax is a terrible thing, and it's too bad, and there's a lot of tools that
help you in other languages, but not in Processing. So often you know, we, somebody would just go, it's
not working, it's not working. And we’d be presented with something that looks like that, and say, well
sort of subtly hint that it's nice to indent things, and to do a little bit, and so we’d say, yeah, okay well, how
about if we were to format it, and then say, but you know, actually this line is probably supposed to go
inside the curly brackets. Oh, okay. I just added that line so, and so then we'd just move it up, and sure
enough things worked. We didn't ask, we didn't sort of, we never forced them to actually figure that out.
Because, you know, there were six other girls around the table where it was working, or maybe five were
working and two were going, like help, help help. And so we would just go up and essentially fix it. And
we'll talk a little bit later about, you know, the pros and cons of doing that, but I think in the end it was a
good idea.
So the plan was to basically spend a couple hours in the morning writing some code. And then have a nice
long lunch, and then come back after lunch, and use the program that they had made, or maybe do some
modifications to that program. And we crafted basically the five days something like this, where the first
day in the first two hours they are supposed to write a complete paint program. The second day they were
supposed to learn all about ball dynamics and be able to write a fully, full simulator. A complete word
processor, they were going to write on Wednesday. And a complete image processing speed on Thursday.
And
>> Steven Drucker: You think were joking, but this is it. [laughter].
>> Michael Cohen: I can report right now, and you will confirm that they in fact did all four of those
projects before lunch each of those days. So I think what we’re going to do next is talk about the paint
program a little bit. And this is a couple of the paintings that came out of that day, that they’ve worked,
from a couple of the girls. We figure that the easiest way to do it is that we're going to get you guys to
write a paint program while we're here. Let's hope that this works....
>> Steven Drucker: Yes, exactly. And we'll actually sort of do it the way we did in class, which is sort of
Michael would be talking and then every other day we'd switch and Michael would be.
>> Michael Cohen: So every processing program has one function that starts out. It's called set up. And
this is a fully functional program. So I get them to actually type this in, and say well, every time I type this
in, let's run it, and sure enough that’s program; that’s what it does. So you guys have any ideas how to
make a more interesting?
>>: Tell us how to draw a colored square. Iinaudible]
>> Michael Cohen: Yeah, see, you guys are so far advanced. They were going like, eww, that's an ugly
gray. Can't we change that color. [laughter]. So we said all right let's try how about 10, see what that does.
And of course we can run it and say, oh it's a darker color, and they say oh yeah, I want mine to be purple.
Okay, how about, oh I don't know, how about 150, 20, and 200? And sure enough, hey look, purple
background. So why, you know, why did that happen? What are these numbers? And they're smart
enough, you know, most of them thought about it, and I've certainly taken a magnifying glass and showed
them how the color makes, because I do computer graphics. But anyway let's go back to just making it a10.
>> Steven Drucker: We actually challenged them at that point, can anybody make yellow?
>> Michael Cohen: Oh yeah, can anybody make yellow? And so they were just going crazy, and they’re
running around going, oh that's a cool color. And then they would run over to the other side of the table to
see what color they had made, and come back, and you know instantly they’re doing this, that looks better.
Now every program has one other part, one other function called draw. And the nice thing is that set up
runs when you start program. Draw will run every time you, every frame time. Okay. And so there's one
function called ellipse. And put four numbers in there. Okay and let's just try running that and see what it
does. And sure enough, there's a, it draws a little ball, sort of explains what an ellipse is a little bit. Take
care that. So what do we need to do to make a paint program? I mean that's interesting, but okay. So just
follow the mouse, so let's just make it follow the mouse. Let's try running that. All right. So this look like
a paint program yet? Pretty much. What should we do next? Any ideas?
>>: Change the brush stroke.
>> Michael Cohen: Change the brush size? Okay, so where do you think the sizes are in here? Let's
change this to a 50-50, let's say. Oops. Probably not what you meant right? So what else?
>>: [inaudible].
>> Michael Cohen: Sorry. Yes, wherever he goes. First of all first thing they complained about was this
edge that was on there, right? So there's a magic function called no stroke. And that'll run. And then as
Matt was saying, we should figure out a way to get it to do that so, this is where we say there's a thing
called mouse pressed, and this is where you learn a little format, and sure enough, we do that. And we're
getting there. We almost, we almost have a paint program already, right? Yeah, a user-interface. So what
he what I do with the user interface?
>>: Brush palette, color palette, size palette?
>> Michael Cohen: Yeah, all right, well, lets do all that. We didn't want to get into building user interfaces
and this is [laughter] there’s no UI toolkit with this language. And that's going to be a pain, but we actually
did that at the very end, and I'll talk about that maybe on Friday. So why don't we just bring in some code
that was down below now. All right. Let's run this. Now, couple of things, one is we introduce variables
obviously. Maybe we can go back and let's look at the code for a second. So somewhere up in here there's
a few variables that has, okay, there's a thing called fill for changing the color. So we reset the RGB and
there's actually an alpha for setting alpha. I'm not sure why we have that. And then we use this basically
this thing, if mouse, actually can you go down of the keypress? Essentially our user interface was this. Go
up a little bit. It says this keypress. So this was our size. We use these keys to make the size bigger and
smaller. Similarly for R we used R in capital R. B in capital B and and G in capital G. So you could just
put whatever you wanted in there.
To make different things, you could change it, you could be pressing a key while you're doing it, you could
be changing the color while you're doing it. You know that was about another, oh I don't know, I'd say by,
and we didn't just give them everything exactly what the time. You know we talked about each thing. We
said what would you want to do? Oh you want to be able to change a color, oh we want to be able to
change a size. You know, kind of handed them Alpha. I don't think they came up with that. But pretty
much by then, they were just off. In fact, at every step the key was that they, just suddenly they have this
incredible extra power with his variable that they could change. And they would just sit there and start
painting it, and again, just constantly running around to see what they're doing. And this pairing was a
really nice thing too because the pair would say, oh let's try this, or let's try that. These little teams and
they'd be building this…
>> Steven Drucker: And then one team would do something, and then they'd call the other one over and
all, and that's cool. And then they go back and say, oh we can do something like that, something different,
and give each other ideas. There were a lot of ideas within the pairs and also between the pairs.
>> Michael Cohen: So another thing here is there's this function called save which will just save the screen
into a PNG or JPEG file or a PDF even, if you would like it to. And this is just a little thing my daughter's
name is Layna, was to make the file always be unique, so whenever they hit tab, it would generate a unique
file name starting with Layna. And we just write out that thing, so again you could be painting and save it,
and painting and save it, to do different things.
>> Steven Drucker: And the key thing here is that while we gave them some of this handholding at the
beginning, they really did start sort of improvising on these things. They’d get the concept of the variables
pretty quickly, and then oh, this is how we can change the size smaller and this how we can do the other
things.
>> Michael Cohen: Okay. So, yeah?
>>: General language question, so did you explain the language upfront or was it all just in time explained
to them? Did you do minimal explanations, or did you try generalizing their [inaudible].
>> Steven Drucker: This is something we toyed with a lot. And it would seem pretty clear especially
when talking to them, they weren't interested in understanding the syntax at first except if it gave them
benefit. So when we added the if statement for the mouse pressed, then ah, now I understand it. And they
really got it. And the same thing, so we did this sort of variables and I know Michael was thinking about,
okay letter envelope boxes. We sort of kind of did that, and nah, they just got it. And so some of the things
we were really impressed that they got right away. And we didn't do it, we were thinking beforehand, that
were going to do recursive functions and all these things.
>> Michael Cohen: I should probably show you something before we close, there's another function there
that's called random, which we made liberal use of. And in this, for example, this is, they wrote the basic
paint program and then in the afternoon.
>> Steven Drucker: I'll just open that again and then.
>> Michael Cohen: So the afternoon, they wrote Fancybrushes and they each did these on their own and
so, essentially what they did is they said oh I’d like to do something like this. Could I do this? And then
we’d work sort one-on-one with them to make a Fancybrush so. So some of them are basically would,
would…
>> Steven Drucker: Do you want to see one or another one?
>> Michael Cohen: Anyway, they would sort of randomly perturb the brush and randomly perturb the
color, and then just sort of have this kind of airbrushy thing. And they each did very different ones. That's
you know one of the brushes, and you know just by hitting a number on the keypad you switch which brush
you are using.
>> Steven Drucker: And I don't know if any of you have encountered kid pics, but a lot of our kids kind of
grew up doing kid pics and they felt sort of, wow,I'm doing my own kid pics. And they kept on adding
new kinds of brushes and even drew sound effects for erasing things. It was part of that.
>> Michael Cohen: So here's a couple pictures that they generated in the process. This one was from that
brush that you just saw. This was actually the very simple brush but they literally add random to the color
and the size as their painting, changing colors…
>> Steven Drucker: That was kind of fun because they actually took two on the…
>> Michael Cohen: Two people on the keys. It was really fun to see. And at this point I just want to show
you a very short little video which I think I queued up already. So this is about literally three hours into
their life of programming. So I think this happened just shortly after lunch, and they were back and starting
to modify some things. And just kind of gives you a sense of what's going on.
[video begins][multiple speakers].
>> Michael Cohen: You get the idea. You know one of them must've figured something out. Then the
other ones sort starting to talk, you know we spent, you know, I expected us to be up there constantly
running around, yet by the time, literally a couple of hours into this entire process, the three of us sitting in
the kitchen kind of, okay now what? And periodically someone would look over and go, something's not
working, and you’d go over, and change or add a semicolon. I mean that became our lives just adding
semicolons. I mean really, it was really, it was really fun. Okay. So the second day, and we're not going to
take quite as long on each day, but we did ball dynamics. But I think what we'll do is will try to at least get
started on this one as well and do the same thing. So here's our basic, so what's this program going to do?
Well let's run it and find out. So it looks just like the last one, right? But now instead of having the mouse
move the ball around, mouse move the brush around, now we'll call the ball. So what do you have to do to
make ball dynamics, right? What did you learn in physics 101? What do we need? [laughter].
>> Michael Cohen: What is forced pause? Movement, which is, yeah, all right. So let's add a couple of
things. We'll add the position, and well I don't know, sure. How about a couple more?
>> Steven Drucker: you want to call them?
>> Michael Cohen: VX for velocity, of course. And VY for, want to add some acceleration while we’re at
it. [inaudible] We'll set those to zero for now. All right, where are those going to go? Well, that's the
position right? And…
>> Steven Drucker: And actually we’d have them run like this and it was like, oh it's not moving at all. So
what should we do?
>> Michael Cohen: So what should we do? So we're going to have, let's just do it. So basically X equals
X plus VX and Y equals Y plus VY.
>> Steven Drucker: And that took a little while for them to sort of…
>> Michael Cohen: So you really thought so what, what can happen now? And they're all going oh, oh,
ew, ew. So a lot of times we’d give them something like this, and where they would say we have to add,
we have to get it to move, but we'd probably give him that, and then really wait until they guessed what's
going to happen. So let's try it, and, oh, what's going to happen?
[inaudible]
>> Michael Cohen: Oh you think? Oh it's gone, all right. Okay. All right okay, let's go back. Why don't
we up the velocity a little bit? You know just to make it fun. All right, and…
>> Steven Drucker: Let's run it again, and then we just kind of run it all again.
>> Michael Cohen: Now what do we got to do?
>>: [inaudible]
>> Steven Drucker: So how are you going to do that? Okay, anyway, if X is greater than, then we have
this number up here, remember the size of the screen.
>> Steven Drucker: And we, they…
>> Michael Cohen: So do what we need to do? Anybody have an idea?
[inaudible]
>> Michael Cohen: Ah, negate the velocity, very good.
>> Steven Drucker: That was not the first guess. A lot of people would say let's set it back to something
and it's like, that wasn't quite right. And then so it's, I wonder if we can stop it.
>> Michael Cohen: Yeah let's try running that. Let's see what that does. Oh, it worked. So then we go on
to do the bottom and the other side . But let's add this, just add acceleration right now. Let's just add AY to
B1. What's going to happen now?
>> Steven Drucker: Nothing.
[laughter]
>> Michael Cohen: That's right. We added these. What happened there?
>> Steven Drucker: Let's just do this one thing. If Y is good and 600, AY equals…
>> Michael Cohen: You should make AY a little smaller too.
>> Steven Drucker: Now go off the other way.
>> Michael Cohen: All right so, before long we've got, you know literally, again, you know, we've got this
and now, what can we do? Let's try running one of these.
>> Steven Drucker: Whoops.
>> Michael Cohen: What's let's try this one.
>> Steven Drucker: On this bounce? Okay.
>> Michael Cohen: Yeah. So this one took a little handholding, but not too much. And so if you can
make one ball, you can make a whole bunch of them. And then you question, how are we going to make
art out of this? Does anybody have an idea? Anybody got an idea how to make this into some kind of cool
art thing? One line change. Well yeah, you could just hit you could just keep hitting print, but what's
going to happen if we comment out this line? Let's try it. All right, so you can start to see where they'll
start going wild. And oh, let's be able to change this; let's be able to change that. And, again, oh yeah, then
in the afternoon we said what do you want to do now? Do you want to extend it? Make it so we can
change the color, make it so we can change the forces, and they're going, oh, let's make a pong game. So I
said sure, why not?
[inaudible]
>> Steven Drucker: I don't know. Maybe they consider them flash games I don't know. [laughter].
>> Michael Cohen: I don't know. Let's make a game. You know maybe we can do something like that.
So, in fact, they wrote this thing and got better playing it. And you'll notice this is too easy after a while.
So they said how about every time we are keeping score up here, every time it hits an interval of five, the
paddle gets a little bit smaller. And then to make it a little bit more difficult, one thing you'll notice it's
adding a little random perturbation, actually because of the velocity in here. So it it…
>> Steven Drucker: Yeah right. Actually, they ended up playing this game for like…
>> Michael Cohen: They changed the color and they, anyway they love the game. All of this really is not
much difference between a paint program and a pong game.
>> Steven Drucker: And by the way the pong game was not something that we planned out beforehand.
So while they were eating lunch, Michael and I were chatting and like, well they wanted to make a game.
They said that before they broke for lunch. Can we do this? So very quickly we just did it. And then we
did the enhancements with them afterwards. And again it was nice to have the structure for them.
>> Michael Cohen: So that was day two. Again, by the first day they had written a complete paint
program. The second day they had written a whole simulator and ball dynamics. Here's some of the art
came out of, out of that. Again, you can see by setting different kinds of parameters and changing the
opacity in this one or whatever, and again, as things kept going on they’d keep hitting this little tab and
could record those images. Third day was, was fun. It was a little less programming. We decided to write
a word processor, and we did in fact spend a little time in the morning to get them to be able to literally
type and hit spaces and then to do backspaces and do the trick and get it to wrap down to the next line,
using fonts. And then they got that and then we said why don't we make our own font? And you guys can
just make it, and sort of had this idea that they go out and maybe find some sticks or trees or some way to
do it, but it turned out to be kind of a rainy, yucky day. And I think what are we going to do? Maybe we
could get some silverware out or whatever. Anyway they decided to use what they had. And we just gave
them a camera and this, they spent probably two hours making this font, because it wasn't right and they
had to run back up, and they were, you know, trying to do this. But anyway, eventually they, they
constructed this font.
>> Steven Drucker: I think in one picture there was this, someone's shirt was a little bit off and they said,
oh no we have to take that picture out. And they went back down and they took that picture again.
>> Michael Cohen: Yeah. And so in some ways it was a quieter day on the programming front. But you
know, I think they got the idea of the complexities of being able to hit backspace and being able to erase
something, and keep track of where the cursor was, and you know we got that through. By the end of the
day they had pretty much worn themselves out, and didn't end up writing a whole lot. You can just sort of
imagine these little poems that sort of thing, but we didn't get any wonderful poetry out of it.
>> Steven Drucker: And just the lighting didn't quite work out nicely so it's kind of hard to read.
>> Michael Cohen: A little hard to read. Yeah, I know.
You know if you even read this, this is a couple of girls, Anna Conn, Alayna Ishcon and my daughter, you
know, are awesome. Anyway so that was the third day. And on the fourth day we decided to do image
processing and there's a lot of wonderful, makes it very easy to bring in an image and to create an image.
Just to show you some of the artifacts they created, this is an [inaudible] self-portrait. So the first thing
they did is they took the camera and took pictures of each other, so they could bring in a picture of
themselves and use that as the backdrop. And then on this one all it is, is literally randomly picking a pixel
and moving it either up one or to the left one or down one or to the right one. Just still using random, just
picking a pixel and moving it, move it one pixel in one direction a fraction. And then you just let it run.
It's really fun. It just kind of starts out there and it, and as it goes, it just starts fuzzling out.
And then we wrote another one called melt. It just sort of takes a pixel and then it starts dripping down the
screen. This one is very similar. Except instead of a particular pixel, it takes a little square and does the
same thing, just moves it perturbs it randomly about. We did a couple of other just real simple things.
Things like doing negative. I we talked about what the negative of color was. If you had like RGB and
what is the negative of that. We did a solarization thing too, which is just making sort of half of the, of the
thing negative. Now they had a lot of fun with that. And then this was a little different. And we ended up
combining the paint program with sort of an image program. So this was sort of scratch painting in a way.
Essentially what you did is you move the mouse around the screen and it picked up the color from the
underlying image and put a square a rectangle that color…
>> Steven Drucker: If you are moving quickly…
>> Michael Cohen: The quicker you were moving it, the bigger the square it would make. So you could
really do a lot of fun things with that. And so they had a lot of fun with this, sequence of actually making
things. It turned out to be a very relatively small amount of programming. I did a lot of help in providing
this last one. They created, anyway, it was just really nice thing.
The last day we, we did a little bit of user interface. We went back to the paint program and actually had
them draw little red, green and blue bars. So you can slide the mouse over to take into them and you had a
little square that showed the color. And that was quite interesting trying to work with them. They are very
good at coming up with how to do it. But kind of could see after four days of really powerful stuff
happening, creating these interfaces you know really, they kind of got…
>> Steven Drucker: I also had to miss this last day because I was leaving the next day for Brazil. So
Michael had to take this one on his own.
>> Michael Cohen: Anyway so we didn't do that for very long, but we actually built that little three sliders.
But most of the rest of the day we spent printing out the results they made and I got a bunch of mats that
they could sort of frame some of then we just pulled all the stuff off the walls in our dining room, and
started gluing things all over the walls. And they really had a great time, you know one of them said, this
wall’s going to have this theme and this wall’s going to have that theme. And you know each, couple of
girls were working on this wall and that wall so that when their parents came to pick them up in the
afternoon, they could you know see what we had done over the week. And then rip them off the walls to
take home.
So how did we do on our goals? Two of these goals, I think we did quite well. Two of the goals were
somewhat in conflict. Right? We wanted it to be empowering. But we really didn't expect to make them
self, self-sufficient programmers, which is really kind of an empowering thing. So, it's hard to say. I am,
and I still struggle with this a little bit. Should we have gone slower? And really taught them some syntax
or sort of what was really happening. What a semicolon really kind of meant, and curly brackets, and you
know, what declaring variables and, you know, I think I'm still glad that we did it this way. But clearly
none of them could walk out of there and sit down and just…
>> Steven Drucker: And it was a camp so there wasn't, I mean I think some of this needed to sort of
percolate in their heads, like a homework like assignment where they had to now generate it on their own
without watching or whatever. But again, that really wasn't the the goal. The goal was, I did this once; it
wasn't hard. I could do this again. And in fact there were various times in a class in their school where
they might have to do some sort of repetitive task. And now they could say you know we could do a
program for this. Very good, if we had more time.
>> Michael Cohen: Yeah if they had a homework assignment, which was what is the thousandth term in
this series? And so somehow they're doing mathematical series and the question of what's the thousandth
term. [laughter]. Yeah?
>>: Any of them actually continue doing what they were doing during the day?
>> Michael Cohen: No. I didn't hear about that. I know a lot of them took things home and showed their
parents what they were doing. But I didn't really get reports of them doing a lot of modification, of it later
on.
[inaudible]
>> Michael Cohen: Yeah. Very little. Yeah?
>>: Do these girls have like Facebook or anything where they, did these artifacts make it outside to their
social contacts?
>> Steven Drucker: I know that my daughter didn't start doing Facebook till actually the end of this
summer. Just happened to be the timing. And I don't know about the other ones.
>>: I think it's interesting what you just said, and I'm wondering how you're going to measure the impact,
because I think that's really important. That one of the kids said, you know we could create a program to
solve this, because that is a huge leap. That they're now seeing how computer programming is relevant to
their lives. Because that's one of the huge issues with girls and technology.
>> Michael Cohen: Yes. So I think the jury is really out on, in a word we did this as a one offer, not really
planning to do an evaluation. We'll see it in our own girls somewhat. We are planning to go to the eighth
grade math teacher and talk to him about this and see if he wants to do something similar in his class this
year. He's been teaching at Lakeside like forever, and they used to do some programming but now there are
so many programs that are already usable, that you don't have to like you did many years ago. So maybe
we'll get that introduced back in. So one goal for sure we were successful at, and that was that really it was
super fun. I can't tell you the number of times when they were just like, that is just so cool, and everyone
would just rush around. Those moments at least for me you were phenomenally great.
>> Steven Drucker: And we just showed one of those little videos but there are a lot of pictures. He didn't
take the video camera out enough. But there were so many of these things just, oh I wish we had captured
that.
>> Michael Cohen: Yes. One of the girls really was clearly just kind of got it at some point, and was
running around and just helping the other ones out, and it was really, it was really nice. So with that I want
to introduce Andrew. Andrew you got the introduction from Mary. And he's written this wonderful book
and I know I encouraged him to actually bring a box of these books with him so if you're interested in one
of these books, talk to him after and I'm sure he can make some arrangements for you to purchase one.
But, anyway I wanted to just let Andrew talk for a couple minutes about his book and his passion for
Processing.
>> Andrew Glassner: Thanks Michael. Yes, if you want to buy books, I know a guy. We can make a deal.
Michael actually asked me to do two things. And we've switched, can we switch back to the previous
laptop? So I wanted to do two things. One was to talk about what other people have done with Processing.
And show you why I think it's an interesting language. And then I'll talk a little bit about what I learned
writing this book and then developing a course based on it.
So the way I got into Processing was a couple of years ago I was giving a talk at Sigraf on the basics of
computer graphics, which I've done for like 20 years. And it's always been on 3-D graphics, and I thought
oh, I should do something on 2-D. And I made a list of the usual suspects, and I looked at Flash and Alice
and Squeak and Squawk and Scratch and all the different languages. And you know, I thought okay they're
all good 2-D languages, so I'll just pick one. Then I ran across the website of an artist. And his website
blew me away. Actually this is where I'm just going to jump right to it. His name is Jared Tarbell. Do we
have to switch to the? Here we are. Okay so his name is Jarad Tarbell, and he has a number of websites.
This is Complexification.net. And let's go to here. And I just want to show you some of these programs
he's written in Processing. When I saw these I thought, wow. Okay wait; there’s something going on here.
This is an actual running program. Let's go ahead and run it. I'll launch the medium-sized applet. And
now it's running; it's driving itself off of random numbers. But I looked at this and I thought holy smokes
there is something going on here. This is not just a little random toy applet thing, wow. And I wanted to
learn Processing.
So in the hands of somebody who really knows what he's doing, Processing can do amazing stuff.
So let me just show you some other pieces from Jarad Tarbell, who I've never met by the way. But I have
exchanged e-mail with him and he's a very nice guy. And all of these are on the web. I mean I'm running
live web pages here. And one thing you may notice is in the bottom there's a source code link. When you
write an applet in Processing, it's a one click menu choice to say export. You export it, it makes an applet;
it makes a webpage. It makes all sorts of stuff associated with the webpage that the applet will run. It
makes a link back to Processing if you haven't downloaded it. And it gives you a link to the source code.
The idea is that, heck, the code should be there. You don't have to. Obviously you can edit that out. But
part of the aesthetics of the community is we share our code. And it's wonderful, of course, because that's
how you learn what other people are doing.
This is a really interesting applet. What he's got is a number of moving circles that, they're hidden, you
can't see them. What he's drawing is the places where the circles overlap. And so you get a nice little
bright white dot where the circles cross on each other. It's just gorgeous. If the room was a little darker, I
think it would look even prettier. He has a version of this where he traces the curves and that's what this
applet does. Here this is the very same thing, only instead of clearing the screen each time, it's
remembering. You know, it's just accumulating those intersection points. And you know, by golly, they
start to really look interesting. He's also invented a really beautiful line drawing technique which he calls
the Sandpainter, which he's using here. Which I just fell in love with, and I've used it a few times with his
permission. And initially it was mysterious to me as to how worked. I opened up his code, figured out
what he was doing, changed it to make it the way I liked it, and now I use it as just another primitive.
Let me show you a couple of other things he's done. So this is what made me fall in love with Processing.
When I realized it could do stuff like this. And it was just a single click you could export to the web. It's
sort of a fractal like thing. It's different every time, so sometimes you get really beautiful ones, and
sometimes you don't. So I also looked at a lot of other languages and I'm not putting them down, but I had
to pick one, and for the ease of programming and the quality of the visuals, I chose Processing, for that
class. And it worked out very nicely. People really dug it. There's one more I want to show you, Bubble
Chamber. This is just really a sweet applet. There are four kinds of particles and they kind of, they are
flying around inside a collider. And let's see do I have to, yep, there we go. So as you saw, you saw the
Java thing come up; these are sort of what happens. Processing sits on top of Java. It looks like a subset of
Java, and it sort of is, but there are differences too. So it is not strictly a subset of Java. There's a whole lot
of overlap. But there's some processing commands that don't exist in Java and some Java commands have
been tweaked and changed in subtle ways. But it was designed to let you crank out this kind of stuff real
fast. I mean notice that there are these nice embossing effects, I mean it's really, really dirt simple. And the
source code is there. And one of the ways I learned Processing, was looking at the source code for this
thing. In fact, why don't we bring it up? Just you can see what it looks like. Here are all these examples of
pictures he's made. I mean how can you not fall in love with this? Okay, we’re not getting it right now, but
the source code is out there.
I fell in love with this thing and I thought okay, this is great. When I'm off to give my class at Sigraf, let's
see, can I blow this up? No. So I felt when I'm off to give my class at Sigraf, I'll talk about Processing for
ten or fifteen minutes. So I did that and the people loved it. So the following year I thought well I'll talk
about processing again, but I need to write some lecture notes or something. And I went to the coffee shop,
and I opened up the laptop and I figured okay I'll bang out three or five pages of lecture notes, and about
five weeks later I had a 1000 page book. Because it just happens that way sometimes. So I had this book
on Processing. The book, I chose to do it in a weird way, and in fact there's a lot of overlap in what
Michael and Stephen did. The book is not like a regular programming book. I've got nothing against
regular programming books. I've read 1 million; we all have. They're all great. But this was meant to be
for artists. The idea was this is people like this guy who are making art installations. I don't think that this
guy cares much about programming at all. He wants to make pictures like this. And you know what?
Getting out a paintbrush and getting your paints and doing that, that's one way to go. But if you want to
make 100 of them with variations, computer’s the way to go. And so you got to learn that tool. Well that
was the idea of the book, was let's help people learn that tool.
The primary thought behind the book was programming is not interesting in and of itself. I'm not coming
to you because you want to learn to program. You don't care about it. You want to make art. And I
happen to have a tool that does it. So I'm going to teach you the tool, but the whole reason is so that you
can make art. And you know what? If Processing was a system for teaching otters to roll around in paints
and then roll around a canvas, and that made the pictures that we could make here, I would've taught you
how to train otters. It's not the programming; it's where it gets you. That was the first thought, and I
thought okay, how can I do that? And I went through the same sort of thought process that these guys did.
I decide, all right, what most programming books do is not universally, but often, they’re depth first, you
know. Here's the structure of the if statement. Here's the syntax, here's the boolean. Here are the boolean
types. Here's how to evaluate a boolean. Here's what happens if you're doing this within a boolean. You
know, you get into all this detail.
Furthermore, a lot of programming books, because they expect some sophistication from you, will present
you with some syntactical stuff and grammatical stuff, knowing that you know why it's there. And I
figured people new to programming, they don't know why, and furthermore they don't care. So my thought
was I'm going to, very much like what they did, only without prior collusion. I said, you know what, I'm
going to sort of set up these are projects that we want to do. And then I'm going to say how can we
possibly do this? Oh my gosh! We need something that can, like, make a choice. By golly, it exists. It's
called an if statement. It looks like this, let's use it. And I didn't get into the detail. And the idea of the
book was each time we talk about something, we just glance off it. We just sort of touch it and move away.
We learn just what we need to know. And later when we need to know more, we'll come back to it. And
then we'll come back to it again, and we'll come back to it again. And by kissing it many times, throughout
the course of the book, we will come to know this thing in its entirety. That has a number of benefits. One
is you don't get slogged down with tons of details. Second is you get to integrate the information as you
go. Third is accumulated mastery, right? It's not like, oh my gosh, we’re going to spend three days
learning about if statements. And we've never even heard of a Wile loop. No, we'll spend five minutes on
the if and five minutes on variables and five minutes on Wiles, and we can do stuff.
The second approach that I took with the book was leave in the bugs. I wrote dozens and dozens of
programs for this book and I took a snapshot every time I added anything significant. Five lines, change
the data structure. I was just sitting there in the coffee shop. I didn't even realize I would use it. I just
thought I was making a trail of breadcrumbs for myself. And I, so I would make a little change, run it, oh
fudge, I left a typo. Snapshot this code, stick it aside. Fix the bug, run it, got it. Grab a snapshot. And so I
had dozens of snapshots for every program. And they’re all in the book. Because that's how you program.
None of the programming books do that, right? They say, now here's how to make a bank transaction
system. You know and they break it down into the modules, and they show you the modules and then you
have 20 pages of code listings and you’re done. And nobody writes code that way. You write five lines.
You run them. They break. You fix them. You run them. It works. You save it. So I thought this is, this
is what real programming is. Why pretend it's anything else? And so in the book there are figures. Every
time I develop a program, and I'll show you a couple of these programs, in fact, let's go to one right now.
Okay. So let's switch to the other computer please, thank you. And it looks like I'll, so here's a little
Processing program. We didn't talk about type, and I thought that I would just open with a little
typography. Processing can do type. So I'll show you a couple of the programs that I wrote for the book,
and then I'll talk about how they got developed.
So let's go to group one. So one of the things I did a few times in the book is I made postcards from other
planets. So every time you run this applet, you get a different postcard. So let's run it a couple of times.
And it’s, they’re all sort of the same, you know they're all winter scenes on a, you know, road with sort of
puffball trees. But there are many, many layers; there are all kinds of stuff happening here, the snow is
reflecting the sun. The sun is coming through the trees. There's illumination on the trees. There's color
stuff going on. There's actually a whole lot of stuff going on. Well, in the book there are probably, I'm
guessing, 60 versions of this program. And they're all online. I mean I don't list them all, obviously but
they're all up there on the website from the very beginning. From the first call that just says, make a screen
600 x 600, to the next line, to three more lines, to five more lines, including all the broken ones. And so
every Processing generated figure in the book, and there are like 800 of them. Every single one in the
caption contains the URL of the code that made that picture. Even the ones that are horrible and broken.
Even the ones that comes out and like, oh my God, my picture went black. Save the URL. You can run
that code, re-generate the black picture for yourself. And you can fix it, yourself if you want. Or you can
see how I fixed it. So I thought that this was an important learning tool.
>>: [inaudible].
The book is the annotation, in some sense. I deliberately, and I talk about this quite a bit in the book, and it
was a real do as I say, not as I do. The code is largely uncommented. And it just has to be that way or it
just gets overwhelming in a book to have all those listings. They double in size with comments.
>>: What I meant was the, like okay, the screen went black here, did you put, the screen went black,
associated with that snapshot?
>> Andrew Glassner: When it wasn't obvious what was going wrong. But yes, in the discussion, if you're
reading along in the book, I'll say, okay now we'll set V equals 3, let’s try it out. Well that's wrong. What
went wrong? Well we have a loop in bah, bah, bah. And I talk about my thought process in trying to fix it.
And in fact, as happens sometimes I couldn't find the bug right away. I went after the wrong things.
Sometimes in fact, in one place I couldn't find the bug and so I built this whole extra bunch of code to
demonstrate things to show me what was going wrong somewhere else. That code had a bug in it. Well it's
all there in the book, because that's what it's really like to program. I was trying to demystify the process.
So yes if you're reading along, you're probably thinking, this guy doesn't know how to program worth
beans. Because nobody else has these problems. But I figured, put it all out there because that's real life.
Let me just show you a couple of quick other little programs, so you get a feeling for the sorts of things we
do in the book. So that was actually one of the more complicated ones.
Let me show you another of the complex ones. And then I'll show you a few of the simple ones. One of
the beautiful things about programming in Processing is you can do really complicated things with really
small programs because it's got all the right geometric primitives built in. And so these are little grains of
sand, and they’re falling down and they’re being blown around by fans. And if we let this run over time we
get some very beautiful snapshots.
Let me show you two others. Group 1, Spin C and Cubes. I wanted to show you that Processing can also
do 3-D. It's not, it's not a real big 3-D program. That's not its real strength. Its strength is 2-D. But this is
3-D and it's running. And it's all native to Processing; it's all built in. It's actually talking to OpenGL. But
you don't have to learn any OpenGL. And as most of you have probably guessed, what I have here is a grid
of cubes. And I have a different picture pasted on each side of the cubes. And I'm just, I have several
different patterns for turning the cubes over time to reveal a picture. In fact one of the things I'm doing is I
have many more than six pictures. And so after each transition, I change the picture that's on the back face.
So we mix up the photos. So there's 3-D.
Let me show you a really simple example of something in 2-D, a really short bit of code. Group 2, Set 1,
Wheels. Okay. So here's the whole program I'm about to show you. This took, that's the whole program,
I'm about to run. This took one commercial break during Colbert Report. One night I'm watching Colbert,
had an idea. By the time the commercial break was done, the program finished. And it does this. Now I
don't know about you but I love this stuff. I mean I could watch this for a really long time, and fit it with a
number, and change the number of rings, and change how they spin, and change, you know, the phase
relationships between the rings, and you know you can just play with this thing for a very long time. And
this is the kind of thing that prompted me to think yeah, this is worth talking about; this is worth teaching.
And again, now stop that, there's the whole code. And it's all the stuff that you guys just saw. In fact we
can walk through it real quick. I'll set up a bunch of floats, and a couple colors. They’re set up like we saw
before, right? I create a window, 400 x 400 and turn on the anti-LE sink. Here's the code that gets
evaluated every, every frame. Clear the background; set up a couple of variables, run through a loop. I set
a fill color. I draw an ellipse. I set another fill color. So basically what I'm doing is I draw say, an orange
circle, and I cut it in half, and I draw blue semicircle. And then I get smaller and rotate, draw an orange
circle, and a blue semicircular, get smaller, rotate, that's it. And that's all that's happening here, the radius is
getting smaller turning do that, change the starting angle and Delta on each frame, and that's the whole
program. Cool. Now, could you do this with all sorts of other programs? Absolutely. There are all sorts
of programming languages out there that can do this. For me the beauty of Processing is it's just that easy,
you just knock it out. Although as Michael and Stephen said, the IDE is beyond awful. There is nothing to
it; it is bare-bones. If this doesn't run, you start putting in print statements. Which is ridiculous. Now there
are external IDs that you can use for Processing. But the native has like no debugging abilities.
So I want to wrap up. So I was talking to a couple people about this book. And they were my target
audience, designers. Who wanted to learn how to do this kind of thing for their art to make Museum
kiosks, to make interactive installations. If you go to almost any museum, you will see tons of Processing
stuff, all over. Because it is the mechanism of choice for visual artists who want to do the work
themselves. They don't want to learn Flash; they don't want to learn Aftereffects. This gives them the tool.
So I'm speaking to somebody who wanted to do this, and I said, oh it's great. Perfect timing, I just wrote a
book. And her reaction was well, yeah but where can I find the videos? I said, no I haven't done any
videos, I wrote this book. Yeah but, you know, there's a website there like YouTube, where you have the
videos in the book. Well this conversation went on for a while and I realized my target audience doesn't
read books. [laughter]
I just wrote this thousand page book, and it's beautiful and I fell in love with it when I saw it, and you
know, they want the YouTube URL. Well this happened a few times. So I decided okay, I'll teach online.
So I'm now taking the material from that book and a lot of additional material, and I'm using it to teach an
online course. Which I'm now putting together; I'm putting together a huge website. The course is going to
have just dozens and dozens of little videos. And each week, I give you a little path like jumping from one
lily pad to the next, through a part of the world.
So if you want to learn more about recursive programs, there's a lily pad for that but I don't talk about it
because it's not on the main path. But it's there if you want it. And so every week I'll assign homework.
People do their homework. And I'll give them back feedback. I'll record a new video that talks about what
they've done in their homework and I talk about everything from the code formatting to the color choices to
the aesthetics of the pieces to how things move, to the actual implementation, and then I riff on it. I say
okay, given the code that you wrote, here is another place we can take it.
I actually have done a test run of this course live with a couple of people over the course of several weeks,
and learned a couple of interesting things. One was they love the feedback and people, I was a little
concerned that people would say you're going to take my program, and you're going to take my work and
change it and extend it? And in fact they loved that. You know, they send you a thing with four balls that
are coming together. I actually have that, but I'll skip it for now, but I can show it to you if anyone wants to
see it. And I say okay, we can take that and enhance it. You have many balls coming in, sliding and
rotating around as they move. And they love that. They say that's were I can go next time.
Another thing is they really like this business of being able to revisit a node. They'll say there is this one
little thing I don't get. I can always go back and check it again. So that's the nice thing about having little
videos. The third thing is, they won't read the book. The first thing we did when we sat down to teach this
course is I sold them each a copy of the book. And they were happy to have it. In the middle it became
clear to me that they would not open it. They would write to me and they would say, I don't understand
how such and such works. Bah, bah, bah. And I were to write back, no worries. From page 315 to 318, I
talk about exactly that. There's a discussion, there's figures, there's example code, I sweated bullets on it.
Check out page 315. And they bring it back, obviously not having taken a look, and they say yeah, but I
don't see how the blah blah blah. And we go back two or three times and then I finally when realize that
they will not open the book, basically I would transcribe what was in the book. This is part of my learning
process. And I didn't do it verbatim, because I didn't have, you know, figure 18-3. I would just say see the
screenshot, right? And I would basically, with a little bit of change, type in what was in the book.
Pages of e-mail, and that they would read. That was fine and they were grateful for it. Oh thank you, that
explains everything. [laughter] So for me the lesson is you got to do it in video because that's what they
want, and you have to give your audience the information they want, the way they want it. So I have a
bunch of books if anyone wants to see them. And we can talk about this course which should be live in a
few months.
>>: [inaudible]
>>: [laughter]
>>: [applause]
>> Michael Cohen: Anyway, so Andrew’s got some books here. So if any of you are interested in doing
anything remotely like this, you know where to find us. And happy to just give you all the code, obviously
there's way more code than we can give you out there on the web and other projects. And, you know, we
actually got a lot of inspiration just going through the index in Andrew’s book. We got a very early copy
before we did the course, and drew some of the ideas out of there. I can contest to that. Yeah?
>>: The girls were what, about 13 years old or something?
>> Michael Cohen: Yeah.
>>: How young do you think you could've gone and met with any success?
>> Michael Cohen: Very good question.
>> Steven Drucker: This was actually in our thinking a lot as we were designing some of the projects,
because some of them might involve math or trig and we're all, well we can't do that. So I think we end up,
some of the things actually we could have done maybe a couple of years earlier. I know that we've done
stuff individually with our daughters quite a bit earlier, when they were eight.
>> Michael Cohen: I would say a couple of years earlier would have been fine. Now we don't really know
what 15-year-old girls are like, but I'm going to guess that might be too late. Judging from what 13 ½
going on 14 were getting to be like.
>>: Well, you have to remember they were your daughters too.
>> Michael Cohen: Yes.
>>: I have a question about why you did the robotics for boys and girls, and then you decided to do the art.
What was your learning about robotics that made you decide on art?
>> Michael Cohen: There were a couple things. One of which was that a lot of times they wanted to do
stuff that was too hard to express in robotics. I remember, let's make a jumble, was one of the first things
that they wanted to do. And they actually wanted to do something a little bit more expressive than is
possible in the confines of the robot. And that was again why we chose some of the paint stuff. And that's
also why we didn't choose the sort of programming with Alice. Alice is great for doing certain things but
you were a little bit constrained to this 3-D environment. In the 3-D environment that you [inaudible]
>>: Because are you aware that there's a huge debate within the K-12 community about the entry paths in
robotics versus Canoe, versus Scratch [inaudible] that and I love your book is all about tinkering. My
hypothesis is that tinkering and immersion and fun are the way to attract kids. And you know 15's too late,
and you might be too early, but encouraging teamwork can be fun.
>> Michael Cohen: Yeah, I've grown up over 25 years with computer graphics starting from when nobody
had even seen a picture on the screen, to when we first saw an actual picture come up on a screen. You
know a digital image, come up on a screen. And then getting into 3-D and three lighting and 3-D
animation and for the last 15 years I've been going no more 3-D. I'm going to go back to 2-D and no more,
I'm going to start from photos [inaudible] And if you realize after going down that path, 2-D is wonderful.
It's just, it paints on a canvas is a great thing. And just start there so yeah I…
>> Steven Drucker: And so we do have some friends that have gotten into the robotics route. David
Hackerman, his son is really into doing that and he loves that but it just never clicks with your…
>> Michael Cohen: Well partly also we were doing this online kind of course that was trying to be
developed by some people at MIT, right? So we actually had them on video, and we had a lot of technical
things and the particular project in this class was to create this little garden . And so they had all these little
pipe cleaners and they were making little things out of it. And again you sort of saw the girls just totally
spend all their time building these little flowers and things out of pipe cleaners and little plastic discs. And
you know the guys were like were making little catapults. [laughter]. And it was okay.
>> Steven Drucker: And it was also kind of removed from the program and stuff. It was sort of okay, I go
and I open this up and it does this, and okay I'm done, and they didn't really embellish in that direction
[inaudible].
>>: I read the original book on processing not too long ago and I thought what a beautiful thing. What a
shame it's got to carry the weight of Java along with it. I would imagine it's 10 times as bad for 13-yearolds that you got this semicolon fetish to deal with. What would've made this better from purely a
programming language I mean? Not necessarily the processing primitives [inaudible].
>> Michael Cohen: Yes, somebody should write a nice ID, nice development environment around it.
>>: So you don't think Java would have been a problem if there'd been a nice [inaudible].
>> Steven Drucker: As a matter of fact, we even looked at these Small Basic, once she showed up, and
that's very nice because it in a sense it does, semicolon, and all the other things it just makes it such that
you can't make as much of a mistake. It tells you what the mistake is, here.
>> Michael Cohen: It gives you choices, you know do you want this, or you know pick one.
>> Steven Drucker: Although that might have the, I'm not sure how well, how flexible it would be to,
anyhow I think it would at least help with all these tactical errors.
>> Michael Cohen: It’s a fine line. If you get more and more and more help with auto syntax fill in, then
you know your flexibility starts feeling a little constrained. And then you start to go outside of that and it
doesn't seem to know how to help you anymore. But yes, some of that would have gone a long way.
>>: It just seems ridiculous to me to teach a 13-year-old to declare a variable. It just seems silly.
>> Steven Drucker: We were kind of worried about that, it seemed to not bother them. [inaudible] I mean
the hardest thing was the scoping of the parentheses.
>> Michael Cohen: Yeah, I need another variable; so you just copied some other variable. So it's really
just by example.
>> Steven Drucker: Yea, I mean maybe it would have been better to take something that was just Python,
or something, where you don't have this…
>> Michael Cohen: Yeah, we talked a lot about [inaudible]. You know Python is really a fun language to
do.
>> Steven Drucker: the other thing about processing, we didn't really talk about the size of the artistic
community. There's tons and tons of libraries out there for doing all sorts of other things, for doing 3-D for
doing RD and I know Asta, is really into trying to do sewing and stitching. She really wants
wordprocessing because she wants to be able to program [inaudible].
>> Michael Cohen: So we were actually talking to Asta and we have another, there’s a student we so
advised her [inaudible] in San Francisco has been getting into a know these little boards of fashion, so I’ve
been contemplating trying to do a fashion, sort of little blinky lights you know dresses and shirts with
blinky lights, thinking maybe for this summer. That could be the next thing to do. Yeah.
>>: I'm just curious why you thought maybe15 is too late?
>> Michael Cohen: We don't know. We have 13-year-olds.
>> Steven Drucker: Yea, you know there's this point where you…
>> Michael Cohen: Just sort of take the vector [inaudible].
>> Steven Drucker: You're going to claim a whole week of my summer and and force me to do this stuff?
[laughing]
>> Michael Cohen: Anyway, anyway follow-up with this as much as you like. Here's a book. There are
some. Talk to Andrew.
Download