Showing posts with label language driver. Show all posts
Showing posts with label language driver. Show all posts

Tuesday, 13 October 2015

Podcast Interview with Chris Skardon, freelance developer

Here's an interview that got me really excited: Chris Skardon from Tournr recently took charge of the Neo4j .Net driver development, and that was a good enough reason for us to have a chat. Being a "4j" product, the Microsoft ecosystem has long felt a little unserved by the graph database community, and we are trying to make good for that. Hopefully, this interview will give it some of the credits that it deserves, and many more people will get "stuck in" in moving this environment forward. Here's our chat:



And of course 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 a lovely new episode for our Neo4j podcast series. Today, it's interesting, I'm joined here by someone from the UK, Chris Skardon from Tournr. Hey, Chris. 
CS: 00:21 Hey, Rik. How are you? 
RVB: 00:22 I'm very very well and yourself? 
CS: 00:24 I'm good, thank you. 
RVB: 00:24 Super. Super. Hey Chris we've been interacting and known each other for a couple years already and you've been in the Neo4j ecosystem for a while. But I was triggered to get you on this podcast because of the dot net client announcement. Right? 
CS: 00:41 Yes. Yeah. Exactly. 
RVB: 00:42 Absolutely. So tell us who you are, Chris, and what have you been doing with Neo for the past couple of years. 
CS: 00:49 Right. Well, I'm Chris. I'm a freelance developer. I spend pretty much all my time in the dot net framework. A couple of years ago a client came to me and asked me to have a look at how to do, how to draw up one of their systems for them. I spent some time going through various no sequence databases to try and hunt out the best ones for their environment. And came across Neo4j probably about version one-six, I think. I've kind of stuck with it since then. 
CS: 01:34 It's addictive. Isn't it [laughter]? 
RVB: 01:36 Yeah. 
CS: Yeah. No. It's very addictive. I use lots of different databases at the same time and I'm not restricted to just one or the other but I find myself gradually moving more and more towards just putting everything into Neo because it works and does everything I need it to do. 
RVB: 01:55 Super. That's great to hear. What was the main attraction when you started going with it? What was the domain like or what was the main reason for going to Neo? 
CS: 02:07 Well, the domain is a large... The thing with databases is you can pretty much fit any domain into any database. 
RVB: 02:17 I agree. 
CS: 02:17 It doesn't really matter. You can always fudge something into it if you want to. What I found with Neo was that it just fit around me just, it fitted around me having to translate anything. I didn't have to write a set of translation tables in my SQL server or start putting in weird links in my document database to try and hook things around and find things. It was just automatically linked and it makes navigating through the domain a lot easier. I mean the domain in this aspect was like a-- it's very hard to describe really. It's basically a graph [laughter]. The graph database just fit in it exactly as it's in here. Then they described it to me and it was a graph. They drew it out on paper, it looked like a graph. Everything they've ever drawn has been a graph based. It just was what it should always been. Neo was fast and forward and it's worked well for me since then. 
RVB: 03:19 Super. So my second question on these podcast is always, "Why did you get into graph databases?" So it's mostly around the modeling then for you. Right? The modeling fit that drove you there. 
CS: 03:34 Yeah. Yeah. I think the modeling fit and being able to query things. Obviously, started off from one six cypher was fairly basic and you were still doing queries using gremlin. 
RVB: 03:51 Those were the days. 
CS: 03:53 Yeah [laughter]. Back in the days. Gradually, over time it's moved much more towards cypher and cypher's just the much nicer language to use. It's a lot clearer to read and still get in the wrong, easily get it wrong sometimes. In general, you can takes something that's generated from the cypher and just read it and it makes sense. You know what you're pulling out because you can see it. 
RVB: 04:22 Yeah. 
CS: 04:23 I think as cypher gets more and more things added to it, I think it will just get better and better. 
RVB: 04:29 Yeah. That's good. Absolutely. So what about the dot net client. How and why did you get into that? That's probably a interesting as well. 
CS: 04:38 Well, so being a dot net developer, first thing, which pretty much every dot developer will do is, they'll fire up visual studio. Create yourself a little console test app to hook against the database and head into the NuGet world and do a quick search for Neo4j. So NuGet's like our package manager. So the equivalent for Ruby I think is things like Gems. I'm not sure what PHP has or python or any of those but it's just a package manager. You do a search for Neo4j and the top one pops up is Neo4jClient. There's a couple of other small ones which are developed independently or by other people but generally, I'm going to go with the biggest one because it's the one that seems to have the most documentation and users on it, and most likely to give me help when it goes wrong. 
RVB: 05:35 Yes. 
CS: 05:37 I started using it. After a  little while, there's a few things you want to have in it or there's a few bugs, and issued a few pole requests. Started answering questions on stack overflow. To, firstly, to help myself learn how to do the different things that people are trying to do. So I help the community, because the more people who can use it easily the more people there are to evangelize, in a sense, and get it out there. Gradually, over time, I just took over. I started doing a few more pole requests and answering more and more stack overflow. Then we hit our hiatus for a year or so where the original author Tatham had to step back because of many things, life generally. 
RVB: 06:24 Yes [laughter]. 
CS: 06:25 And-- 
RVB: 06:27 Life gets in the way. 
CS: 06:28 It does get in the way. 
RVB: 06:29 Yeah. 
CS: 06:30 We spent a lot of time re-routing the pull requests, really small pull requests were maybe getting pushed through fine. The big one which we missed for a while was transaction support. 
RVB: 06:41 Yes. 
CS: 06:43 The pull request that existed for that was massive. I mean it was good but it was such a big change that Tatham would have never and the time to do it. It kind of languished there for a while. 
RVB: 06:59 Yes. 
CS: 07:01 Then about four or five months ago, either Tatham popped up on the list of clients give up page and said "I don't have time. I'm looking to hand this over to find someone." I had been doing a lot of help in stack overflow and stuff. I said "I'll take over." So long story short, I have. 
RVB: 07:25 Super. Yeah, I can't tell you how happy I and we are about that because it's, obviously, it's a big development community and it's really important for us to have someone maintain and help with that. So thank you so much for doing that I really appreciate it. So maybe just a final question here, Where is this going, Chris? Where is this going from your perspective? How do you see graphs evolve in the .Net world in general and how do you see the .Net client, the Neo4jClient evolve in the next months and years? 
CS: 08:03 Sure. 
RVB: 08:04 Any comments on that? 
CS: 08:05 Yeah. Okay. The client itself. We'll start with that. I think that's going to keep tabs with updates to the actual server itself. So two-three comes out soon and hopefully were able to cater everything that's in there. Then when version three comes out we're looking at, well I'm looking at adding the ability to use the bolt serialization underneath it it instead of just using rest. 
RVB: 08:32 Lovely. 
CS: 08:36 I'd like to get it to be as good as some of the other NoSQL databases are, in terms of .Net usage. That's just end up adding a few niceties around and investigating whether something like a link driver is feasible or even worthwhile doing and seeing, basically, see how it goes and keep on pushing it and adding new bits into it and make it faster and better. In terms of graphing in .Net world, hopefully, more people will start to use it. I'm lucky I work for myself so I can help pick the databases. 
RVB: 09:24 Yes. 
CS: 09:24 And I don't have the problem of being weighed down by a big load of servers behind me. They all run SQL servers and they've paid for the licenses so they are going to use their SQL servers until their licenses run out. I can pick faster databases, different databases. I think dot net is moving that way now. People are starting to use the different databases more and more. Hopefully, Neo fits into there well. It's a well known graph databases that performs well and .Net does interact fine with it. I don't have any problems with it. I've actually gone through and converted to one over the last couple of months from a document database to Neo4j. Aside from a drastic in a cut in code base-- 
RVB: 10:14 Yes. 
CS: 10:17 -- it hasn't been that hard to do. I'm very pleased with it. I think it gives me a lot more forward momentum. I can do a lot more with my projects now when they're based around the graph than I could do with a document. I have a lot less problems with them. It's a lot easier to do. 
RVB: 10:39 Super. Cool. Well, I mean that's great input and great feedback and I'm sure lots of people are excited to see the .Net client but also Neo4j and the .Net world evolve that way. Thanks again for your help. Good luck with Tournr and your projects [laughter] for different clients and I think we I'll see you and buy your beer at GraphConnect. Right? 
CS: 11:06 Yeah. See you then. 
RVB: 11:08 I'm looking forward to that Chris.Very cool. Thank you for coming on the podcast. Really appreciate it and I'll talk to you soon. 
CS: 11:15 Yes. Same to you to Rik. 
RVB: 11:16 Bye. 
CS: 11:17 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

