Pages

Wednesday, 30 March 2016

Here's another great interview for our Neo4j Graphistania podcast, this time with a very active community member in the US of A, Brock Tibert. Brock has a great blog (called Enrollment Nerdery) about all kinds of interesting tech stuff for the education industry, works at Bentley University in the Boston area, and has been doing some very nice stuff with Neo4j. Reason enough to have a chat:

Here's the transcript of our conversation:

RVB: 00:02 Hello everyone. My name is Rik, Rik Van Bruggen from Neo and here I am recording another episode of the Graphistania podcast with someone who's joining me all the way from the Boston area, in Waltham, Massachusetts, where I used to have my stomping grounds as well. This is Brock Tibert joining us. Hi, Brock.

Wednesday, 23 March 2016

I recently wrote two blogposts about a fancy new way to create "Guides" right in the Neo4j Browser - a system that we at Neo have used ourselves to create learning experiences for the Neo4j Graph Database - but that we are now also extending and making available to our community and Enterprise customers. The first post showed you what the result was, and the second post showed you how easy it was to create such a guide. And of course, since this is still all very new and under development by the inimitable Michael Hunger, it is still evolving at warp speed.

So that's why I am adding a third post to this series, based on the lastest version of Michael's github repo. In this version, he has added a much more convenient way to serve the HTML page that we use as the basis for the Browser Guide: we essentially don't need a CORS-enabled webserver anymore - we can just use the webserver that is already baked into Neo4j and which the Browser already uses. Michael did this by developing an unmanaged extension that picks up the HTML file from a local directory, and then serves it when you call the :play command in the browser. So how does it work? Let's show you.

Installing the Unmanaged Extension

You will find the extension on the github repo under the "guide-extension" directory. Michael has added some detailed installation instructions if you would be able and willing to compile the software yourself - but he has also added a compiled version link for Neo4j Enterprise 2.3.2. You can download the .jar file, and then just add this to the right directory of your Neo4j Enterprise 2.3.2 installation: the "plugins" subdirectory.

RVB: 00:03 Hello everyone. My name is Rik Van Bruggen from Neo, and here I am recording another episode for the Graphistania podcast, and tonight I have invited two lovely people from all the way in Texas, who have been doing some wonderful work with Neo4j. That's Mark Hand and Clare Zutz. Hi guys.

So obviously I need to explain HOW I created that - and that's what I will do in this blogpost.

Creating a Browser Guide - easy!

Starting point of the exercise is Michael's github repo with all the source material. Download the zip file with all sources and unzip it on your local machine. The instructions online are kind of limited, but in principle the sequence of what we need to do is EASY:

we need to create an Asciidoc file (identical to what we use for our GraphGists) that describes the Neo4j Browser Guide.

we need to convert that Asciidoc file to an HTML file with a very simple shell script (see below).

we then need to figure out a way to LOAD that HTML file into the Neo4j browser. in a :play pane (similar to the built in guides that we already have)

Tuesday, 15 March 2016

Today was a very special day. I travelled to Malmø to join a bunch of my Neo4j colleagues for a very, very sad reason - attending the funeral of Anders.

