Wednesday, October 2, 2013

Neo4j Graphgists: The most educational gists in my opnion

I am really glad that interest in Neo4j education is picking up and NeoTechnolgoy is taking a fun approaches to help people learn graph databases. These efforts tie in neatly with my suggestions regarding Neo4j community outreach. Back in 2012 we had the Neo4j heroku challenge. At that time Cypher was just coming out and the aim of heroku challenge was to get people comfortable with code/cloud and Neo4j. In the last year or so Cypher has evolved considerably and now it is a great initiative by the Neo4j-community-team to hold a challenge that focused on Cypher and graph modelling.

In this post I would like to go through my personal favourite gists from this challenge. I have a "fair" understanding of modelling with graphs; yet I learn some thing new and interesting, almost every time, when I am looking at other people's graph models (and that was my personal motivation when I began reviewing the gists). I am not sure how the voting for this challenge will be done and my intention here is not to influence the voting process here, just to spread word about great Neo4j examples.

I have (_briefly_) gone through all the entries from the graph gists. They are all interesting and I congratulate all of the authors for being part of this effort. I personally found the following gists more interesting (especially from an educational point of view).

  • US Flights & Airports: Delays, Cancellations, & Diversions: This is one of my favourite gist. Not only it takes real data from an open data set, it also does some funky statistics stuff. I will go through the gist again later to understand more but the explanation is quite good. I would vote this to be the best gist example for this competition as it is complete, simple, and helps us understand a new domain rather quickly. The author is continuing her work with this gist as part of a university project and I would like to also see that as well.
  • Why JIRA should use Neo4j : I think for me this example is very interesting. I have been a JIRA user for quite some time now and there are times that I have taken examples of their UI and did some thing similar in my own projects. But I never really dug up the domain model of JIRA (not even conceptually) as it seemed impossibly hard. This example shows that a complex domain model could done very easily in Neo4j. I would assume that every one who is developing software has used a similar issue/bug tracking system at their work (otherwise it may be hard to follow the example)
  • Product Catalog: A simple and beautiful example. Very relevant to a lot of folks who are getting started with Neo4j. A nice visualisation.
  • Learning Graph: This graph is interesting to me since I already maintain a graph like this in a text file. It gives an example of incrementally introducing complexity into the model.
  • Chess Games and Positions in Neo4j: This I believe is the most complex example gist in the competition (and that I say in a positive way). Not only it is trying to solve a well known computation problem for chess players, this example also uses real data and has some animation eye-candy. 
  • Models Sports Leagues: This was one of the first examples that I saw (and even commented about it on twitter). It is a very neat gist and rather self explanatory. I have to admit that I actually built some thing like this in SQL back in the day and it was not fun at all. Not content with just the gist, the author takes it further by providing source code (which in my opinion is a great idea for more comprehensive learning).
  • IKEA GraphGist: The last gist I will discuss here is from my Belgian friend Rik. He continues to amaze us all with his pedagogical skills. Of course the example comes with a great blog post. And like his other examples we get the raw data in CSV form so we can start playing with it on our own machines. I would like to see Neo4j being applied in manufacturing industry as I have worked some systems whose natural implementation is a graph.

I hope this blog post helps you to see some of great gists posted by Neo4j community members. I am looking forward to to seeing some of these gists used in an upcoming Graph Cafe meetup here in  Stockholm.