Good points, some bad points

The recently and sadly departed Game Developer magazine had a great post-mortem article format of “5 things that went right/went wrong” with some videogame, by its creators. I thought I’d try one myself for the MOOC “Interactive 3D Graphics” that I helped develop. I promise my next posts will not be about MOOCs, really. The payoff, not to be missed, is the demo at the end – click that picture below if you want to skip the words part and want dessert now.

Good Points

Three.js: This layer on top of WebGL meant I could initially hide details critical to WebGL but overwhelming for beginners, such as shader programming. The massive number of additional resources and libraries available were a huge help: there’s a keyframing library, a collision detection library, a post-processing library, on and on. Documentation: often lacking; stability: sketchy – interfaces change from release to release; usefulness: incredible – it saved me tons of time, and the course wouldn’t have gone a third as far as it did if I used just vanilla WebGL.

Web Stuff: I didn’t have to handle any of the web programming, and I’m still astounded at how much was possible, thanks to Gundega Dekena (the assistant instructor) and the rest of the Udacity web programmers. Being able to show a video, then let a student try out a demo, then ask him or her a question, then provide a programming exercise, all in a near-seamless flow, is stunning to me. Going into this course we didn’t know this system was going to work at all; a year later WebGL is now more stable and accepted, e.g., Internet Explorer is now finally going to support it. The bits that seem peripheral to the course matter a lot: Udacity’s forum is nicely integrated, with students’ postings about particular lessons directly linked from those pages. It’s lovely having a website that lets students download all videos (YouTube is slow or banned in various places), scripts, and code used in the course.

Course Format: Video has some advantages over text. The simple ability to point at things in a figure while talking through them is a huge benefit. Letting the student try out some graphics algorithm and get a sense of what it does is fantastic. Once he or she has some intuition as to what’s going on, we can then dig into details. I wanted to get stuff students could sensibly control (triangles, materials) on the screen early on.  Most graphics books and courses focus on dreary transforms and matrices early on. I was able to put off these “eat your green beans” lessons until nearly halfway through the course, as three.js gave enough support that the small bits of code relating to lights and cameras could be ignored for a time. Before transforms, students learned a bit about materials, a topic I think is more immediately engaging.

Reviewers and Contributors: I had lots of help from Autodesk co-workers, of course. Outside of that, every person I asked “can I show your cool demo in a lesson?” said yes – I love the graphics community. Most critical of all, I had great reviewers who caught a bunch of problems and contributed some excellent ideas and revisions. Particular kudos to Gundega Dekena, Mauricio Vives, Patrick Cozzi, and at the end, Branislav Ulicny (AlteredQualia). I owe them each like a house or something.

Creative Control: I’m happy with how most of the lessons came out. I overreached with a few lessons (“Frames” comes to mind), and a few lines I delivered in some videos make me groan when I hear them. However, the content itself of many of the recordings are the best I’ve ever explained some topics, definite improvements on Real-Time Rendering. That book is good, but is not meant as an introductory text. I think of this course as the prequel to that volume, sort of like the Star Wars prequels, only good. The scripts for all the lessons add up to about 850 full-sized sheets of paper, about 145,000 words. It’s a book, and I’m happy with it overall.

Some Bad Points

Automatic Grading: A huge boon on one level, since grading individual projects would have been a never-ending treadmill for us humans. Quick stats: the course has well over 30,000 enrollments, with about 1500 people active in any given week, 71% outside the U.S. But, it meant that some of the fun of computer graphics – making cool projects such as Rube Goldberg devices or little games or you name it – couldn’t really be part of the core course. We made up for this to some extent by creating contests for students. Some entries from the first contest are quite nice. Some from the second are just plain cool. But, the contests are over now, with no new ones on the horizon. My consolation is that anyone who is self-motivated enough to work their way through this course is probably going to go off and do interesting things anyway, not just say, “Computer graphics, check, now I know that – on to basket weaving” (though I guess that’s fine, too).

Difficulty in Debugging: The cool thing about JavaScript is that you can debug simple programs in the browser, e.g. in Chrome just hit F12. The bad news is that this debugger doesn’t work well with the in-browser code development system Udacity made. The workarounds are to perform JSHint on any code in the browser, which catches simple typos, and to provide the course code on Github; developing the code locally on your machine means you can use the debugger. Still, a fully in-browser solution with debugging available would have been better.

