Podcast

Duck Tapes Transcript: React Native with Gant Laborde

Duck Tapes
Nov 25, 2019
0
Gant Laborde jumps in the duck pond to talk React Native, agency life, Progressive Web Apps, and running Chain React Conf in Portland each year.

Duck Tapes is available at ducktapes.fm or anywhere you listen to podcasts. Below is a transcription of 11/15/19's episode featuring Gant Laborde.

John Haupenthal: Wow.

Gant Laborde: Yeah, guitar.

John Haupenthal: Welcome to Duck Tapes, a tech podcast for duck heads. I'm your host John Haupenthal, and today I'm welcoming Gant Laborde into the duck pond to talk about-

Gant Laborde: Hello.

John Haupenthal: Hello. Today, we're going to start off by talking about really the only tech topic that I can discuss with any breadth of knowledge, really, which is React Native. So first, Gant thanks for coming on.

Gant Laborde: Oh, absolutely. It's always a pleasure.

John Haupenthal: And from what I understand, you work with React Native quite a bit.

Gant Laborde: Yeah, I just keep it in a jar right here on my desk. So pretty much I'm technical now.

John Haupenthal: So whenever you need it, it is there.

Gant Laborde: Yes. Exactly.

John Haupenthal: And you work for a tech agency, correct?

Gant Laborde: Yeah, yeah. So React Native, for us, is at the core of what we do. We're listed on Facebook page, we do the React Native newsletter, which, if you go to Facebook's page and sign up for React Native newsletter, that's us. It's actually my buddy Frank, who is the Editor in Chief, and he works really hard on the newsletter every week. We do the React Native conference in Portland every year, the US React Native Conference.

John Haupenthal: Oh wow.

Gant Laborde: And I've spoken at the Amazon React Native conference. That's an internal conference for them. You have to either be invited, or work at Amazon, but so they have one. And I've spoken at the React Native conference in Poland two years, and I didn't go this past year, because I had beautiful baby girl named Mila.

John Haupenthal: Oh, congratulations.

Gant Laborde: Thank you, thank you. You might hear her during this podcast at any given moment.

John Haupenthal: Awesome. We'll hear from her, and we'll hear from my dog, so.

Gant Laborde: That is perfect. They can talk. And then so instead we sent our CTO Jamon Holmgren, he went over there and he killed it, and then he went to Amsterdam and did a talk. Oh, also I've given talks in the React Native room at the React Summit at Amsterdam. So yeah, it's a lot of fun. [crosstalk 00:02:21] I do a lot of...

John Haupenthal: So safe to say is yeah, that you're pretty heavily involved in the community. What is it about Poland and React Native? Because I think that's where Krzysztof... Yeah, I can't think of his last name right now, but the guy that came up with React Native gesture handler and React Native Reanimated, which are two [crosstalk 00:02:40]

Gant Laborde: Are you talking about... Yeah, okay, okay. Yeah.

John Haupenthal: K-Z-Z-Z-F is him on Twitter, which is easier to say than his name. And so I started noticing online that there are meetups and quite a few conferences over there, so there must be something in the water, I don't know.

Gant Laborde: Well, I can tell you the Callstack group is just Mike Grabowski sort of started getting involved, and I remember meeting with Mike early on, and he's one of the owners of Callstack, and he has jumped in and did open source immediately, and they are an excellent set of engineers over in Poland. I actually really enjoy, I've been to their office, they're really cool but I mean I'd say they're a significant driving force. They're sort of our friends across the pond. Sometimes maybe we might even bid on the same project, but in any case, we love it when they're doing well, and they love it when we're doing well.

Gant Laborde: We supply a table for them when they come over for our conference, and they throw the conference in Poland so and they supply a table for us. So it's just a really cool setup, and I definitely recommend getting a table at either of those conferences if you're interested in React Native, and getting more React Native devs, because that's where I think the big announcements happen every year. For instance, I remember tons of really cool announcements when I was over there in 2018, including just some of the best talks I've ever seen. And then also this year, in Portland, Portland, Poland, they're close enough, right?