Rik

Tuesday, 19 May 2015

Podcast Interview with Nigel Small, Neo Technology

Waw. Seems like I have recorded 22 (!) podcast episodes in the past 2 months - that's pretty sweet! So here's another one that will make you smile: great conversation with the inimitable Nigel Small, aka Technige, aka Neonige. You may know Nigel from his work on the superb Python language driver for Neo4j, py2neo. What you may not know is that he was one of the original (co)inventors of Graph Karaoke, and that he is a generally super sweet and smart guy. He's currently working on some super interesting stuff at Neo's engineering team - but let's have him explain that himself:


Here's the transcription of our conversation
RVB: Hello everyone. My name is Rik - Rik Van Bruggen from Neo Technology, and here we are again recording another podcast session. Today I am joined by Nigel Small all the way from the UK. Hi Nigel.
NS: Hello Rik. 
RVB: Hey. 
NS: How are you doing? 
RVB: I'm doing very well, and you? 
NS: Yeah, not too bad. Thank you. 
RVB: The sun is shining over here. I hope it is over there as well. 
NS: It's pretty bright here as well, actually. 
RVB: Fantastic. Nigel, welcome to the podcast. We always talk about a couple short things here. The first thing is, who are you? 
NS: Well, Nigel Small [chuckles]. I joined Neo Technology last year - last August. And that was after being a groupie for about three years prior to that. I built one of the python drivers, so I've been hanging around the community for some time, gathering uses for the driver and gradually getting more and more into the database itself. 
RVB: Absolutely. Well, You know the py2neo is very popular it seems, right? That's a-- 
NS: It's definitely become a lot more popular than I ever expected. It kind of fell out; it was an accident really but [laughing] it's become reasonably successful. I'm quite pleased. 
RVB: Fantastic. Would you mind telling us a little bit how you got into graphs? And why you got into graphs and, of course, why do you get into py2neo? 
NS: All right. Well, it all started due to Jim Webber. 
RVB: Oh, no. Not Jim again. 
NS: Yes. His name keeps cropping up. I worked with Jim briefly when he was consulting in a previous life, and we stayed in touch, and I remember having a conversation with him at some point about databases and him telling me that the odd relational type of table-based databases were a bit passé and I needed to look at [chuckles] these graph databases. So, having no knowledge really of what these were and no knowledge of graph theory at all - it's not something I'd ever come across - I spent some time looking into it and decided to try to apply it to my family tree, which was a hobby of mine at the time. So I started looking at how I could store some of my family tree data into a graph. Python was the language which I enjoyed using anyway, from a hobby point of view. So played around with the REST interface which was quite new at the time. Wrote a few bits of python code to get some data in and out and ended up getting rather distracted on the mechanism for actually putting data in and out and forgot about the family tree side of it [chuckles]. And ended up developing those bits of code into what's now py2neo. 
RVB: Oh, wow. So it's basically a wrapper around the REST API that you built, right?
NS: Exactly. Yeah. It's-- 
RVB: What's called the language driver. 
NS: Absolutely. One of the early ones. I think because the REST interface was reasonably new at that time, I was one of the early pioneers I think of writing drivers. 
RVB: It's called a guinea pig, Nigel [laughter]. 
NS: [laughter] It's been rewritten several times since to correct a lot of the errors I made in the early days. 
RVB: Oh, okay. So what do you like about working with the graph database? At the first instance, what attracted you? 
NS: I think the fact that it was something different. It was good to get my head in something that was a lot different to anything else I'd used before. I'd worked very heavily with databases for some time. I'd worked as a DBA and programmer for about 15 years prior to that. But had only ever been exposed to standard tables. So it was nice to get my head in something else and see what it was like. It was a challenge to start with. Because as I say, I knew no graph theory at all. Didn't really, at first, see quite how this was going to apply to the vast majority of data that I'd ever worked with before, because I was still thinking very much in tables. It took quite some time to undo everything that I already knew and reapply it to graphs. But now I think I'm looking around at most bits of data-- I was recently putting together some political data for a session that I'm doing and realising that it actually fits very, very naturally when you're talking about politicians who belong to a particular party and who stood in a particular election. All of those things are very much objects you can represent as notes with relationships between them. And a graph now feels very natural for most kinds of data modelling. 
RVB: Yeah. Absolutely. Yeah. To be honest, it's funny that you mention the family tree. Hierarchies are graphs, right? I actually did a family tree of my own one day and I discovered I was Dutch. [laughter] Which was a hilarious meetup presentation actually. 
NS: Was that a good or a bad thing? I don't have much opinion on-- 
RVB: Let's talk about something else [laughter]. 
NS: Okay [laughter]. 
RVB: So let's talk about where is it going, Nigel. I mean, you've been working on some really exciting stuff at Neo. Where do you see graph databases in general and some of the work that you've recently been doing as an engineer at Neo-- where do you see that going? 
NS: Well, the work I've been doing for the past few months has been on what we've loosely branded our new remoting project, so, given that I've come in with some knowledge of drivers and the interaction between the clients and service, it's been quite nice to fall into a project that's very closely related to that, to rebuild a lot of the protocol and the client server capabilities for the database itself. So we're looking-- 
RVB: Is that an alternative to REST then? Or what is-- 
NS: It will be eventually, yes. We're looking at something that's going to be, hopefully, well-- more performant. Something that's much more in the order of magnitude of performance that we see the embedded databases. Ultimately, yes, replace a large number of the used cases for the REST interface. I don't know whether we'll end up replacing everything, because there are still some good uses of having an http interface for a very low barrier of entry. But the vast majority of applications, I think we'll end up using our new protocol. And one of the things I particularly want to do is to try to level out the experience across languages.
Traditionally, Neo's been very Java-centric for obvious reasons. This is where it came from. This is it's back-- but coming from a Python world I want to make sure that we've got the same kind of performance capabilities in Python and then the same in PHP and Ruby and all the other languages that we want to be able to connect to Neo. You almost shouldn't have to know that the underlying database has been written in Java. It doesn't matter what you're using - what stack you're using - you're going to find the Neo performs blistering fast regardless. 
RVB: So that's the first point of evolution, right? Where we're going with the binary protocol like that. That's a big new thing, right? 
NS: Absolutely. 
RVB: Any other new things that you see coming up on the horizon that you think are really exciting? 
NS: There's a lot of work going on with the big graph side of things. So not only are we making access faster, but there's a team working on scalability as well and making sure that we can add new servers, make things perform [chuckles] in a linear way, faster with each server that you add. So I think the capabilities of the platform itself are growing very, very rapidly and I think we're going to see a little more installs. It's going to become a much more mainstream product than it has been in the past. 
RVB: Yeah, absolutely. Well, thank you so much, Nigel, for taking your time to come on the podcast. It was a pleasure talking to you. 
NS: Thank you. 
RVB: I'm sure ever one will have a chance to meet you at the GraphConnect right? 
NS: Yes. I'm going to hovering around London on the 6th to 7th and the 8th, so we've got-- the 7th is the graph connect day but on the 6th, we have an eco-system day where I'm doing a couple of sessions talk about the new remoting project as well. It will be good to see as many people as possible. 
RVB: Yes, super. Thanks, Nigel. Talk to you soon man. 
NS: Great stuff, Rik. Thanks very much. Bye bye. 
RVB: 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

Rik