CMOS #6: Tally Barak on GraphQL
Interview with Tally Barak on how a 13 year old girl inspired her to get into programming. Getting back to programming after a 15 year long break. The impact of GitHub and Open Source.
Our main subject however is GraphQL being the next big thing after SOAP and REST.
Tally Barak
Links
- GitHub
- StackOverflow
- Magic
- PowerBuilder
- Node
- Angular
- Meteor
- Angular-Meteor
- Apollo Server
- Apollo Stack
- GraphQL
- awesome-graphql
- REST API
- Ajax
- MDG - Meteor Development Group
- ORM
- SOAP
- Relay
- Zero to GraphQL in 30 Minutes – Steven Luscher
- Learn GraphQL
- Postman in the REST world. Chrome extension
- Dream Factory
- Lookback
Transcript
I'm your host, Gabor Szabo, and with me is Tally Barak. Hi Tally, how are you?
And it was like that. So it's many, many years now, since I started programming. I did that as a hobby, as a kid, later on as my military service which is compulsory in Israel, later on as my profession. But the interesting twist here is, that along those years, I moved from pure programming into more management, products, other things, consulting for large firms about architecture, all those surrounding areas around programming. For about 15 years, I wasn't really doing pure programming, at the time.
So we are talking about some time back at the end of the millennium, the previous millennium, that I stopped programming. About 2.5 years ago, I got this urge again, to go back to code. A few things have changed, I was doing some other things, and then I realized, Why shouldn't I go back and start doing that?
I came back to a totally different world, because it was, and especially the two things that are different from 15 or 17 years ago, we can call them GitHub and StackOverflow. That's the one thing that changed all the programming experience for everyone, the GitHub with all the open source projects, and StackOverflow with all the questions, that you just post your Guys, guys, I don't know what I'm doing wrong here!
and then someone says Oh, no problem, you are missing a semi-colon
or You should just call it A instead of B
or something.
For me, that was an amazing experience and one that I said I want to be part of it.
And since, which is for some time now, I am asking and answering on StackOverflow and various forums, helping with some open source project, and that sort of things. So yeah, that's how I got here, to be a programmer, female, not so young, which I think is pretty rare. I mean it's not very common for sure, I'm not your typical 25 years old, male.
Yeah, I know you're not 25 as well.
How did you grow so fast?So you can see the differences, the contrast, in a different way, how the industry has changed, especially open source I guess, but in general, the industry, right?
You should really learn Node and Angular, they're cool.And a day later or two days later, I called him back and said
What were the names of the things you told me I should learn?Because I couldn't even remember, that was how out-of-touch I was at the time.
So I was mainly doing JavaScript, or maybe I should say just JavaScript, and I started with Angular, which I really like. It was almost like the code generators I had before, because it was so, the first time it let you hide
a lot of the complexity, you could just go ahead, write something, and later on understand it. But in parallel, I did a lot of reading, and watching of videos, and YouTube, and going to meet-ups, and learning other things.
So I also learned about Meteor, which was Yay, I don't really have to write a back end in PHP or something, I can just do it in JavaScript and quickly and I have almost everything already connected.
The whole environment, I did in Meteor, and recently Angular-Meteor is one of the projects that I'm still quite involved, not so much in the pure development, but a bit of contributing here and there, some documentation, helping people with questions and issues, blogging a bit on it.
Recently, the new thing from Meteor group is Apollo Server, and I got really fascinated, back again. You go to something and you say Wow, that's really nice and cool!,
so yeah, GraphQL and Apollo server is my last cool thing and right now I'm doing that as sort of as a hobby, an after hours kind of thing, but I hope it will go to my real-hours thing.
So GraphQL is actually a standard, it is, I don't like to say an evolvement, but more like another tier, on top of REST API. I mean, we are all familiar with REST API and Ajax, and how do you send the data back and forth? But it turns out that REST APIs have some great features and great value but some big disadvantages and the main one of them, well, let's say the two main things are performance and documentation.
Performance is because you are sending one request per resource, normally, and you get it back. So that means if you want a few resources and to get some additional information about each resource, that will require you quite a few roundtrips to the server and if you are doing that from your desktop with your 1GB network connection, then I guess that you're okay. Even if it's 50 or 70 or 20MB connection, but the reality is that most of us use something else for a lot of browsing and it's this big device, which is not that powerful on one side, and usually having a worse internet connection.
So the main issue here is to say I want to send one request, and get all the data I need at once, because that will be much, much more efficient, especially when I use mobile devices.
And GraphQL describes some sort of a standard, it's a middleware that is standing between your client and the server, receives those requests from your client, mobile, or web, or whatever, and does the multiple requests, and then returns one response with all the data. So it actually takes some of the processing that you used to do in the client, for combining data, merging it, and moves it to sort of a server, or middleware. In fact, it's another server.
And the GraphQL is describing the schema, what you should send. The good thing about it is that, that schema is very well-aligned with what is needed in the client, with how you design the user-experience in the client. Now I know it sounds very fluffy, but once you go and look at it on your screen, how you describe it and how you send a query, how it is well-documented, it is very easy to understand. And most people go Wow, that's really what I need!
I don't know if you are doing demos here, or...?
And the Meteor Group, MDG, actually used this spec and developed their own version of a server, which is JavaScript-based, because that's their expertise, and is called Apollo Stack, this is what you will see in GitHub, and it has the server-side and the client.
The main thing about GraphQL is that you describe your schema, you describe how the schema is built, and you use this schema to build all your queries. It's sort of, and I'm very careful here, it's like moving your ORM to half-way through the client. I think that's almost like it, and then you have all your schema defined, but the good thing, this is what as a consultant for large firms, what is really exciting is that you don't have to connect to a single server, you can, in fact, use this middleware to connect to multiple servers if you have in your organization.
Or even if you are a start-up and you say No, I am not this huge enterprise that has ten thousands of servers
but even if you are a start-up, you probably connect to Slack and Stripe, for your payment, and some other services that you use, instead of developing them. Maybe you have payment, maybe you have something else for your billing, and the accounts' management, and that sort of thing, so you probably have some integration that you need to take care of.
Go ahead, check it out, because it's really, really interesting and I believe it's going to be extremely popular in the coming years, look at it as sort of some evolution. First we had SOAP, and most people love SOAP today, just as long as it's in the shower, and not in the code. And then we had REST, which solved some of the problems that SOAP had. And I think the next step is GraphQL.
And another implementation now is the Meteor, which is JavaScript, but a lot of other implementations, and there's actually a really great talk of a Facebook guy, which suddenly I don't remember his name, but he was doing three implementations of GraphQL in 30 minutes talk and it was 30 minutes, so he did Python, PHP maybe, and JavaScript. I'm sure about the Python and the JavaScript, I'll have to double-check the third one. So it's GraphQL in 30 minutes, something, so check it out in YouTube, it's incredible, especially this tri-lingual guy. Just you know, in 30 minutes, write in three different coding languages, that's impressive.
And then, to set up a server, it's actually pretty easy. I mean, you can take the Apollo server, which is open sourced, as I said, and implement it, but there is another cool thing which is about two companies, which are providing now GraphQL as a back-end service, similar to Lookback or Dream Factory, that provides you a full back end without you needing to develop anything. So they did the assembly, they're providing GraphQL with a database. So assuming you go to a database that is local, they have two different approaches. One is giving you all the surrounding services, the other is more focused on database. We'll put them in the notes, one of them is GraphQL and the other is GraphCool. If you want to find more about that, there's a GitHub repository which is called awesome-graphql, and it has all the resources, just like the Awesome, everything that they are doing there.
We talked about what's in GitHub, apart from just pure code. So that's another example, we have books, I think the second most-popular GitHub repository is in fact, books. And we have all the Awesome-something repository, which gives you the main resources that you can see on different environments, so there's also an awesome-graphql there, so you can go and check it out, and there you will see also the provider, the GraphCool and the other two, that I don't remember.
Published on 2016-09-10