John Haupenthal: Right, right, right. First two letters.

Gant Laborde: Yeah, Facebook announced Hermes at our conference over here in the states. So if you've watched the Hermes video, you've seen us. Yeah, so that's been a lot of fun. Y'all should definitely jump on a newsletter, because we always have early bird tickets and discounts early on, and that's honestly the best time to buy that ind of stuff, and so does Callstack.

John Haupenthal: So where would we sign up for that newsletter?

Gant Laborde: Here's the secret, you can go to chainreactconf.com and that will redirect you. That's actually what I type every time, but the actual URL is infinite.red/chainreactconf and then there'll be a newsletter you can sign up for there. I think the button's like sign me up. And then once you're on that you should be good. And then I think Callstack, it might be their official Callstack newsletter is where they put the announcements for that. I'll have to check back with you and let you know on that one. So I don't think they have a separate one for the conference and for the business, I think it's all one. But definitely check the Callstack site and see about that tone.

John Haupenthal: Yeah, we'll link to them in the show notes. I'm curious, how many years have you been doing the Portland conference?

Gant Laborde: It's three years now.

John Haupenthal: Awesome, and have you noticed it grow quite a bit?

Gant Laborde: Yeah, so I could tell you React Native has been... It's really, really exiting because I think the first year a lot of people were interested in almost like novelty's sake.

John Haupenthal: Yeah, absolutely.

Gant Laborde: It was like, "Hey, I can do this. Let's go see. I want to see if this is true."

John Haupenthal: Right

Gant Laborde: Then you have Swift starts pushing a couple of new buttons, Android starts trying to come out with Kotlin, you start to have this serious market... Oh, and don't forget, all those people who love Dart.

John Haupenthal: Yeah, yeah. Where you at now, Dart?

Gant Laborde: So what happens is I think that as you're coming over, we've seen a growth in the industry, and one of the coolest stories that we had was one person came to the conference, and they were like, "Hey, I want to learn about React Native." The next year we saw them again, and they were like, "I have a job doing React Native because I came to this conference, so."

John Haupenthal: That's awesome.

Gant Laborde: Yeah, it's really rewarding kind of stuff. Community always is. Always is.

John Haupenthal: Yeah, and especially with React Native. I mean, in the last three years, the trajectory has been insane, because it did go from something that felt like is this really going to work? Everyone's kind of looking at each other like this is fun, but is this feasible for production apps, and I think now we can safely say that it is. I mean, it's still struggling to match native I guess performance in some areas. [crosstalk 00:07:52] but with those libraries that I mentioned earlier.

Gant Laborde: In a small area, yeah.

John Haupenthal: Yeah, I mean with the reanimated and the gesture handler library, I feel like those took care of so many of the problems that were huge blockers. So it's just been awesome to see it grow so much. And there are still some people that are, I don't know, they're skeptical, and I try to be the shining light and say, "Guys, guys. Let's stay positive, it's going to work." But there are still some holdouts.

Gant Laborde: I'll say this, I guess a little bit of a dig in deeper into it. I mean, you had the Airbnb sort of like, "Okay, we're not happy." And then you have Flutter come out and like, "Oh, yeah." Google's so good at sort of making a product facing towards developers, but Google's so bad at making you have confidence in what that product is, and it does a couple of weird things. They're like, "Okay, Google's going to be releasing this." And you're like, "What about all of that?" And they're like, "Oh, yeah." It'll be there for at least a week, I just had trouble with it. So every time I dig deeper into Flutter and everything I end up usually kind of coming back out of it saying "Eeh." And then I take a look at the Airbnb stuff, and I wound up talking to Leland Richardson, who worked at Airbnb, and I think that for that company, and for the needs that they had, and having a Brownfield app it made sense for them.

