POPULARITY
Panel: Charles Max Wood Lucas Reis Justin Bennett (guest host) Special Guests: Gant Laborde In this episode, the panel talks with Gant who has been programming for twenty years. In the past, he has been an adjunct professor and loves to teach. Finally, he talks at conferences and enjoys sharing his ideas. The panel talks about the React State Museum, among many other topics, such as: React Native, Flux, Redux, Agile, and XState. Show Topics: 1:24 – Chuck: What do you do? 2:02 – Chuck and Gant: We met at React Rally at 2016. 2:17 – Gant: I have my own sticker branding with a friend in Japan who is genius. She draws all these characters. They are my business card now. 2:41 – Chuck: React State Museum- talk about its brief history and what it is? 2:54 – Gant: React is this beautiful thing of passing these functional capsules around and managing them. Once you start creating another component, the question is how do you actually manage all of these components? We are all so happy to be on the cutting edge, but state management systems come up and die so fast. For like Facebook, there are 2 people who understand Flux. What happens is Redux is the one thing that shows up and... 6:34 – Chuck: I want to say...I think we need to change the topic. You said that JavaScript USED to be bad at classes, but it’s still bad at classes! 6:52 – Gant: Yep. 7:21 – Chuck: Typescript gets us close-ish. 7:31 – Chuck: Do you get feedback on the library? 8:12 – Gant: The requests that I’ve got - it’s from people who are better at (that0 than me. I wanted to test the lines of code. But that’s unfair because there are a lot of things to do. It really was a plan but what happens is – components that are used in this example is that in this node module... 9:41 – Panel: This is an interesting topic. When you assess any technology...if you are not a technology expert than you really can’t say. That’s interesting that you are doing this an open-source way. 10:25 – Gant: I am a huge fan of this vs. that. I am okay with say “this” one wins and “that” one looses. I don’t declare a winner cause it’s more like a Rosetta Stone. I had to find pitfalls and I respect that for the different perspectives. At the end of the day I do have opinions. But there is no winner. They are all the same and they are all extremely different. Are you trying to teach someone in one day? I learned Redux in 2 different days. 12:00 – Panel: Is there a library that helps with X, Y, Z, etc. 12:16 – Gant: I love for teaching and giving people a great start. I just set state and live life. I had to show what X is like. 13:59 – Chuck: Like this conversation about frameworks and which framework to use. Everyone was using Redux, because it was more or less what we wanted it to do. But at the time it cleaned up a bunch of code. Now we have all these other options. We are figuring out... How to write JavaScript if web assembly really took off? Do I write React with X or with Y. And how does this affect all of this? We had all of these conversations but we haven’t settled on the absolute best way to do this. 15:50 – Panel: This is great, and I think this is from the community as a whole. 17:20 – Chuck: I need to ask a question. Is this because the requirements on the frontend has changed? Or... I think we are talking about these state management systems, and this is what Lucas is talking about. 17:45 – Gant: I think it’s both. 18:43 – Panel: Websites have gotten bigger. We have always been pushing CSS. Panelist mentions Facebook Blue, among other things. What does your state look like? What does your validation look like? We are on so many different devices, and so on. 20:00 – Gant: I agree to echo everything that you all have said. I think the expectations are tighter now; that we have less drift. People are being more cognoscente and asking what is our brand. And it’s about brand consistency. And we are expecting more out of our technology, too. We keep pushing the envelope. What about these features? We want to be feature rich, and pushing these envelopes – how can we build more faster with less complexity while building it. You have to put that complexity somewhere. It’s interesting to watch. 22:00 – Chuck: How do we use this React State Museum...where are we going next? 22:19 – Gant: It’s a loaded question. Being able to ID new and interesting concepts. If you had a terrible version and Redux comes along, Redux is great for some companies but not all. You won’t see bugs that are crazy, there is a middle-wear, and maybe for your team going into Redux will make things more manageable. 25:25 – Advertisement – Digital Ocean 26:05 – Panel: Understanding your problem is the first thing to do. Talking about evolutionary architecture – to build your software to evolve. What does tha fit really well? So if you have to pick something new you are in a good position. What are my needs? Don’t look too much forward or 27:38 – Chuck: Advice on looking at your problem-sets? 27:52 – Panel: We have gone from planning too much to not planning at all. I don’t need to plan for too much or else it will “hurt” me. 28:42 – Chuck comments and mentions Agile. 29:29 – Panel and Guest chime in. 29:39 – Panel: I worked on a project (3 months) we needed to do a big change. I asked them why didn’t we take that into consideration. And their answer was... 30:30 – Gant: You might get away with... 30:55 – Chuck: What are some of the knobs on this? If I turn this know Redux is looking good, but if I do this... 31:12 – Gant: There are a lot of attractive knobs. Using app sync, not using app sync. 32:33 – Gant: Is your app really effective? That’s your first important question. How much state do I need on the frontend. And vice versa. 34:02 – Gant: How easy will this be to test? Can I teach someone how to do this? If I cannot teach it then it won’t do my team any good. 34:35 – Panel adds in comments. 35:08 – Gant: Looking at tests. 37:25 – Panel: If you have a great backend team then you can move the work across the team. You have a strong team to move that work along that line – normally you can’t cross that sort of thing. 38:03 – Chuck: There are so many options, too. I see Apollo getting reach here. I don’t see it as a statement tool instead I see it as... 38:31 – Panel: Apollo State – seems like they are pushing the envelope. It’s interesting to watch. 38:54 – Chuck. 39:12 – Gant: I am going to go ahead and use this tool – I am not going to worry about it. But now you are being held accountable. 39:29 – Panel: Question for folks: React not having a blessed ecosystem can hold people back in some ways? You have the freedom to use what you want. Here are the tools that you can use. Do you tink it be better if the Facebook team could do... 40:20 – Gant: I find that I don’t like (being told) this is what you will be using. I am a person with idea. We’d all be using Flux and all be very upset. 41:00 –Then there would be 3 people who don’t understand it. 41:17 – Gant: I loved Google Wave. Fool on my once and shame on me twice... Google Video! Google comes out and says here is BLESSED and you don’t have any choice. But it’s any author for themselves. It’s a little bit silly 0 I would like a beacon from Facebook saying: Here is a guide. It seems that they can’t focus. They are running a large company; I would like to keep it open – friendly energy. 42:24 – Chuck: I am mixed feelings about this. It only plays as far as people play into it. IN a React community there are so many voices. They all have opinions on what you should/shouldn’t use. The one thing that I like about a blessed / recommended stack – brand new person – it’s a good place to art. After that if they realize that Flux is hard then they can go and try other options. There are other things out there; there is a good balance there. 43:36 – Panel: That is the Angular way right? 43:38 – Chuck: Yes but Angular is more opinionated. It’s a different feel. 44:38 - Panel + Guest continue this conversation. 45:00 – The book DRIVE is mentioned. 45:21 – Gant: ... we need more recommendations. 45:43 – Chuck: Let’s talk about Repot and how to use this? If you go and get Repot – Google React State Museum it’s really easy. How should people come to this and pick it up? 46:18 – Gant: The table that comes in there – it links to the main Repot. A lot of people showed up and contributed. First of all show up. Gant mentions a sandbox link – and he talks about getting your hands dirty. React Native is mentioned, too. 48:10 – Gant: There are many opportunities for contributors. I could use my links. Typos, documentations, etc. - anything friendly is accepted here. 49:20 – Gant continues this conversation. 50:33 – Chuck: Anything else to dive into? 50:41 – Panel: I think there could be other things you can bubble up 51:26 – Gant: I would love some help with that. I did have some contributors write some tests. I wrote a test – 4 hours later – and it tells me if it passed or not. It has to go into a new directory, and work in Android, etc. It’s insane testing library. Then there are some checks to see if there is a link in the README. Animation if there is anyone who wants to do some cool stuff – like modules. Maybe it’s apple to oranges comparisons there. I would like to identify that for people. We would like some outside feedback out there. The more the merrier to help with the data is out there. Sanity check complete – yes! 53:24 – How to do that? 53:31 – File a ticket to help contribute. So you can say: I will do this. If you do it in a reasonable amount of time, then heck yes. If you do some open source...Do 10 (I think) and you get a free t-shirt? 54:28 – Advertisement. Links: Kendo UI Ruby on Rails Angular Get A Coder Job Redux Agile A Philosophy of Software Design – book XState Book: Spellmonger Did Someone Steal the Declaration of Independence Again? Book: The Culture Code Gant Laborde’s Twitter Lucas Reis’ Email: lucasmreis@gmail.com Charles Max Wood’s Twitter Sponsors: Kendo UI Digital Ocean Get A Coder Job Picks: Charles My journey – it’s been a rough year – with my dad passing. Willing to think it and process it, and it’s a healthy thing. Book: The Traveler’s Gift by Andy Andrews Book: The Shack by William Paul Young Gant Book: Harry Potter - Methods of Rationality Magicians XState is amazing! Culture Code - especially if you work remote. The pains that can happen by working remotely. Helps you identify those issues. Talk in Poland – Secret project. Lose the Declaration of Independence. “Where’s Waldo?” I am going to find Nicholas Cage in the audience and he will have the Declaration of Independence in backpack. Fake government website. Justin XState – Not Reactive specific Spellmonger: Book One of the... by Terry Mancour Book: Building Evolutionary Architectures Lucas Book: A Philosophy of Software Design by John Ousterhout
Panel: Charles Max Wood Lucas Reis Justin Bennett (guest host) Special Guests: Gant Laborde In this episode, the panel talks with Gant who has been programming for twenty years. In the past, he has been an adjunct professor and loves to teach. Finally, he talks at conferences and enjoys sharing his ideas. The panel talks about the React State Museum, among many other topics, such as: React Native, Flux, Redux, Agile, and XState. Show Topics: 1:24 – Chuck: What do you do? 2:02 – Chuck and Gant: We met at React Rally at 2016. 2:17 – Gant: I have my own sticker branding with a friend in Japan who is genius. She draws all these characters. They are my business card now. 2:41 – Chuck: React State Museum- talk about its brief history and what it is? 2:54 – Gant: React is this beautiful thing of passing these functional capsules around and managing them. Once you start creating another component, the question is how do you actually manage all of these components? We are all so happy to be on the cutting edge, but state management systems come up and die so fast. For like Facebook, there are 2 people who understand Flux. What happens is Redux is the one thing that shows up and... 6:34 – Chuck: I want to say...I think we need to change the topic. You said that JavaScript USED to be bad at classes, but it’s still bad at classes! 6:52 – Gant: Yep. 7:21 – Chuck: Typescript gets us close-ish. 7:31 – Chuck: Do you get feedback on the library? 8:12 – Gant: The requests that I’ve got - it’s from people who are better at (that0 than me. I wanted to test the lines of code. But that’s unfair because there are a lot of things to do. It really was a plan but what happens is – components that are used in this example is that in this node module... 9:41 – Panel: This is an interesting topic. When you assess any technology...if you are not a technology expert than you really can’t say. That’s interesting that you are doing this an open-source way. 10:25 – Gant: I am a huge fan of this vs. that. I am okay with say “this” one wins and “that” one looses. I don’t declare a winner cause it’s more like a Rosetta Stone. I had to find pitfalls and I respect that for the different perspectives. At the end of the day I do have opinions. But there is no winner. They are all the same and they are all extremely different. Are you trying to teach someone in one day? I learned Redux in 2 different days. 12:00 – Panel: Is there a library that helps with X, Y, Z, etc. 12:16 – Gant: I love for teaching and giving people a great start. I just set state and live life. I had to show what X is like. 13:59 – Chuck: Like this conversation about frameworks and which framework to use. Everyone was using Redux, because it was more or less what we wanted it to do. But at the time it cleaned up a bunch of code. Now we have all these other options. We are figuring out... How to write JavaScript if web assembly really took off? Do I write React with X or with Y. And how does this affect all of this? We had all of these conversations but we haven’t settled on the absolute best way to do this. 15:50 – Panel: This is great, and I think this is from the community as a whole. 17:20 – Chuck: I need to ask a question. Is this because the requirements on the frontend has changed? Or... I think we are talking about these state management systems, and this is what Lucas is talking about. 17:45 – Gant: I think it’s both. 18:43 – Panel: Websites have gotten bigger. We have always been pushing CSS. Panelist mentions Facebook Blue, among other things. What does your state look like? What does your validation look like? We are on so many different devices, and so on. 20:00 – Gant: I agree to echo everything that you all have said. I think the expectations are tighter now; that we have less drift. People are being more cognoscente and asking what is our brand. And it’s about brand consistency. And we are expecting more out of our technology, too. We keep pushing the envelope. What about these features? We want to be feature rich, and pushing these envelopes – how can we build more faster with less complexity while building it. You have to put that complexity somewhere. It’s interesting to watch. 22:00 – Chuck: How do we use this React State Museum...where are we going next? 22:19 – Gant: It’s a loaded question. Being able to ID new and interesting concepts. If you had a terrible version and Redux comes along, Redux is great for some companies but not all. You won’t see bugs that are crazy, there is a middle-wear, and maybe for your team going into Redux will make things more manageable. 25:25 – Advertisement – Digital Ocean 26:05 – Panel: Understanding your problem is the first thing to do. Talking about evolutionary architecture – to build your software to evolve. What does tha fit really well? So if you have to pick something new you are in a good position. What are my needs? Don’t look too much forward or 27:38 – Chuck: Advice on looking at your problem-sets? 27:52 – Panel: We have gone from planning too much to not planning at all. I don’t need to plan for too much or else it will “hurt” me. 28:42 – Chuck comments and mentions Agile. 29:29 – Panel and Guest chime in. 29:39 – Panel: I worked on a project (3 months) we needed to do a big change. I asked them why didn’t we take that into consideration. And their answer was... 30:30 – Gant: You might get away with... 30:55 – Chuck: What are some of the knobs on this? If I turn this know Redux is looking good, but if I do this... 31:12 – Gant: There are a lot of attractive knobs. Using app sync, not using app sync. 32:33 – Gant: Is your app really effective? That’s your first important question. How much state do I need on the frontend. And vice versa. 34:02 – Gant: How easy will this be to test? Can I teach someone how to do this? If I cannot teach it then it won’t do my team any good. 34:35 – Panel adds in comments. 35:08 – Gant: Looking at tests. 37:25 – Panel: If you have a great backend team then you can move the work across the team. You have a strong team to move that work along that line – normally you can’t cross that sort of thing. 38:03 – Chuck: There are so many options, too. I see Apollo getting reach here. I don’t see it as a statement tool instead I see it as... 38:31 – Panel: Apollo State – seems like they are pushing the envelope. It’s interesting to watch. 38:54 – Chuck. 39:12 – Gant: I am going to go ahead and use this tool – I am not going to worry about it. But now you are being held accountable. 39:29 – Panel: Question for folks: React not having a blessed ecosystem can hold people back in some ways? You have the freedom to use what you want. Here are the tools that you can use. Do you tink it be better if the Facebook team could do... 40:20 – Gant: I find that I don’t like (being told) this is what you will be using. I am a person with idea. We’d all be using Flux and all be very upset. 41:00 –Then there would be 3 people who don’t understand it. 41:17 – Gant: I loved Google Wave. Fool on my once and shame on me twice... Google Video! Google comes out and says here is BLESSED and you don’t have any choice. But it’s any author for themselves. It’s a little bit silly 0 I would like a beacon from Facebook saying: Here is a guide. It seems that they can’t focus. They are running a large company; I would like to keep it open – friendly energy. 42:24 – Chuck: I am mixed feelings about this. It only plays as far as people play into it. IN a React community there are so many voices. They all have opinions on what you should/shouldn’t use. The one thing that I like about a blessed / recommended stack – brand new person – it’s a good place to art. After that if they realize that Flux is hard then they can go and try other options. There are other things out there; there is a good balance there. 43:36 – Panel: That is the Angular way right? 43:38 – Chuck: Yes but Angular is more opinionated. It’s a different feel. 44:38 - Panel + Guest continue this conversation. 45:00 – The book DRIVE is mentioned. 45:21 – Gant: ... we need more recommendations. 45:43 – Chuck: Let’s talk about Repot and how to use this? If you go and get Repot – Google React State Museum it’s really easy. How should people come to this and pick it up? 46:18 – Gant: The table that comes in there – it links to the main Repot. A lot of people showed up and contributed. First of all show up. Gant mentions a sandbox link – and he talks about getting your hands dirty. React Native is mentioned, too. 48:10 – Gant: There are many opportunities for contributors. I could use my links. Typos, documentations, etc. - anything friendly is accepted here. 49:20 – Gant continues this conversation. 50:33 – Chuck: Anything else to dive into? 50:41 – Panel: I think there could be other things you can bubble up 51:26 – Gant: I would love some help with that. I did have some contributors write some tests. I wrote a test – 4 hours later – and it tells me if it passed or not. It has to go into a new directory, and work in Android, etc. It’s insane testing library. Then there are some checks to see if there is a link in the README. Animation if there is anyone who wants to do some cool stuff – like modules. Maybe it’s apple to oranges comparisons there. I would like to identify that for people. We would like some outside feedback out there. The more the merrier to help with the data is out there. Sanity check complete – yes! 53:24 – How to do that? 53:31 – File a ticket to help contribute. So you can say: I will do this. If you do it in a reasonable amount of time, then heck yes. If you do some open source...Do 10 (I think) and you get a free t-shirt? 54:28 – Advertisement. Links: Kendo UI Ruby on Rails Angular Get A Coder Job Redux Agile A Philosophy of Software Design – book XState Book: Spellmonger Did Someone Steal the Declaration of Independence Again? Book: The Culture Code Gant Laborde’s Twitter Lucas Reis’ Email: lucasmreis@gmail.com Charles Max Wood’s Twitter Sponsors: Kendo UI Digital Ocean Get A Coder Job Picks: Charles My journey – it’s been a rough year – with my dad passing. Willing to think it and process it, and it’s a healthy thing. Book: The Traveler’s Gift by Andy Andrews Book: The Shack by William Paul Young Gant Book: Harry Potter - Methods of Rationality Magicians XState is amazing! Culture Code - especially if you work remote. The pains that can happen by working remotely. Helps you identify those issues. Talk in Poland – Secret project. Lose the Declaration of Independence. “Where’s Waldo?” I am going to find Nicholas Cage in the audience and he will have the Declaration of Independence in backpack. Fake government website. Justin XState – Not Reactive specific Spellmonger: Book One of the... by Terry Mancour Book: Building Evolutionary Architectures Lucas Book: A Philosophy of Software Design by John Ousterhout
Panel: Charles Max Wood John Papa Alyssa Nicholl Joe Eames Shai Reznik Ward Bell In this episode, the Adventures in Angular panel talks about what Ward is doing currently, which is working on a large, complex, and involved application that they are using Angular for. They are using this episode to discuss a real-world Angular project or real “Ward” Angular project. They talk a little about what the project is, challenges he has had to overcome, and the differences that come with writing apps in reactivity. They also touch on the idea that “the mystery is part of the pattern,” reactive forms, and more! In particular, we dive pretty deep on: Get a Coder Job course Angular Ward’s project intro Ward runs a business that builds applications for people Taking lead on a new project ngRx data Redux and RxJS His company makes Breeze Needed an enrollment app Didn’t want to use Breeze, they wanted him to use reactive programming Needed the application to be as simple as possible Why he decided to give reactivity programming a chance Challenges he’s faced Writing enterprise apps in reactivity Immutability Forms over data apps Reactive forms The mystery is part of the pattern Effects Debugging tools Reactive pattern Discovering new ways to code Reactive programming brings in a different set of problems, but it’s not that it’s right or wrong React State Museum And much, much more! Links: Get a Coder Job course Angular ngRx data Redux RxJS Breeze React State Museum Sponsors Angular Boot Camp Digital Ocean Get a Coder Job course Picks: Charles The Traveler's Gift by Andy Andrews The Shack by Wm. Paul Young John Framework Summit Angular Mix Joe Dungeons and Dragons Lutron Caseta Wireless Smart Lighting Dimmer Switch with Amazon Echo Shai Akita Netanel Basal’s Medium Inside Ivy: Exploring the New Angular Compiler by Uri Shaked Ward Virgin Galactic’s Rocket Man
Panel: Charles Max Wood John Papa Alyssa Nicholl Joe Eames Shai Reznik Ward Bell In this episode, the Adventures in Angular panel talks about what Ward is doing currently, which is working on a large, complex, and involved application that they are using Angular for. They are using this episode to discuss a real-world Angular project or real “Ward” Angular project. They talk a little about what the project is, challenges he has had to overcome, and the differences that come with writing apps in reactivity. They also touch on the idea that “the mystery is part of the pattern,” reactive forms, and more! In particular, we dive pretty deep on: Get a Coder Job course Angular Ward’s project intro Ward runs a business that builds applications for people Taking lead on a new project ngRx data Redux and RxJS His company makes Breeze Needed an enrollment app Didn’t want to use Breeze, they wanted him to use reactive programming Needed the application to be as simple as possible Why he decided to give reactivity programming a chance Challenges he’s faced Writing enterprise apps in reactivity Immutability Forms over data apps Reactive forms The mystery is part of the pattern Effects Debugging tools Reactive pattern Discovering new ways to code Reactive programming brings in a different set of problems, but it’s not that it’s right or wrong React State Museum And much, much more! Links: Get a Coder Job course Angular ngRx data Redux RxJS Breeze React State Museum Sponsors Angular Boot Camp Digital Ocean Get a Coder Job course Picks: Charles The Traveler's Gift by Andy Andrews The Shack by Wm. Paul Young John Framework Summit Angular Mix Joe Dungeons and Dragons Lutron Caseta Wireless Smart Lighting Dimmer Switch with Amazon Echo Shai Akita Netanel Basal’s Medium Inside Ivy: Exploring the New Angular Compiler by Uri Shaked Ward Virgin Galactic’s Rocket Man
Panel: Charles Max Wood John Papa Alyssa Nicholl Joe Eames Shai Reznik Ward Bell In this episode, the Adventures in Angular panel talks about what Ward is doing currently, which is working on a large, complex, and involved application that they are using Angular for. They are using this episode to discuss a real-world Angular project or real “Ward” Angular project. They talk a little about what the project is, challenges he has had to overcome, and the differences that come with writing apps in reactivity. They also touch on the idea that “the mystery is part of the pattern,” reactive forms, and more! In particular, we dive pretty deep on: Get a Coder Job course Angular Ward’s project intro Ward runs a business that builds applications for people Taking lead on a new project ngRx data Redux and RxJS His company makes Breeze Needed an enrollment app Didn’t want to use Breeze, they wanted him to use reactive programming Needed the application to be as simple as possible Why he decided to give reactivity programming a chance Challenges he’s faced Writing enterprise apps in reactivity Immutability Forms over data apps Reactive forms The mystery is part of the pattern Effects Debugging tools Reactive pattern Discovering new ways to code Reactive programming brings in a different set of problems, but it’s not that it’s right or wrong React State Museum And much, much more! Links: Get a Coder Job course Angular ngRx data Redux RxJS Breeze React State Museum Sponsors Angular Boot Camp Digital Ocean Get a Coder Job course Picks: Charles The Traveler's Gift by Andy Andrews The Shack by Wm. Paul Young John Framework Summit Angular Mix Joe Dungeons and Dragons Lutron Caseta Wireless Smart Lighting Dimmer Switch with Amazon Echo Shai Akita Netanel Basal’s Medium Inside Ivy: Exploring the New Angular Compiler by Uri Shaked Ward Virgin Galactic’s Rocket Man
Gant Laborde joins us as the special guest to talk about state management in React.
Gant Laborde joins us as the special guest to talk about state management in React.
Special Guests: Brian Douglas and Bex Warner of GitHub. In this episode, the panelists talk about automating GitHub with Probot. The origins of Probot are discussed, as well as making GitHub apps with the GitHub API, automating workflows with Probot, must-have Probots for every repo, and GitHub's V4 GraphQL API. References: Microstates README Probot github.com/integrations/slack github.com/marketplace/pull-reminders platform.github.community/c/integrations probot.github.io/apps/unfurl-links/ probot.github.io/docs/deployment/ probot.github.io/docs/extensions/#scheduler probot.github.io/community This show was produced by Mandy Moore, aka @therubyrep of DevReps, LLC. TRANSCRIPT: ROBERT: Hello everyone and welcome to Episode 105 of The Frontside Podcast. I'm Robert DeLuca, the director of open source here at the Frontside and I'll be your episode host. Today, we're going to be discussing automating GitHub with Probot with Brian Douglas and Bex Warner. I'm really excited about this topic. The idea of automating GitHub workflows with bots is amazing. This is something that I've been wishing the GitHub have the platform support for since I even started using GitHub for open source. Just being able to have a bot to take care of certain things like somebody doesn't leave enough of a PR description and they open up a PR, you can have a bot that just responds to it and saying, "Can you provide more information?" It's pretty awesome. With me as co-host today is Charles Lowell, who is also a developer here at the Frontside. Hey, Charles. CHARLES: Hey, Robert. ROBERT: Before we get into the discussion, I like to make a tiny little announcement. We've been building a composable and an immutable state container called Microstates. I'm sure Charles can talk about this more at length, then we will in the next podcast episode -- 106, but I would like to make a small announcement that Taras who is an awesome developer here just wrapped up a month's worth of work, creating a new ReadMe to describe the vision of Microstates and what you can do with them and everything about Microstates. If you're interested in that, I highly recommend checking out the ReadMe. I'll drop a link in the show notes for you that are interested. CHARLES: If I can add, it really is [inaudible] because it isn't like any other state management solution out there. ROBERT: No, absolutely not. I've been building something with it in React Native over the weekend of the 4th of July and it's amazing. But enough about that, you'll hear about that next episode. For this episode, I want to talk about Probot with Brian and Bex. Hi are you two doing? BRIAN: I'm well. BEX: I'm good. Thanks for having us. ROBERT: No, thank you for joining. This is really exciting. Like I said in the intro, I've been really excited about this project. I do a good amount of open source, I would say and this has been really helpful in all of our repos. We have, I think like 78 open source repos on the Frontside. We have Microstates, like we just talked about and Big Test and all of those repos use some combination of Probots that people have built and it's really nice, especially with the new Checks API that has just come out. You can integrate Probot into that, right? BEX: Yes. I, actually am currently working on shifting one of our bots from using the commits Statuses API to the Checks API. ROBERT: That's awesome. Before we go too deep into it because I want to come back to that because that sounds really cool and what the integration of that is like and what changes because I'm not even really that familiar with it. I just know it was released. I kind of want to go from the beginning here. Where did Probot come from and can we get a little bit of a history for everybody that might not know what Probot is? BEX: Sure. Probot originally started out as this simple idea to make GitHub scriptable. The original idea was you have a single file in your repository that would be like a JavaScript file and it would essentially spell out how the bot would act on your repository and the goal was to make GitHub apps accessible to people because if you ever look through our GitHub apps documentation, I think it can be a little tough to get started. There's, honestly, a lot of nonsense that you have to go through in order to get set up. For one thing, the way our GitHub app authentication works is it requires a JSON web token followed by using that JSON web token to request an installation access token and that process would be really tough for new people to get started. ROBERT: Yeah, it sounds like it. BEX: Yeah, so Probot was created to abstract all of that away and handle all of that authentication automatically and simply leave you with the payload that you get from listening on web token events and in authenticated GitHub client to make authenticated API requests while authenticating as an app. ROBERT: Cool, so that's where it started like a flat JavaScript file in the root but today, you use like EMO files and a .GitHub folder. How do that kind of progress? BEX: Originally, their use case was much simpler and it quickly became clear that a single JavaScript file in the GitHub repo was not scriptable enough and not easy enough to understand. The goal was to make like an API that could make that JavaScript file really, really easy to customize for every API of GitHub and it quickly became clear that that was not really a feasible thing to do. as time went on, it turned into this way to build Node JS applications and essentially, what the configuration files you're referring to are the way in which we make it customizable because right now, there's no way to be officially supported GitHub apps channels to pass secrets because it means you're a [inaudible] and the owners of GitHub apps, so that was just a way to kind of stop that problem. ROBERT: Gotcha, okay. BEX: The actual code for GitHub apps still lives in a Node JS module basically and the configuration file just specifies how that module runs. ROBERT: Right, so they're deployed like Heroku instances, if you want, like anywhere you can host a node app. BEX: Yup. Heroku, Now, yeah. ROBERT: Interesting. BRIAN: As a reason to that, some explorations of doing serverless deployments for Probot, I think there's a couple of issues of them. I'm not sure if anybody's shipped anything like the way they at but it's pretty much it's possible to. BEX: Just a week ago, we even released a new version in which we update our core from Node JS to TypeScript and now that things are typed, we have big plans for serverless. ROBERT: Nice. That's awesome, so then you'll be able to deploy to a Lambda and off to [inaudible]. BEX: Exactly. CHARLES: Can I actually interject here, as kind of a person who doesn't really know the relationship between GitHub apps and the GitHub marketplace and what exactly a Probot is before we hear the origin story. I would love to hear a very high level view of how this ecosystem fits together. BRIAN: I think a lot of people are pretty familiar with interacting with the GitHub API and OAuth integrations. I think I've just spent a lot of time at different companies previously to GitHub, just like making calls, either to cURL or through Node JS or more recently, [inaudible]. GitHub apps itself are a way to take all the things that you had to do to make an integration to GitHub much easier. It has a lot of cool things like OAuth, scopings, so you no longer have ask for all your repos ask access whenever someone logs in with GitHub and the connection between like, "Now have gone from OAuth to Now to GitHub apps," there was a lot of, as Bex mentioned earlier, ceremony that happens to getting set up with GitHub apps and integrations that Probot is like this tool to speed up the process of getting to the point where you just want to script some automation or some sort of workflow and it gives you all that bullet play for you. I don't know if that was a good high level for you Charles. CHARLES: Yeah. I've kind of witnessed this second hand with Robert installing a bunch of things here, so let's use an example, like you did some sort of automation on our repos, Robert, where when someone files a ticket, there's this workflow that automatically adds a triage label, so that we know that this thing hasn't even been dealt with, so we really need to address that issue. It doesn't need to be as a high priority. It doesn't need to be closed as a duplicate of something. One of the different aspects that you described there, how do they fit in terms of serving this workflow onto the end user? Or was that a good example, even? BRIAN: One of the cool thing about GitHub apps and what Probot does for you is that normally, if you want to add a label to an issue, either you Charles or Robert, would have to be admin or maintainer on the team for the Frontside and you could add labels. But somebody who opens up an issue, doesn't have that ability to have write access to your content, which is adding a label. What a GitHub app does, it actually takes a spot as if you would have another user on your platform, instead of creating a dummy account or a dummy user. Probot is basically building a bot for you to then, give you the ability to add that issue. That's sort of workflow that normally would have to happen through an actual real human could not happen through a bot without taking up a spot of like, "I guess, I probably shouldn't speak so ignorant about our platform and what we actually pay for nowadays for GitHub," but I know we used to have like a limited amount of seats for organization, like that seat no longer has now taken up and now, it could be just be used a bot can do something that normally us would take. ROBERT: Right. You no longer have to create a user to do these things. BRIAN: Correct. BEX: [inaudible] within GitHub. It's sort of built in a way that apps can take a lot of power in your repositories. CHARLES: So then, what is the relationship between Probot and an app? BEX: Probot is essentially the framework for building an app. You can definitely make the equivalent of any Probot app outside of Probot. It abstracts away all of, basically, the horrible parts and leave the easy part. CHARLES: Now, I think I'm ready to participate in this discussion. ROBERT: That was perfect, though. That's a great intro because I actually didn't have a total grasp or understanding of the relationship between GitHub apps and Probots. That's really good. BEX: Yeah. Additionally, going back a second. You mentioned the marketplace before. One thing to note that is that there actually are several Probot apps on the marketplace right now. The marketplace is essentially the home for any larger, usually third-party companies that have made apps and Probot is essentially supporting some of those. ROBERT: Interesting, so then my question would then be, do you know anybody selling their Probots. Does the marketplace charge? I'm going to assume it does. BEX: Yes. ROBERT: Okay. Is there anybody charging for their Probot? BEX: Yes. There is a quite a few, in-fact, charging for it. Recently, a pretty popular example is the GitHub Slack integration, which is if you open new issues, you can have them appear in your Slack channel. That whole application was recently rewritten by GitHub. It was previously owned by Slack and that was built on top of Probot. CHARLES: And I actually remember, we upgraded to that version. It's actually way, way, way better. BEX: I'm glad you feel that way. CHARLES: I didn't know the story behind there. I was like, "Oh, I just got a lot of... Awesome," you know? Although I don't know what's the costing. BEX: Yeah, I think that integration is actually free, so that wasn't the best example. I think it's for open source projects, at the very least. BRIAN: Brandon, one of the maintainers for the Slack integration and work at GitHub, also did a really cool talk at the SlackDev Conference a couple of weeks ago, so if you're interested what were the behind the scenes. That integration is all open source as well, so if you have request or you have features that you would like to add to the Slack integration, you can pop into the repo that hopefully will show up on the show notes because I'm not sure if it's like GitHub/Slack, but I guess we'll find that out in the show notes later on. BEX: It's Integration/Slack. BRIAN: But for an example of a paid app of a non-third party, we're not talking like Travis or Circle or another one with the big names but rather, a solo dev created. It's Pull Reminders, which is on the marketplace as of today and essentially, this gives you reminders of your pull quest, so you can actually ping inside the comments and tell Pull Reminders to say, "Tell me about the pull request like next week because it's Friday and I don't have time to look at this." ROBERT: That's awesome. I've also seen the one that's kind of related, that is like you can set your out of office at GitHub, which is actually kind of a neat concept. BEX: Was that the one where we are already changing that profile photos to have the overlay or the one where is just auto-replying to messages because I've seen a couple of -- ROBERT: I think, it's just auto-replies. BEX: Okay. CHARLES: So, it can change like your profile pictures and really, not just related to repo and history related activities but everything? BEX: Anything that you can access via the GitHub API, you can almost access via GitHub apps. There's a list of end points that I specifically enable for GitHub apps because there's something such as delete a repository that there's basically, a very few circumstances under which you want to give that permission to an app. Also, to things very specific like your profile or your personal page. About a year ago, there was an official internal audit of all of the API endpoints because there are lots of inconsistencies over what was and what wasn't enabled for GitHub apps, so they went there and kind of decided, what endpoints should be enabled and what endpoints actually get enabled. Now, that list is much longer than it was a year ago. Now, it's much more comprehensive. ROBERT: That's awesome and is this for the Rest API and the GraphQL API? BEX: Yes. Probot does support both. The Rest API is the one that specifically had all of these endpoints audited. The GraphQL, since it's a bit newer, we sort of built those and more. ROBERT: Cool. I really like working with the GraphQL API with GitHub. It makes it easier than trying to do a bunch of Rest calls. BRIAN: Yeah, there's a community form, it's like a discourse form that the API team actually manages and sort of pipes in there. Again, going back to like, if there's not something in the Slack integration that you would like to have, the form, that community is actually in there, if there's something not in the GraphQL API, that you would like to see. No promises on shipping it within an x amount of time but if enough people are requesting it obviously, there's going to be some resources [inaudible] at. ROBERT: What do you mean? We're doing open source. It has to be done yesterday. BRIAN: Yeah, exactly. And that form is at Platform.GitHub.Community, just a URL to get there. ROBERT: Awesome, that will be helpful to look through and get some recommendations in there. One of my favorite things I was going to say about the new integration for Slack and GitHub is the fact that I can highlight line numbers, paste that linked in and then it just expands it and the chat in Slack. That is so nice and I use it all the time. BEX: Yeah, I love that they built that feature. Actually, the original feature that was built on GitHub to allow those line expansions in the first place, like on GitHub itself, was actually built last summer by some folks who were also a part of my intern class at GitHub last year. ROBERT: Hey, intern power. That's awesome. BEX: Yeah. ROBERT: Everyone there is doing amazing work. I'm also following along with somebody that is also an intern and it's building a weekly digest program. BEX: Oh, yeah. That's actually a Google Summer of Code student. ROBERT: Oh, interesting. BEX: So, being sponsored through Google Summer of Code by Probot as an open source support. ROBERT: Is there anything more to unpack there? That sounds really interesting. BEX: Essentially, we submitted an application for Google Summer of Code because we thought it'd be a cool way to get more people, more students, a mentorship opportunity for the maintainers, basically and we were honestly overwhelmed. We got like almost 100 applications and it ended up being a huge of a deal but we're -- ROBERT: That's a great problem. BEX: Yeah, definitely a good problem but we were really happy. We, initially wanted to accept more students but Google limited us to only two students, so we have two Google Summer of Code students working on projects and one team of women from Rails Girls Summer of Code working on Probot. ROBERT: That would be awesome. What do they working on? BEX: I'm not sure yet. They actually just started a couple of days ago but the other Google Summer of Code student is working on a background checks API to eventually do sentiment analysis of comment history of someone new to your repository. ROBERT: That's interesting. That sounds like there will be some machine learning in there. I might just throwing out buzzwords? BEX: Most likely, I think they're just using some sentiment analysis API, like the perspective API. I don't think they're actually doing that themselves. ROBERT: Okay. CHARLES: Actually, I have a couple questions. Back on the subject of Probot. How does this square with the classic mode of integration because there was a lot out there? I think the first one that I remember that stuck in my mind was like Travis and I don't know if there had to be like a special relationship between the Travis developers and the GitHub developers, that's like, they was able to make that integration happen so many years ago. I don't know how that happened. I just remember it popped up and I was like, "Woah. This is incredible," and we see kind of the integrations gets more and more rich. For someone who's got, like you mentioned a couple of the big names, is the idea that eventually those would be able to be completely supported is GitHub apps or is it they're always going to be kind of a separate track for kind of the really deep integrations? BRIAN: I wasn't around when Travis first integrated with Lyft GitHub and I think that's a really cool integration and I know they have a very nice sized team that's able to do that. I think if we zoom back out like Probot, the way to get started with Probot is that we have the CLI command, which is to create Probot app. I believe it was intentionally copied off of create React app and the cool thing about create React app and create Probot app is that they abstract all the ceremony and boilerplate to get started really quickly. It was like, what developers or smaller teams can get started with integrating with GitHub apps. I highly doubt that Travis is going to rewrite their entire application with something like create Probot app but they're definitely going to be moving towards the new API calls, which would have been like GitHub apps. Part of the Checks API that we had launched at the end of May, Travis had blog post on how their integration with the Checks API works. They're making, though they have a lot of what Legacy endpoints and a lot of Legacy integrations in the way they integrate with GitHub, they are actively moving towards a GitHub app. I don't know if I could actually comment on their status of where they are today, to be honest but actively, we want all new apps and new integrations to follow the model of being a GitHub app, so that way, out of the box, you have access to all the newer features. You have all the access to all the newer GraphQL endpoints, if you want to use GraphQL and that way, we can serve one market, as opposed to everybody who had a GitHub integration from five or six years ago, that was all piecemeal together and sort of duct tape, like we run move away from duct tape everything together. CHARLES: I see. BEX: I definitely agree that I don't think Travis is going to switch to using Probot anytime soon and I don't think most of the large companies will be doing that but I do think, there will be shift towards GitHub apps in general. For those companies that don't already have the buildings of the GitHub app started, I think that Probot could be, in time to free some of them. BRIAN: In addition to that too, Travis and Circle and all the CI integrations, they're doing a really good job. I think the cool thing about GitHub apps is what you take away all that ceremony of getting your checks to work, now we can start opening up the door of like what's the next sort of CICD thing like? There's another term or another, I guess category of applications that can now be built to improve GitHub. CHARLES: The most amazing thing about having a great platform is the apps that you don't foresee, like it just come completely out of left field and you're like, "Woah. I can't believe that's actually a possibility now." When you have started to see some of those, some Probot or GitHub apps, you're like, "Man, I didn't see that coming. That's awesome." BEX: A hundred percent. I think it's the most exciting part of Probot because I think GitHub as a platform, we all know GitHub is the largest developer platform in the world and I think the idea that developers can build on top of this platform is the most exciting idea right now. I have honestly already seen apps that really excites me. The other day, I saw this app that was definitely not near completion but it was essentially updating and issue a comment box over and over and taking response through like checking a box and then listening on that common edit, in order to specify your coffee order. ROBERT: Woah. BEX: I was like, "Do you want an ice coffee or regular? Do you want milk or sugar and cream?" and it was going one at a time. It didn't actually order you your coffee at the end but it was super exciting to watch that. You're just editing the comment. I had never seen that before. ROBERT: That's pretty slick and that's taking the API pretty far. I'm sure there were some parsing in there and each Webhook response are like, "Was this box edited or not." That interesting. CHARLES: Yeah. Actually, now that we're having this discussion is kind of like changing my mind a little bit. Robert and I were actually talking yesterday about trying to standardize on our release management and our plan was basically to have some software that was going to run inside of our CI provider and have kind of a shared library, just a little ntm package that was shared by all of our repos but I'm thinking now, man, we should really explore doing this as a GitHub app. ROBERT: Yes, please. I've had three ideas that I really want to build out as a Probot. I'm just going to list them off and then we can build them all together and take equity and you know. I'm kidding. But the two that really excite me, that I kind of want to do is one concept that we work on this open source project for our clients and if somebody from the outside that doesn't have commit bits to be able to push to master, it would be really cool if we had a Probot that after it had an approved on the PR, from the maintainer, that the person that open the PR could then tell a Probot say, "This is approved by somebody that manages this project. Can we merge?" and then the Probot would then actually merge. I don't know if that's possible. That's something that I definitely wanted to explore. Then the other one, which is less cool, would just be like if we have a couple branches on some of our projects that we want to continue and we're not ready to put it back into master but we want to continuously run the test suite against it, so the idea there would be to have a Probot that would watch for changes on master and rebase as needed and continue to run the test suite and see where you're at. Those are the two things that I'm really excited about to do with Probot but I just want to automate everything with GitHub now. CHARLES: Right. BEX: Yeah, definitely, that first idea was actually pretty viable. I'm curious to know like how you actually get those commit links -- is that what you called it? ROBERT: Commit bits are more like commit permissions, I guess. BEX: Oh, I see. ROBERT: An outside contributor. CHARLES: Yeah, we want to push responsibility to the person who is the maintainer who can approve it but actually, the way we do it at Frontside is the person who actually is making the change is responsible for merging it. Once you get approval, you still have to hit the go button and that's just going to make sure that you're taking responsibility for saying it's done but that doesn't work for open source because people coming off the internet are going to have the right to push but we would like to give it to them, maybe via an app, if there is a maintainer who's approved it. BEX: Yeah. That's definitely something you can do. I've seen quite a few apps that, essentially add outside collaborators to the repo. Are you familiar with the... I forgot what it is called, like the all contributor section, where you cite everyone in your repo and everything and who's worked on it. There was a GitHub app that would add someone automatically after they merge their first change. CHARLES: That's awesome. ROBERT: I may have seen that on React State Museum but I'm not sure. It's a repo that we've contributed to and it has all the contributors at the bottom. It seemingly just kind of popped up there. BRIAN: There's an app that, I would like to mention too that I'm pretty excited about, that it sounds trivial too and it's almost similar... Not similar but it's sort of related to what you were talking about, Rob, with your first app, which is the WIP bot, which is the work-in-progress bot. This is a pattern of whenever I open a PR and I might not ready for a merge but I want to share my code so I can get feedback earlier on, I'll type in WIP so that append to my title of my PR. What this engineer did was every time you do WIP, it's going to go into the GitHub API and actually block the PR for merging, which is a feature available to GitHub. It's nested in your settings but the cool thing about this it actually blocks the PR for merging, so you don't have to worry about getting your, sort of like show and tell code merging the master without being ready. ROBERT: That's one of the first bots that I installed on all of our repos and then you can correct me if I'm wrong, it didn't always have the ability to block the PR from being merged but with the new Checks API, is that something that was introduced? BEX: Not exactly. The way that blocking of merging works is if you set it as the required status, so you can install any sort of CI on your account and have it not being required and ignore it whenever you feel like it, so it's really up to you to make it required. Otherwise, it just isn't checked and that's true for anyone who uses the Statuses or the Checks API. ROBERT: Okay, so that's a Statuses API. Okay, sorry. BEX: Yes. ROBERT: Also, the cool thing about that that I noticed when that was rolled out was I was now able to pick and choose and use workflows on Circle CI and each workflow is broken out as a different status check. I am now required like linting and the build and the test have to pass for these browsers before it can merge, which is really cool to be able to pick and choose. BEX: Yeah. It's awesome. I know personally on some of my repos, I have a few checks that I just don't require because I know I have to make them pass. ROBERT: Yeah. Speaking specifically about the work-in-progress bot, do you know how that works? It's open source, so I am sure I can go look. I think we want to go make a PR. We had some back and forth about this, Charles. CHARLES: I actually just [inaudible] we disagree. ROBERT: Yes. Charles opened a PR and one of his first commits in the PR had work in progress and the title had work in progress and we have this this Probot on our website and it was a blog post. You know, you make a couple more commits and you're further down, you move the work in progress in the title but the PR were still blocked because the first commit on a PR have work in progress in it. I think if it's the most recent commit or if it's in your PR title with work in progress, it should block but otherwise, it should not and Charles feels differently. CHARLES: I have about six commits and the very first one have WIP in the title or in the commit message and it blocked the whole thing but I kind of felt like it actually made me go back and I had to squash it down to two commits because I actually feel that your commit history should tell the story of the development, not like it should an absolute one-to-one journal of what happens but what you are intending. I actually felt that it could help me out because there's six commits that we're kind of all over the place and just kind of slapdash together have made me kind of go back, rethink it and tell a coherent story. I think it did me a service but it was not obvious. I definitely agree with that but I was like, "Why? Why were you still blocking?" ROBERT: Do I really [inaudible] admin privileges? BEX: I would say, I am friends with the creator of the web app. His name is Gregory Mantis and he is actually got a huge work in progress PR shifting work in progress over to using the Checks API and one of the features that he's using with the Checks API is essentially this mark as now work in progress button that will add the special line, like feel free to merge or something like that into your original PR description at the bottom. If that is there, the work in progress app will no longer be blocking. It's essentially like a hard override and honestly, that's the power at the Checks API versus the Statuses API. That's really exciting. ROBERT: Because I have seen the work in progress bot to get into a weird state, where I did remove the work in progress from the title but it didn't quite update and I'm still blocked. It's okay for me because I have admin privileges but other people on the team maybe not and they might be blocked from something that's actually work in progress. It's a lot like that hard override will be probably pretty helpful. BEX: Yeah, definitely. I think sometimes, there's some confusion with that just because of the way what perks work on GitHub and the way our pages are rendered, that you may need to refresh the page before you actually see it take effect. ROBERT: Right, yeah. Overall though, I love that bot. I go weekly, probably to the Probot apps listing and just go shopping. BEX: Wow. I'm actually the person who approves all the Probot apps to the listings so that's pretty motivating there. ROBERT: It's really nice. I am not even joking when I say shopping, I go through and I open up a bunch of tabs, I read through them, "Oh, this could be useful," that kind of thing. BEX: The first app you mentioned, which was like the one that requests more info is actually one that I built, so that was kind of funny. I guess you got that from the Probot apps too. ROBERT: Yup. That one, we definitely use on a couple of our organizations and repos. It has yelled at me a couple of times because of a blank PR. BEX: It yells at me all the time. I think I get yelled at more than people who are actually doing it wrong. ROBERT: I'm a little embarrassed like, "I should do better. I need to set an example." BEX: Definitely. ROBERT: Cool. I'm curious what both of your favorite Probot app is. This ought to be interesting. BRIAN: The app that I'm really impressed with so far, that I actually only use on a junk project at the moment, is the weekly digest one and it's mainly because I built something for this in my previous role at the company but then we shift it, which is basically go through every single repo. I worked at a company called Netlify previously and we had way too many repos to maintain... Oh, sorry, to keep track of and I was moving further and further away from the backend at the time so I was unable to keep up to date with all that was changing. I built a Lambda to watch Webhooks and then give me a digest of what was shipped like issues and PRs closed. It was way over-engineered and I never actually shipped that to actually make it work. But then the weekly digesting came out maybe a couple of weeks ago and it blew me away because I was like, "This is exactly what I needed," and I was trying to make it overly complicated through like a Lambda and like a bunch of Webhooks and this person, with only a few weeks, has the scaffolding of what I needed. That's the one thing I'm pretty excited about. It was already mentioned earlier too, as well. BEX: I guess, I would say one of my favorite ones is the unfurl a link app. I think that one it so simple but so nice. I don't know. I think having that unfurl link preview is just beautiful. Essentially what it does is it listens on issue comment creation or pull request comment creation or issues your pull request or whatever and read through the text or whatever was that issue or pull request and looks for links and then, essentially unfurls them so you can get a really nice preview of what you're going to. I think that's really beautiful and just so simple. ROBERT: Yeah. I love that one too. I have that added to all of our repos. BEX: It's so much nicer. Why would you not unfurl your links when you could unfurl your links? ROBERT: Exactly. CHARLES: I actually have a question. I think it's been touched on, probably at least twice throughout the conversation. I want to actually create a Probot, how do I actually go about deploying it? What does that look like? What does it look like to deploy and maintain it? BEX: We have a page on our docs about deployment and essentially the TL;DR is you can deploy it on any normal cloud hosting service that you wanted to deploy it. There are a few things you need to specify. For example, GitHub gives you a private key that you need to create your JWT and that private key means to be passed into your hosting service however you do that and then, there's a few bits of information that need to be pass in. We have pretty intense docs about it. Honestly, I'm not a deployment person. I usually try to let other people do that and I have never had a problem going through our docs and just getting it working immediately. BRIAN: It's also mentioned that there are examples like Heroku and Now and a couple of other ones. If you have a service that you already like, it's possible it's already in the docs, like steps to how to get that deployed. BEX: Yup and any other services are more than welcome to be added to the docs. Pull request are welcome. ROBERT: Sweet. It sounds like we need to set up a hack date to create a Probot, Charles. CHARLES: Seriously, my mind is brewing. ROBERT: I guess it's not directly related to GraphQL but there's something that I've always wanted to build. For prior history to everybody [inaudible], then the podcast, Brian and I used to work at a company called IZEA and one of the things that we built and I worked on a lot was we would create a collect metrics on people's social accounts that they're connected and do that and graph it over time. This idea came from when I was building up that feature all the way back in 2013, I want to graph the change in GitHub stars. Is there an API available for me to see like weekly GitHub stars or is that something that I still have to manually store and track? BEX: There's definitely an API endpoint to get the amount of stars and I don't see why you couldn't just do that on weekly basis and compare but I don't think there's any track that change API. ROBERT: Gotcha, like a history of it. I could do this by just stealing and looking at what the weekly digest Probot is doing because there is a change in stars section in there. I was just curious if there was now an API that was available. BRIAN: Yeah, that's more unlikely. I'm going to say no without looking at all the reference documentation. I think as far as that database, it's something you'd probably have to collect on your own but it's also a good candidate for a GitHub app, where you build a service that you can actually track stars once you've installed it and then if you want to monetize it, you can actually pay for private repo or whatever stuff like that, if you wanted to. But it sounds like a great opportunity to see this in the GitHub/Probot listings. BEX: I actually just look this app really quick in our docs because I was curious but apparently, you can receive the star creation timestamps. That could be doable through timestamp usage. ROBERT: Oh, and then I just kind of loop through back and build your graph in there. BEX: Yeah. ROBERT: Interesting. All right. Well, [inaudible] I was going to do today. BEX: Yeah. But I think it's exciting to bot the weekly digest and then what you could extract from that into stargazing is that Probot scheduler, which is essentially this all Probot extension we made that triggers a Webhook on a scheduled time period because right now, the way GitHub apps works are so centered around Webhooks. It can be difficult to find a way to trigger an action on something outside of a Webhook, like on a schedule basis. ROBERT: Yeah, that would be really helpful. I can definitely see how that would be a problem, if it's very, very central to reacting to Webhooks and events that happen on the system. BEX: Exactly. ROBERT: You're just hoping that somebody comes through and creates an event at a specific time. CHARLES: Can I ask you a question about, it's definitely on topic of extending GitHub but currently, just a question about, where the line is between what you can and cannot extend? You mentioned, for example in the rewrite of the WIP bot, being able to throw out a big button that says override this merge. Are there any plans to be able to actually extend the UI in novel ways? Everything there right now is happening with API calls, with I assume, UI elements that are related but the UI elements are static. If someone wants to put a novel piece of the UI, that button is going to require an extension of the GitHub UI by GitHub itself. Are there any plans to be able to, I know it's a dangerous waters, perhaps at a limited fashion at first but maybe more so, add different interactions and the actual application. BEX: I think this is actually the most exciting future of GitHub as a platform. In the past, GitHub APIs have only specifically supporting things that you can do through the command line or you can do through GitHub's UI itself. The Checks API introduced the very first non-integration specific UI element essentially and the merge button that I was referring to in WIP is exactly that. It's essentially this button that you can change the text of it to be whatever you want and you can listen on that action and then you can do as an integration or an app, anything that you want based on that. I think that's the most exciting direction for GitHub. Because if you look at Slack, Slack is a platform that has sort of really impressive integrations in that response. Your apps on Slack can really do all of these things, use custom UI elements, so I think the most exciting features for GitHub as a platform is all of this customization and giving the power to the apps. ROBERT: Yeah, that sounds an awesome way to be able to extend GitHub without having to try and throw the feature on to GitHub developers. BEX: Exactly. I feel that a lot of the struggle right now is that there aren't these nice ways of communicating via apps because I feel lot of the apps and bots end up just commenting on issues and pull requests and taking up a ton of screen real estate as a result and I just think that that's not the way that bot should ideally interact with the GitHub platform. They should have their own space to exist and that's the feature I'm most excited for. CHARLES: Yeah. I can think of having like progress bars for CI checks and your various appointments. It's too exciting. I'm glad. That's definitely the response I was hoping to hear. BEX: Yeah. We're excited for it too. ROBERT: Basically, you all have a massive community of a bunch of developers that would want to do this and are willing to get their hands dirty on it. Enabling that community is probably the root of all Probot is about. That's super awesome. BEX: Yup. CHARLES: That's a good place to end, because gosh, it's going to be so exciting to have the millions of developers on the planet, just like surgeon to the APIs that you're developing. BRIAN: One thing to add to that too, about the whole million developers, there's a number that's been thrown out from Stack Overflow and also, some other people who are saying like there's 50 million developers, there's 24 million developers. As far as GitHub, our public user number is 28 million, the cool thing about Probot and GitHub apps is that there's a good chance that all those people that are using GitHub today are not actually developers. They're like PMs or designers and what's really cool about this, like having interactions with that kind of platform in this way is that you can now enable all the non-developers to be able to interact with your GitHub repos and start bringing more designers and PMs onto to the GitHub platform to interact with the developers. ROBERT: That is an interesting point. That is awesome and something that I'm always looking for is a different ways to collaborate with non-developers on my team because... I don't know, developers tend to think everything is always centered around code but it's not. The shifting at work that are awesome, needs a lot of collaboration from non-devs and non-dev skills. That would be really interesting to see. I'm excited for that to play out. BRIAN: Yeah. There's a blog post that was published a month ago, I think about where the design team, design system teams rather, built the integration to Figma to update their icons effectively. I just posted that in the chat to look into but they also built this as a Probot app as well. ROBERT: That is awesome. BEX: Yeah, that one is super exciting. You would have the app comment, the diff between what the old icon versus what the new icon look like and it's just such a beautiful design change to be able to see that shift. ROBERT: Man, I'm happy that this is happening. The future seems super bright. Where can we direct people to get resources to contribute, to get involved and start really going at this? BEX: Basically, Probot.GitHub.io has all the Probot stuff, /app has all the listings for apps you can install today, /docs is where the docs are, if you want to get started and hopefully from there, we link up to the necessary things that you need to do. BRIAN: Also, what I mentioned too via Probot Slack channel, there's a Slack channel as well and they do a weekly call. I think, it's weekly or bi-weekly call to actually chat with the Probot community. If you have questions, you can actually bring your questions to the team. BEX: Yeah, we call it 'Office Hours' and it's once a week and it's under our community page, where we also have a link to our Slack. We have a link to another podcast we run and basically, how to get involved in the Probot community. ROBERT: Those are really helpful resources. I do remember seeing that Office Hours. It's on Thursdays, right? BEX: Yes. ROBERT: I was going to drop in for one and then, I actually forgot. Actually, it might be going on as we talk right now in this podcast. BEX: It starts in half an hour, I think. ROBERT: That's awesome. Cool. Well, thank you Brian and Bex for having a conversation about Probot. This is really awesome. Is there anything that you would like to plug for yourselves? How people can get in contact with you? BRIAN: Yeah, I am BdougieYO on Twitter. Everything you need to know about me is there and I am happy to say hello. I'm also helping with the GitHub developer program, which is sort of getting a soon-to-be announced rebranding. If you go to Develop.GitHub.com/Program and you want to have more conversation about the API and GitHub apps on the GitHub side, you can go there to sign up. BEX: And I am HiImBexo on Twitter. You can ping me in any Probot stuff. I'd be happy to look at any Probot code. I've been looking at it for a while now so I'm happy to do that. ROBERT: That's awesome. Thank you all for having a conversation with us. This was really fun. I'm so excited about everything you can do with Probot. This is a really fun project. I'm happy that this is happening and I will make a Probot in the future. CHARLES: I'm looking forward too. Robert has been excited for quite some time and he definitely talks a lot about it and now, I have some insight as to what -- ROBERT: It's happening, I'm telling you. Well. Thank you for being here and we are the Frontside. We build UI that you can stake your future on. We are specializing in JavaScript. We can build anything that you want throw at us. We do functional programming, React testing, Vue, anything in JavaScript, we specialize in. As always if you want to suggest anything for us to have on the podcast or talk about, you can reach out to us at Contact@Frontside.io and like I teased earlier in the podcast, next episode is going to be all about Microstates, the immutable and functional state container, composable model system that we've been building, it's controls as a brainchild for the past two years. That is next episode and I'm really excited about that. It's a really fun API and expressive to build models with. Thank you, Mandy for producing our podcast and we'll see you next episode.