From spreadsheet to social graph

a post inspired by the beer graph on the wall at Bru

Changing your mental model is hard. When the people who were taught that the world was flat were told that is was round, it must have made their brains ache. These days, I find my mental models are constantly being challenged. One of the most profound and useful new mental models is the graph.

Prior to the graph, I saw the world in tables. For example my address book looked to me like a table. Each person in the address book was a row in the table. Each piece of data like first name, home phone, company, etc. was in it’s column of the table. Simple.

You’ll notice the emphasis on my.

The graph smashed that notion. What is my address book? It’s a collection of other people’s contact information.

The first problem with my table is that it wasn’t really mine. It’s a collection of other people’s stuff. I never seem to organize other people’s information quite as well as they do. My first and last name categorizations just don’t make sense for some of my Chinese and Indian friends.

Being an efficient (euphemism for lazy) person at heart, this leads to one of my favourite things about graphs:

I don’t have to update them.

To go back to the address book example, my address book had to be updated by me. With social graphs like LinkedIn or Facebook or (soon) my project Inkdit, the only thing I have to update is my own profile. Everyone else does the same.

It saves so much time!

If you haven’t been indoctrinated on the power of graph databases yet. Check out Neo4j, their site is brilliant at selling graph databases. Although the site is not as stellar, if you’re serious about building an application using a graph database, Datomic is worth a look too. Datomic’s built-in notion of time is slightly mind blowing. To see some graphs in action. It’s fun to poke around the demo libraries at Cytoscape.js.