Gant Laborde: I don't know why they did a giant blog post on it, I feel like that was... It was informative, but the side effect of it is, I'll say this. Facebook has had to grow. They've had to significantly answer those questions, and I think you see a lot of that in Hermes. They've had to adapt and start to actually market towards developers more. I've seen more Facebook engineers at conferences in the past year or two years than ever before

John Haupenthal: That's what I was saying.

Gant Laborde: And so I think they're starting to really understand there's a... When you do a large, opensource project like that, and it's driven internally, I think they had to evolve significantly on their community standards, and their community efforts, and I think we see a lot of that as well, because we saw what was it, React gate just happened

John Haupenthal: Yeah.

Gant Laborde: And Facebook had no way of... They were like, "What is happening here?" We're in the paper for weird stuff.

John Haupenthal: Yeah, watching that unfold on Twitter was an interesting weekend.

Gant Laborde: Yeah, exactly. And I think a lot of people look to Facebook to sort of say something, to do something. We do have these high branded icons inside of the community of React, but at the same time, what's the code of conduct for React? What's the energy around this, and I know specifically that people are having those conversations now due to these challenges, and it's a good thing for the community eventually.

John Haupenthal: Yeah, it was interesting, because it definitely feels like that Facebook is paying more attention to just React Native as a whole, compared to a year ago, and it's interesting to point to the Airbnb blog as maybe a catalyst to that, because that blog did feel like somebody was dumping somebody else, and regrettably. It's not you, it's me type of thing. I hate to do this, but I have to. And when it came out, it just seemed like such a downer, because if it felt like if this huge company is giving up on this thing that were all using, where does that leave us?

Gant Laborde: Right.

John Haupenthal: But to your point, Facebook is definitely... It feels like they're upping their game. Cutting out a lot of those modules and putting them to the community and just really making it very lean has been... It feels like the movement to a much more lean, stable framework is awesome.

Gant Laborde: That and the communication. Krzysztof, [Nakazawa 00:12:36] and... Which I'm so glad I don't keep saying his wrong last name, because I think his username is still something like [cposure 00:12:43] or something like that. But, I have to say he's really put his ear to the ground on quite a few things. He's asking what is it in the community that you need, and what can we provide. And honestly when you say, "Hey, good job." He's like, "It's not me, it's everybody." Which is super cool, because we need a lot more of that in tech.

John Haupenthal: Right. And what do you think are some of the challenges that React Native has already done a good job of overcoming from the early days? It seems like navigation has come quite a long way. I remember struggling in the beginning, but now it seems like that is locked down to certain extent. But what are some of the things that you noticed that seemed like they were going to be just blockers in the beginning that would never be resolved that are pretty much taken care of now?

Gant Laborde: Well, yeah. Let's definitely give credit to the amount of... For React Native, so React is such a great way of looking at things, and it's sort of like imitatable. It's one of those things, React is sort of a functional angle of writing code so that you're working with legos rather than plastic injection, right? You're just plugging things together on top of each other, has been limited by Vue, and it's come on over to other frameworks as well. But what they've done right at the beginning is supplying a sort of higher level API to both iOS and Android, and then also now significantly on the Windows platform. I don't know if you know this, but Windows is way behind React Native. They love it to a weird degree.

John Haupenthal: I've seen some rumblings about it, but to be honest I haven't looked into it too much, because it was a little bit confusing seeing Windows and React Native in the same headline.

Gant Laborde: I know. That's pushing platform independence right there. I mean, that's real platform independence, which actually is a goal of Windows. Universal Windows Platform wants you to go ahead and write the same app and release it on a desktop and release it on Xbox, right. So their goal is very significant, and so they're way behind this. Rewriting all kinds of things like Office, and React Native, it's getting crazy. And Skype, as we speak now. We are speaking on React Native.

Gant Laborde: So I think that's a cool thing that they did. They kind of took out an abstracted away, and I think this is what scared native engineers, but it shouldn't have because it doesn't abstract it away to where they can't touch it. It abstracts it away so that you don't have to touch it, and if you're a native engineer, you're the superstar. You're the rockstar. If you can go in there and start fixing the engine of the car, you're the high paid engineer of the team that kind of glues everything together, and I see a lot of native developers start to say, "No, I'm not going to do that. I'm going to push back on this."

