So this conversation was long overdue, because Will has done SO MUCH for the Neo4j Community in the past couple of years - it's pretty crazy. How do you start a conversation like that? Turns out it's really easy. So nice. Listen to it over here:
Here's the transcript of our conversation:
RVB: 00:00:00.615 Hello, everyone. My name is Rik Van Bruggen from Neo4j, and tonight I have a very long overdue guess on this podcast episode. Someone that I've been dying to talk to, actually, for quite sometime because he's done such an amazing job in the Neo4j community over the past couple of years. And that's my colleague, Will Lyon. Hi, Will.
WL: 00:00:22.145 Hi, Rik.
RVB: 00:00:23.669 Hey, so good to have you on the podcast. Thank you for joining me.
WL: 00:00:26.709 Yeah, thanks for bringing me on.
RVB: 00:00:29.424 Fantastic. Will, I think lots of people probably know your name because of your infamous and famous approach, I would say, but maybe you can introduce yourself first. And then we'll talk about those projects a little bit later. What do you think?
WL: 00:00:48.099 Sure. Yeah. So hi everyone, my name is Will Lion. I work on the developer relations team at Neo4j. Developer relations covers a lot of different things at Neo4j. Things like building integrations with other tools to make sure you can use Neo4j with different web frameworks or move data to different systems. But then we also spend a lot of time with users, helping them be successful building applications for Neo4j, going around to conferences and talk with our users, give trainings, write online contents and that kind of stuff.
RVB: 00:01:28.068 Absolutely. And there's so much content out there, right? I mean, on the new community site, there's so many great things already there, aren't there?
WL: 00:01:38.174 Right. Absolutely. Yeah. So you highlight the new community site, which we launched a few months ago. And the idea there was to bring a lot of the conversations that were happening on our slack group or on stackoverflow, that maybe weren't quite the right way to surface technical content, to answer folks questions, things like that. And the idea in the community side is to sort of have that content for everyone to see and search through it. People can share interesting projects they're working on. We also built a really cool activity feed on the top of the community site that surfaces interesting projects from GitHub that are related to Neo4j that the community is working on. We surface interesting blog posts that the community has recently wrote, and there's sort of a rating system there. So things that folks find interesting and are new float to the top, and that kind of thing. And all of the content for that, by the way, when you load community.neo4j.com, when you see those activity feeds, all that's coming directly from a Neo4j instance. We call it the community graph. So this is some tooling that my colleague Mark Needham as written mostly. And what community graph does, there are some AWS lambda functions that are continuously pulling in data from GitHub, from the meet up API, from Twitter, and we pull that in so we can see what the community is working on created to Neo4j. And then we sort of rank those in our activity feeds so we can [crosstalk].
RVB: 00:03:21.011 I didn't know that. That's fantastic.
WL: 00:03:21.850 Yeah, I mean, at develop relations team, we really like to dog food Neo4j and building these services up.
RVB: 00:03:29.891 Hey, but we will go into talk a little bit about you. How did you get into Neo4j in the first place? Can you tell us a little bit about that?
WL: 00:03:37.605 Sure. Yeah. So the first time I did anything for Neo4j, this was several years ago. I was at a hack-a-thon, and we needed a project to build for the weekend. And I think I had just seen an article about Neo4j and that is was good for building personalized recommendations. And so I thought, "Well, that sounds like fun. Let's build some sort of recommendation app in the hack-a-thon." And so we connected to GitHub and pulled in some GitHub data. And we built a project recommendation. And so you would sort of sign into it with your GitHub account, and it would look at your history of projects you've worked on, and do a simple collaborative recommendation query to suggest projects.
RVB: 00:04:24.081 So that was your experience?
WL: 00:04:27.600 That was. Yeah. I went from knowing absolutely nothing about Neo4j to getting that working. And I think it was a one day hack-a-thon. And we ended up winning the hack-a-thon, by the way, which was kind of fun.
RVB: 00:04:45.481 Well done. Well, but more recently you've been working on some really cool projects, right? I've been reading all your work around the GrandStack and GraphQL. Can you tell us a little bit more about that?
WL: 00:04:59.022 Yeah, of course. So one thing that I'm really passionate about is that I think it should be as easy as possible to build Full Stack applications on top of Neo4j. And lately there's been this technology called GraphQL, which is sort of a way of building API applications. So the piece of the application that sits in between the client that talks to the database. And GraphQL's been really amazing because it makes it really, really easy to build these API applications and then also easy for the client to sort of build Full Stack web applications on top of that. And so we've been working on a GraphQL integration with Neo4j. So what we do is we allow you to define your GraphQL schema. So every GraphQL service starts with these sort of type definitions where you're saying, "This is the data that should be available in this API." And we use that to drive the data model in Neo4j.
WL: 00:06:06.236 So what that allows us to do then is to essentially translate GraphQL to Cypher. And we can then spin up a full crud API and GraphQL backed by Neo4j, driven just from these type definitions. So it's really easy to get started and then build an application on top of that. But what is really neat is that we go one step beyond that and we expose Cypher through GraphQL. So as you're defining your type definitions, as you're building filling out the schema for this API, you can annotate any of the fields or the types with a Cypher query. And that defines sort of a computed field in your schema. So it allows you to have much more complex functionality in your GraphQL API than what you can define with just GraphQL itself. So things like aggregations or projections or any of the complex graft reversals that you can do in Cypher. And so we've packaged up this GraphQL integration into what we call Grand Stack, which is GraphQL, React, Apollo, Neo4j database. And really, the idea there is just showing sort of a full stack integration of how the pieces fit together so that it's really easy to get started building these full stack applications with Neo4j.
RVB: 00:07:37.764 Great. I've heard you talk about making Neo4j like the primary database a lot, right? There's a lot of people out there that use Neo4j as a niche database, I think. As a secondary database connected to something else. You're really passionate about making it the first, primary database, right?
WL: 00:07:58.089 Right. Absolutely. Yeah, that's a good sort of summary of what we're trying to do with Grand Stack. And I think that you can really see some of the benefits of using Neo4j with GraphQL because these sort of complex, nested quarries that translate really well to a graft reversal in Neo4j. And as GraphQL is becoming more common tooling, more and more people are starting out wanting to use GraphQL for new applications. So we think that if you're starting a new application, if you know you're going to be using Graph QL, then Neo4j is a great fit and build some really nice tooling for making Neo4j sort of the first database that you choose for a new project.
RVB: 00:08:50.267 So maybe I can ask you a cheeky question there. And I've actually asked this question to lots of people on the podcast: Why? Why do you think that Neo4j would be be such a good fit for being the primary database? Lots of whys underneath that, right? Why did you get into that in the first place almost, you know? Could you expand on that a little bit?
WL: 00:09:16.181 Sure. Yeah. I think, and this goes back to sort of my first example where I talked about using Neo4j at the hack-a-thon, I think that a lot of folks can be intimidated by the concept of a graph database because it's new to a lot of folks. But when you get down to it, I mean, if I'm able to build a GitHub recommendation application using Neo4j in one day not knowing anything about graphs or Neo4j or Cypher, I think that speaks a lot to sort of the intuitiveness of graph databases. If you're able to open your mind, I guess, a little bit and be willing to sort of get started with something that might be a bit different from other databases that you've worked with, I think you can really go quite far with building applications with Neo4j and graph databases because really, the graph data model, and I'm sure your listeners have heard this before, but the graph data model really is quite intuitive.
A graph is how we think of data when we go to map out some domain. We draw of a graph, nodes that are the entities and relationships that connect them, because that's how we think of the data. And if we bring that data model along to the database the way that we store and query the data, there's a lot of intuitiveness that goes along in helping us build applications. Especially if you think of full stack developers. They have data in the client, and they also have to worry about building out the data model in the database. And if there's less of a mismatch there on how they think and work with data on the client and how they actually store that in the database, they're going to end up being a lot more productive. So those are some of the issues that I think Neo4j addresses really quite well.Subscribing to the podcast is easy: just add the rss feed or add us in iTunes! Hope you'll enjoy it!
RVB: 00:11:17.106 Yeah, no. I mean, I ask people the same question and there is a pattern there, right? There's a lot of people that find the data model extremely attractive to agile development, I suppose. It's really quite powerful. So let's talk a little bit about the future, Will. Where is this going, and where is your work taking you? I know that you've been really active in things like data journalism in the past, but where do you think this is going in the future?
WL: 00:11:53.173 Sure. Yeah. Well I'm planning to continue working on our GraphQL integration. We have some features that we'd like to build out there. Things like an authorization layer to make it easier to add authentication and authorization to your Grand Stack applications. So we have some thoughts there. As you mentioned, the journalism program. We've been working on that for a bit. The idea there is to provide some technical resources to data journalists that are looking at using Neo4j for trying to answer some of the questions of this interesting data that they have. So an example of a project that I worked on through that program was with NBC News earlier this year where we were looking at Russian Twitter troll data that Twitter had released. And sort of seeing how these Russian Trolls were trying to influence elections around the world. NBC News ended up releasing that as a public data set, so we took that and brought that into Neo4j sandbox so that anyone can sort of explore that data. So going forward for me, I think just making sure that we have great tooling for being able for users to build Full Stack applications with Neo4j. But also, you mentioned things like the Data Journalism Program. And what I really like are any of these projects that we work on, if we can encourage folks to make these data sets public, I think that's really not only a great learning opportunity for folks coming to grasp Neo4j, but also for sort of sharing this data and being able to make an impact from analyzing this data.
RVB: 00:13:52.142 Helping the world make sense of data, right? That's what we want to do.
WL: 00:13:55.150 Exactly. Exactly. That's what it all comes down to.
RVB: 00:13:58.556 That's what it all comes down to. Will, I want to thank you so much for taking the time to join us here and talking to me and to our listeners. It's been a great pleasure, and now we'll put some links to the stuff that we talked about on the transcription of the podcast. And then hopefully people can find their way around and potentially meet you at one of the future conferences, right?
WL: 00:14:23.758 Sounds great.
RVB: 00:14:24.507 Thank you so much, Will.
WL: 00:14:25.797 All right. Thanks for having me, Rik.
RVB: 00:14:27.458 Yes, bye.
WL: 00:14:28.853 Bye-bye.
All the best