Pages

Wednesday, 13 July 2016

Podcast Interview with Florent Biville, Criteo

Today is a good day, because I got to spend some time for the podcast talking to one of our most active and busiest community members in France. Florent Biville has been working with Neo4j for a long time, on various projects like Liquigraph and AssertJ Neo4j, and has been presenting his work at various conferences - like this one:

So now I got to talk to Florent in a bit more detail, and it was a true pleasure:

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 another podcast episode for our Graphistania podcast. And today I'm joined by someone from the city of lights, Paris, Florent Biville. Thank you for joining us, Florent.

FB: 00:19 Thanks for having me.

RVB: 00:21 Fantastic. Thank you for coming online. And yeah, Florent, maybe the best place to start is for you to introduce yourself to our listeners. I know you've been very active in the Neo4j community, but maybe you can introduce yourself.

FB: 00:36 Sure. So, I'll just say that I'm based in Paris, and I work there in a company called Criteo. So, just in a few words, Criteo is one of the rare non-American companies that can compete with Google and Facebook. But, on the domain of online advertising, and more specifically, in the domain of retargeting. So basically, we're just trying to promote the best quality advertisement for users at scale. So that's basically what we do.

RVB: 01:08 Wow. Is that a French company, Florent? Or this a--?

FB: 01:11 Yes. Three co-founders are French. So now we have offices all around the world. Engineering is mostly based in Europe, but we have offices in the US, in South America, in Turkey, in England, in France, and so many countries I forget. But yeah, we are in a big expansion, and we're hiring also, by the way [chuckles].

RVB: 01:33 That's a nice plug, very well done [laughter]. Hey Florent, so what's your relationship to the wonderful world of graphs, then? How did you get into graphs? Can you tell us a little bit about that?

FB: 01:45 Sure. So, during my first job, actually, that's the time I first heard about Neo4j. Also, we didn't use it directly. We were interested in a graph database for fraud detection because we were selling video games activations. And every time there was a fraud detected, it was usually detected too late, so we had to pay chargebacks from the bank. So it's lots of cash wasted, and also the activation keys could not be reused afterwards. So we were basically burning your activation key stock. So it was really a huge waste, and we were trying to push a lot of efforts into improving fraud detection for our video games we're selling. So that was basically my first contact with graph database.

RVB: 02:29 How long ago is this?

FB: 02:31 So it was, I guess, in 2010 - something like that.

RVB: 02:34 That's a long time ago [chuckles].

FB: 02:37 Yes, yes. And then afterwards, I continued for my personal project. I really wanted to dig into that because-- I don't know, I just saw five minutes of Cypher, and I said, "Wow, that's so powerful and so interesting," even if the language was still young. And so, yeah, I tried Neo4j for my personal project later on, and then I joined a small company. We became partner with Neo4j. I guess we were one of the first in France, actually, to become partner. And I continued with some consulting gigs with startups or bigger companies, sometimes with Neo4j employees as well. That's how, basically, I spent between 2012 and maybe until one or two years ago.

RVB: 03:26 And you've been developing some open-source software around Neo4j as well, right? Liquigraph? Maybe you can tell us a little bit about that as well?

FB: 03:33 Sure. So Liquigraph is based on the project called Liquibase. Liquibase is a migration tool for relational databases. So the ideas and the concepts are very similar in Liquigraph, and the idea's the same, basically. You design your migrations in Cypher, and it will-- so you organise them in change sets, and then your change set will be executed incrementally, and that's how you can manage your model migration. Because that's not always easy, because Neo4j's schema optional. So it's very flexible, but sometimes maybe it's too much flexible and you need some structure to be sure your model evolves in a good way.

RVB: 04:16 Yeah [chuckles], I always say, with freedom comes responsibility, right? You have to have something overlooking the schemaless nature, right?

FB: 04:25 Yes, exactly. I couldn't have said it better [chuckles], actually. So yes, we are in active development right now. We've done some releases already. We're working on some new features to get a bit more on par with Liquibase. We're not as complete as Liquibase yet. We really worked on the main priority features. But we are getting there, and hopefully in the following weeks, we should have a new release with even better features, especially one we did with large data sets.

