Here's the transcript of our conversation:
RVB: 00:00:01.418 Hello, everyone. My name is Rik Van Bruggen from Neo4j, and here I am again recording another episode for our Graphistania podcast. And today, I have one of my dear colleagues on the other side of this Google Hangout again, and that's Michael Simons from Neo4j engineering. Hi, Michael.
MS: 00:00:19.623 Hi, Rik.
RVB: 00:00:20.608 Hey. Good to have you on the podcast. Thank you for joining me.
MS: 00:00:23.927 Likewise, and thank you for the opportunity to be on your podcast.
RVB: 00:00:27.703 Fantastic. Hey, Michael, we can talk about bikes all day long, but that's not what we're going to do today [laughter]. We shall do that over a beer sometime. But today, we're going to talk a little bit about you and your work with Neo4j. But maybe before we do that, would you mind introducing yourself a little bit to our listeners? Who are you, what do you do, and what's your relationship to the wonderful world of graphs?
Spring Data Neo4j and Neo4j OGM team where I mainly work with Java at the moment. And I'm also the author of a German book about Spring Boot, which got published earlier this year. I'm a Java champion for the better half of this year. And yeah, that's about me.
RVB: 00:01:37.108 Fantastic. So there's a lot of acronyms there. Just another vague acronym, that's what Java stands for, right? Would you mind telling us a little bit about what is the OGM, what is Spring, what is Spring Boot, just a quick summary for people that don't know that yet?
MS: 00:01:53.342 I'd love to. Spring Boot is one main entry point into the lovely world of the Spring ecosystem. Spring is a framework centred around work in Java applications. And Spring Boot helps people to get started with writing Spring applications in a very friendly and open way. Those things are not from Neo4j. Spring and Spring Boot are Pivotal projects. The one acronym that is from Neo4j is Neo4j OGM, and OGM stands for object graph mapper. And it's a library we provide to get data from your graph into your Java applications mapped as Java objects on top of--
RVB: 00:02:48.985 Is it a little bit similar to the object-relational mappers that we've known from the past? Does it have any similarities with that?
MS: 00:02:56.561 Exactly. That's pretty much on the same level. If you work with a relational database, you usually have a driver, which connects some application to it. In that case, it's a JDBC driver. And on top of that sits something like JPA, or Hibernate. And taking this to the world of graphs, we have the Bolt driver for connecting to a Neo4j instance. And on top of that sits our object graph mapper.
RVB: 00:03:28.381 Michael, in the past, we also had something called Spring Data Neo4j? Is that still around, or what is that then?
MS: 00:03:36.900 Absolutely. Spring Data Neo4j is by far not a thing of the past. Spring Data is an idea of modelling your application's data around the idea of domain-driven design, which is nearly 15 years old, and it contains concept like a repository where you can draw things out and work on them. And Spring Data Neo4j a small implementation of a Spring Data module. And Spring Data Neo4j is based on our object mapper.
RVB: 00:04:18.121 Ah, okay.
MS: 00:04:18.332 So putting things together, you can use Spring Boot to bootstrap your application. You bring in Spring Data Neo4j and with it our object graph mapper and build applications in the Java ecosystem in a very easy way for developers and in such a way that it mirrors your business domain.
RVB: 00:04:52.153 Interesting. And so that means we are kind of far away from the old, old, old way of embedding Neo4j into your Java application. It's completely different now, right? You have a much more cleaner separation of the different layers if I understand correctly.
MS: 00:05:13.261 That would be our long-term goal to having our rough database not running into our application itself but collecting it over a driver. But we still can run an embedded Neo4j instance also with Spring Data Neo4j.
RVB: 00:05:32.871 Okay. All right.
MS: 00:05:33.846 But one preferred way of running things.
RVB: 00:05:37.746 Understood. So, Michael, maybe I can ask you a little bit about why you got into all of this and then-- and how you got into it and maybe you can explain to us a little bit what's the attraction for you and why you think this is a relevant thing to do for our software profession?
MS: 00:05:58.059 Okay. Yeah, things in life tend to have interesting ways. If you look up my name on the internet on which talks I've given you find talks on SQL and relational databases and I've always said I'm a SQL guy. But my first interaction with Neo4j was actually with a tool called jQAssistant. jQAssistant is an--
RVB: 00:06:30.101 Oh, Dirk Mahler and his group.
MS: 00:06:32.650 Exactly and one of my things I like to work on is with software architecture and I've written a little book about documenting software architecture and it's written in [inaudible] and I wanted to document the architecture of a simple Spring Boot application, obviously, and I stumbled across jQAssistant and I so liked the fact that I could model my rules, how my architecture should be, in a way that's very readable to cyber queries and also include them in my documentation and in the [inaudible] in my book. It was just fun to do. That was my first interaction with Neo4j by proxy in this case, by jQAssistant. And then there was a year or two nothing and at one point in time I got into a conversation with Michael Hunger--
RVB: 00:07:38.673 It's always Michael Hunger. It's always [laughter]--
MS: 00:07:43.096 Yeah [laughter]. I remember Johannes Unterstein also talking about Michael Hunger. And yeah, things led to another and, in the end, I found it highly attractive to work with some technology I didn't know much about which is graph databases and together with the technology I know very much about which is Spring and Spring Data. And here I am working on Spring Data Neo4j and Neo4j.
RVB: 00:08:13.998 That sounds like such a cool match.
MS: 00:08:16.459 It's on the one hand, I have the opportunity to bring in a lot of knowledge regarding Spring and on the one hand, I learned so many things.
RVB: 00:08:26.868 Fantastic, that's great to hear. What are the big things that you've been working on? What are the big improvement areas where you've been focusing your attention lately?
MS: 00:08:38.964 Okay. I've been now with Neo4 at this point of recording like three and a half months. I've made my way through the object graph module and the Spring Data module and my main focus in these months was get to a hold of the whole place and to just learn things without too much--
RVB: 00:09:08.648 Distractions, is that it?
MS: 00:09:09.623 I'm looking for the right words. I don't want to judge things. I just wanted to learn about them how things are run in this module. And together with my fine colleague Gerrit Meier we managed to get a nice release out just two weeks ago and did a lot of back fixes and also add some small new features into it. And in the long run, we have several things on our [inaudible]. One of those is some reactive programming from Spring Data Neo4j. Reactive programming is not an acronym but a concept which is maybe new to some people. This is about non-blocking and asynchronous programming flow, and that's one of our priorities the next month.
RVB: 00:10:09.119 Oh, very cool, very cool. So yeah, we've already started talking about, and what does the future hold, Michael? Where is this going? I mean future wise but also maybe we can take a step back and take a look at the rest of the industry and how do you look at that?
MS: 00:10:30.135 Well, that's a tough [laughter]--
RVB: 00:10:33.659 I didn't tell you that this was going to be easy, right?
MS: 00:10:39.738 From a personal perspective, the next month I'm going to take my SQL talks and I'm going to develop a talk where I take some of the queries I've done in SQL and try to model new queries based on them but only in [inaudible] against graph database so that I can better judge when to use some analytical SQL functions and when to use some of those many, many possibilities that I can run on a Cypher model or on a graph database model. That's my personal future for the next two or three months. At our industry, in the long run, I think microservices are still a topic and modelling our architecture not under small things like how do I write code, how do I organise classes, but how do I brings all these services together? It's a really, really important topic and--
RVB: 00:11:56.499 Just like your service of restoration and stuff like that or?
MS: 00:11:59.727 Service of restoration is one thing. Service deployment is another. Dealing with stuff like [inaudible] and everything which is connected toward multi-cloud scenarios, whatnot.
RVB: 00:12:14.994 There's a lot of moving parts there. That'll be fun and probably there's some bike riding in there somewhere as well.
MS: 00:12:23.994 I hope so, yes.
RVB: 00:12:26.140 Well, maybe we'll see each other on the road somewhere. Michael, thank you so much for taking the time and talking to me about this. We'll put some links to your book and then some of your projects in the transcription of the podcast obviously and then I look forward to seeing many more happy releases in the next couple of months.
MS: 00:12:52.070 Thank you so much, Rik, for that opportunity and your kind words during the podcast. And I'm looking forward to the next months and years working with and for Neo4j. Thank you.
RVB: 00:13:03.607 Fantastic. Talk to you soon Michael, have a good one.
MS: 00:13:06.334 Yeah, you too Rik.
RVB: 00:13:07.640 Bye.
MS: 00:13:08.921 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