- What I Would Take Out of Python. It’s grown a lot over the years; given what we have now, what would you take out, and why?
- How the Hell Did That Happen? How did Rails capture so many hearts and minds when Ruby was a relatively unknown language whose user base in North America and Europe was only a few percent of Python’s?
- Eloquent Python. An exploration of teachable uses of design patterns in the Python standard library.
- Ten Things We Know About Python Programs and Programmers. What do we actually know about execution profiles, common bugs, user demographics, etc.
- Error Handling in Python. What are some patterns for recovering from errors in Python (as opposed to just logging them)?
The slides from my keynote today at MSR Vision 2020 are now available on Slideshare. Long story short, I proposed that the only way to improve communication between researchers and practitioners in software engineering is to create an empirical, evidence-based course in software engineering (with assignments and exams that require students to analyze code and data themselves, do grounded theory analysis of interviews, etc., so that they understand how these studies actually work and what questions they can and can’t say), and then wait ten years for those students to become team leads and managers.
Later: the slides are being discussed on Reddit. Cool!
I had the privilege this summer of working with Jeremy Banks, a Google Summer of Code student whose project, Slide-Drive, explored what a web-native presentation tool might be. Jeremy’s work, which is a continuation of David Seifried’s (described in these posts), tries to solve a double-barrelled problem:
- Desktop presentation tools (like PowerPoint and Impress) allow people to mix text and graphics freely, just as they would on a whiteboard, but don’t play nicely with the web. If you export a PowerPoint presentation, what you get is a bunch of image files that are opaque to search engines and accessibility tools. More importantly, perhaps, any hyperlinks in them are lost, and any CSS styling you apply to the page has no effect on what’s in the slides.
- With HTML-based slideshow tools like S5 and deck.js, on the other hand, text is text, but they severely restrict what can go in a page—basically, you’re back to paragraphs, bullet points, and tables. If you want to draw an arrow from one word to another as you would on a whiteboard, you have to fall back on embedded images (with all the limitations discussed above).
- Neither class of tool takes advantage of HTML5′s multimedia features. For example, if you want to connect a slideshow to a voiceover, you have to either create a movie, which means your content is just pixels painted on the screen once again.
Slide-Drive’s approach is to use SVG for the slides rather than PNG or JPEG images, so that hyperlinks work, text can be selected and copied, accessibility tools and search engines can “see” the text, and so on. Synchronization with other media (like a voiceover soundtrack) is done using Popcorn.js (think “jQuery for video”) and Butter, a browser-based multimedia editing tool. This recorded Slide-Drive presentation will show you how it all works, but if you want to see it in action, you can run the presentation in your own browser. (Warning: the source file is large, so it may take a while to load.)
Slide-Drive isn’t ready for everyday use just yet: there turned out to be a lot of nasty surprises lurking in the darker corners of the SVG standard, various browsers’ handling of fonts, and other areas discussed in Jeremy’s blog. But we’re more excited than ever about this approach’s potential; as I said a few weeks ago, some of these ideas could and should be part of any next-generation web-based ebook-slash-teaching-platform. If you’d like to explore it with us, please check it out.
I was very excited by today’s announcement that the Khan Academy is going to start offering programming courses—until I read the whole post. I’m not a fan of today’s universities, but this is an undeserved smear:
The desire to learn and understand can be a powerful accelerant for students and it’s something that is completely missing from almost all Computer Science education.
I’d really like to see the data behind that claim, but I strongly suspect there isn’t any. I also have some serious reservations about this:
Long story short, what KA is doing is genuinely cool. I just think it would be cooler without the spin.
 Ironically, John Resig is famous in part for creating a library to hide some of those gotchas from run-of-the-mill developers (like me).
I told someone earlier today that I don’t miss academia, but I do miss teaching. Upon reflection, though, that’s not quite true. The ache I feel when I think about my experiences as a prof is the same ache I feel when I listen to a song that has a great chorus but lousy verses, or watch Return of the Jedi. It’s the ache of fumbled opportunity, the feeling that this could have been great—really great—if only it had been done right. And I wonder if that’s what really drives some of the people who are trying to reinvent education today. What they really want, deep down, is a clean slate; the web and everything else is just their cover story.