RVB: 04:56 Wow. And this is all open-source, right? You can find this online, and you can just take a look at it, and use it if it's suitable for you?

FB: 05:06 Yeah, absolutely. You just go to liquigraph.org, and that's your starting point.
RVB: 05:10 Sweet. So, can I ask you the question that I ask every one of my interviewees? Why [chuckles] did you get into graphs? You mentioned that it was quite some time ago, but what was the main thing that attracted you to get into the world of graphs?

FB: 05:32 Well, when I started-- so, it was really-- how can I say? The developer in me, I just saw the power of Cypher. I mean, I could express complex queries so easily that-- I don't know. Just that. Really, Cypher was the selling point for me. Just to see how easy it was to create a graph, how easy it was to express queries. Even though I didn't have any specific project in mind necessarily, just the power of it and the flexibility of it just got me into it almost immediately. That's really what got me into graphs at first.

RVB: 06:11 And then, did that love evolve? Or, how do you feel about that now? Is it still Cypher mainly, or are there things that you really think are more important?

FB: 06:23 Well, I think that - especially with the three years of versions - three, I mean, is-- Neo4j really, really becomes more and more powerful, especially in terms of the-- because before this, you have manager extensions or server plugins. So even though I was a driver developer and had no problem with that, it still didn't feel as natural as with other databases, I would say. So latest edition of Neo4j, three, really makes it like a robust major product, like what you would expect from a database - like binary protocols, some drivers, and some well-defined way of extending the behavior. That is so--

FB: 07:16 Yeah, absolutely. And that even gave me the idea of another small open-source project I created. Because when I started-- I started playing with the procedures a month ago, or something, and I noticed-- so, the runtime was very nice. Whenever I made a mistake and I deployed the procedure, I really got a detailed message. And then I thought, "Oh, okay. That's nice. So runtime gave me the error. What if I could get the error earlier?" And that's how I got the idea of writing a kind of compiler to remain simple, so that basically whenever you compile your procedure, even before you deploy it to Neo4j, you will get a detailed feedback about what you did wrong or not.

RVB: 08:01 That sounds very useful.

FB: 08:03 Yes, and I did that to the repository of Neo4j, or some procedure or something. You know, APOC?

RVB: 08:11 Yes, APOC [chuckles]. The name-- we are so good at naming, it's fantastic [chuckles].

FB: 08:17 I'm no better, so I won't even start on that [chuckles]. I wouldn't--

RVB: 08:22 Exactly. So, before I let you go, just to approach another - and maybe final - subject, where do you think this is going? What does the future hold, both for the graph industry but also for things like Liquigraph, or some of your other projects? How do you see the wonderful world of graphs evolving?

FB: 08:44 Well, first, I think it's going to-- at least what started with version three, and I'm sure it's going to continue this way, is you will have more and more integration with external tools. So, especially with the rework of the JDBC driver, for instance. It will definitely help see Neo4j used with some BI tools, or even more-- so as a-- that looks very promising. And hopefully-- I don't know. For Liquigraph, hopefully, so we will reach a version 1.0 and see people use it in reports. That's what I hope on my site, and maybe more contributors as well [chuckles]. But when I see, for instance, Panama Papers, that's a very great example of how Neo4j could be used. And it's great to see a big public example of something that is not a social graph. I mean, that's very interesting, and I'm sure we will have more and more examples like this, maybe in journalism, and maybe in other fields.

RVB: 09:48 Absolutely. I hope so, too. For the journalism part, I don't know if you saw that, but we've actually announced a Journalism Accelerator Program, whatever that means. But it's all about helping journalists or publishing organisations get started with Neo4j. I'm hoping that we'll see a lot more of that as well, so that will be great. Very cool. All right, Florent, as I told you before, we like to keep these podcasts fairly short, and so I want to thank you for coming online and spending some time with me. I'm sure you'll get a lot of interest once we publish a proper podcast for things like Liquigraph. And I look forward to meeting you again at one of the community events. At the meetups, maybe.