Friday, February 24, 2012

Teaching The Robots To Sing: Episode 2 (TDD With Jasmine-Node)

Episode 2 of Teaching The Robots To Sing is a gentle introduction to command-line TDD in JavaScript. You can see it here in Flash format:

You can also download it:

episode2.m4v (for iOS, OS X, and Apple TV)

I'm going to build a class on videos like this.

The class itself consists of biweekly videos. The first video was 35 minutes, the second was just under 10; upcoming videos will fall within a similar range.

If you want to see these videos, you need to sign up for my new class, which consists of 3 months of biweekly videos, alternating with biweekly 1-hour Campfire chats. In other words, a chat, then a video, then a chat, etc. Discussions in the Campfire chats will shape the videos I make. It's like Destroy All Software with office hours (plus JavaScript, CoffeeScript, Node.js, Backbone,, and, most of all, music). I'm going with office hours because I want to make sure people really learn what I'm teaching; I'm making the videos biweekly because I want them to be FAST AS BALLS.


Speed matters, and not just for web sites. I recently talked to a pair of great engineers about screencasts. Many people love screencasts, but not everybody. Of the two hackers I was talking to, one never watches screencasts at all, because he feels they're too slow; the other one watches them, but watches them in QuickTime, and uses QuickTime's adjustable playback rate to speed up the video to twice its normal speed. Personally, I love screencasts, but I use that double playback speed trick myself sometimes.

I thought about this and decided it's about the editing, because I saw something similar while giving presentations. In 2008, I spoke in front of at least 15 conferences and user groups, maybe 20 or more. I developed a rapid-fire presentation style where I kept putting new slides on screen, because I found that if I didn't, people started looking at their laptops instead of paying attention to my talks. I wanted people to pay attention to my talks, so I made my presentations grab their attention. I got great feedback when I did this. I even got a wild standing ovation after my talk at RubyFringe in Toronto. People still email me now, in 2012, four years later, having just discovered video of that talk, to tell me they love it.

People actually love irrelevant distractions. For instance, here is an unnecessary koala.

Don't tell me that koala isn't adorable.

There were over 500 slides in my RubyFringe talk, and I spoke for approx 50 minutes. That's a very rough average of 10 slides per minute, or a new slide every six seconds. In the average screencast, the image on screen cuts much more slowly than that. But people today are used to fast cuts, so I took the time to apply this style to my videos. I counted the cuts, zooms, and transitions in the first six minutes of the above video, the second episode in Teaching The Robots To Sing. I counted about 94 cuts in those six minutes. The style continues like that through the whole video. So 94 cuts in six minutes (360 seconds) means the shot changes every four seconds, on average.

My theory is TV and movies have made a certain pace feel natural to us, with the obvious corollary that anything slower feels unnatural. I also feel zooming in on key pieces of code makes code demonstrations easier to understand, and it's not just me:

So the videos come out biweekly because I want to take the extra time to make them fast, exciting, and incredibly easy to watch -- which means extra time editing on my end to save time on your end with an exceptionally watchable video -- and in addition to biweekly videos, there's also biweekly Campfire chats. They're an hour long max (less, if you bail) and they alternate; you get a video week and a Campfire week. No matter how many people sign up, there will never be more than 11 people in any one Campfire chat -- each chat gets 10 regular participants, max, including myself, plus an 11th empty slot in case somebody misses their own usual chat schedule and wants to sit in on another class's chat. This is because I want to make sure everybody participates. Small class sizes make that easier.

I want people to have a great time with this class. If you're a dude, I want you to think about how much you value, cherish, and protect your own testicles, because it's my goal to make this class something people love so much, it's like you grew a third testicle. Or think of it like a puppy with the power to cure cancer. I want this class to be so exciting you run around in circles whenever you think about it.

In this class, you'll learn how to write a drum machine. You'll learn how to write clean, well-tested CoffeeScript, along with enough Backbone to implement a single-page web app which generates original sheet music. You'll also learn and CSS3 animation.

Going back to the idea of participation, you can lurk if you want, of course, but the whole goal is to get you to the point where you can come up with your own cool hacks.

Site licenses are available for companies, and if at any time you are dissatisfied, tell me, and I'll give you all your money back. Any reason is valid.

Signup opens tomorrow, and closes Sunday night.