Skip to main content

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.


THEME: NEO4J EVERY WHERE

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 blogger.com 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. 

NEO4J IN THE CLASSROOM

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.

SPOON FEEDING

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".

CROSS MEETUP COLLABORATION

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.

CONCLUSION

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. 

Comments

  1. Hello my friend! I want to say that this article is amazing, nice written and include almost all important infos. I would like to look more posts like this .Hadoop Online Training .

    ReplyDelete

Post a Comment

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)

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 d