Skip to main content

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.

Comments

Popular posts from this blog

YubiKey Neo + Putty SSH + Windows

I have been using Yubikey Neo to manage my OpenSSH key in a CCID at work. I have made it work in Ubuntu and MacOS with relative ease, but most of my colleagues are on Windows and wondered how this could be done on the M$ platform. So I decided to give it a shot and try it out on their newly released Windows 10 (or shall we call it WinOS X  ) Step 0: Get YubiKey Neo configured as CCID Of course you have to buy this hardware before we can even begin. Before your Yubikey appears as a CCID  you will need to use YubiKey Neo Manager to enable it. See the following screenshot.  You cannot have a password for your Yubikey when you are changing the modes. If you do then you will have to delete that configuration with YubiKey personalization tool. Make sure to exit the GUI applications before you start using console later. Step 1: Check if you Yubikey works. You will need have gpg executable installed.  Gpg4Win  to interact with your Yubikey C:\> gpg --card-edit gpg: det

Securing your Ansible deployment on AWS

Lately I have been involved in a team which is developing software as micro-services. It is very interesting work and has helped me to get introduced to some interesting technologies such as AWS Ansible and Docker in depth (and in practice). Ansible is a great deployment automation tool. It is made in python, is declarative and agent-less (i.e. it just needs SSH access to your box). SSH it self is very secure if you use key based authentication. But people tend to use it in very insecure manner (i.e they share SSH keys on email, don't delete old SSH keys once they are revoked etc). In my opinion the best solution to stop sharing of private keys is to generate them on a hardware token from which they cannot be (easily) copied. Fortunately I have access to Yubico Neo  on which I managed to generate a public/private gpg key. The private key resides in your gpg card and public key can be put in your Ansible target hosts. There are quite a few guides ( Mac , Linux , Windows)