Gant Laborde: But what they don't understand is some of the rockstars just aren't people, they're robots. No, I'm just kidding. They're not people centric, because React has done a great job of gluing teams together. So think the first huge victory is that when we wrote our first mobile app in iOS and Android, it shared a ridiculous amount of code, and I'm talking four years ago when we were shipping it. I was like, "Wow, this is 80% code reuse." Now, it's like 99% code reuse. It's ridiculous. It's very hard for us not to have code reuse. But that was the first time somebody did that, and I'll tell you this. People aren't imitating that. Vue Native is basically native script wrapped in Vue. No other language is really kind of coming along and giving us this high platform sustainability at native levels without doing something like Electron does, where we're just going to bundle everything like a giant ram eating runtime. It's really cool. So I think that coming out the gates with has been something that's under-celebrated for everybody who's really [inaudible 00:17:41]

John Haupenthal: I haven't worked on a website in an embarrassingly long time. I've been doing React Native for pretty much two years straight, but had to just go and do some basic stuff on a website basically and was so shocked at how different it was compared to React Native, and how I felt like there was, and developers don't get mad at me, but it just felt like there was a lot of bloat compared to React native apps, where I had to bounce around to so many different areas of my app to make Flexbox act a certain way, for example. Whereas in React Native, and I guess it truly is all how you structure your app, but I had just forgotten what it's like to have just CSS all over, and I don't know, it just felt like there was a lot of extra things when I looked at my full project compared to a React Native app. So I was wondering if you have worked with React Native Web at all, and what you thought about going back to web development after working in React Native.

Gant Laborde: I tell you, I build web apps like it's React Native. I haven't used React Native Web because every time I sort of check in on that, it's... We had React Native Web, what is it React Native Dom, React Native Elements was a thing as well.

John Haupenthal: Right.

Gant Laborde: I really would like to have a solution where I could put all the wood behind the arrow and feel confident with it, so what I do is I use Create React App, and I just make it as React Native as possible. I use all my styles, I know some people are cringing. I do as much in styles as I can in JavaScript. I bring in code, and then whenever the web sort of starts creeping back in and being a little annoying, I wrap that up in a React component, and then I sort of abstract it away so that way, it kind of comes back to this zen style, because that is something you magically get when you're doing React Native. You don't have someone putting bang, important.

John Haupenthal: Yeah, right.

Gant Laborde: And then you're just like, "What the hell is happening?" The web's a messy place, and React native was limiting in the sense that things are done a certain way, except for state management, right?

John Haupenthal: Right, yeah.

Gant Laborde: In Vue, they're like, "Here, this is what you'll use." And then in React Native, we're going to fight over this for the next three years. How's that? That's what we're going to do.

John Haupenthal: Yeah. Yeah, we'll eventually have a solution.

Gant Laborde: So that's one of the spots where we need to be more restrictive, I guess, because I almost feel like I would've taken an okay solution, rather than the 15 state solutions that I've currently learned.

John Haupenthal: Right, right, right. Every time I learn a new one, I'm like, "This is it. This is how I'm going to do it for every app from now on." And then I'll run into a problem the next day and say, "Okay, all right. I'll try something else." But yeah, that's funny that you say that, because I do feel like I'm constantly toying around with new ways to manage state without running my entire app.

Gant Laborde: Well then context and [inaudible 00:21:23] come in and it's like, "Okay, well how much do I throw away."

John Haupenthal: I know, I know. Because when it first came out, I was like, "I'm just going to rewrite the whole app." The whole app. Every class is becoming a component, and then ultimately then I started saying, "Now, why isn't this rerendering?" Or, "Why is this rerendering?" But yeah, but that is funny. Every couple months I feel like, "Oh, this is the new standard to do it, switch your whole app up."

