Kate: Welcome to PodRocket, everyone. I'm Kate. With me today as Matt Perry. Hi, Matt. How are you doing? Matt Perry: Yeah, I'm doing great, thanks. Yeah, how are you? Kate: Thanks for joining us. Doing well. And our engineer, Noel. Hi, Noel. Welcome back. Noel: Hey, Kate. Kate: How are you doing? Noel: I'm good, I'm good. I'm getting over a cold. You can probably hear it. I feel like half the globe right now, but I'm hanging in there. Kate: Awesome. Awesome. Well, Matt, if you wouldn't mind starting us off and telling us what you're working on, and Framer Motion, Motion One, all that good stuff. Matt Perry: Yeah. Clearly have some addiction to writing animation libraries. I'm writing Framer Motion, which is a React animation library, and Motion One, which is more of a jQuery for Web Animations API, which is the native JavaScripts Animations API that comes bundled in every browser pretty much these days. But it just smooths over some of the inconsistencies while adding a few features of its own. Kate: Very cool. Awesome. Yeah, so I guess just to start, maybe tell us about Popmotion and that timeline, and how it got to now, which is a Framer One. Matt Perry: Yeah. So Popmotion, that was my first animation library. And that's very much, it's still news today. That's still inside of Framer Motion, but it's a pure JavaScript. The way I see it is it just pumps out numbers and colors and strings once every animation frame. And you can put those wherever you like. So doesn't need to be the [inaudible 00:02:04]. It could be 3JS or Pixie, I think. But basically, you can do whatever you want with it. Matt Perry: And at some point, I think it was quite flexible, and its job was to be flexible so I could build stuff on it and stuff like that. But it didn't really get much adoption, I guess, because it is very low level, and the developer experience compared to something like GreenSock wasn't as good. Because GreenSock, especially for the Dom, does its job really well. Whereas Popmotion, you'd have to come along and set the style tag yourself and things like that. So I was at work once, and someone was looking through some code that I'd written, and they asked what a tween was. And for those who don't know, a tween is like going back to, for me, going back to the flash days where you'd put your key frames, A and B, and the tween would be the animation between those two key frames. And it would work out all the spaces in between. Matt Perry: And it just struck me. It's one of those times when you realize that you don't even know what you know. You're so deep into this. I didn't even think that a tween... Tween's the fundamental building block of animations. And it never really occurred to me that, even as a word, especially to a non-native English speaker. So in so many respects, it's actually quite an unfriendly word. And it got me thinking about all of the other ways in which there's a lot of people out there, I assumed, another bias I had was, I assumed that everyone cared about animations the same way I did. So I'd go the extra mile to write pretty complex animations. And especially when you mix some of that imperative code of React, it could get quite brittle and messy. Matt Perry: So I came up with Pose. And the idea with Pose was that all the animations would be declarative, the same way React and View are. Because you could have special rapids React to View. But most importantly, you could just define the values you wanted to be the latest values. And it would, by default, figure out a nice animation for that. So if it was a transform, which is a physical, a rotate scale, X, Y, it would probably use a spring animation, which is something that has that physical... It's quite a physical motion. So instead of just saying, "Be one second," or, "be half a second of animation with a season curve," it has a genuine energy that you can then, if that animation is interrupted, you can pass into the next animation. Matt Perry: So it just, by default, created these really natural motions. And then Framer came along, asked me to do something similar with Framer Motion so we could bring those animation capabilities to Framer. And Framer Motion, pretty much, is Pose. It was almost the next major for version of it, but it was React only. Matt Perry: And so that's how it got as far as I am, in a sense, today. Whereas Motion One, now, it's a side project. It came out some experience that I was doing with WAAPI, the Web Animations API. I was trying to just make it more user-friendly, trying to smooth its rough edges. And yesterday, I published Motion One for View. Kate: Oh, wow. Yesterday? Matt Perry: Yeah, just yesterday, which it's very much like Framer Motion styled, declarative API, but for View, and using these WAAPI animations that [inaudible 00:06:00] instead of Popmotion. Noel: Yeah. I feel like the closest I ever brushed with Popmotion was when I was doing some side project stuff in Pixie and people were pointing me at it. If you were a web dev going in, and you wanted to do your animations at that lower level, would you still point someone at Popmotion now, to start a project with it? Matt Perry: Yeah, totally. It's been, in an almost finished states, I guess, for a little while. So there's probably not much more I'm going to do with it, apart from keeping it, make sure it's current. But bits of it have made its way into Motion One. For instance, we've got a polyfill for Transforms because to do independent animations on Transforms in Safari, where WAAPI doesn't yet support CSS variables. We need a tiny number poly polyfill, and it's about K, what, a kilobyte. And yeah. Matt Perry: So bits of Popmotion have ended up there. And I think that polyfill will probably form the basis of a new, not Popmotion, but something of a similar, low level nature. But I'm just trying to keep the focus of Motion One to be Dom, WAAPI. Whereas that gives Popmotion the freedom to still be this low level thing. It's good to hear that you actually used it for Pixie. I've never used Pixie myself, but that's exactly the, I wanted people to use it on something as crazy as an [inaudible 00:07:41] where you could animate LEDs with this. I never really saw much of that, but you'd get the occasional user. And it was pretty cool when you saw stuff like that. Noel: Yeah. It was a cool world to delve into. Again, I was just messing around and trying to make some super animated click drag UI stuff. Yeah, it was really nice. Noel: I guess if we can wind back time a little bit. How did you get into this space initially? How did you become interested in animation and get started with Popmotion? Matt Perry: Well, right from the start, it was more that when I was starting out in the career, I was coming more from a design background. So I really loved Flash because it took you beyond the limitations, especially at the time. There's so much that you couldn't do with CSS. Border radius was new when I was a kid, basically. Transitions were not well supported. So then when you got Flash and you could use GreenSock in it, some of the effects, background blur and all of these amazing transitions, and to have the Guru as well. Matt Perry: So I guess over time, I was just more and more interested in making those natural feeling, or engaging user interfaces. But then I, at some point, I thought, "Okay, well, I'll write a book." I started to have all these ideas about how SE, the fidelity of devices and our inputs. So our outputs been the screen, and our inputs been touch. And the fact that, over time, the graphics on the phone screen, it's something as simple as it coming closer to the surface. Over time, if you look at an old iPhone or any or portable device, like an Nintendo DS or something, it's visually beneath this top layer of glass or plastic. So you can see, it's always like there's a divorce between you and the interface. And the frame rate are not good, whereas now the frame rate's Engine 20 FPS. And I'm sure the response times going down as well. Matt Perry: So as that user interface is almost represented in the real world better, and you're represented in the virtual world better, by virtue of it accepts your touch input, of [inaudible 00:10:15] latencies. You can imagine the Oculus handsets are ridiculously precise. My thinking was that over time, if you are a software developer, you need to write interfaces that keep up with this change over time. So that includes spring physics and accurate tracking and all of this. Matt Perry: So I wanted to write a book that just expressed certain ways that you could probably make your Windows or your models or your side menus feel a bit more like they belong in the real world. Just really so that the web... Because app developers, I feel like they're consistently, they've been on the edge pushing this forward. Whereas I feel like, on the web, the bar, it tends to be lower. And I think just because of, well, so many reasons, but budgetary and just the way it's. You've got to think about much wider variety of devices as well. Matt Perry: So there's so many reasons, but anyway, I thought, "Write a booked and maybe that will..." But as I was writing the live examples, there were certain edge cases and uses that I needed to write functions for, like a spring is a good example. And at some point, I looked at it, and I thought, "Oh, I've got a library." And then I never wrote the book, and I wrote Popmotion instead. Matt Perry: And actually, a similar thing happened in Motion One. I tried to write a book about WAAPI, and every time I'd do a cross browser, I'd hit something. This is a bit more practical, but I'd hit something it couldn't do. Or I'd hit some weird, for instance, the finished polyfill. It doesn't work in your browsers. It doesn't work on certain Google phones. I thought, "Well, I'll write a function that polyfills that." And then before you know it, you've got a library basically. So this has happened twice now. Noel: Gotcha. I guess. Yeah. On that front of user experiences being able to be very responsive and snappy and quick now. Like you said, even the distance between screen and glass surface being shorter impacting that. Are you disappointed how small a percentage of the web is animated? Even the big players, right? Google.com has no real animation. Matt Perry: Yeah, totally. And when it's something like Google, I'm definitely against superfluous animation. I don't think that it's needed in every respect, but that's definitely, I don't think we're on the wrong side of it. I don't think everything has to be a Codrops level website. But there's somewhere between there and where the majority of websites are. If you've got a dropdown menu, I know that there's a contingent of people out there who will say, "Just give me the menu instantly, and I don't need to see any animations." But animations do teach users the difference between the state they were in and the state that they've ended up at in. Matt Perry: It takes them along the journey rather than changing things to pulling the rug under them, and then letting them figure out what's changed, especially when it's not a direct. If it's something that's an indirect action, cause and effect, then that thing can be quite confused. Animations can be quite instructive. Matt Perry: But yeah, basically, I don't know, I feel there's certain ways in which it's gotten really nice as well, though. Because when retina and high resolution displays came out, there was definitely a lack between the assets that we were using. So not as many SVGs, way more rested images, and then they all look crap because they're all for 1X screens. But actually, quite quickly that did change that now everyone uses SVGs. And if they don't, they'll serve images. It's much easier to serve images responsibly so that you're getting a really high fidelity image. And I think this is all part of it. Even though it's not animations, but these high fidelity assets make a massive difference to how the product feels. Noel: Oh yeah, for sure. Yeah. To your point of superfluous animations getting in the way, that reminds me of a podcast I listened to years ago. I think it was Software Engineering Daily. I'm trying to remember the guest's name. She worked with the View JS Native animations that were part of View at the time. Sarah Drasner. Matt Perry: Drasner, yeah. Noel: Yeah, yeah. Anyway. Yeah, that was her big point, too, was when animations get in the way, you notice immediately. But when they're done really well, really quick, and right in that sweet spot, they really add to that just engagement with the app. Matt Perry: No, no, it's a super important point. And that's why I like the defaults in Motion One, Framer Motion. They're all into 0.3 seconds. So they're pretty quick. Maybe it could be quicker? I don't know. But I feel like that's a sweet spot, but they'd never be these one second dramatic transitions between one thing or the other. Noel: Yeah. Yeah. Unless you want that for some reason, right? Matt Perry: Yeah. Noel: [crosstalk 00:15:48]. Dramatic sweep. Yeah, yeah. Matt Perry: Yeah. It's actually not... So if you've got a full screen transition, a 0.3, so it is something you have to think about. There's no golden rule that you can just say, "No animation should be more than 0.3 seconds." I'd love to do stuff where we measure the size of the things that's changing. If it's a full screen wipe, it can be quite jarring for it to happen in two or 0.3 seconds. It's a bit too quick. Matt Perry: But there's performance aspects to consider as well. So you can't go around measuring every element on the page. And likewise, there's certain action that people do quite regularly. So the first time, you might want a bit more of a slow animation for people to really nail or to drive home the thing that's changed. But then the 100th time they've done it, you don't need to drive that home. But currently, there's no good way of, well, there's no convenient way of automatically adjusting the duration of animations based on that user's history with your product. Matt Perry: So at some point, I'd love to make it automatic, that we add a multiplier on every animation. If this is the first time you've ever use the animation, it's a 0.13. Sorry. A 1.3 times duration just to elongate it a little bit. But that's always one of those things that you think it's nice to do, but you've never got around to actually implementing it. Noel: Yeah. Gotcha. Gotcha. Yeah, I had a chance to mess with Framer a little bit. I wasn't familiar with it before preempting this conversation here. And yeah, I felt that it was very easy to go in and set the durations. And the feedback loop of making tweaks to animations, I think, was the coolest thing for me. I could see really quickly how changing this duration or tweaking the transition function for this animation, affected the feel of the UI. But I also noted that I felt that those mapped pretty directly with a lot of the variables in CSS transitions and stuff. Is that just a function of the web animation APIs being the same? Or is that a decision you guys made when implementing that? Matt Perry: Yeah. No, so there's certain things that it cannot do, like springs. There's no springs in web animation. But when it comes to easing, it's more that there's a fundamental... It's not by accident, but it's a fundamental truth of animation. We never tried to map it to CSS. It's more that CSS, I think it's got five easing functions. Noel: Yeah. Something like that. Yeah. Matt Perry: Yeah. And Cubic [Mesia 00:18:57]. But so we've got Cubic Mesia and a bunch of presets, just a few more, but it's not a catalog or anything. But they're quite tiny functions. So we include a few. Matt Perry: And yeah. And it's more because you'll always want an ease in. You'll always want an ease out. You'll always want a, we have the one with an overshoot. Now, they should really be in CSS, but they're not. So that's that. But it's because, basically that's the... Yeah, we don't let the limitations of CSS stop it, but where that's not true so much is with Motion One, where we are beholden to what's already in the platform to some degree. Matt Perry: So we add springs, but we only add them to independent transforms where we can do it on pure numbers, so 90 degrees rotation. But if you then start going, what the web is capable of is animating between a string, like none, and translate X, 100 pixels, spring, calc. And so it can get really... And Motion One doesn't do that because... Well, it does it, but not with springs. Springs' numbers are only... Because the spring is a kilobyte. But then, if you want to do that crazy amazing interpolation between these super complex strings, you've got performance things to worry about. You've got far size. How are we going to do this? Are we going to take that string and figure out what the matrices is, and interpolate between those two. And all sorts of questions and file sizes. You'd be talking an extra 4k, extra 5k. Matt Perry: So it's, for me, Framer Motion's, let's make the best animation library possible, no matter what, almost. Whereas Motion Ones more of a trying to find the line between file size, performance. How can we provide the most features for the absolute smallest bundle size? Noel: Yeah. Nice. Nice. Yeah. I feel like if your mission is to get more of the web animated, that's probably a noble bar to measure yourself by, is can people say, "Oh, the performance." And if the answer to that is no, that's probably super helpful. Noel: Yeah. I guess, maybe, to reel us back a little bit and help context. Could you give us just an overview on Framer and what it is and where it sits in the market for those not familiar? Matt Perry: Yeah, for sure. Okay. So we're in a transitionary period as well. So historically, what it's been is a prototyping tool. So you can imagine if you've used a Figma or even a Sketch or going back... Well, probably Sketch is the first one, but in one of these site designer tools with a free form canvas, quite importantly. Framer's, as a design tool, like Figma, Sketch, they use their own renderings. Framer, it uses the Dom as the renderer. So what you see is what you're going to get. Matt Perry: But beyond being just a design tool, the main difference has always been, it's a prototyping tool, where you're building with the real, almost like the real, materials. So when you design an animation, all those performance characteristics, and they're going to end up, if you take transitions and recreate it in a certain way. With Framer Motion, it's going to map pretty one-to-one. So what you see is what you're going to get. It's a Wiziwig for interactions, I guess. Matt Perry: But so far, it's been a prototyping tool. And well, I'm not going to lose my job, but I can say that we are transitioning to, depending when this comes out, we always support the prototyping use case. But in fact, we've got a lot of effort going into that still as well. But one thing that we're doing now is that you can design and develop the website completely in Framer with break points and components that are reusable and even exportable into your own react component. That's already something you can do, but you'll be able to publish the website directly to a custom domain that you own. So I've already done that. I've got a photography site. There's not a single line of code in it. And I design it in Framer. I design each page in Framer, arrange the photos how I like. And then I just click publish, and it'll go straight to my custom domain. Matt Perry: And yeah. So that's the direction more that we're going to go this year. Noel: Nice. Nice. So would you say you're positioning yourself more, I don't know, in that Squarespace realm? The editable web UI, I don't know, the next generation of that? Matt Perry: Yeah. In a sense. The main difference that I'd say with that is that Squarespace is very much a templated experience. So most of them are. So this is more if you enjoy design or you can design, and you can design with one of these traditional industry tools. Then you can already make a pretty amazing website with elements animated in when you scroll down the page, and stuff like that. Matt Perry: So yeah, I guess it is very much a more design-orientated thing, though because it's so free form. But with the exception that you can also, if a developer, they can go in, and they can sprinkle in little bits of codes, little bits of React, little bits of instantly importing modules from MPM, which happens automatically. You don't need to be that hardcore a developer. You don't need to know command line. You just have to start writing your code. And as soon as you import from low dash, we'll install low dash for you. So it's about making that, I don't know, finding that cross between design and development, really. Noel: Nice. Nice. Very cool. How did you discover Framer and the Popmotion merge? And how did that all go down? Matt Perry: Well, I remember what I wanted to do at one point was make an animation editor, and then I saw Framer get released. And I just said, "Oh, that's what I wanted to do, but about a million times cooler." So I just carried on growing my libraries. And Ed Coone, the CEO of Framer, he got in touch with me from seeing what, not saying I'm addicted to Twitter, but I certainly spent too much time on it. And he'd seen some of that. And they needed an animation library, basically, to improve that workflow from prototype to production. Matt Perry: And that was it, really. So I hadn't really considered working for him. I just really at the time had had enough, I guess, of working for other people. I wanted to work on my own project, if not forever, then just a little bit until I ran out of money and needed more. But when we started talking, I realized it was a pretty perfect fit between what I wanted to do, and what they needed out of me. So yeah, it's been almost, is it four years? Three years, I think. It's been a while. And yeah. And it's great. Yeah. Noel: Nice. Nice. So just for my understanding and for clarity's sake, so now is Framer Motion, what actively... Like when you're in Framer and making those animations, is that powering the animations when you go into preview mode as well? Is that using Framer Motion to render those animations right away? Matt Perry: Yeah, yeah. So you are generating real React framework components. So the whole website thing is a few weeks, months down the line. But what you can do today is design a, what we call, smart component. So it's just an isolated component, and you can give it different variants and hover press states. And there's a mode called handshake, and you can click on that. And that will give you a URL. What we call it, a URL import. So you can then go into your... It currently [inaudible 00:28:08] JS really supports this. But I'm sure other platforms, like Code Sandbox, is working on it. Or has it implemented. But you'll be able to copy, paste that URL. So instead of import motion from Framer Motion, you'll import your button from this URL that we give you and use that into your code. And that component is just a Framer Motion component. Matt Perry: And likewise, there was a bug that came up sometime last year. And someone had been using Framer Motion, because we'd use it in Framer as well. So Framer Motion powers the animations there. But they'd used it in a way, based on a tutorial that I did it, I thought it's this drag and drop. So at the moment, now, if you go into Framer, the downloadable web app thing, there'll be tabs just in Chrome. And those all, when you drag them, they reorder, and that's all powered by the layout animation system. But I had no, when I write this chunky demo, I didn't really think that this is going to be used in a real project. And here it was, sat in inside a Framer. And I had this cold sweat moment, "Oh my God, what? This is everywhere. And I need to..." Matt Perry: So I converted those. It fixes the bug, which that would, because we put it together with duct tape, this drag and drop implementation. That's when the reorder components came to be. Because we needed a simple API that could focus all the entry points onto this functionality, which is then testable. But yeah, that's how that came about, really. So we use it. To answer the question, it's in the UI. It's in the preview. It's exported components. It's quite a fundamental part of that, anything that moves basically. Noel: Gotcha. So in Framer, before Popmotion became a part of it, how were they animating internally? When you'd preview or whatever, preview the app, was it using at the time? Matt Perry: Just an internal. They had an internal animation library. It was quite interesting when I came aboard. It's just, it was the API that was the problem. It wasn't a problem, but they'd come from an imperative. They were doing Coffee. The original, original framer was CoffeeScript. So the animation library was this imperative, not in Popmotion or GreenSock or something like that. But when you had the animate function, you'd animate a value. So if you want to animate lots of values... So it's just things like this. Matt Perry: So even though Framer Motion does have all of that same imperative stuff under the hood. And for advanced users, you can do all of that. In a majority of cases, it's better to use a simple declarative, props-driven API. So it just it is less wiring, essentially. So yeah. So they had a lot of the stuff, and a lot of the stuff, we'd either got an inspiration in the same places. It was just amazing to see. We tackled a lot of the same problems. So it was, I don't know, I thought that was pretty cool. Matt Perry: Yeah. And so, because it meant that already what we had in Popmotion, it was going to be an easy transition from one to the other. And that was it. And it was. Noel: Yeah, yeah, that was my next question. Were there API differences that were challenging when it was like, "Oh, well, we're going to try to replace all this with Popmotion, but XYZ is hard." Matt Perry: Yeah. It did live together for a little while, but it was more like a super set in the end. So yeah, because they had these animate-able values, I think. Whereas now, we have motion values. So that bit was almost a one-to-one, let's just move from that to this. But yeah, it was pretty smooth. Noel: Just on a more personal level, was there any issues with the balancing your time on spending time on Popmotion, on the library, versus working on the Framer integration stuff? Was that ever a balancing act? Matt Perry: No, no. Because when I moved to Framer, I took Popmotion with me. And yeah, there was a deal, but not. I don't want to say it was a deal because it wasn't this big ball to move. But we'd worked it out if Popmotion would go to Framer basically. And that meant that all of my, what was my side project, became my full-time job. So any time was spending on Popmotion from then on, it was the job. So that was fine. So there was no... Matt Perry: Whereas now I know I didn't do a side project for two years, which is amazing. Whereas now I've Motion One. I've brought back this side project element into my life. So at that point, it's not difficult to juggle all the time, but it is difficult, that motivation or keeping up those levels, in terms of having time mentally for your side project as well as your day job. That's more where the struggle comes in. Noel: Yeah, totally. Matt Perry: So yeah. Because you've got to be careful to not burn out, basically. Kate: I'm curious. You've talked about this on other podcasts, your advice for people who are working on a project, an open source project, what advice would you give them if they're pursuing it to be backed by a company? Or your thoughts there? Matt Perry: I know when you say you've heard me talk about this, so at the risk of contradicting myself, what did I say then? What was my last sentence about? Kate: Let's see. What podcast was that on? Oh, the React Podcast. Matt Perry: Oh yeah. Kate: And that's been a couple years now. But at the time, you were pro. Yes. Matt Perry: My situation might have changed. I think that I was lucky. I think that was number one. Being super focused is another thing. I obviously only do animation, and that is a blessing and a curse because I'm quite interested in shaders and some 3D stuff, but I'll never really, I don't know, I feel like I can mess around with it, but I'll never be able to, or at least for a while, I don't think I'll have the time to get my head completely involved in that. And I feel like when you really immerse yourself in something, that's when you can start getting quite good at it. And before then, you just, unless you naturally talented... No. So you need that time in it to get that good. Matt Perry: And I think then you've got a better chance of someone else needing the skills that you're showing off naturally. You're showing that you've got a natural enthusiasm for something, which I think will lead to a natural... The project that you're making will be good as well. But that's not to say that that's advice that I'd happily give someone. You have to be super into it to be able to spend that much time thinking about it, doing it because otherwise that is when you burn out basically. Matt Perry: And I think the primary thing is just to enjoy it. And so I enjoy it. So I try and be quite mindful of the amount of time that I spend doing something. But at the end of the day, this is something I really enjoy. So even though I think, "Oh, wouldn't it be good to get involved in some other part of this industry," I enjoy this enough that that's not really a problem for me. Kate: Yeah. Awesome. Matt Perry: I also like, just as side. So I remember there was already people working in the world of web animations API and trying to make a nice API around that. And what I said, because when I released Motion One, I think I got the sense of, "Ah, here's what I've just done," like a waste of time. And I was like, "No, because, first of all, you now are almost a domain specialist. You know so much more about the ins and outs this than basically anyone else." Matt Perry: And they said, "Oh, what if I pivoted to this other thing?" And I was like, "It doesn't matter what you do. If you are interested in that, then definitely do it. But don't worry about it being the right thing to do. Just enjoy it. Get good at it. And whatever happens, do that." Most people work a nine to five. I do now, luckily, on something that was my side project, but that's just what's more important. It's just yes. It's the whole, again, it's to stay in the game, you just got to keep enjoying yourself basically. Otherwise... Kate: Yeah. No. It's interesting because, especially with animations, there's a new animation library that comes out. We see so many. So it's interesting. It feels like there's a lot of stuff in the space, but it's one of those things that can always get better. And as you guys were talking about earlier, there is a way to do too much. And so finding that sweet spot is a challenge, I think. It can't hurt to just know more about that and have more experience with that. No, that's really cool. Kate: Okay. So we are coming up on time. Did you want to plug anything for our listeners? Point them in a direction to go look at stuff, that sort of thing? Matt Perry: No. All I'd say, so if you want to check out, well, I'm hoping Google will do it's job to some degree, but this Framer Motion, if you're a rep developer. Motion One, if you want to use web animations API or your a View developer. And my Twitter is twitter.com/MattGPerry. And I believe that's... I'd suggest I gave you the whole follow me thing, but that's where I publish everything. So if you want to keep up, say, Framer Motion, on Motion One, I do it all through there. And hopefully, there'll be news on a Motion One for svelte soon. So if you're a svelte fan, then definitely stay tuned. Hate that phrase, stay tuned. It doesn't even make any sense in this day and age, but I said it. So... Kate: Very cool. Awesome. And we'll include all those links in our show notes. Matt Perry: Cool. All right. Kate: Awesome. Thank you so much, Matt, for coming on. And yeah, we'll see you around. Matt Perry: Yeah. Thanks. Brian: Thanks for listening to PodRocket. Find us at PodRocketPod on Twitter. Or you could always email me, even though that's not a popular option. It's Brian@logrocket.