Videos: Some people like Salman Khan can give a lecture and draw at the same time, in a single take. That’s not my skill set, and thankfully the video editors did a lot to clean up my recordings and fix mistakes as found. However, a few bugs still slipped through or were difficult to correct without me re-recording the lesson. We point these out in the Instructor Notes, but re-recording is a lot of time and effort on all our parts, and involves cross-country travel for me. Text or code is easy to fix and rearrange, videos are not. I expect this limitation is something our kids will someday laugh or scratch their heads about. As far as the format itself goes, it seems like a pain to me to watch a video and later scrub through it to find some code bit needed in an upcoming exercise. I think it’s important to have the PDF scripts of the videos available to students, though I suspect most students don’t use them or even know about them. I believe students cope by having two browser windows open side-by-side, one with the paused video, one with the exercise they’re working on.

Out of Time: Towards the end of the course some of the lessons become (relatively) long lectures and are less interactive; I’m looking at you, Unit 8. This happened mostly because I was running out of time – it was quicker for me to just talk than to think up interesting questions or program up worthwhile exercises. Also, the nature of the material was more general, less feature-oriented, which made for more traditional lectures that were tougher to simply quiz about. Still, having a deadline focused my efforts (even if I did miss the deadline by a month or so), and it’s good there was a deadline, otherwise I’d endlessly fiddle with improving bits of the course. I think my presentation style improved overall as the lessons go on; the flip side is that the earlier lessons are rougher in some ways, which may have put students off. Looking back on the first unit, I see a bunch of things I’d love to redo. I’d make more in-browser demos, for starters – at the beginning I didn’t realize that was even possible.

Hollow Halls: MOOCs can be divided into two types by how they’re offered. One approach is self-paced, such as this MOOC. The other has a limited duration, often mirroring a real-world class’s progression. The self-paced approach has a bunch of obvious advantages for students: no waiting to start, take it at your own speed, skip over lessons you don’t care about, etc. The advantages of a launched course are community and a deadline. On the forum you’re all at the same lesson and so study groups form and discussions take place. Community and a fixed pace can help motivate students to stick it through until the end (though of course can lose other students entirely, who can then never finish). The other downside of self-pacing is that, for the instructor(s), the course is always-on, there’s no break! I’m pretty responsible and like answering forum posts, but it’s about a half hour out of my day, every day, and the time piles up if I’m on vacation for a week. Looking this morning, there are nine forum posts to check out… gotta go!

But it all works out, I’m a little freaked out. For some reason that song went through my head a lot while recording, and gave a title to this post.

Below is one of the contest entries for the course. Click on the image to run the demo; more about the project on the Udacity forums. You may need to refresh to get things in sync. A more reliable solution is to pick another song, which almost always causes syncing to occur. See other winners here, and the chess game is also one I enjoyed.

Musical Turk

 

Stuff from SIGGRAPH 2013

Your one-stop shop for SIGGRAPH 2013 links is brought to you by the inestimable Stephen Hill: go here now.

My small contribution to the cause is hosting the talk “Unity: The Chase – Pushing the Limits of Modern Mobile GPU“:

I had a good SIGGRAPH myself. Talked with lots of people, saw some worthwhile presentations. My favorite was Marco Salvi’s, about PixelSync. “Programmable raster ops” doesn’t sound like a big deal on the face of it, but Marco’s talk pointed out all sorts of interesting uses: RGBE encoding, voxelization, and a bunch of others. His slides should be up on the “Advances in RTR for Games” site soon. In the meantime, there are blog entries here, here, and here – all with demos and more.

Faster Forward and more

SIGGRAPH 2013: if you’re going, or even if you’re not, here are a few nice resources.

  • This PDF has the first page of all the papers at SIGGRAPH 2013. Faster Forward!
  • This page has information on all the events (other than parties), suitable for direct view or import into Google Calendar. If you grabbed these before today, grab again: the BOF calendar now has Wednesday’s events.
  • To save you a little searching, here’s the schedule at a glance, the advanced program, and the free scheduler app on the SIGGRAPH site.

Oh, and there’s probably a good party list somewhere, but in lieu of that, this link.

“Interactive 3D Rendering” is finally complete!

Short version: the Interactive 3D Graphics course is now entirely out, the last five units have been added: Lights, Cameras, Texturing, Shader Programming, Animation. Massive (22K people registered so far), worldwide (around 128 countries, > 70% students from outside U.S.). Uses three.js atop WebGL. Start at any time, work at your own pace, only basic programming skills needed. Free.