John Haupenthal: We've sort of been talking about it, but what's one of the bigger challenges with React Native that you've run into? And maybe it could be one that you haven't solved, or one that you have memorable solution for.

Gant Laborde: Well, I'll tell you. I guess one of the bigger problems here is I'm interested in how we're going to... I mean, CocoaPods are hell, I don't know.

John Haupenthal: [crosstalk 00:22:20] Right, you are telling me.

Gant Laborde: And upgrades. Upgrade's getting better. I've seen people say that it's gotten better, but then again I feel like it's state management, you're like, "Oh its solved, we've got a great solution." And then you run into something.

John Haupenthal: I don't think it's solved, but that div purge is a godsend compared to where we were at a year ago. So its definitely not solved, but there's a light at the end of the tunnel, I think.

Gant Laborde: I think that that's forever getting better. But CocoaPods themselves have been sort of almost fighting Apple and the goal is, I think, when Swift is 100% adopted, CocoaPods will be useless, right?

John Haupenthal: Let's quickly go over what, in case people don't know, what CocoaPods is. How would you describe it?

Gant Laborde: Every modern programming language has a package management system that is necessary now. With NPM, if you need to left pad something, there's a package for it. There's so many things. And then as you go into C-Sharp, you're going to use Nougat, and then if you're going to add in shareable code into your iOS projects, it's been CocoaPods. And CocoaPods has sort of been this way to bring in, like you say, pod install the name of the code that you need, and for some reason it was working perfectly with React Native. Then it didn't work, then it's required that CocoaPods are turned on by default. We went through quite a lot of history with it, and then I'm not sure if everybody keeps getting caught up in these things.

Gant Laborde: But if you're running a lot of projects through a lot of different versions, I still feel like the CocoaPods story is difficult, and I'm confused by whether or not we're going to... Because swift is going to bringing in its own thing, which I think is going to replace CocoaPods. So when everything's swift, I believe that, and don't quote me on any of this because it's a really complicated... At a high level we always have to know what's going on in Android world, and iOS world, and sometimes Windows world too. But I think at some point, CocoaPods will end up going away, but that was a community driven project was CocoaPods. And it's like a love-hate relationship between the community and Apple, and then a love-hate relationship between that relationship.

John Haupenthal: Yeah.

Gant Laborde: It's a love triangle.

John Haupenthal: All I know is the amount of wacky hacks that I had to paste from Stack Overflow into my podfile. I'll go back to old projects and I'm like, "I don't know what this is, but I feel like I can delete it now ad it should work okay." But yeah, definitely pods have been a consistent issue through all of my React Native projects.

Gant Laborde: Yeah, I'll say that that's been something that has given me a good bit of grief, and honestly that's just on the iOS side of things. I don't feel like I've had too much grief, and honestly we've worked through some really cool stuff. It's being on the edge. It's creating new stuff with a new language that's probably that hardest part that you can never put a finger on is that if you've upgraded to the latest version of React Native before everybody else, or if you start a project on the day it released, you're the person reporting the patch.

John Haupenthal: Right. Right. You're the one that's finding all the new errors that are crashing your app that you thought was perfect.

Gant Laborde: We actually had this one time, we were teaching a workshop in Austin, and we had a bunch of people in there and half of them were Windows users, and half of them were Mac users and we had them start a project, and it was broken in Windows, so we had to... Like, "Oh okay, no problem." So then we rolled it back. We started going through the lessons, and then everybody on Windows was getting a different result from the people. They were still on the same version, we enforced the same version, but we were writing tests with the group on day three, and they're like, "Our tests are failing." And I was walking around, I was like, "Windows user. Windows, Windows, Windows." I was like, "Can y'all output the results of this?" I was like, "Why is this different?"

Gant Laborde: So I do have to say when you're working with people, training people, starting anything new and you're working on the bleeding edge, that's honestly if you're willing to suck that up and just kind of take it, which I think is like any JavaScript developer has to be willing to sort of learn a lot of new stuff, that's the other side of it, I'll say. But we've done really well with that. We do a lot information exchange. We help our teammates out. We help a lot of the companies out, and so I think that that's a problem that you can solve, it just takes time and effort.

