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


No comments:

Post a Comment