GraphStuff.FM: The Neo4j Graph Database Developer Podcast

The Path To NODES 2021 With David Bender - Introduction to FastGraph: Building Great, Simple APIs for your Neo4j Projects

Episode Summary

In the run-up to NODES 2021 (the Neo4j Online Developer Expo & Summit) we're interviewing a few of the speakers to tell us how they first got excited about graphs, what they're working on, and give us a preview of what they'll be sharing at NODES 2021. In this episode, we speak with David Bender about integrating FastAPI with Neo4j for building Python APIs.

Episode Notes

Episode Transcription

Lju Lazarevic (00:00):

Welcome to GraphStuff.FM, the place where you find the ways to join your lonely orphan data entities. We're your hosts, William Lyon and Lju Lazarevic. In the run-up to NODES, our online developer conference running on the 17th of June. We're taking the opportunity to interview some of the speakers.


William Lyon (00:18):

In these sessions, we dig in to learn how they first found out about graphs. What was their light bulb moment? What are they going to be covering in their sessions at NODES? And what are they looking forward to in the future around graphs? In this session, we are speaking to David Bender. Don't forget to register for your place at NODES at, where you'll be able to check out David's talk building great, simple APIs for your Neo4j projects in the apps, and APIs track.


Lju Lazarevic (00:51):

Hello everybody. Today I am joined by guest, David Bender. So David, welcome. Thank you for joining us. Tell us a little bit about yourself.


David Bender (01:00):

Yeah. Thank you for having me. I'm David Bender. I lead digital and data initiatives for a real estate investment firm in London. I'm not originally British. I'm originally from Canada, moved here from Toronto in September 2019. And I had just been working on this project and decided that I thought it would be really great to present it to the Neo4j community and hoping people enjoy it and they can learn from it. And I'm sure that'll learn a lot from the conference as well.


Lju Lazarevic (01:24):

No. Absolutely. So I was going to ask you, I'd love to know how you came across graph databases originally, but I believe we've got a bit more of an interesting story about how you got into development to begin with. So can you tell us a little bit about that?


David Bender (01:39):

Yeah. Sure. I graduated from my MBA and went into management consulting and was working at a large bank in Canada and found myself working on loads of data strategy projects, and just realized that it was just really cool and I more fell in love with the data side of it than the business side of it, and also realized that understanding and having the skillset was just going to be the future and I needed to really dive into it. So I got into programming and then took an online course for six months in data science, really discovered that I much preferred the programming side to the statistics side and got more and more interested in data engineering and backend systems and programming in general. And because I haven't looked back over the past few years and that's what led me into both graph databases and FastAPI, which we'll talk a little bit about. I'm a Python programmer predominantly and it's been great, and a lot of fun.


Lju Lazarevic (02:36):

That's really exciting. So obviously, the next question's going to be in your spare as a developer, how did you first come across graph databases?


David Bender (02:46):

So I've always been familiar with the concept of graphs as a data structure, as a mental model. Obviously, when you're first diving into programming and like me, when you don't know absolutely anything and you spend all your evenings Googling around, I came across Neo4j and graph databases and just started reading about them. And to be honest, it just seems so much more intuitive as a way to conceptualize data and to communicate data than relational databases, which as an early programmer, novice programmer, I just found really complicated even though I come from a world of Excel spreadsheets and all that good stuff around tables.


David Bender (03:24):

I just found that when I discovered graph databases and Neo4j it just clicked in a way that other tools and other systems haven't. So I discovered it probably maybe as a lot of people do just looking for interesting things on the internet and thinking about, there's got to be a better way to organize and conceptualize this information. And then, found Neo4j and the tools around the database, the community around it. It makes it really easy for someone like me who's still very much, I think at least very much at the beginning of my journey as a programmer and [inaudible 00:03:58], I am excited to learn a whole heck of a lot more about it because I know there's a great deal more for me to learn.


Lju Lazarevic (04:03):

So we've learned about how you first came across Graph databases Neo4j, but can you tell us a bit about that aha moment when something happened with your project you're working on, something where you saw it and it just clicked and you thought this just makes sense. Was there a standout moment?


David Bender (04:23):

I don't know if it was one moment in particular, but there was a problem that I was dealing with at work in my current job. So do you need a bit of background on my current job? I left management consulting and now I support data digitization initiatives for real estate investment firms. It's a global firm now. And when you think of a real estate, it's a very traditional business, the way we think about properties and regions and sectors and tenants and all that kind of stuff. And what I realized actually is that the way that the data is organized is actually a lot more complicated than you may think. It's really a web of information that is really hard to piece together. And I was struggling to do it with taking these Excel sheets from my colleagues or thinking about a relational database.


David Bender (05:05):