That’s the elevator talk, Twitterized (well, maybe 3 tweets worth). I won’t blab on and on about it, just a few things.

First, it’s so cool to be able to show a student a video, then give a quiz, then let them interact with a demo, then have them write some code for an exercise, all in the browser. Udacity rocketh, both the web programmers and video editors.

Second, I’m very happy about how a whole bunch of lessons turned out. The tough part in all this is trying to not lose your audience. I think I push a bit hard at times, but some of my explanations I like a lot. Mipmapping, antialiasing, gamma correction – a number of the later lectures in particular felt quite good to me, and I thought things hung together well. Shhh, don’t tell me otherwise. Really, it’s not pride so much; I’m just happy to have figured out good ways to explain some things simply.

Third, I wrote a book, basically: it’s about 850 full-sized pages and about 145,000 words. It’s free to download, along with the videos and code. I think of this course as the precursor to Real-Time Rendering, sort of like “Star Wars: Episode 1”, except it’s good. I should really say “we wrote a book”: Gundega Dekena, Patrick Cozzi, Mauricio Vives, and near the end Branislav Ulicny (AlteredQualia) offered a huge amount of help in reviewing, catching various mistakes and suggesting numerous improvements. Many others kindly helped with video clips, interviews, permission to show demos, on and on it goes. Thanks all of you!

Fourth, I love that the demos from the course are online for anyone to point at and click on. Some of these demos are not absolutely fascinating, but each (once you know what you’re looking at) is handy in its own way for explaining some graphics phenomenon. The code’s all downloadable, so others can use them as a basis to make better ones. I’ve wanted this sort of thing for 16 years – took awhile to arrive, but now it’s finally here.

Fifth, working with students from around the world is wonderful! I love helping people on the forums with just a bit of effort on my end. Also, I just noticed a study group starting up. I’ve also enjoyed seeing contest entries, e.g.,  here are the drinking bird entries, click a pic to see it in WebGL:

 

What’s making a MOOC itself like? See John Owens’ excellent article – my experience is pretty much the same.

A close-up in the recording studio, my little world for a few weeks:

Please stop revealing this “dirty little secret”

OK, this post is most definitely non-graphical, but I need to rant a bit.

While I wait for the last few elements of the MOOC I worked on to be released, I’ve been reading various opinions on MOOCs. Here’s the one theme that drives me crazy on a number of levels:

One of the dirty secrets about MOOCs — massive open online courses — is that they are not very effective, at least if you measure effectiveness in terms of completion rates.

That’s from a NY Times article, which is otherwise fairly positive. I’ve seen this opinion expressed a number of times elsewhere, and it’s meant as a serious critique or a dismissive gesture. From what I’ve read, it’s true that the completion rate is around 5% to 15%. However, it’s an apples to orangutans comparison to equate this with completion rates at colleges. Here are just a few obvious explanations.

The barrier to entry is low: “So, people who pay, or whose parents pay, $500 to $5000 per course are more likely to complete that course than those who pay $0? Shocking!” Say I have two computer programs I could use for a task. One costs $0, one costs $5000. I’ll certainly look at the $0 option first. If I paid $0, no big deal if I stop using the program. $5000, and I definitely am committed to use the program in a serious way, I want to get my money’s worth so I’ll make sure I need it and use it. But, really, this kind of misses the point. No one’s really weighing today’s MOOCs vs. traditional college curricula, for one obvious reason:

You’re getting just knowledge, not course credit or a QPA, nor even any parties: There’s a huge group of people ages 18-22 that go to college. They’re all there to get a degree, along with an education. Take away the degree aspect and most parents are not interested in plunking down the cash. Even alternatives such as Hampshire College produce an elaborate transcript for their students and some “proof of learning”. Take away the “meeting other students” aspect and that removes a significant aspect of the college experience for students: no dorms, no sports, no clubs, no parties, on and on. Comparing MOOCs with colleges is just silly. The main question that should be asked is “how do various MOOC techniques fit in with college education?” Flipped classrooms is the obvious one, and so how else can college education be improved? We don’t make every faculty member write their own textbook for each course they teach. What improvements can be gained by sharing more elaborate forms of media and interactivity for education? Articles such as this help.