Anders was one of the people that made an unbelievable impression on me when I started at Neo almost 4 years ago. He was a quiet person, for sure, but a fantastic musician, a superbly bright engineer (initial creator of most of Neo4j's awesome documentation - which everyone knows and loves!), and loving, caring, and ever-friendly person all round. I can't say I knew him best - but it always felt like there was a strong connection there - ever since those first couple of days where I got to know him at Ångavallen.

So today we said goodbye to Anders, who was torn away from us way too early because of that terrible disease, cancer. I am getting to an age where too many people in my surroundings fall victim to it, so in light of my recent multilingual graph karaoke posts - I thought I would post a Salute to Anders - Graph Karaoke style - with a French song by a fantastic Belgian singer songwriter, Stromae. It's called "Quand c'est?" (When is it?) which when you listen to it is all about the disease that has taken so many...

Friday, 11 March 2016

I have written quite a bit about Beer on this blog - and that's a good thing. I have also done a bunch of graphgists about it, and I am sure I will keep on doing that for a while to come. But recently, I have learnt about some new functionality in the already awesome Neo4j Browser that allows you to extend it with custom GUIDES - the learning tool that is built straight into the platform. And so I had to take it for a spin, and get my Belgian Beergraph to become part and parcel of the Browser - of course.

Here's a little video I made capturing how this would look like.

I am planning to come back to this in the next few weeks, and explain the details of how this works. But for now, I think this opens up a world of possibilities on how people will be sharing and working on graphs with Neo4j and its Browser.

Thursday, 10 March 2016

Another week, another great podcast episode. This time, I spent a very nice 15 minutes talking to an "age-old" community member for Neo4j: Alberto Perdomo, from GrapheneDB. Alberto has been developing a very well-respected cloud hosting offering around Neo4j from one of the nicest spots, Gran Canaria, in Spain. He has lots of experience with Neo4j, and a really great insight into how the cloud market is going to be developing for the graph space - so definitely worth a good listen. Here goes:
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 interviewing a lovely community member all the way from Gran Canaria Spain, Alberto Perdomo from GrapheneDB. Alberto, so nice to have you on the call.

AP: 00:18 Hi Rik, thanks for having me.

RVB: 00:21 It's super great to have you here. You've been one of the prime and most visible community members for Neo4j for as long as I can remember because you've been doing GrapheneDB, but most people won't know you yet. So why don't you introduce yourself?

AP: 00:37 Yes, my name is Alberto Perdomo and I'm the cofounder and CEO of GrapheneDB. And GrapheneDB itself it's a fully managed cloud hosting service for Neo4j. So it's basically a service that runs Neo4j for you on AWS, on Microsoft Azure and so on.

RVB: 00:59 Wow. Now how long have you been doing this?

AP: 01:02 We started in 2012. But early on it was just proof of concept, prototypes and so on. And in 2013, we started with an early private [bedder?] and started inviting users to try out the service. And then eventually, it took us quite some time but at the end of 2013 we started having our first paid customers. In 2014 we went GA, so that means the service went publicly available.

RVB: 01:42 That's quite a ride. I've been using it myself in the sandbox. I love it for demos and little things that I write about, so thank you for providing that.

AP: 01:53 It's great. There's all sorts of use and every time I meet someone I'm surprised by the use cases. Some people use it just for prototyping, throw away databases. Like you for example, you use it to prepare you some sample data sets and other people use it for all sorts of things that are hobby, projects, and all kinds of production employments, everything.

RVB: 02:23 So just out of interest, how many instances are you running on a normal day? Any idea?

AP: 02:30 Running on a normal day, I don't know. We have this thing where we actually stop databases, some sandbox databases which are free and which are not in use, they are stopped after a while when they're idle. So I wouldn't know, I wouldn't know. Thousands probably. In general terms, we are hosting more than 10000 databases, but to be honest that doesn't count for a lot of inactive databases.

RVB: 03:05 Sure. Well that's still a big number. I'm very impressed. Very very well done. That's great. So where did it come from Alberto? How did you get into graphs, and how did you get into GrapheneDB? Tell us that story maybe.

AP: 03:21 I've been telling everyone the wrong story. The wrong story, let me explain why. I've been telling everyone that in 2010 we were working on a clients project and we thought of using Neo4j. And we didn't end up using Neo4j, but for us it was when we discovered that there wasn't any hosting service out there for Neo4j or any other graph database. So we wanted to use it but we were relying heavily on Heroku and other cloud hosting services, and there was no option there. And for other relational and SQL databases there were options out there for Redis and for MongoDB and so on. So this is where the idea came from. But I just-- and this is true, this is still true, this is how the idea came together, but I remember I think a few weeks back I remembered why we were-- my question was why were we looking at Neo4j in the first place? How did we get to know Neo4j? And now I remember. So we attended Rails conference in Baltimore in the US in 2010 and there was a presentation by a guy called Matthew Deiters, and he made a presentation about putting useful recommendation in your APPs. So he actually spoke about the patterns and he introduced Neo4j for Rails using Neo4jRB by Andreas Ronge and this is how actually I met Neo4j and graph databases in the first place.

RVB: 05:15 No way, okay.

AP: 05:16 But it was hidden in some dark corner in my head [chuckles].

RVB: 05:22 [chuckles] Very cool. So how did that evolve into, I want to build a product around this, or I want to build a service around this? How long did it take you for that to materialise?

AP: 05:36 So for two years between 2010-2012, it was a mix of we went up and down like, "Hey, there's no service for it, let's build it." Then, "Are we crazy? Why isn't there a service for this out there yet?" Of course we knew, especially back at that time, graph databases didn't have such big spike in popularity as they have right now, but still we didn't know if there were any special reasons for not being a service out there and so on. But eventually 2012 we started working on it. And early on we were just focused on the technical aspects, how we would do the hosting, how would everything work out. And then we focused on bringing out a bedder, and we didn't do even much validation around the idea. Yes we had a website where people could sign up for early access and so, but we didn't do any special experiments to test how easy it would be to monetise such a service or to run efficiently. But it turned out well and things were progressing and when we started inviting people, the feedback was positive. A lot of people found it very helpful and they would send feedback back saying, "This is a great service, we really love it. It's really useful to us," so that kept us working on it until--

RVB: 07:20 Very cool.

AP: 07:21 It eventually became a business.

RVB: 07:23 So what's the main attraction point do you think to Neo4j as a database category or as a database type, and then specifically to using it in a cloud environment. What's the main attraction do you think?

AP: 07:37 I think it's the flexibility-- so for one, I'm seeing a lot of people use it for its flexibility in terms of modelling data and connecting data and then being able to query it altogether, because some of the other models are very restrictive in the way that you need to model your data. So if you're looking at relational databases, they could be called as well tabular databases because everything needs to be mapped into tables.

RVB: 08:10 They're very anti-relational actually [chuckles].

AP: 08:12 Yes. So they're very very very strict and very rigid, and with other databases like let's say document databases are very flexible in terms of [?] of what you're going to store within a document, but again they're not very good in terms of how you connect data. So I think Neo4j and graph databases in general are a great middle ground and they excel at connecting-- actually where all others are actually failing, which is leveraging connections in your data.

RVB: 08:49 It's actually really really funny that you mention that, because when you think about it, it's so logical that you combine that with the flexibility of the cloud model right? So you have your flexible database, flexible data model and then you have the flexible deployment model. It's kind of logical [chuckles].

AP: 09:04 Yes. So why cloud? I guess this depends on the kind of segment of use we're talking about. For some it's just convienient. If you want to-- like I myself when I'm trying to answer a question on stack overflow for example, I need to do some queries or insert some data, I don't set up a local Neo4j instance on my computer for that. Or I don't work on any other instances I have. I just go to GrapheneDB [?] books, it takes a second and then I have a database that I can use for testing. So for those kind of users it's just convienience and easy to use and the way that you can have multiple databases and swap them and--

RVB: 10:05 That makes a lot of sense.

AP: 10:06 Go to one or the other. Now for others, it's more like the fact that some companies want to stay competitive in the way that they think that outsourcing your operations to the cloud is--

RVB: 10:28 Cheaper.

AP: 10:29 Yeah. It's an area where they can save money and they can be more efficient. And anybody that asks, their scale is always going to be probably more cost efficient than any data centre you can run internally. And then there's another group, sometimes combined, which is the people that think, "We don't want to be dealing with hosting. I want to be using Neo4j, I don't want to be learning how to operate Neo4j." Let's say our best customers are those who value their time and they want to focus on delivering value to their clients, and looking how they can integrate Neo4j in their product, and they don't want to be running security updates to their servers or performing version upgrades of Neo4j and stuff like that.

RVB: 11:23 Cool Alberto, I'm conscious of the time a little bit here, because I know my listeners and they like short and snappy podcasts, so I'm going to ask you one more question. Where's it going? What does the future hold, both for the industry and for GrapheneDB? Any perspectives?

AP: 11:44 Let's start in the [?]. So for GrapheneDB, we are now Neo Technology enterprise partners since last year. We are doing a number of deployments with Neo4j enterprise for our customers--

RVB: 12:05 That's really cool, by the way.

AP: 12:07 Which means we can cater the hobbyist who needs to have a free database to play around with, to very serious deployments on the cloud. This is where the service is heading, to make sure we can cater those customers and they have all the features that they need. This is for GrapheneDB, where it's heading right now. And in terms of the market I think, OpenCypher is really promising. I myself am a huge Cypher fan and everyone--

RVB: 12:44 Who isn't [chuckles]?

AP: 12:46 Who isn't, yeah. When I've run training, everyone gets super excited about Cypher like from day one. Like after two hours they're--

RVB: 12:57 It's so powerful.

AP: 12:58 Super excited about Cypher. So I think OpenCypher is great at catalysing this potential, and it excels really making it visible to the user. So if you are looking at Neo4j, you can see really quickly how you can extract value from it, rather than having to let's say spend two weeks learning how to query graphs. Besides the query language, I think the cloud is getting huge. I'm excited to see what kind of improvements can be added to Neo4j, specifically for a cloud in terms of scaling. There's a lot there. And then again the adoption. I'm increasingly talking to a number of people who just got to know Neo4j, and they are so excited, they can see their potential. We know what connected data they can exploit within their APP and within the database. And I expect a growing number of companies to do that, and to jump on the Neo4j boat.

RVB: 14:21 Absolutely. Couldn't agree more. I think you've been a very very valuable to this entire ecosystem. I have tons of respect sir, for that. So thank you for doing all the hard work, and I think it's great to have you as part of the ecosystem. Hey Alberto, we're going to wrap up here. Thank you so much for coming on line, I hope it wasn't too late for you and I really appreciated talking to you. Thanks a lot.

AP: 14:49 Thanks a lot Rick, and thanks to Neo Technology for putting such a great technology together, and it's a pleasure to work with you.

Monday, 7 March 2016

Today is the start of an ANNIVERSARY edition of a great developer conference in London that most of us at Neo4j really like: QCON London is a yearly gathering of all kinds of software professionals in London, and is usually a great place to meet and learn lots of cool new things. It also marks that anniversary of our Graphistania podcast (which we started last year at the conference!), so I can honestly say that I am really looking forward.

Just like last year of course, I also wanted to share a "Schedule graph" of the conference schedule. As you can tell from the tabular webpage, we would need to do some conversions here and there to make it work:

But of course, we made it work. You can find all of the queries github of course.

Loading the QCON Schedule Graph

In order to get the data loaded, I first put everything into a nice little google sheet, with some furious copying and pasting:

Gets us the "conference"-style links between Jim Webber and his former and current employer:

And then finally, a query that I always tend to run for the heck of it - the conference session that have more than one speaker:

//Look at sessions with more than one speaker

match (s:Session)-[r:SPEAKS_IN]-(p:Person)

with s, collect(p) as person, count(p) as count

where count > 1

return s,person

Looks like this - we can obviously explore this a lot further.

Cool. Again - this is just an example of the type of nice little graph explorations that you can easily set up on your local machines. If you have any questions or want to explore this further, then please don't hesitate to drop by the Neo4j booth!

Thursday, 3 March 2016

A couple of days ago, I wrote a graphgist about creating a true Knowledge Graph for the Neo4j ecosystem. Based on the fantastic Awesome Neo4j resource created by our friends at Neueda/Neueda4j. You can access it in a separate window over here.

In this post however, I will go into a bit more detail about how I went about creating that graph.

Google Spreadsheet is my friend

I mentioned already that I started from the awesome Awesome Neo4j github resource. And while it's a great idea to manage pages etc collaboratively on Github, I can't help but feel like there should be other and nicer ways of structuring that information. So I spent a couple of hours converting that information into a spreadsheet (which is publicly accessible over here):

This sheet contains

info about the resource (name and comments)

the URL where you can find the resource

info about the author (individual or organisation) that created/manages the resource

Tuesday, 1 March 2016

Here's another great conversation with one of the Neo4j Engineers that is working on the coolest product since sliced bread: me and Oskar had a great conversation about his daily work on the Neo4j Browser - one of the most loved components of a very loved product. Here's out chat for you:

Here's the transcript of our conversation:

RVB: 00:02 Hello everybody. My name Rik, Rik Van Bruggen, from Neo Technology. Here we are recording another podcast session. Today, we have a really interesting guest, all the way from Borås in Sweden, and it's one of our developers on the Neo4j engineering team. It's Oskar Hane. Hi Oskar.

OH: 00:20 Hi Rik.

RVB: 00:21 Hey, good to have you on the podcast. Thanks for making the time.

OH: 00:25 Thanks for having me.

RVB: 00:27 It's great. Oskar, one of the reasons I was really excited to get you on the podcast was because Neo4j has this wonderful front-end tool that I use a lot, everyone uses it a lot, called the Neo4j browser. I think you're one of the guys behind that, aren't you?

OH: 00:46 Yes, since about one and a half years, I've been on that UX team, what we call it internally.

RVB: 00:54 How did you get to Neo, who are you, where did you come from, how did you get to Neo?

OH: 01:01 Actually, it's quite a funny story, I think. I was browsing Twitter two years ago, and I think that one of the guys I was following retweeted something from a guy called Emil Eifrem, send that--

OH: 01:22 By then, I didn't know. I didn't know [anything?] at all, and he said that, "We're looking for Java developers." I was a freelance contractor by then, and I was just-- a long contract, so I was looking for Neo4j, so I sent him a tweet and said, "Don't you have any openings for JavaScript because I'm not a Java guy?" And he was like, "I think we do, actually. Talk to Magnus!", another guy inside Neo. They set up interviews. I actually have like seven or eight interviews before I joined in August of that year.

RVB: 02:16 Have you used Neo4j before or did you know about the product before, or how did you know about it?

OH: 02:22 No, I didn't, but of course, when I talked to Magnus the first time-- well, before I talked to Magnus, I downloaded and started using it. I was blown away by the user interface of the client or the Neo4j Browser compared to-- I've been working with MySQL and other databases, and their user interface--

RVB: 02:53 Is a little bit more old-fashioned?

OH: 02:55 Yeah, so I was completely blown away. I'm thinking, "Wow, I'd really like to work on this product," and I managed to get in.

RVB: 03:07 And the rest is history, right?

OH: 03:09 Yeah [chuckles].

RVB: 03:10 Nowadays, it's you and one or two other people that work on that part of Neo4j, right?

OH: 03:16 Yeah, currently, we're two. The other guy, Mark Peace sits in the London office, and in two weeks, another person is joining us, so it'll be great to have the three of us.

RVB: 03:33 What do you think is so cool about Neo4j, in general, but maybe the browser, more specifically, why do you think it's such a cool product to work on, what makes it so nice?

OH: 03:47 As you were talking a little bit that it's modern, in a way, compared to MySQL, and the browser is, you can visualize the data in a way that you're not able to visualize in a relational database, of course, an area that Neo4j or graph databases we have fixed relationships between nodes.

RVB: 04:23 The graph data model, right?

OH: 04:25 Yeah, exactly. So we have this graph visualisation in the Neo4j browser where we can run animations and have a gravity physics engine to display the data in a nice way.

RVB: 04:44 I think one of the cool things about the browser, for me as a user, is that it combines so many nice perspectives. On the one hand, it's a visualisation tool, on the other hand, it's a query troubleshooting tool, on the other hand, I have a learning tool. There's so many nice things coming together, I think. I'm assuming that was intentional.

OH: 05:09 Yeah, of course, it's sort of a platform for-- the target audience was from the beginning, at least, for developers who are writing apps for the Neo4j database, then we can use this Neo4j browser, as you say, they can see the data in many different ways. We can troubleshoot if we have any query program, so we can just run ad hoc queries to get interesting stuff, and you can learn the query language, Cypher, within the browser.

RVB: 05:50 I have off the cuff type of question for you, what's your favorite feature, if you have any? It's probably the most recent one [chuckles], but what is one of your most-- the nicest thing about the browser?

OH: 06:08 Wow, that's really a hard question. Even though it could be limited in how big graph you can do it at once, but I think the visualisation is actually my favorite because I'm basing that element that other database types that don't have, that makes us unique.

RVB: 06:37 My personal, probably, is the fact that you have this rolling history. You have this long page of query histories that you can sort of go through. I don't know if you've ever seen one of my graph karaokes but that's what I use all the time...

OH: 06:54 I have that actually, I have that karaoke [laughter].

RVB: 06:59 I'm a fan of your work, Oskar, I really am.

OH: 07:03 Thanks.

RVB: 07:05 One more thing, if you don't mind, where is this going? What does the future hold, both from the product in general, the browser, more specifically, and maybe the industry that we work in, any comments on that?

OH: 07:23 I can talk for the browser at least that we-- we're talking about having it extensible in a way that somehow that you can write like from the plugins maybe for the browser, and load in an easy way as a user. I very much like to see that, at least, that if you want to visualize your data in a special way, maybe your own [row?] or table format that only you see, you could create a front-end plugin, so to speak, just have it that way.

RVB: 08:10 So like an extension, but then part of the browser, so to speak, right?

OH: 08:14 Yeah, something like that. But we're moving some of the content out of the browser so you can bring it back in. We're heading that way.

RVB: 08:27 You also mentioned to me earlier that for future versions of Neo4j, the browser is not going to be like part of the same package as Neo4j, is that also something that's coming up then?

OH: 08:37 Well, maybe, I'm not 100% sure where we are at the decisions yet, but what we know is that, at least, we have among the files, the repository for the browser out of the Neo4j main database, but mostly, having it as a dependency. So when you download Neo4j, you get the browser inside it, just as you do now, but the code isn't mixed with the database code.

RVB: 09:08 It's easier to pull it out if we want or need to do that, right?

OH: 09:12 Yeah, exactly.

RVB: 09:13 Very cool. What about visualization, in general, is there-- there's so much stuff happening in that domain, graph visualization, it's a very hot topic, I think, how do you look at that?

OH: 09:28 Yeah, it is, and it's super hard to show visualization that are huge which has functions and elements and relationships within it. I'm very impressed by many of the actors in the industry.

RVB: 09:51 It very quickly becomes like hairball, doesn't it [chuckles]?

OH: 09:56 It can hold your web browser as well.

RVB: 10:00 Totally, there's some really cool visualization tools out there. We've been partnering with externally, so hopefully, that's complimentary, it should help us.

OH: 10:13 Definitely, we're a small team. I think our visualisation is good for some use cases, but maybe not for some.

RVB: 10:26 Well, very good. We'll wrap up the recording here, if you don't mind. We'd like to keep this podcast short and snappy. Thank you so much for coming online, Oskar, really appreciate it.

OH: 10:40 Thanks.

RVB: 10:41 I'll look forward to seeing you maybe at GraphConnect Europe or some other occasion very soon.