KENT: Yeah. And also, yeah, they're fantastic, go check them out. Also, Frontend Masters, also fantastic, grateful for them. TrackJS is awesome. And JetBrains with their WebStorm editor, which is sweet. And Trading Technologies, they're awesome. Also, our silver sponsors are ReactJS Program and Sentry. They're all sweet for sponsoring the show, making it possible for us to do transcriptions and the newsletter, and stuff like that. Cool, so we are here at React Rally, going to be chatting with some awesome people about the conference. So, let's all just pretend we're in the hallway track of the conference, which actually, we kind of are.
KENT: In actually kind of a dance studio, I think. So yeah, I'm actually just gonna go ahead and give everyone a chance to introduce themselves, so that we know each other a little bit. So we'll just start this way and we'll go across.
JAMISON: I'm Jamison Dance. I'm one of the organizers of the conference.
RYAN: I'm Ryan Florence. I'm one of the speakers at the conference.
JAMES: I'm James Long, and I'm one of the speakers, as well.
SERGIO: I'm Sergio Cruz and I am attending the conference.
KATHERINE: I'm Katherine Poulter, and I'm also an attendee. It's been great.
KENT: Yeah. Alright, Jamison, why don't, actually... we were talking, a second ago, we're at a dance studio, but that's not actually where we are. Do you want to talk about this venue and what makes it great?
JAMISON: Sure, so, we're at a theater called the Rose Wagner Auditorium. It's a theater, I don't know. It's a cool space to have a conference, 'cause you're on this giant stage. It's got the cool balconies where people can heckle you like those Muppets. And yeah, it's got a lot of character.
RYAN: The sound carries, too, for the people who are heckling. You can hear it, like...
JAMISON: Yeah, the acoustics are really good. So if the audience is yelling at you, you can hear it really well from the... (laughs) No, no one yells.
KENT: I heard you can't really see it. Is that right, James? You can't really see the audience from the stage?
JAMES: Yeah, not really. It's actually quite good, it feels like a dream.
JAMISON: There are some spotlights carefully aimed directly into your eyeballs.
RYAN: Who's... what's his name, that gave the last talk... With the hardware thing?
RYAN: Yeah, so when Mike was speaking, he had his little iPad thing up there. And I'm sitting there, watching his talk and he twists it, and it was almost like he was aiming for me (laughter) and then the spotlight just hit me right in the eyes, so I had to scoot over one chair, and I look back and it's on this guy's shoulder and his cheek, and he's like... (laughter)
JAMISON: Like, there's a sniper aiming at him, or something? Yeah, get ready. Tomorrow, that'll be you. (laughter)
KENT: Cool, cool. So, what are the favorite parts about the conference? Actually, for Sergio and Katherine, what do you like about this conference compared to other conferences that you've been to?
SERGIO: Wanna start?
KATHERINE: Sure, yeah, good question. I think for me, it's just been fantastic to meet so many people in the community. And people are here from all over, like New York, and California, and...
RYAN: New Zealand.
KATHERINE: And New Zealand, yeah, exactly. So it's just like getting that Facetime with people. And there are people that you meet on the internet or on Twitter, but you get to meet them in real life here, which I think is amazing. And also, the conference has tons of really great events, too to help us get to know each other, like, there are games going on downstairs, and there was a dinner meetup. And plenty of time to talk in between sessions, and to get to talk to the speakers, too. So I think, yeah, those have been some of my favorite things about this conference.
RYAN: Jamison, tell us about the dinner groups. I didn't really get what was going on there, but I didn't read all my email.
RYAN: But I think it sounded cool.
JAMISON: So the idea is, there are probably a lot of people here from out of town, they might not know the area, they might not know a ton of people. We want to give people an opportunity to just meet people if they want to, so we sent out an email that had a form where you could say, "I want this kind of food." And then everyone that chose that kind of food, we kind of grouped together, and just sent 'em all to a restaurant. So it's just a way to meet people without it being too regimented and planned out. Just a way to to get people together.
KENT: Yeah, you already share at least one thing in common.
JAMISON: Yeah, you all chose Italian food, so yeah, perfect.
RYAN: "You like to eat?" (laughter)
JAMISON: "Me too!" Yeah.
KENT: Sergio, what do you think?
SERGIO: Yeah, so to me, it feels like, y'know, basically what she just said, "by the community for the community kind of thing." So it feels like everything is kind of censored around that, from the content of the talks to the speakers to everything that happens outside of it. So yeah, being here's been a great time. It's pretty amazing. Thanks for organizing it.
KATHERINE: Yeah, thanks, Jamison.
JAMISON: You're welcome. Neither of you mentioned the socks, which are, I think, the best part. (laughter)
JAMES: I haven't talked yet, so.
KENT: Yeah, yeah, let's get a look at those socks, Ryan. Those are beauty. Yeah, so for those of you listening, you'll have to watch this later, because Ryan's holding up some...
RYAN: I'm wearing' 'em. I'm wearing' 'em on stage tomorrow.
RYAN: No shoes, just socks? (laughs)
JAMISON: Ooh, well, you got some sandals already, so sounds like it's gonna be a winning combination. (laughter)
RYAN: Yeah. I've got other shoes. And Katherine, was it you, Katherine?
RYAN: Told me to actually wear the socks over the top of my pants.
KENT: That would be fantastic, please do that. I'll tweet a photo.
RYAN: Some of the other swag, too. I think I'll wear this.
KENT: Yeah, pretty cool shirt.
JAMISON: I like your style.
KENT: You'll just be all swagged out.
RYAN: It's gonna look good.
KENT: I really liked the swag this year, it was good.
RYAN: Actually, James and I were just walking down the street and we walked past, what store was it?
JAMES: It was a cool store.
RYAN: Yeah. It wasn't Banana Republic or H&M, but it was one like that and there was a dude, or a mannequin, that had this sweet leather jacket and super cool pants. And I was like, "Should I buy all of that?" (laughter) And give my talk in it?
JAMISON: Just keep the tags on.
RYAN: I'm still thinking about it.
KENT: So James, you gave your talk today. Do you wanna talk about what you talked about?
JAMES: Sure. We've been doing a lot of work in the Firefox DevTools team, doing a lot of refactoring, honestly. And so I always think it's interesting to talk about what that's like. I feel like there's a lot of pains in refactoring, and I just wanted to show why it's good to do it sometimes. A lot of people will have, sort of, a reaction like, "We don't want to spend a lot of time, 'cause it's really been, in the last six months, we've been spending a lot of our time doing it, and really, even in the last year." So, I don't know, I spoke about what we're doing. I showed off the new de-bugger, which is something that I've been working on, showed off a lot of cool demos with that, just sort of trying to reinforce this idea that we weren't even close to being able to do any of that before. And so now, spending six months of hard time sort of rethinking what we were doing puts us in a really good place, and so I just wanted to... Just trying to explain why we were doing that.
JAMISON: One thing I loved about your talk was how real it was. There's a lot of books you can buy about refactoring that are like, "Once you read this, your life will change for the better forever and everything will be easy." And then there's a lot on the other side, where a manager's like, "Refactoring? That's garbage and a waste of time!" And you were very, yeah, you were very real. Like, "Sometimes refactoring is hard," which is something that the fancy blog posts don't mention. But it's easier to believe you when you acknowledge like, "this is the real world, and there are trade-offs," so I liked it.
JAMES: Thank you. I mean, we struggled with that a lot. I was sort of someone who was pushing a lot of this because I wanted React. I really thought it was a legitimate improvement. But I was sort of sensitive to this fact, like, I don't know, maybe I am biased, y'know? But this is really hard. So I don't know, I try to be grounded in reality. But luckily, other people started doing it, as well and the team started buying into it, so it was good.
KENT: Yeah, one of the things... another thing that I loved about your talk was more than just refactoring. You demonstrated that having a good architecture and a good design, you kind of fall into this situation where like, "Oh, I didn't think about that, but now we can do this!"
KENT: Like, "separating our things out so we can have these circles, like you were talking about, throughout our architecture, means that we can swap out different pieces. And now, all of the sudden, I'm alerting in my browser with my console or with my editor," that was pretty sick.
JAMES: Thank you.
KATHERINE: Yeah, that was awesome.
KENT: Cool. Sweet. Yeah, go ahead.
RYAN: I was just gonna say I liked watching your talk when I was in...I was like, "Okay, so, he's building this in React, and then he's got a bug in his code. Where does he de-bug the de-bugger?" (laughter) And then I was like, "Oh yeah, that's the title of the talk!" (laughter). I guess I'll just sit back and wait. (laughter)
JAMES: Yeah, I mean, that's the great thing about doing it in modern web dev, like I showed you, we can just do it in a tap. I mean, before this, I actually literally could not, as I said in my talk, could not... Yeah, I broke the de-bugger, so I actually could not use the de-bugger.
RYAN: I started wondering if like... "I wonder if their first iteration they would de-bug their de-bugger and Chrome's de-bugger... (laughter) until they got theirs working on itself."
KENT: Well, it's actually, that's kind of like languages that are written in themselves, right? Like, you have to write it in something.
RYAN: Write it in Ruby first, and then you write it in CoffeeScript. (laughter)
KENT: Nice, nice. What other talks did y'all like from the conference so far? This is only day one, so we still have another day of wonderful talks. What other talks were awesome?
SERGIO: I can chime in. That first one, on Animation...
SERGIO: Sarah, right? What was her last name, sorry?
RYAN: It's not Edo?
JAMISON: Well, I guess if it's on the internet or real life.
SERGIO: Well, I had to follow the internet version right away when she started the talk.
JAMISON: Yeah, Sarah's awesome.
SERGIO: It was so good. Yeah, so I loved how she started with the "why's" and then went into the "how's, 'cause I'm not really into design too much or anything like that, so seeing her explore all the things that she could do, but having that context of why she was doing it beforehand was amazing. Sorry dude, it was my favorite talk so far.
JAMES: It's fine.
SERGIO: Yours was my second-favorite thus far, though. His might be third, maybe, tomorrow? (laughter) I'm joking.
JAMES: I'm just saying, that's a lot of pressure.
SERGIO: No, I'm just joking, but yeah, so far all the talks have been awesome, but the whole context with the design was amazing to me.
KENT: Yeah, that one was really cool too, because I liked that she showed a demo of animation done tastefully. So, she had a map, and you click on the pin on the map and that turns into this form thing, and then you fill out the form. And everything is animating so fluidly and she was able to reference back on that example, explain, y'know, "This is animation done right." And it was really a beautiful animation.
RYAN: Yeah, a lot of times you go on... the stuff that people do on CodePen is amazing.
RYAN: Like, they recreated The Simpsons characters, and their eyes are blinking, but it's like... Am I gonna do that at work?
JAMISON: On like your last day, maybe.
RYAN: Yeah, give your two weeks' notice?
JAMISON: Yeah. "I got my final project ready."
RYAN: I don't know why any boss ever has you work on anything that matters for those last two weeks. (laughter) Like, "Okay, stop what you're doing. Tell your team, now go make Simpsons CSS." (laughter)
KATHERINE: Well, another cool thing about what she was showing, I thought, was that it was very... I mean, it really kind of followed the principle of animation, it's great when it's invisible. Y'know, she talked about the form afterwards. Like, if I were to ask somebody, "Where's the form?" "Oh, well it's in there," but I mean, it really just kind of... Things just kind of kept coming out of it and then from one animation to the next, they just flowed really nicely together. And it was all these parts, they never got hidden. They all just morphed into the next thing, and so it was just really... You're just left with "Wow, that was a really great experience," and you just want to keep exploring the site after that, looking for more great interactions.
JAMES: She also went into technical stuff a lot, so it was a really... It's very hard to balance that... She had a lot of really cool high-level "why animation is good," but then also went into all these libraries, so that was really good. And she was very unbiased about all these libraries, like, pros and cons. I always really like people who just say the facts. And I mean, I'm sure she has a preference, but yeah. It was good.
KENT: Cool. One of my favorite talks was Brian Lonsdorf. His talk... what was that called?
JAMISON: It was called "Oh, Composable World".
KENT: "Oh, Composable World". So, that one was... Brian is one of my...
RYAN: Could be the title of my talk.
JAMISON: Not too late.
RYAN: Should we change it?
JAMES: "Oh, Composable World Two."
RYAN: Yeah. (laughs)
KENT: I changed the start time of this episode like four times, so yeah, you can change whatever you want.
JAMISON: I didn't even know what the title of your talk was until like, two days ago, so.
RYAN: Just put a comma, or "Oh, Composable World".
KENT: What I loved about, or what I love about Brian in general is that he is just a really intelligent, functional programmer guy, that can really speak to the functional programmer beginner. And I think that he just explained the... Or demonstrated why functional paradigms are so useful. Toward the end there, he kind of went way over my head with the React stuff using functional paradigms, only functional paradigms with React, but it really makes you think.
RYAN: Admittedly, he was like, "This is where it gets really weird." (laughter) "But stay with me if you can."
KENT: Yeah, I think that's one that you could go back and rewatch a couple times and then you'll get it.
RYAN: I could listen to him talk about anything. If he wanted to get up there and talk about lunch, I'd be like, "Yes."
KENT: He's an enjoyable person to listen to, and it was a very engaging and entertaining talk, too.
RYAN: Now, the really fun part for me was when he had the code up there that was making three assignments, and then returned those three things all together. And then he's like, "Okay, how do we get rid of assignment?" And then when he just dumped the thing into an array, and now all the sudden you could call map, where he could give lambdas into map, got rid of assignment, and now he just had these functions. That was a really cool aha moment... ouch.
KENT: "Aha, I'll hit the back of my head."
RYAN: I'm gonna scoot forward. But yeah, it was sort of like an aha moment. Like, "Okay, I kind of see what we're doing here."
KENT: Yeah, put it in a box, or throw it in a box, is what he said. And I actually had talked with him about that a while ago, and just the other day I decided, oh... I had a big function where I was doing a bunch of assignments and had a whole bunch of state in that function, like variables, and I was like, "Hmm, I wonder if I tried to throw this in a box, what would that do?" And it really, just like he showed in the talk, it really cleaned up the code and made it really easy to see what was going on. And what's really cool now is if I need to make an alteration, it's just a matter of adding another map or another filter or a reduce or something, with an arrow function, and it just makes it a lot easier to come back and make changes to it.
SERGIO: So I have a question, since you did that yourself. Was there an underlying library for the things that he was talking about or was it more so just the concepts behind it?
KENT: So, what he was talking about in his talk, he actually sort of created that little library, it was four lines of code at the top of the box.
RYAN: There was some hidden library stuff in there too, later. It was like oh, all the sudden we have this fold thing.
KENT: Well, he implemented the fold thing, though.
RYAN: Okay. Contramap, we never saw that. (laughs)
KENT: Yeah, yeah, that's true. Yeah, we didn't see that.
JAMISON: That's a made-up word, anyways.
KENT: That was where he kind of lost me. But yeah, when I did it, I didn't even make the box thing, I just said, "Okay, here's this string that I'm manipulating, doing things to. Just stick that in an array and then call a map on it." And then... I didn't have a folder or anything, I just, I returned to that array, .map, .map, .map, and then popped off the first item of that array. And it worked great.
SERGIO: That's awesome.
KENT: No libraries. It was pretty easy and it's very cool. I like it.
JAMES: I think if anyone is listening to this...
RYAN: Better watch the talk?
JAMES: No, no, I wasn't gonna be mean. No, I was gonna say, so I'm a little biased because I've written a library that implements this, but Clojure came out with this thing called transducers, which I think is a super interesting thing. I'm not gonna explain it right now, just putting it here if anyone here is listening to this and wants to look into more transforming libraries, but it's cool, for obvious reasons.
RYAN: I'm gonna the word again, 'cause you said it kind of fast. Transducers.
JAMES: Yes, correct.
RYAN: Can you spell that?
KENT: If you're listening to this on 2x, you might slow that part down.
JAMISON: I'll have to just believe you, 'cause I couldn't comprehend what that spelled.
KENT: No, just ask Google. Just say, "Google, look up transducers." It'll get it.
JAMES: I feel like that spells pretty straightforward.
JAMISON: It'll probably be like, a picture of your face.
RYAN: It could be D-E-U-X or something like that.
JAMES: Google will correct it.
KENT: Good luck, good luck. (laughs)
JAMISON: Sure, yeah.
RYAN: I mean, I could be wrong, I'm sure people will correct me on Twitter...
KENT: No, that's fair.
KENT: I like that.
RYAN: To just come together with all these great ideas. Yeah, it's a lot of fun.
SERGIO: And even with her talk, I was on Twitter, just researching the #ReactRally and seeing what people were saying, and she brought to light so many things that people hadn't realized yet. I remember one tweet in specific, they were like, "If you think you've mastered async, Redux, think again. Watch this talk," yada, yada, yada, so it was amazing, yeah. Thanks for bringing that up, that was cool.
KATHERINE: Yeah, well, and you guys with your point, too. Even if you use something a lot, it doesn't mean that you're necessarily really using it the right way, or y'know, in a great way. So I think it's good to remember to watch those things again, or maybe even do a tutorial, so then you're like, "Am I doing this the right way?" And trying to teach it to other people.
KENT: Yeah, actually, it's funny that you say that because I think we are probably all doing something wrong and we have no idea. Even the things that are termed "best practices," we're gonna find out in a year or two, like, "Yeah, that was not a good idea."
KENT: And that's just the process of learning and becoming better as software engineers, I think. And that's something that I find really exciting about this industry, is that things are constantly changing, best practices are always being questioned. And actually, that kind of...
RYAN: Are they? Are they?
KENT: And actually, that segues into your talk.
KATHERINE: Yeah, exactly.
JAMES: I knew you would speak up.
KENT: So, no, let's hear it. So, what is the title of your talk? You'll have to, like...
RYAN: I really don't know yet. (Laughs)
JAMISON: It depends.
RYAN: Yeah, it just changed.
JAMES: Wait. Right now, it literally is "Rethinking. Stop."
RYAN: My job is literally to talk about React in front of people, so it's really hard to pick what I'm actually gonna talk about, until it's gonna happen. But anyway, it's called...
JAMISON: That's just what an organizer wants to hear.
RYAN: Yeah, exactly.
KATHERINE: So if you were to give the talk now, right now, what would it be?
RYAN: Well, James and I had Chick-fil-A, so it'd be about chicken nuggets, 'cause they were amazing. (laughter) And there's no shame in liking fast food. Anyway, so no, the title is a component that's called a rethinker, so... What d'you call the angle bracket? (unintelligible) So, open angle bracket, stop equals false.
KENT: So stop rethinking things?
RYAN: Stop equals false.
KENT: Stop NOT rethinking things. So always rethink things.
KENT: Rethink everything!
RYAN: Don't stop rethinking.
KENT: Alright, so let's get a little synopsis, though.
KENT: C'mon, Ryan. There's nothing on the website. Your talk has nothing, so I wanna hear something.
RYAN: I guess we kind of talked about it in the little podcast that you did leading up to the...
JAMISON: Yeah, yeah.
RYAN: To the React Rally. We actually call it The Rally a lot, with people. "You gonna be at The Rally?"
JAMISON: That sounds good and bad. (laughter) I have concerns.
RYAN: Okay, we won't do that anymore. Components are pretty cool. And when we first got React, we all kind of didn't know what to do with it, but a lot of us were shipping. And people would ask us, "Well, why do you like React so much?" And I was just like, "I don't know." All I know is, things are simpler in my brain right now.
KENT: And I can actually ship stuff.
RYAN: Yeah, and I'm shipping. And now, you don't hear that as much. You hear a lot of frustration with great stuff that's happened in the community. But when you come in as a beginner, there's a whole lot of stuff that are best practices and that you're supposed to do now. And I'm not sure that we've explored components enough. I think that there's some really interesting things that you can do with components. So I hope the talk just makes people think about components as... A little bit more...
KENT: Rethink about components?
RYAN: Yeah, yeah. Rethink your components, and think about what you can do with them. So I'm gonna show off a couple components that... some of 'em people will think are pretty cool, some of 'em are probably gonna make people mad, and it's gonna be...
KENT: I've never imagined that a component could make me mad, but I'm looking forward to it.
RYAN: I've got some tweets as proof already, (laughter) of people being upset about what they've seen on GitHub these last couple days. So yeah. Yeah, components are really cool. And there's some really neat stuff you can do with 'em.
KENT: Cool. I'm looking forward to that talk. We're gonna do a short show today, but is there anything else that y'all wanna mention, or bring up about the conference? Or anything exciting going on in the React community that you wanna chat about?
RYAN: Jamison and Matt Zabriskie have killed it...
KATHERINE: So true.
RYAN: The branding is awesome, the stage looks awesome, the speakers have been treated amazingly well, the attendees have been treated well, yeah. If you're doing a conference, model it after this one.
JAMISON: Thank you.
RYAN: It's been awesome.
SERGIO: Mic in the bathroom and everything.
JAMISON: Yeah, I did leave a hot mic... I didn't go to the bathroom, though. I was walking around in the lobby with the mic turned on. I got a lot of tweets. (laughter) So people care, that's good.
RYAN: "Can you believe we got all these jokers to show up?"
JAMISON: No, I wasn't saying anything horrible.
RYAN: It sounded like this. (mumbles)
JAMISON: Yes, it's kind of not ideal for the speaker, but he handled it well, too.
KATHERINE: I think the one this is, just remember, if you are here, remember what it's like to be here, and the excitement that you... (inaudible) things when you're programming and you're loving something, or especially when you're like, "Ugh, this is frustrating," remembering that there's a whole community behind us. And even for those that aren't here, watching the talks that you're interested in, and reaching out to the speakers, and be like, "Hey, I really liked what you said about this and I had a question about this," and following up. I think it just makes the community better and it helps us write better code.
RYAN: I remember my first conference I went to was a jQuery conference, and they actually asked me to speak at it. I hadn't even been programming for more than eight months, but I had something weird with MooTools and jQuery and they were like, "Hey, we wanna hear about this." But looking around, I didn't know anybody. I wanted to talk to some of the speakers, but they intimidated the heck out of me. I was like, "Oh, I can't go talk to them, they're like cool programmers," but... Yeah, I'll tell you what, the speakers, they're just like everybody else. We're all straight from the community. Just walk up and talk to anyone that you wanna meet.
KENT: Oh, yeah. Alright, sweet. Well, that's it. Yeah, just wanted to say thank you all for coming and giving a little bit of your fun React Rally time to this show. And yeah, with that I think you can say goodbye. Now, this is the awkward part where I walk up to the computer and hit the stop button. (laughter) Here we go.
KATHERINE: We can make faces in the background.