And then just by shifting to thinking about the problem through a graph structure, it became much more open and scalable and it made more intuitive sense. And so, for me, that's when I started to realize that the graph databases aren't just for a social network, they're not just for transportation network. They really can be applied to any way that you think about any kind of problem because ultimately data isn't important unless it can be contextualized in relation to other data. And that's at the heart of graph structure, graph database. So that was when it really clicked for me in the sense of this can be applied to basically anything. And once you have that realization, you start to see applications everywhere. So that would probably be the closest I had to jumping out of bed in the middle of the night moment.


Lju Lazarevic (05:53):

Still pretty cool, though.


David Bender (05:55):

Yeah. I think it was neat in the sense that even my colleagues would disagree with how cool it is because I go on and on about all the things we can do with data and all these opportunities. But just to break away from the relational, the table model of thinking about data into something that... It just feels more organic, it feels more intuitive, and I think that it's something that it might be a little bit difficult for people to grasp. But once they're introduced to it and they can see how it can [inaudible 00:06:23] thinking about through graphs can apply to all these different domains. It clicks for people rather quickly, especially the visualization component of it of being able to literally see your data is such a powerful way of communicating whatever you're trying to communicate.


David Bender (06:40):

And as someone who's spent a great deal of time trying to communicate through data in his job, I've seen firsthand how difficult it is to build visualizations that make sense to think about representing the data, to summarize all of these different ways. And we abstract away from the actual data and it's because, frankly, the way that we structured the data, initially, it doesn't really make sense for a human being, but then you look at a graph and it's just there. That's the data point. That's its relationship to another data point. It looks like this beautiful web and there's a lot of power in that because it opens people up to exploring the data in ways that I think oftentimes most folks won't do because they're intimidated by the structure.


Lju Lazarevic (07:20):

It's really fascinating to hear about your experience and how you've approached graphs, especially when you're thinking about data from a relational perspective. So I'm thinking, probably your more traditional developers probably went off and did a computer science degree and they probably spent six months learning about set theory and normalization. And I spent a huge amount of time effectively learning about relational databases and how you modeled them and how you query them and all that stuff. And it's really insightful to think about people who are not coming from that traditional backgrounds and how... It's almost you're drifting straight to that graph representation of the data where it makes sense where you've got that need, that context and putting things together over the sort of trying to think about how you're putting together relation data.


David Bender (08:17):

Yeah. That's a great way to put it actually, because I always like to think that my primary objective is to figure out a way that it will work, whatever the problem might be. I'm like, "I'm not a hacker in the computer programming sense, but I'm a hacker in the life sense of there's got to be a better way to do this, right? This can't be so complicated that you need a PhD to understand it. We need to be able to do whatever we're doing in a simpler way." So whether that'd be looking for better tools in terms of structuring information or communication, or pick this chart over that, there's got to be a better way. And I think the better ways that I've found are always simpler, I always abstract away the complexity. And when I started reading about graphs and started playing around with Neo4j and really getting more acclimated to putting this concept into practice through a database, it feels simpler.


David Bender (09:12):

And by being simpler, I think we can become just so much more powerful. And you're right, I don't have that background in computer science. I don't understand half of the things that I read in a lot of these articles, but I know that I'll figure it out and that's, to me, oftentimes can be more valuable because my ignorance, I always say is my biggest asset. By not knowing what I'm not supposed to know, I can often come up with something that might be a little bit more useful and hopefully, a little bit easier for people who also don't have that background, who I tend to work with. My colleagues aren't computer programmers, they're not computer scientists. So I need to be able to communicate to that group of people in a way that makes sense for them. And oftentimes, it starts with making sense to me.


Lju Lazarevic (10:01):

No. Absolutely. And I think there's sort of a really key thing that you've touched on there. Isn't it amazing how much quicker you learn stuff and pick stuff up when you have to try and fix it or solve a problem rather than somebody just turning around and just telling you, "This is fact now"? [crosstalk 00:10:18]


David Bender (10:19):

Yeah. Everything about learning I think is so much easier when you're invested in the problem and whether it be because it's part of your job. Or it's because it's something interesting to you or because every additional step of learning gets you more excited about getting to the next step. And for me, that's been really the best thing about this project, which we'll touch on a little bit is it was really rooted in, I'm interested in this. I also need to know it for my job. I think it'll have some important benefits down the line, but also, the way that both FastAPI and Neo4j are built in design, it's very obvious that you can get a lot of value very quickly. And then, every new thing that you learn about whether it's Neo4j or FastAPI, every new thing that you learn, you just feel that much more powerful.


David Bender (11:11):

You feel like your skills are getting exponentially stronger and I don't know how else to describe it besides a sort of a brilliant design around both of these tools that it gives you a sense of a sense of accomplishment that I think gets you more excited about going to the next thing, learning the next thing. What else can they do with it? Where else can I apply this? And for someone like me, who's, like I said, still thinks of himself as pretty early days. That's the most important thing, because early on when I was trying to dabble in programming, or even when I was a kid, I loved computers, but I never really invested in computer science or engineering. Because it felt like every next step was harder than the last one, whereas it's really great to encounter tools where the next step feels easier and more exciting and more powerful than the last one. So that's been my kind of journey through this kind of stuff and why I think it's so interesting and exciting.


