Crowded Wisdom

This week I saw a presentation given by a member of the Yahoo!/Berkeley research team.

At the talk, Dr. Naaman demoed this unassuming tool that his group has been working on:

TagMaps (live demo, description)

I am really glad I went to the talk, since the demo helped me understand how sophisticated this tool really is. I had a definite ah-ha moment learning about all the new flavors of semantic information soon to be mined from the massive amounts of memories we are collectively recording.

During the talk I was reminded of this recent essay on Evolution and the Wisdom of the Crowds which explains how counter-intuitive these emergent properties are to our everyday experience. But, this seemingly teleological construction of semantic knowledge naturally emerges from a rich enough system, as the flickr research demonstrates.

To clarify what you are looking at here, no humans tuned or trained the system to teach it which are the significant landmarks in these regions. The representation is computed using the aggregate processing of many, many tags. These tags are starting to provide enough information to disambiguate different senses of a word (based on the adjacent tags that are also present). Patterns are also discernible from the spatial-temporal information on these photos, and yearly events (e.g. BYOBW) have been detected and recognized by the system. Formerly unanswerable questions, like “What are the boundaries of the Lower East Side?”, now have a fuzzy answer of a sort, in the form of collective voting.

While the UI work here is neat, it pales in comparison to this Jaw-dropping Photosynth demo presented at TED this year (though it does beat the pants of the current UI of pink dots on a map which forces you to paginate over all the matching pictures in batches of 20). The widget is even available as web service which you can feed your own data into.

But, the real work here is going on behind the scenes. It’s being published and presented in CS contexts, just in case anyone thought this “social media” stuff was for just for kids.

How flickr helps us make sense of the world: context and content in community-contributed media collections

There is certainly lots to digest here. It’s one thing for an algorithm to decide on the most representative photographs of the Brooklyn Bridge essentially based on popularity (though its a shame that avat-garde art photos will be automatically marginalized through this technique), but its quite another to imagine other important areas of discourse being regressed to the mean – its an odd sort of leveling effect that is likely another manifestation of Jaron Laniers’ Digital Maoism.

The presenter did note that social media designers do need to anticipate feedback effects, as when they launch a new tool and users adjust to the new conditions and modify their behavior accordingly (or begin to “game” the system to take advantage of it).

We are a long way from 1960’s AI and its conviction that the world is best modeled and represented as a series of explicit propositions.

Pedagogical Sofware

Literally. See my post on The Plone Blog:

Plone University

Plone University

Originally published on

Open source software as pedagogical scaffolding, and F/OSS ecologies as a dialogical knowledge communities.

This is a fun post recognizing the role of open source software and breaking routines in learning new programming patterns and paradigms.

7 Reasons I switched back to PHP after 2 years on Rails

Rails was an amazing teacher. I loved it’s “do exactly as I say”
paint-by-numbers framework that taught me some great guidelines.
I love Ruby for making me really understand OOP. God, Ruby is so beautiful. I love you, Ruby.
But the main reason that any programmer learning any new language
thinks the new language is SO much better than the old one is because
he’s a better programmer now!

This story articulated an idea that I have been thinking about for a while – the ways in which developers working on open source software enter into an educational relationship with the software and the community (sometimes indirectly, mediated through the code).

I have often appreciated all that Plone has taught me about the domain of content management, component architectures, extensible software design, internationalization, test driven development, responsible release management, etc etc. I know that it has taught me well since when I walk up to new pieces of complex software like Sakai or Drupal the concepts are familiar and often isomorphic. I can vouch that exposure to Plone has helped designers I know with stretch their CSS skills, improve the accessibility of their sites, and more cleanly separate presentation from logic.

I have also made the case that for an organization to work on software in isolation is bit like having a conversation with yourself. At first you might arrive at some new insights, but its really hard to learn anything new in a hermetically-sealed vacuum chamber. The software world transforms so quickly that it is a Sisyphean task for any one person or organization to track. Joining a community, even if it is through the indirect, intermediary object of code, is a great way to continue learning and stay on top of emerging trends. The notion that learning happens through dialog is an old one; the notion that working with open source software is a form a dialog with the authors is a bit less obvious.

My main critique of Derek’s post is that he doesn’t explicitly acknowledge the fact that Rails is open source, which is precisely what enabled him to learn so much from the framework. This isn’t just a matter of attribution, it has practical implications for being able to continue learning new tricks over time.  If he had realized that Rails-the-software embodied the knowledge of the Rails-the-community, he might not have been so quick to venture off and write his very own framework. I am not arguing that he should have steered clear of php, but he does not explain why he decided to roll his own framework as opposed to joining forces with Cake or another existing php framework, or at least using an existing php templating system. With a more explicit understanding of the origins of the knowledge that Rails-the-software captures, he may have appreciated the potential future gains of remaining part of some community.

While it is possible to learn something from proprietary frameworks, “learning” is fundamentally about the open exchange of knowledge and meaning, which are values intrinsic to F/OSS. While you can learn something from a .NET api, you can’t step through the entire stack of software in the debugger. Perhaps more importantly, the cultural tendencies on an open project support constructionist poking and prodding (dare I say, hacking?).

/* reset the net - */