Thursday 1 June 2017

Podcast Interview with Steven Baker, Neo Technology

About a year and a half ago, at some meeting in Malmö at Neo's Swedish HQ, I bumped into a new colleague there who was... a little different than most Swedes. He was a bit louder, a bit more outspoken, unapologetically sarcastic, VERY funny - and a big fan of all kinds of (Belgian and other) beers. So we started talking - over a beer. I think it's fair to say we hitted of - and I got to know this Canadian-gone-Swedish guy a bit more, talked more, drank more, ... and decided to invite him to talk about some of the interesting stuff that he works and worked on for our podcast. His name? Señor Baker. Senior Baker. Srbaker. Also know as Steven Baker - working for Neo. Here's our chat:

Here's the transcript of our conversation:
RVB: 00:03.778 Hello, everyone. My name is Rik, Rik Van Bruggen from Neo Technology. And here I am again recording another graphic study podcast with one of my dear colleagues Malmö, Sweden. And it's not a Swede today. It's a Canadian who got lost along the way, Steven Baker. Hi, Steven. 
SB: 00:21.309 Hello. 
RVB: 00:22.168 Hey. Good to have you on the Podcast. We have been talking about this for a long time, haven't we? 
SB: 00:27.601 Yes. This has been in the making for several months but I hope that doesn't reflect on anybody's expectations [laughter]. 
RVB: 00:36.357 I'm sure we'll have a good conversation. But, Steven, would you mind introducing yourself a little bit to our audience. Who are you? What do you do? What's your relationship to Neo4j? 
SB: 00:46.890 Sure. So I joined Neo about two years ago. I decided that it was time to try something new. I had been working a lot in Ruby and Ruby on Rails for a decade. I was building teams, working in FinTech, working with startups, helping company move to remote work. And I've decided that I'd had enough of the finance industry and I'd had enough of North America and it was time to try something entirely different and move to Europe. And so I found Neo4j by way of some people that I knew that had worked here already. And I had used Neo4j in a product-- or in a project that I was working on in FinTech, which was a social related project. And so I decided to join Neo and move my family to Malmö. 
RVB: 01:43.235 Oh, that's a big jump. How is Malmö treating you? 
SB: 01:47.379 It's fantastic. Living in Sweden is the best thing I could've done for my family. My kids are 15 and 9. They love going to school here. They are both fluent in Swedish, I am not. My wife is learning Swedish faster than I am. And it's been a great move. 
RVB: 02:06.292 So I seem to remember that in your Ruby work prior to Neo, you had some kind of Internet fame, didn't you? 
SB: 02:16.880 Yes. I was Internet famous for a few minutes. In 2005, I created a behavior-driven development framework called RSpec, which was far more interesting and popular than I ever intended it to be. 
RVB: 02:33.982 What's behavior-driven development is [inaudible]? 
SB: 02:36.907 So behavior-driven development is an idea which is an evolution of test-driven development. And for those that don't know, test-driven development is where you drive the design of your software by writing a failing test first, making the test pass. Behavior-driven development is an evolution of that idea where instead of writing a failing test and then making the test pass, you approach it from the perspective of you describe the behavior that your software will have using an executable DSL and then you execute the-- your execution of your DSL tells you whether your software meets the behavior that you specified or not. In practice, for those that practice TDD very well, they are actually practicing behavior-driven development because behavior-driven development is just the best practice of test-driven development but a lot of people, especially when they're learning, get hung up on the naming and the vocabulary. And that was my-- that's probably not why the idea was created but that was my introduction to it. I was teaching TDD at the time and people are getting hung up on the vocabulary and so I created a tool called RSpec, which took the test and verification-centric vocabulary out of the process and caused people to start thinking about the behavior that they expected their software to have. And my experience and my opinion is that that leads to better quality tests and better quality software. 
RVB: 04:24.446 And that's been adopted in other-- outside of Ruby, as well, as I understand it, right? [inaudible] place as well? 
SB: 04:30.715 Yeah. The first one was JBehave, which predates RSpec. And that was created by the, I guess, the inventor for lack of a better term of BDD, which is Dan North. And then I created RSpec because-- which is poorly named. It means RSpec for specifying the behavior that your software will have. I created RSpec because I thought that Ruby was an excellent language for building DSLs and describing  your software and it's been picked up in many other languages. It influences a lot of other testing frameworks. There's Jasmine for JavaScript, the NSpec on .NET and every language has-- it sounds awful to say-- an RSpec clone. But it just sort of-- the testing frameworks these days look more like RSpec very often than they do look like JUnit or SUnit. 
RVB: 05:29.312 Very cool. And so, how did you then get involved in Neo? You moved to Canada-- you moved out of Canada to Sweden and then got involved in Neo. And what was the story there? Why did you start working for us, then? 
SB: 05:45.298 Well, I decided that I wanted to work on something other than web-applications for a little while. I wanted to expand my horizons a bit and do something other than Ruby. I like trying new things and working different platforms and language and with different tools, so working on a database was one of those things that I thought was really interesting. And I had previous experience with Neo. I used Neo on a social networking application. 
RVB: 06:14.765 [inaudible], yes. 
SB: 06:16.680 Yeah. It was a FinTech social networking application. I like to say it was social networking for sociopaths. And we were having a lot of trouble with the friend of a friend query. So, since you follow these people, you should follow those people as well. And those queries were taking minutes on our MySQL database which was untuned to be fair and so on. But it was the kind of query that was really hard to get right in MySQL with the amount of data we were dealing with. And so, I imported our database into Neo4j and those queries that took minutes in MySQL very quickly became seconds or, well less than a second actually, in Neo4j. And so, it was just a fantastic application of graph. 
RVB: 07:04.989 So what art are you working on now in Neo? Or what have you been working on? What's your track record? 
SB: 07:12.060 Yeah. So, I've worked on several different teams. I like to do something new periodically. Currently, I work on the driver's team, so I like that. The driver's team is the team that releases the libraries that you use for interacting with the database. I like the working on the networking protocol Bolt. I also enjoy that my work can be seen across four different languages. We currently officially support Java, .NET, JavaScript, and Python. And my main focus, which will surprise nobody, is that I'm working on an internal testing tool for testing and verifying that our drivers all behave properly. Because we support four drivers in four different languages that talk to the database, we need to work to make sure that those drivers are as close as possible and have the correct behavior. 
RVB: 08:12.873 Very Cool. So, your history is still haunting you, is it? 
SB: 08:15.659 Yeah. I think testing is an important thing and it's hard to get right. And there are always-- and especially when you're dealing with network protocols and databases and low-level tools like that, it's especially important to get the details right. And it's difficult and there are some interesting problems in doing testing over a network, but more importantly, doing tests in a way that you can run the same set of tests across four different languages, or more different languages. Eventually, we would like for our driver developers in the community to be able to use our testing infrastructure so that they can make sure their drivers implement all the same features in the same way at our drivers do. 
RVB: 08:59.963 Fantastic, yeah. So having worked on those types of things now, what does the future hold of you? Not just for you personally, but also where do you think our wonderful graph industry is going? Any perspectives on that? 
SB: 09:13.860 I have many perspectives on that. In particular, the thing that I'm going to be personally working on is I'm going to continue working on testing and test related things, but I'm also very interested in the experience that new users get with the system. So, I'm very interested in packaging and distribution and getting the database in the hands of users and making that experience as seamless as possible, and also making sure that when a user upgrades from an old version of Neo4j to a new version of Neo4j, that that experience is as seamless as possible, as well. So, I'm working on some things around that. The things that I find in Neo4J in general that are really exciting, the new clustering is really interesting. I'm really looking forward to seeing the multi-dc capabilities and things like that. And I also think that, really, the killer feature of Neo4j is the cipher query language. It's just absolutely amazing to draw an [inaudible] graph and have that be my query. It's visual-- 
RVB: 10:25.296 It's so easy, isn't it? 
SB: 10:26.341 --and descriptive. It's beautiful. I've been looking lately, in the last couple of weeks, at some of the efforts to get GraphQL integrated to Neo4j, some of the community efforts for that. And that's interesting, but GraphQL has a different-- it's definitely a different flavor. it's great for pulling structured trees out of your database. But for the really complex queries and the things that are more interesting to me, come from really beautiful cipher queries that are very expressive and easy to look at and easy to read. 
RVB: 11:04.480 Couldn't agree more. So, any other final perspective? Otherwise, as you know, I like to keep these podcasts quite short. So, anything else you wanted to add or should we wrap it up here? 
SB: 11:16.740 No. I think that sounds excellent. If you have more questions, I'm happy to answer. 
RVB: 11:21.686 No, I think we'll keep it at that. I will put some links in the transcription to all the wonderful things that you talked about and I look forward to meeting you gain in our fancy new office in [inaudible], alright? 
SB: 11:34.643 Yes. It will be excellent to see you in the new office. 
RVB: 11:37.638 Yep. Thank you, Stephen. 
SB: 11:38.892 Thank you. 
RVB: 11:40.390 Talk to you later. Bye. 
SB: 11:41.643 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