John Haupenthal: Yeah, a lot of it, a lot of React Native is just yeah, being open to learning these things that you didn't really expect to have to learn. I remember being a little bit surprised at how much iOS and Android stuff I had to get familiar with. Not even referring to the code, or Swift, or Kotlin, or Java, but even just learning the differences in deployment, and how Google Play is just completely different than how iOS does deployment on their side, and all these things that... Because I think its easy to just hear, oh React Native cross platform development, app in both stores and you just think I'm going to write it in React, and tomorrow I'm going to have an app in both stores, but really learning all these little minute differences is I'll say is fun in quotes, because once you get it down it's pretty good, but man I remember... I don't know, why is Play and TestFlight and app store... They're just so different.

Gant Laborde: They are.

John Haupenthal: It's so strange to me.

Gant Laborde: We use FastLane. So I have tow blog articles that I wrote and I basically go back and reread my blog article every time I need to do a publish.

John Haupenthal: Is it how to deploy with FastLane? Is that what the blog articles-

Gant Laborde: Yeah. Yeah, yeah. I don't know if you've seen it. Actually they do really well on Medium, but it's like effortless iOS deployment in React Native, and effortless Android deployment in React Native with FastLane, and so I basically I open up my blog, and then I go through the steps in my own blog because I can't.

John Haupenthal: Right.

Gant Laborde: And I was upset. FastLane, I just click the buttons and I'm done, and that's my whole life now.

John Haupenthal: We will definitely link to that because we have that in one of our React Native projects, and it is just so wonderful. But like you said, setting up that FastFile, I mean it's like looking at Chinese, I'm like, "What is this? I don't understand this at all." And so if you have a reference of how to do it step-by-step, that would be awesome, because-

Gant Laborde: Oh yeah, I got it for you.

John Haupenthal: The convenience is just insane. We also have it set up with CircleCI, so once we merge to master or give it a specific tag, it'll run the tests in circle, and then if it pass, it will deploy to each door to the test lanes. I mean, it is just awesome.

Gant Laborde: Yeah, if you ever find a mistake in this blog post, tell me I need to update it. It's my documentation.

John Haupenthal: Got it. Yeah.

Gant Laborde: I keep it up to date.

John Haupenthal: We'll walk though it for our next app and we'll let you know. But yeah, shout out to FastLane, because man it's pretty cool. You wonder why would do a project without it, but I think maybe the main blocker is configuring that FastFile can take some time if you're new to it.

Gant Laborde: Dude, when I first formed my first mobile app company, we tried to release our first app, and it took a week.

John Haupenthal: To do the FastLane thing, right?

Gant Laborde: Well, no. We didn't know that it was 2013, 2012 and it was just the worst back then. It was me and another dev were doing it, and half the creds were on his machine, and half the creds were on mine. It was just like, "What is that?" I mean, I don't know if anyone remembers what it was like to release to the app store in 2012, but I'm pretty sure it's easier to go learn Aramaic or something else. It was not easy. So yeah, we have puppies now at Infinite Red who are like, "Oh, well do I have to use FastLane?" I'm like, "Do you really want to not to?"

John Haupenthal: Yeah, you just say, "Listen, even now, I am unclear on certificates and provisioning profiles, okay. Even today. So you just want to avoid that whole thing." Because I swear, every time I use this, I'm like, "Now what depends on what now? And what am I saying here when I'm creating this new profile?" Whereas that's a place I think where Google shines a little bit where its just like just upload your APK and that's it.

Gant Laborde: Exactly.

John Haupenthal: But yeah, FastLane is just the best.