Lju Lazarevic (12:08):

That's really awesome. That's super, super interesting. And we keep bashing around the edges of this, I think it's time now to, let's talk about that project. So you're presenting at NODES this year and the top of your talk is Introduction to FastGraphs. Tell us about it. Tell us how you put this application together and what kinds of things are people going to be getting out of your talk? What are you going to be covering?


David Bender (12:33):

Sure. Yeah. I'll be giving one of the 10 minute lightning talks at the conference this year and FastGraph is a project that I put together that combines FastAPI, which is a Python package designed to help developers build backend API systems and integrated with Neo4j. So think of it a bit like out of the box backend API system for your Neo4j database. So it's designed really to give programmers the ability to easily stand up a backend API to their Neo4j database, alongside [inaudible 00:13:08] authorization in there, full cred capabilities. It came out of me working a lot in backend systems in APIs and realizing I should build my own to learn as much about how other people build theirs. And two, Neo4j's a great database that I think is going to become used more and FastAPI.


David Bender (13:32):

Although the tutorials and the documentation are amazing, it didn't have anything on how to connect it to Neo4j. So I hope that people will be able to use it to start new projects and to connect whatever application they might be building and easily create an API that they can integrate with their Neo4j database. And FastAPI has some really cool things out of the box. It is super powerful, super customizable. It also does something really cool where it will automatically produce documentation for you, interactive documentation. So you don't have to write the open API config files and all that kind of stuff that I took, I probably was never going to be able to figure out, but it automatically gives you interactive swagger documentation, which is so powerful for testing and learning. And then, it's actually pretty straight forward to connect it with Neo4j.


David Bender (14:21):

It takes a little bit of configuring, but I thought it would be a great project for me to learn a lot about APIs, great project for introduction to Neo4j. And I do hope that it shows people that they can do really powerful professional backend systems without a ton of work, and I hope it's interesting [inaudible 00:14:39]. I'm really as much keen to hear the feedback as I am to present it because it's a project that I worked on the side. It was a weekend evening project for me for a couple months, and I haven't really dug too deep into it lately. I still dabbled a little bit, but I'm really excited to get feedback from the community, hear what people think and expand it with the help of other folks. Because I think that it's the kind of tool that could be really useful and FastAPI has an awesome system. And if you're building applications on Neo4j, then ultimately you can probably want a full API and this might help people do it.


Lju Lazarevic (15:14):

That sounds really great. And we'll make sure that we have a link to your project in the show notes as well, for those of you who want to follow up and get involved. So lastly, last question I'm going to ask you, I'd love to know what are you looking forward to in the future with graphs. What are you excited about coming over the horizon?


David Bender (15:38):

Let me put it this way. So the first thing I'm excited about is my own expanded learning about all the things that we can do. I'm really excited about the APOC packages and all of the incredible things that are coming out of that. Because as I've mentioned before, I had a bit of a data science background, but the data science world just moves so, so quickly. And it's so hard to keep up, particularly when you have a job that isn't necessarily completely devoted to data science. So a lot of those tools and packages that are coming out from the community just make effort. You can do so many powerful things so easily. So exploring more of those packages in the way that the Neo4j's company has been supporting those community projects, I think is, to me, really exciting because it takes a novice-ish developer to an advanced developer without me having to do a bunch of work.


David Bender (16:28):

So I'm super excited about those projects and I'm excited to just continue to build applications on every day and for people to hear more about graph databases, because I really do believe that it will help people get more comfort with using data in their day to day lives, whether it be work or personal projects. And as someone whose job centers around communicating the value of data to stakeholders in traditional business domains, people's comfort is actually hugely important to getting traction and moving faster and building better solutions for our business problems and the kind of applications that we want to build. So that was a very long winded answer to things I'm excited about, but it's been a really cool tool and it's a really great database and I'm excited to really just learn and check out all these sessions in the conference.


Lju Lazarevic (17:17):

Thank you very much. Now, I love your enthusiasm and I love the hunger around wanting to learn more and seeing how that drives you. I think that's really wonderful and I absolutely love it.


David Bender (17:28):

Thanks for having me. I appreciate the opportunity to chat about it because it is very cool and I get excited talking about it and it gets me re-energized to go back in and spend more evenings and weekends working on things.


Lju Lazarevic (17:39):

Thank you so much for joining us today. And for those of you who want to check out David's talk, you will find it in the apps and API track. And the title of the talk is introduction to FastGraph. So thank you once again, David, for joining us and I'm so looking forward to seeing your talk at NODES.


David Bender (17:59):

Thank you very much. Thanks for having me.


Lju Lazarevic (18:00):

Thank you. Bye.