Here's the transcript of our conversation:
RVB: 00:02 Hello, everyone. My name is Rik, Rik van Bruggen from Neo Technology, and here I am again recording another episode for our graph database podcast. Tonight I am joined by a very tired and worn down consultant of Neo Technology, all the way over in Chicago, Max De Marzi. I've been looking forward to this. Hi Max, how are you?
MDM: 00:24 I'm doing well, Rik. How are you, man?
RVB: 00:25 I'm doing very well. Thanks for coming on the podcast, I really appreciate it.
MDM: 00:30 No worries.
RVB: 00:30 So Max, I've been a big fan of your blog and all the work you've been doing with Neo long before you joined Neo, but most people might not know you, so why don't you introduce yourself?
MDM: 00:44 Sure. So, Max De Marzi, I am a field engineer for Neo4j. What does that mean? That means I get to go around the country and help people build Neo4j solutions. So I don't work on the product at all, I don't work on the back-end whatsoever, instead I use Neo4j to build real world apps that the customers use for things. My specialty is building proof-of-concepts in about a week or two, that way you have something tangible to show to upper management because the reality is, we sell you an empty database and about three or six months worth of work, and it makes everyone's life easier if you can see the light at the end of the tunnel before you even get started by having a POC. That is pretty much what you want it to do.
RVB: 01:30 Couldn't agree more. So Max, how did you get to Neo? Tell us about that because you were working with Neo long before you joined Neo right?
MDM: 01:39 Yeah, I was taking vacation time off to go do Neo4j consulting gigs. So I was--
RVB: 01:47 Are you serious [chuckles]?
MDM: 01:49 I was obsessed is the right word. I fell in love with the idea of graphs, it just clicked in my head. I'd been a SQL developer for a decade before I had Neo4j and I was like, "Why wasn't I shown this ten years ago?" It just made life so much easier way to think about the problems I was dealing with. It's better to be in graph format … and the biggest kick out of Neo is, sometimes you're doing things that no one has ever done before, versus you can't really say the same thing if you're building a CRUD application on MySQL. You've done it a hundred times but this time, something no-one's ever done before and that gives me that developer-high that I crave.
RVB: 02:29 I can imagine absolutely, yeah. And you've started writing about that as well, right? You've had a very interesting and - at least I think - popular blog about it as well, right?
MDM: 02:41 Yeah, my strength is that I can go to a customer’s site on Monday knowing nothing and on Friday I can build something that makes sense with their domain, whatever it may be. My weakness is that I don't remember anything. So to counter that weakness, what I do is I blog about the things I do and then I set everything up on GitHub so there's a code there as well. So that way people can learn from my experience and I upload my memory to the web and I don't have to remember that stuff because honestly, this job is so fast paced that I have no time to even remember what I did three months ago or six months ago or a year ago.
RVB: 03:17 And Google will remember everything, right?
MDM: 03:19 Exactly.
RVB: 03:20 That's how it goes, absolutely. How did you actually come about Neo and why did you fall in love with it? What's so good about it?
MDM: 03:31 I watched some video oddly enough on Windy City TV, they were showing a video of how to model comic book data, and the guy tried to do it in a relational data base and really failed, tried to do it in a document database and it's just wasn't working, and then he turned to the graph and he was like, "Okay, this can handle anything." And oddly enough, Marvel Comics ended up actually building the real Marvel Comic graph using Neo4j.
RVB: 03:58 Absolutely, that guy talked about it a lot as well, right? I don't know his name anymore, but I'll find it. He did some presentations about that, right?
The Marvel Universe?
MDM: 04:08 Yeah, and so from four years from someone's idea to a real company really doing it, and actually using it in production is amazing.
RVB: 04:17 Very cool. What do you think is the big strength then? What's the big strength of a graph database if you compare it to other data stores? Why do you think it's so powerful?
MDM: 04:29 For me it's not just a graph database, it's Neo4j itself. It's super extensible. You can do whatever you want with it. And sometimes people forget that it's not just a database. You can say, "Here's the thing that you talk to by a language and that's all you can do with it." Neo4j encourages you, wants you to play with it, wants you to get inside the guts of it and say, "Build an extension. Build a kernel extension. Build a plug-in for Neo4j. Modify the actual kernel itself and use the custom [jar?] if you want." All those things are possible in Neo and I show in the blog how to do them and how painless it is, versus trying to do that with Postgress or MySQL or Redis or anything else that's out there, your head would explode. So it's not just the here is nodes, here relationships and I can model anything, it's that plus everything else under the sun you can do, and do with Neo4j.
RVB: 05:20 So what you're talking about is actually the implementation as well, it's not just the model that's great but it's also the way we use it or the way Neo uses it internally, you think it's really powerful.
MDM: 05:32 Yeah, absolutely. And everything is changeable. You don't like the way the indexes are handled in Neo4j, you can change them. If you don't like the way the interface is or where the REST API, you can have your own custom REST API. You don't like the way logging is done, you can change the logging. Permissions, you can change. Anything you want, you can change. The whole thing is open source which is really nice.
RVB: 05:52 Yeah, super great, absolutely. So what's the most exciting application that you ever built for Neo? Anything that comes to mind? I know I could go to Google but you know [chuckles]. Can you remember anything?
MDM: 06:07 No, I mean there's lots of things that stick out. One of my first projects in Neo4j was this boolean logic search basically, you express a set of conditions in boolean logic and the graph would go and match them and find them and get your results, which is kind of hard to do with just about anything else but a graph does it marvelously and very, very fast. Then there's the Facebook graph search example.
RVB: 06:31 Oh wow, yeah, I remember that one [chuckles].
MDM: 06:35 In three days I was able to replicate what Facebook was doing using some custom Cypher queries and a little bit of trickery from Ruby.
RVB: 06:43 Didn't Facebook actually forbid that application or something like that? I heard something that you weren't able to do it anymore.
MDM: 06:50 Yeah, I mean they were happy with it for about a year and then I got a cease and desist type letter saying that I was replicating their core functionality and they had me shut it down. And I was like, "That was the whole point." to replicate your functionality [laughter]. With one guy with a few hours instead of a whole team for six months or a year. How long would it take them to build it? My POC was a lot smaller but hey.
RVB: 07:14 It was pretty sophisticated. It had like natural language processing in it and everything. It was pretty sophisticated, I thought.
MDM: 07:21 It's a lot of smoke and mirrors, but as far as a user of it are concerned it was magic, and that's really all we care about. You can do things the hard way or you can do things the easy way. The user doesn't care as long as he gets his results.
RVB: 07:35 Yeah, I thought that was fantastic. I'll put a link to that. I don’t know if it's still on your blog, but I'll try and look for it and include it in the transcript and everything. So Max where is this going man? Where do you think we'll end up with graph technology in Neo4j in 10 years from now, what's your view of the future?
MDM: 07:57 Oh man. I wish more people got into the graph and started thinking that they are initially as a graph instead of as a set of table and joint tables and indexes and so on. I think we're not even close to that point yet. People still think about the data as tables and it's going to be a long time to get people off of that and onto a different model. And there's so many different competing models as well, 250 different vendors let you install software on site then another 250 that do hosted database. It's a jungle and there's going to be some consolidation at some point. Hopefully some nice standards come out of it and we learn as a group how to do things better. My hope is that SQL dies a horrible death at some point and that we move on to a better language. I loathe with a great passion all the people who put SQL on these new technologies like SQL on Hadoop and SQL on Spark and SQL on Storm, I want to kill those people. They're going backwards. They're damaging the movement of let's get better databases. Let's get better query languages for data. Let's move the industry forward not backwards.
RVB: 09:07 I need to ask this. What is the number one thing that bothers you about SQL?
MDM: 09:14 It's just the way we've been doing things for 30 years. At some point we have to evolve and say, "Okay, we tried this first and it was cool but we're better than that. We've grown as an industry. We can do more. We can think of our data in different ways, in alternate ways. Not everyone has to be shoehorned into the same way of doing things.
RVB: 09:34 Yeah, absolutely, cool. Well man, I think, unless you have any flaming points to make left, we'll wrap up here. We want to keep these podcasts quite short. I think people will want to come to one of your talks maybe, right? You talk about need for Neo4j quite often. Oscon next isn't?
MDM: 09:57 Yeah, I have Stampede in a week and then Oscon after that and then who knows. Also, just look at the blog MaxDiMarzi.com and follow me on Twitter for all kinds of craziness.
RVB: 10:08 I do want to wish you lots of good luck with your new puppy. I hope to talk to you soon, Max.
MDM: 10:16 All right, I'll go get some sleep. Thanks.
RVB: 10:18 Cheers, man. Bye-bye.
MDM: 10:19 Bye.Subscribing to the podcast is easy: just add the rss feed or add us in iTunes! Hope you'll enjoy it!
All the best