Gant Laborde: Yeah, it's getting like an interesting world out there. And I tell everybody that I see the world of web is coming closer to native, and the world of native is coming closer to web, and where those things are going to merge, right, there's pain points in one, and there's pain points in the other. We're talking about how to get an app to the app store, where a PWA is like, "Haha." And then they try to do push notifications, and we're like, "Haha." So at some point, they're going to have to figure out how to get between these two, and I think that that's going to be a real singularity for what it is that we're doing here. I have no idea when it'll happen, or how it'll happen. Hopefully it's not building Ionic apps, and React Native Web for React Native, I don't know. Hopefully it's not something too crazy, which by the way, I think you can do that now.

John Haupenthal: And for those listening, a PWA is a progressive web app, and why don't you give a, if you could, a vision of the future of what the dream of what that would be.

Gant Laborde: Oh man, well you know by the way, kudos to you on being a good host. When I throw out an acronym, you catch it for the audience. That's a good podcast host.

John Haupenthal: I try, because we cater to juniors, and even myself, after you said it, I was like, "Okay, okay this is in your brain somewhere. Pull this out." So I'm glad I got it.

Gant Laborde: Yeah, so the PWA world is trying to create these websites that you can... I think it came significantly from Google's efforts to try to make this even faster, and push people towards web, because that's where google's market is, and Apple on the other side is hardware, so they're trying to keep you the other way, right? So Google's like, "Hey, just make this webpage, you drag it to your desktop, and you have some offline code ready to go." So you could pull this code up without it actually having to, if I had to create a calculator app, that's just a JavaScript thing, right. Why do you need to go hit the MyServer to grab the JavaScript app, I mean the calculator every time. I could make this and have it exist like you would save a .html file to your desktop. That's sort of I guess the worst explanation of a PWA.

John Haupenthal: No, no, no that makes complete sense, is that why would you need internet connection for a calculator.

Gant Laborde: And maybe it can be semi smart. Maybe it can batch operations, and then when you do finally get internet, it just sends that. But why resend the entire app every time if it hasn't updated. Good examples of PWAs, let's be honest, conference apps. That's actually a pretty nice one for a PWA, unless of course you're doing the React Native conference, you have no choice.

John Haupenthal: That's right, that's right.

Gant Laborde: We have to do a React Native conference app for us, but that's a cute one. People want to have it for a few days, and they don't want to have an app listed amongst all their apps all the time. So I do see this mentality is this is that ease of web, right?

John Haupenthal: Right.

Gant Laborde: And you edit it and you see it. You edit it and you see it. React Native is emulating that from the native side, where we've got hot reloading. We've got this edit and see it, but we still have this sort of insane barrier of trying and just being stuck behind we still have to deliver apps through the Appstore, and the Google Play Store

John Haupenthal: Yeah, deployment is huge.

Gant Laborde: Which were beautiful creations back in whatever, like 2006 when [inaudible 00:36:44] people just downloading stuff and running it on their phone. But with web assembly, and sandboxing, and virtual environments, it's getting safer and better for people to offer permissions when they need it, and sort of identify there's the ability that maybe somebody should be able to just grab an app quickly. And so lower the onboarding, and I think React Native is going to keep pushing in the right direction. I think that's the right way. I think going from mobile forward, and having the platforms lower that benchmark for everybody. Stop making it that we have to read a blog post that we wrote in order to deliver our app to the Appstore.

John Haupenthal: Right. Tying it all together, exactly. I mean that's what I do like about Expo, is that they make it so easy to I mean truly just build an app and someone can get it by scanning the barcode that you give them. I mean, that is I don't know, that feels like the future to me.

Gant Laborde: Yes. Yeah.

John Haupenthal: But then, yeah, then if you do actually want to get it to the store, you're back in the same hole. Well, Gant, we like to, or I like to end these episodes by asking the guest about music. So I'd like to know if you listen to any music while you are developing, and who your favorite band is.

Gant Laborde: All right. That's a complex thought.

John Haupenthal: And it can be just right now. It doesn't have to be of all time, I won't hold you to it. But today, who is it?

