Pages

Tuesday, 14 April 2015

Podcast Interview with Brian Underwood, Neo Technology

I recently got the chance to talk to Brian Underwood, currently working as a Developer Evangelist at Neo. Brian is a long time member of the Neo4j ecosystem, and has contributed a lot to the Ruby gems for Neo4j. He's currently travelling the world with his family, but found some time between flights to talk to me about his work. Here is the conversation:

Here's the transcript of what we talked about:

RVB: Good morning everyone. My name is Rik, Rik Van Bruggen. I'm from Neo Technology, and here we are again recording another episode for our graph database podcast. I'm joined today by Brian Underwood, welcome Brian.

BU: Yeah, thank you.

RVB: Great to have you on the podcast. So, these series are quite short and snappy, right, Brian. Do you mind introducing yourself here, what's your background?

BU: My background is mainly as a full stack web developer. A lot of rails, a little node. And I'm currently working as a developer evangelist for Neo4j. I'm also one of the maintainers of the Neo4j.rb project, the ruby gems for Neo4j.

RVB: Wow, you do all that while traveling the world, right?

BU: I do, yes. I'm currently traveling the world with my family.

RVB: That's fantastic. Brian is going to be in Stockholm—I’m in Antwerp, so it's great to have you in the podcast. What got you into the world of graphs, Brian? Do you mind telling a little bit about the history, and how and why you got into it?

BU: Yeah, for sure. A couple of years ago I was working for Couchsurfing.com, and I had one of my colleagues there, sort of had heard about Neo4j, and told me about it, and it sounded interesting. While I was there-- it's a major social networking site, and so I thought I would play with graph database and see if I could import a little bit of data. I don't think I made too much progress at the time, I was doing other things, and working on the side. But I played with it, I really liked it. I like Cypher. I remember being really excited about the 2.0 beta, and I was like, "I have to"-- being excited about labels particularly, and so I had to use the beta, not the 1.9 [chuckles].

RVB: At your own risk, right [chuckles]?

BU: Yeah, exactly. There was-- I think I might get too. But it worked quite well. So I did that for a little while, that fell to the way side, and six months later-ish I was looking for an open source project to contribute to, or something to spend my time with. So I thought about the Neo4j gem, which was at the time maintained by Andreas Ronge. So I contacted him and said, "Hey, can I help out?" So I've been helping out ever since.

RVB: Okay, fantastic indeed. It's a very active project, I think. The ruby wrapper for Neo4j?

BU: Yeah, definitely. We're very responsive on Github and Stackoverflow to people's questions. We really like helping people out, because we are really excited about the project. And we are actually-- right now we're trying to sort of push for a new release for the gem. So I have been putting together a list of issues that-- things that we want to see in there.

RVB: So what attracted you to Neo4j? What made it interesting for you? What was the key thing that you loved about it?

BU: I really-- I don't know if you're familiar with active record? In the Ruby world…

RVB: That's not my forte for sure.

BU: Just very briefly, active record is a wrapper around SQL databases, so it works with Postgres, MySQL or SQLLite. And it offers a higher level abstraction, on top of those-- a modeling abstraction, and it's very, very powerful, and very, very deep. It took-- I spent years getting used to it, and getting into it. I considered myself an active record expert, and very into databases. And so using Neo4j I was like, "Oh, I really wish there was something like active record for Neo4j." But also Neo4j, to me-- it seemed like active record was smoothing away a lot of the awkwardness of SQL. Whereas with Neo4j, you didn't really have to work against the database, as far as modeling and data abstraction. That's what really I think what attracted me to Neo4j, was the smoothness, and that's also why I was wanting to work on the Gems, because I think you could not only provide that same abstractness for active record, but do even more than… it was really exciting.

RVB: I'm going to quote you on that one. I don't have to fight the database any more. That's a great quote. I like that one. So--

BU: Go ahead.

RVB: No, no, no. I said it's a great way of putting things. If you don't mind, where do you see the ruby wrapper going, and where do you see graphs going? What's your vision for the future, if you don't mind talking about that?

BU: Yeah, I sort of see ruby and rails as providing a framework, where you don't have to do a lot of the busy work that you'd normally need to do to get things done. I see Neo4j as sort of being in that same vein, where it lets you work at a higher level, and you don't have to think about the details as much. And so that you can get things done faster, but you can also get things done that you might not have considered before, that might have been really difficult before. Rather than just doing web applications, where it's just like, "Update this object, and create this new object", it's like, let's have a complex data structure that we're working on that makes a really cool web application that you could do some things that you couldn't do before.

RVB: Is that going to be more possible in the future, you think? Is that the type of evolution that you see coming in the future?

BU: I think so, yeah. I think we - certainly in the gem - I think we're-- I have my mind vaguely on this, even though we're not quite there yet, but I definitely want to make it really easy to load complex structure of data, with one go, to make that something easy, to create an API pointer, a web page generated from that data, a lot easier than before.

RVB: Cool. Well, it will be great to keep following that, I'm looking forward to that. We're going to keep it at that, if that's okay for you, Brian? Unless there's anything else that you want to communicate to the rest of the world?

BU: I don't think so. That was great.

RVB: Fantastic. Thank you for coming on the podcast, I really appreciate it, and I'll put the links to the Github repo, and everything on the blog post that goes with this. Thank you, Brian.