Students who finish want to be there: That’s the dirty little secret of MOOCs. People are taking them because they want to, not because they have to. The main motivator is, “I want or need to know about this subject.” Since sign-up is free, there’s then all the things that will whittle down that number: “I was just curious what the course looked like” (there’s a huge percentage, maybe 40%, that never take a single class), “I thought it’d be fun, and it was at first, but then it got hard”, “I already knew most of the material”, “I learned the bits I wanted to know and never bothered to complete the course”, “the lecturer was boring/the course disorganized/the materials poorly presented/etc.”

I could go on, but I think you get the idea. The completion rate is a distraction and misses much of interest. It makes for an attention-grabbing fact but not much else. If you think about it, it would be downright bizarre if a free course open to all had a 90% completion rate. That would be the most amazing course ever, that it would be so compelling to almost everyone that signed up for it.

A MOOC can be thought about in another way. What if you told a professor, “every student taking your class is there because they want to be there, they want to know what you have to teach them”? That would be a dream come true. My humble course has 22K signups currently (many “name-brand” MIT, Stanford, and Harvard-backed online courses have over 100K students). Say just 1100 (5%) complete the course, and just 220 (1%) really loved the subject. 220 inspired students? I’ll take it! Heck, I’ll take 22. That may well be more truly inspired students than many teachers get a chance at in their careers. That’s a major reason many professors are excited by MOOCs and push to get their courses online through their universities. Getting messages from students such as, “in my country I think we don’t have schools making this kind of Course” is certainly fulfilling for me.

“Processing” course from Andrew Glassner

Processing” is a Java-based language that has many built-in 2D drawing functions. It gives you all sorts of artistic control of what’s put on the screen. Andrew Glassner is now teaching an online course all about it:

Course page

Even if you don’t sign up for the course, you owe it to yourself to visit just for the eye candy, both the works at the top and the video itself. “Processing” could be the worst name for a language ever (try Googling it, for example), but it also produces some of the most lovely results with just a few lines of code. I played with it – fun! It’s also a great first programming language for non-programmers.

This course costs actual money, and I’m betting it’s worth it. Andrew is one of the best computer graphics lecturers out there. He’s also a bit of a perfectionist when it comes to the quality of his presentations. He wrote a book about Processing, so knows his subject extremely well and knows how to teach it. Finally, as part of the class, he’ll (and this blows my mind) create a video each week for each student of expert, personalized feedback on their work. What?!

It’s sort of a funny thing to have MOOCs get most of the attention lately. Online courses that cost money have been around for some time. Paying money makes a certain sense from a commitment standpoint, both on the part of the student and the teacher. If you seriously want to learn Processing (and along with it, the principles of 2D modeling, rendering, and animation) and value your time, this looks like a great place to go.

Processing screenshot, from Wikipedia:

490 links for 70 days

I like to give 7 links for a day, but I’ve been busy the past half year or so with the interactive 3D graphics MOOC. In two days the second half of the course will roll out, and I’ll blab about that later (in, like, two days). In the meantime, here are 490 links for the half year I’ve been missing. Basically, it’s the Instructor Notes for a bunch of the lessons in the course, additional material and links relevant to the subjects. I admit it, there are a lot of weaksauce links in there, basics for beginners and pointers to Wikipedia this and that. But there are also some great things in there.

Hey, let’s turn this into 7 great links (use Chrome or Firefox to view them, or enable WebGL in Safari):

I know there are a bunch more links in the Instructor Notes that are worthwhile (things like the GLSL shader validator plug-in for Sublime Text 2), but these particular ones stuck with me.

I did get to visit the shrine one morning while in Mountain View recording:

“Game Development Tools 2” CFP

Marwan Ansari has put out a call for participation for “Game Development Tools 2”. Proposals are due July 1, for publication around SIGGRAPH 2014. Among other things, Marwan’s the author of some wonderful (old but still useful) comprehensive articles on GPU image processing, freely downloadable in the “ShaderX^2 Tips and Tricks book”.

You can use Amazon’s Look Inside feature to see some of the first book in the “Game Development Tools” series, and the demos for the first book are also available.

SIGGRAPH 2013 Papers and Hotels

If you want to see the list of SIGGRAPH 2013 papers, see Kesen’s site (well, just a start – more coming as they leak out).

If you want to reserve a hotel spot, go here now. It’s free, no deposit or loss if you cancel in time, so I recommend doing so if there’s the slightest chance you’ll go.

(Oh, and if you’re more a GDC fan, happening this week, try watching Twitter, though people haven’t been tagging religiously.)