Sunday, September 16, 2012

Ideas for Neo4j community education

I copied this post from my previous blog. This post is about some ideas for helping the the cause of NoSQL and Neo4j education.
The purpose of this (longish) post is to jot down my ideas about education of Neo4j in it's community. This post is in response to an irc/online meeetup called on Sep 12th 6th2012. I have been involved with Neo4j community for almost a year now. It all started with me attending Goto Aarhus 2010 as a student volunteer/crew. Since then I have been trying to learn more about the subject of Neo4j and NOSQL for my personal and professional use. I am by no means an expert in Neo4j, or in spreading knowledge (pedagogy). But as a loud mouth trouble maker I do have some opinions/ideas of my own. 

There are many aspects of Neo4j that I am interested in (Cypher being one, Spring-Data integration being other). But one topic that I am deeply interested is regarding education of NOSQL in general and Neo4j in particular. The reason behind is very selfish to be honest. SQL and relational databases have a very deep grip on the job market and more importantly on the intellectual market (you can call it decades of collaborative brain washing). As a developer who values his sanity I want to escape fate of "SQL Join Hell" at my work place. It is only by education and collaboration that we as a community can "get over" SQL. 

So I am pleased that there is a genuine effort in the Neo4j community to address the issue of knowledge proliferation.


The first topic that I would like to address is more of a slogan. As a strategy/theme Neo4j should be used/present every where (or at least there should be easy to follow examples  that  touch every aspect of database driven software development). So whether it has to do with enterprise application development or casual data crunching app, it would be of great help to have Neo4j example.

It could also be applications that one uses personally on a daily basis. I for my own sake have been drooling to use a Neo4j backed blog engine (perhaps Structur might fit the use case and I may find it in me to ditch for this CMS instead, would you do that for your own blog?).

A good effort in the examples department was the Neo4j heroku application challenge. The result  of this exercise is the repository of examples on Gensen. While this effort is commendable, there is a considerable room for improvement (Disclosure: in terms of participation; I am my self guilty of hyping about a demo github-issue-voting app, but then not delivering; 2012 has been a rather crazy year so far for me). Perhaps the hacking challenge for 2013 will have more advertising/signup period, more marketing, varied challenges in different categories, and ideas along the lines of using already established datasources (use this datasource and do some thing cool) and converting a known open source project to Neo4j. 


I would like to see Neo4j being introduced in more classrooms/lecture halls around the world. In most universities around the globe in the undergraduate/graduate course of databases there are guest lectures. Here is an  opportunity to introduce NOSQL and Graph databases to the younglings. This could be a community effort where individuals reach out to their own universities and arrange for/deliver guest lectures. As a group we could come up with a common toolkit/presentation for such an activities. The real trick is to introduce the possibilities of using Neo4j to some one who has not been stung with SQL/Relational databases. So on a practical note; I would love to see some one presenting Neo4j at Chalmers (my Alma mater) and KTH here in Sweden. I might do one of them my self if I can muster the courage.

Of course the first criticism for such approach is scalability (I have a much bigger potential audience for this rambling/blog compared to all the lectures that I can possibly give). While I truly believe that one-on-one contact trumps all other forms of knwoldge sharing, the online format of learning has been gaining more traction since last year or so (with Khan Academy, Stanford courses and all). So the next thing that I would like to see is a Coursera/Udacity course using Graph databases (with emphasis on applications).

I am myself new to the subject  of Graphs and its applications (I slept through my Graph theory lectures at college). I am sure there is a lot to learn from Graph Theory and how to do effective real world modelling when it comes to Graph databases. Currently there are  two courses regarding applications of networks/graphs happening this fall on Coursera that have caught my eye; Networked Life and Social Network Analysis . I would love to see Neo4j as part of the toolset for the next round of these courses in 2013 (Neo4j could potentially be used as part of the assignments for such courses where students have to solve some assignments). So this could also be a practical goal.  We can start with contacting current instructors of courses and see . They will hopefully choose Neo4j on merit (a practical approach to graph databases). One could offer a course on Neo4j it's self but it has the potential to get outdated very soon.

All of this may sound very idealistic, but worth exploring in my opinion.


Another aspect that I would like to clearly see in terms of examples, blog posts in a rapidly evolving application. A case with is an easy to follow example on how to have a fluid, evolving schema (step-by-step) with Neo4j over the course of changing (real world) requirements. One could draw parallels to how this works in SQL or other NOSQL stores. (hint, its not easy). I know that all of this is possible, but I want a clear but simple example so that I can show to others. And yes I am thinking about a  spoon feeding example. Gensen is a great effort but it emphasises on self learning.

So thinking out loud (at the risk of sounding like a fool) an example cloud could be some incremental features implemented in MySQL, Java, Spring (perhaps Liquibase to manage database schema migrations vs a similar application using Spring, Spring-Data, Neo4j. Perhaps this is all very easy to do, but for many of us "seeing is believing".


I would also like to see more collaboration amongst meetups in different cities and even cross meetup-group events e.g. a MongoDB vs Neo4j event where mongodb experts and Neo4j champs work on similar requirements hackathon. This is easier said than done. With such events we can shine light on the gaps (in Neo4j or community knowledge and perhaps in Neo4j, how good or bad it fairs in comparison to Mongodb for instance). Besides it would be like a friendly football match (for those who rather code than play football). I have in the past talked about collaborative online meetups (open up the possibility of Stockholm members to attend the awesome Chicago meetups, live via Google hangouts) but that is one tough nut to crack as too many things can go wrong.


It is a very exciting time to be working with Databases. Data growth (both in size and complexity) is almost certain in every aspect of our life and a technology like Neo4j will surely help us tame this beast. If we want a future where we use data to control our lives data serves us and not the other way around we should JOIN forces (no pun intended) to educate our fellow Graphistas.

Your ideas and comments are most welcome. This concludes my ramblings.......for the moment.