Gant Laborde: Well, I do listen to music while coding. Actually, are you familiar with Plug DJ, the website?

John Haupenthal: I am not, no.

Gant Laborde: So Plug.dj is a website based off of a website that I used to go to where you have these little avatars in a room, and then everyone can take turns DJing

John Haupenthal: Oh, cool.

Gant Laborde: So it's cool because so if there's five people, you get one out of every five songs. And so you can have a whole playlist of cool stuff, and then you get a variety of songs, and let's say somebody likes music that you don't really like. Well, if they're staying in the room, they only get one out of every five songs anyway, so it's kind of okay. So that's one of my favorite things to do since we work 100% remote. We all jump into the-

John Haupenthal: Yeah, that's [crosstalk 00:39:20] community radio. That's so cool.

Gant Laborde: Yeah, yeah. We do a little bit of community radio. And we can set the mood. Be like, "Hey, let's get some work music, no vocals." People line up, and we're good. And I think that this that's probably one of my favorite ways to listen to music while I work, is to have a bunch of other people sort of set up and sort of explore, because sometimes something'll click with me and I get a free new song, which is something I feel like we've lost since radio has died. It's hard to get the cool new song, and the story behind it, and other people who like it. So when they're the ones supplying it, you're like, "Oh, this is cool. Where is this from?" "Oh, it's from a video game I found." I was like, "Wow."

John Haupenthal: Yeah, the discovery playlist on Spotify does a pretty good job of getting me new music, but I do miss, yeah, having music recommended to me by somebody. I feel like that rarely happens now.

Gant Laborde: Yeah, and the story behind where they go it from, and why they like it or, oh I heard this when I was watching this TV show, and it was for this final scene, and you're like, "What, tell me about the TV show." I think that that's so organic. And then for me, as I'm listening to music, it is a wide variety of stuff. I love big data, so.

John Haupenthal: Okay, yeah.

Gant Laborde: I'll definitely I'll listen to some good stuff like that. But yeah, I'll say coding music, definitely how I listen to it's more important. If I were to share my Spotify list with you, you would not see the same artist on there more than twice.

John Haupenthal: All over the place, huh?

Gant Laborde: Yeah, yeah. Absolutely.

John Haupenthal: You know what I miss are those, I don't know if you remember, going into actual music stores like tower records, and they would have those just listening bars where it was just like 10 CDs and some were the popular artists, and some were ones that were picked out by the staff. I used to just hang out in front of those for hours, all you young kids that are listening.

Gant Laborde: Dude, they have the leather in the headphones that's been torn out because so many people have just beaten the hell out of those headphones.

John Haupenthal: Yeah, you'd have to put a tissue over it, and then put it on your ear. Those were great. Well, Gant. Appreciate you coming on, I feel like we could always talk forever. Let's get some plugs in, I know that you are coming out with an AI course, correct?

Gant Laborde: Yes, indeed. So I did a talk, if you're super big into the React Native part, definitely watch my talk last year, 2018 in Poland where I actually used AI on my phone. I explained how to identify food, do handwritten digits, and then also find Nic Cage in the audience. It was a lot of fun, and so if that sort of React Native talk was exciting for you, then I'd say definitely check out I have a 100% free AI course, which is at academy.infinite.red. We're going to have lots of courses, including some React Native courses probably coming out soon. Maybe we'll finally solve state management.

John Haupenthal: Right yeah. They'll be looking for that one.

Gant Laborde: Yeah. It's done. We did it for you.

John Haupenthal: But also, where can they find you on twitter?

Gant Laborde: Easy enough, gantlaborde, first and last name. Also, gantlaborde.com. You can see what conferences I'm speaking at, and if you're ever at a conference that I'm speaking at, I always have stickers, I have free swag. More than happy to go ahead and give you cool stuff, and chat about all this.

John Haupenthal: Awesome. And Laborde has an E at the end, everybody. Think Laborde, like I was saying it initially. All right, Gant, thanks again for coming on.

Gant Laborde: Thank you so much.