A quick twitter round up things that we’ve pointed to over at @artandlogic. You are following us, right?
Microsoft Research released a very cool video of a research project that projection-maps additional video content outside the area of a TV displaying XBox content (as in on the entire wall, including mapping the geometry of objects in the room around the display. Note that they can do a certain amount of this without even having access to the original game source for modification by analyzing interframe deltas.
Stop Drawing Dead Fish
Nice video of a presentation by Bret Victor showing off a system he’s working on for creating live interactive performable art. He flat out declares that code is an inappropriate medium for creating art, which is a stance that I’m having difficulty swallowing whole. Either way — some interesting ideas here that not many other people seem to be working with, at least not at this level.
Do check out those links — We’ve seen links to ‘Brython,’ another Python-in-JS system, but this one seems more advanced.
Why SICP Matters
Since I don’t have an academic background in Computer Science, I had to stumble on The Structure and Interpretation of Computer Programs–there was a copy on a bookshelf in my office at my first job. I did take one class in non-procedural programming in grad school, so the LISP-y nature of Scheme was something I’d already hurdled over, and this book was probably my most solid introduction to the very deep topics contained in the book.
SICP was revolutionary in many different ways. Most importantly, it dramatically raised the bar for the intellectual content of introductory computer science. Before SICP, the first CS course was almost always entirely filled with learning the details of some programming language. SICP is about standing back from the details to learn big-picture ways to think about the programming process. It focused attention on the central idea of abstraction — finding general patterns from specific problems and building software tools that embody each pattern. It made heavy use of the idea of functions as data, an idea that’s hard to learn initially, but immensely powerful once learned. (This is the same idea, in a different form, that makes freshman calculus so notoriously hard even for students who’ve done well in earlier math classes.) It fit into the first CS course three different programming paradigms (functional, object oriented, and declarative), when most other courses didn’t even really discuss even one paradigm.
It’s frustrating when interviewing developers to encounter people who believe that they’ve been given a broad foundation in the field but in reality all that means is that someone taught them both Java and C#, and once you ask them to do something that would be easy if they had a background in (for instance) functional programming they’re caught flat-footed.
Older is Wiser
Finally — a study that makes a graybeard like me very happy to read: the widespread belief in the industry that developers aren’t keeping up to date with changes in the field as they age:
The researchers looked at the profiles of more than 80,000 programmers on a site called StackOverflow, which is an online community that allows users to ask and answer programming questions. The site also allows users to rate the usefulness of other users’ questions and answers. Users who are rated as asking good questions and providing good answers receive points that are reflected in their “reputation score.” The higher an individual’s reputation score, the more likely it is that the user has a robust understanding of programming issues.
For the first part of the study, the researchers compared the age of users with their reputation scores. They found that an individual’s reputation increases with age, at least into a user’s 40s.