We’ve got Steve Gardner on this week! We get into all sorts of nitty gritty detail on the ol’ Christmas Cannon, a Pen of pure joy. Steve has some absolute classics that show off the web at it’s very best, like the Airplanes Pen. Can’t beat Steve’s cleverness and execution.

Time Jumps

  • 00:46 Hard to be creative sometimes
  • 01:56 Christmas cannon pen
  • 04:00 Mouthblogging the Pen
  • 06:14 What is Blender?
  • 07:46 How do you plop the graphics together?
  • 11:17 Sponsor: Netlify
  • 12:38 This is for fun
  • 16:43 What’s the deal with your avatar?
  • 18:25 Easter eggs on the web
  • 20:34 Animation and digital design
  • 21:48 Using Greensock
  • 22:35 Airplane Pen
  • 26:05 Do clients want you to recreate your Pens?

Sponsor: Netlify

Quirrel Joins Netlify and now we have Scheduled Functions (in Beta)! Wanna run your cloud functions on a time-based schedule? Now you can without even leaving your repo.


[Radio channel adjustment]

Announcer: Today, on CodePen Radio.

Chris Coyier: Hey, everybody. Time for another CodePen Radio. This is 354, and I have what I'd consider real CodePen royalty, a CodePen luminary on the show, Steve Gardner. How ya doin', Steve?

Steve Gardner: I'm good. Yeah, thanks for having me.

Chris: Yeah. You're welcome. I think we've met before, one time, somewhere, some conference years ago.

Steve: Yeah. We met at Jamstack Conf., I believe.

Chris: Oh, fantastic. Back when Jamstack was cool. Still is, really, but it had a heyday there for a minute.

Steve: Yeah. Yeah, I think it was the first one, actually, as well, in San Fran.

Chris: Oh, nice! Yeah, fantastic. Well, we meet again. [Laughter]

Yeah, I asked you on the show, and then I've done this to a few people so far now. They're like, "Yeah, but it's been a minute since I've had time to do any creative coding or put anything on CodePen or anything," which I understand. Life has its way of taking us in different directions, don't it?

Steve: Yeah. Well, like for a lot of people, it's been a difficult few years. Creativity hasn't maybe flown as well as I'd like to have done, but I feel like it's coming back now. I feel like I'm getting the desire.

Chris: Do you really?

Steve: Yeah. Yeah. It's coming back now, I think.

Chris: Yeah. Good. I've heard that, and I've heard plenty of defenses of it, too. Like, "Don't be hard on yourself for not feeling creative. Creativity comes from a certain place that is damaged by the type of crap that was happening in the world the last couple of years."

Steve: Yeah, and you can't force it as well. If you really try and force it, it just doesn't work.

Chris: Right. Right.

Steve: It doesn't click.

Chris: Totally understandable in that way. You have some beautiful Pens. It's not like it's been ten years. Man, it hasn't been that long, really.

Steve: No. No.


Chris: Some of my favorite Pens of all time -- certainly my daughter's favorite Pens of all time -- the Christmas Cannon, which you have produced, is a household favorite for sure.

Steve: Yeah.

Chris: My daughter sits on my lap and just smashes that spacebar all day long.

Steve: Yeah, my kids did the same. Yeah.

Chris: Yeah. [Laughter]

Steve: I had them testing that one a lot.

Chris: That's a good one. We can get into that kind of thing a little bit. I think it's fun to talk about particular Pens, if that's okay - if you remember them to some degree.

Steve: [Laughter]

Chris: Whenever I think of something like this, I'm thinking it's probably Canvas, Three.js, and stuff. Is this a Three.js deal?

Steve: Yep. Yep, it's a Three.js and Cannon.js because Three.js doesn't do physics on its own, so there's a 3D physics library called Cannon.js, which is appropriate for making a Christmas cannon. I thought that was a good matchup.

Chris: Oh, yeah.


Chris: That's funny. It seems like probably what that library was meant to do.

Steve: [Laughter] Yes.

Chris: Fantastic. I didn't even realize that, that Three.js is 3D but that doesn't mean that it's necessarily interested in movement, necessarily.

Steve: Not really, no, so I don't know if it handles much in the way of animation. I've always used GSAP with it and then, yeah, a bit of physics.

Chris: Oh... Yeah.

Steve: I use Cannon. There are a few others. Yeah. I mean I guess that would make it pretty heavy. It's already quite big, so you don't want to be adding all that extra stuff to it.

Chris: I see. I see. Oh, that's funny. For the movement, period, then you reach for GSAP, but GSAP doesn't care about physics, so then you need a physics library, too. What a house of cards.

Steve: Yeah. Yeah, and I often mix it up as well, so maybe if I need to have something animate in the physics, you can ask GSAP to amend the velocity figure or whatever in the physics. You can kind of mix and match.


Chris: Oh... Sweet! All right. For the radio listening people, it's kind of like three walls of a room: a floor and two walls. Then there's a couch and everything kind of plops into place as you start this thing. There's a fireplace on the wall and stuff.

Old Steve's face comes up. A classic. You have kind of an unmistakable avatar, which we can get into a little bit more later because I think there are some interesting stories there. But you greet us and warn us that this stark white room isn't very Christmas-y at all. Then out comes the cannon, and you start firing presents, ornaments, and all kinds of stuff into the room.

Everything about this is interesting, but let's say it was my goal today. I woke up, and I was like, "I am going to make a room, and I'm going to put a model of a TV in it," do you think I could get it done?

I know you don't know what I know. I'm just asking, did you have to sit here and hand model a TV? Can you download tv.3d and just use it?


Steve: Yeah, so there is. Yeah, so there was. Google had a thing called Poly, poly.google. I can't remember what it's called, but that's where I got those models from, but that doesn't exist anymore. There are a couple more. I forgot what.

One other took on the reins and took all the models from Google because they were all open-source, and so host them somewhere else.

Then there's another one. A new one has popped up, which is really good as well. There are plenty of good options for getting free--

Chris: You mean a TV. You can get a TV?

Steve: Yeah. Yeah. Yeah, I mean if you want something really high def, you're going to have to start paying for it, I think. But for this sort of thing, you can find it.

Chris: Nice. Right. I think of it like an icon library, right? Most people aren't hand-crafting their own icons. But if you want a really good set, you probably are going to pay for it.

Steve: Yeah. Exactly, yeah. I mean with this stuff, though, it tends to be a bit weird. A lot of that stuff, I had to bring into Blender. Not to model it, but just to resize it and get it kind of all the same sizes.

Chris: Oh...

Steve: Because the table might be made by one person, a scale that's different to the sofa by another. I kind of had to go in and just normalize all the sizes.

Chris: Blender being some kind of 3D software. What is Blender?

Steve: Blender. Yeah, so Blender is an amazing piece of software, actually. It's gotten really good.

I opened it up eight years ago, and it was the hardest thing to get into. I found it really difficult to learn.

Chris: Mm-hmm.

Steve: But recently, probably a couple of years ago, I opened it up again and it just looked completely different. It's so much better now. Yeah, it's free and open-source. Yeah, it's really good.

Chris: God, how does that work? That's amazing.

Steve: It gets a lot of money from big companies, I think, so that's good.

Chris: Oh... What a cool success story. I should probably learn more about that.

In the world of, I guess, non-3D graphics, if you're like, "What's the free version of Photoshop?" everybody would say GIMP. That's fine. I'm sure lots of happy and healthy GIMP community. It's lasted for a long time. But I would argue that you open it and it's not widely celebrated for its greatness. You know what I mean?

Steve: Yeah.

Chris: Sorry, GIMP people. I'm sure maybe there are plenty of people that do think it's great. But they don't speak about it as highly as you're speaking about Blender.

Steve: Yeah. No, and I think you'd have gone back eight years ago, it had that feel. From my point of view, anyway. Opening it up, it kind of felt like not much work had gone into the UI. It was probably quite powerful, but it wasn't easy to learn and things were a bit weird.

Chris: Right.

Steve: I think they've really changed it up in the last four or five years. I don't know how long it's been now.

Chris: Is it for 3D modeling? If that's my goal in life is to work for Pixar or something and I'm 14 years old right now. It might be a decent piece of software to pick up and start working in?

Steve: Yeah. Absolutely. Definitely, yeah. Yeah.


Chris: Okay. All right. Well, that's interesting. You get these models. You resize them. You plop them down in the room. I don't know what plopping down entails, but there are some lines of code here, so you could probably figure it out if you had to. God bless open-source, I guess.

Then how do the rest of the pieces come together?

Steve: That's tricky. The tricky part, yeah, actually is matching up the physics with the models. The models themselves know nothing of the physics engine and the physics engine knows nothing of the models, so you kind of have to build it out in the physics engine in simple geometry. The TV, for example, is a thing rectangle with another thing rectangle for the base kind of attached to each other.

Chris: Oh...

Steve: Then you have to get the size right. Then you have to tell Three.js that you want to have it on every take of the rendering. It needs to match its position in the 3D.

Chris: Wow.

Steve: That's kind of how, when the whole things starts up, I have them actually placed a bit too high. When I turn on the physics and say run, everything just drops down a touch, just bounces into the room because the physics is told. I told the physics to start a little bit high and then all the 3D models are just matching.

Chris: They are aware of a floor because physics just has a floor.

Steve: Yeah.

Chris: Oh--

Steve: Yeah, exactly. The floor is a bit -- so I actually started this Pen probably two years prior to actually finishing it.

Chris: [Laughter] Yeah.

Steve: Because I have a complete nightmare with getting the physics and the models matched up. It was just kind of like Christmas CodePens are a bit weird because you've kind of got a limited timeframe to finish.

Chris: Oh--

Steve: You don't want to release a CodePen for Christmas in January.

Chris: I was going to say, like, what if you finished in the middle of summer or something. Could it have been the Easter Cannon at some point?

Steve: [Laughter] Maybe if I'd have changed it, but I kind of left it. I wasn't having much luck, and I kind of thought, "Well, I'll come back to this next year." I did, and I think I actually took, yeah, two years before I got back to it. I kind of started from scratch, worked out a better way of matching these things up. Yeah, there was a little bit of a running joke in my house.

I had this lamp, and it kept falling through the floor. It kept hitting invisible objects. It was just like, "How is that lamp doing?" Oh, don't talk about the lamp.

Chris: Oh! [Laughter] I see there is no lamp present in the final version.

Steve: [Laughter] Yes.

Chris: [Laughter] The lamp got--

Steve: The infamous lamp did not make it in.


Chris: No, that's fine. It blows my mind that the models have nothing to do with the physics of it. You'd imagine -- I would imagine that they're very friendly with each other. For this model to physically look like a TV or a couch and all that, that's the model sitting there. Then you had to essentially redraw a simple version exactly on top of it.

Steve: Yeah. Yeah, and actually, there's a line of code in the JS, if you ... like a debug mode, and it throws in all the simple geometry into the scene.

Chris: Right.

Steve: It's like little red boxes everywhere, and you can kind of see how....

Chris: It's like the outline one pix solid red trick for 3D.

Steve: Yeah. It's exactly that. Yeah, because it's a complete nightmare. You've got this invisible physics thing, which you can't see or inspect. Then you've got these models, which maybe are matching up. As you're making this physics object, you say, "Make a red cube the exact same size," and would smash them together. That's how I'm going to see stuff.

Chris: Oh, that's great.

[Guitar music starts]

Chris: This episode of CodePen Radio is brought to you in part by Netlify. Netlify has a brand new feature. It's called Scheduled Functions, which is great.

You know Netlify already helps you run your cloud functions. It can run them fast and hot. It can run them long and slow. You know what I mean. They have all kinds of products around their cloud functions.

This is brand new that says you can run them on a schedule. Meaning I want to run every day, every week to clean stuff up, every hour - whatever it is.

I'll tell you. This is cool for me. I have a site called conferences.css-tricks.com, which lists upcoming conferences. When the build process runs, it takes conferences that have already passed, puts them in an archive, and makes sure that the homepage of the site is listing upcoming conferences. It's time-based. It's all code written into the build system, so all I've got to do is trigger the build every day.

I used to wire up third-party tools. I even paid to do it. I don't mind doing that, but that knowledge is baked into my head. It's kind of lost on the repo.

Now this is like, I can tell Netlify itself, "Please do this." It's like four lines of code in a function that just pings a URL that says Netlify to rebuild it. Now, all that knowledge is baked into the repo. It's perfect for me.

I love it, but there are all kinds of reasons. Send my newsletter every week, or new blog posts, or whatever it is. All kinds of use cases. It's nice.

They bought a company called Quirrel, which helped produce this feature and all that. They've got a blog post about that on the Netlify blog. I'll link that up in the show notes.

Congrats on the release. It's really cool and immediately useful to me, so high-five.

[Guitar music ends]


Chris: Okay, so that comes together. Then you add sounds, and there's a cursor. There are all kinds of extra tricks to it. No wonder this took you forever. This was purely -- you're just getting a kick out of this, right? There's no client was begging for a Christmas Cannon.

Steve: No. No, it's not on the top of anyone's list of things they need.


Chris: It should be.

Steve: It was on the top of my list of things to make, for sure.

Chris: Yeah. That's fantastic. Yeah, it's cool when something gets a life of its own in that way. All right. Well, that's Christmas Cannon. That was a couple of years ago, but certainly endless entertainment for loads and loads of people. Fantastic.

Do you do client work, though? What's your life like?

Steve: Yeah. I work for a creative agency now called We the Collective.

Chris: Ah, right.

Steve: I'm back in the creative agency world. I left for a little while. I started off life in the creative agency world.

Chris: Uh-huh.

Steve: Then I joined the big data, data vis world for a little while. For quite a while, actually. Now, it's nice to be back, back to the creative agency work. I'm enjoying that.

Chris: Yeah. Yeah. What's that? I mean it sounds like you're into it, but what does it mean? Is it Don Draper stuff, convincing clients of interesting strategy and such?

Steve: I'm working remotely at the moment, so I don't get too involved with the client-side of things. But yeah, we work--

Chris: It's happening.

Steve: Well, yeah, it is happening. I'm moving out to Canada next month, so that's exciting.

Chris: Oh, really?!

Steve: Yeah.

Chris: That is exciting.

Steve: Yeah. It's a bit stressful, but we're getting there. [Laughter]

Chris: Yeah. Congratulations.

Steve: Yeah. Thank you.

Chris: Don't return your boxes. Just keep them. Flatten them. You're going to need those.

Steve: Yes. Yeah. [Laughter] Yeah, so I'm working very closely with the creative team, but I'm not working super close with the clients at the moment. Yeah, that's the cool part. I like that process on its own, just working really closely with the creative team and making sure that their ideas get made.

Chris: Yeah.

Steve: As they imagine them rather than....

Chris: Yeah, exactly. Man, I'm envious of that world sometimes where there's so much. There's a certain speed of ideas that have to happen, right? I'm sure your clients are not like, "You know what? If you can get to this in the next three years, that's cool." You know? That's not happening. There are deadlines, not that anybody relishes a deadline. I'm sure there are some people out there. But it gives you some, you know, it's got to get done.

Steve: Yeah.

Chris: It turns your brain on. Let's go! Then perhaps that work raps up and there's another client that's totally different.

Steve: Yeah.

Chris: You have to do something new, and there's something kind of exciting about all that that's very different from the people like me, I guess, that do product work. We literally are thinking three years out because we just kind of have to. It's not that that's not exciting but certainly isn't as exciting as new project, new project, new project.

Steve: Yeah. I lived in the product world.

Chris: Right.

Steve: That was just before this, so I have experience. There are advantages and disadvantages to both.

Chris: Yeah. Right. Right. Very few people end up -- I feel like the most common thing is to bounce back and forth.

Steve: Yeah. I think that's fairly natural to do one thing and then after--

Chris: Yeah.

Steve: I mean I did the product thing for a good eight years, so it was time to do something else.


Chris: I mentioned your avatar. What was the deal with that? there was this massive grid of Steves all over the place.

Steve: [Laughter]

Chris: Then it was kind of a game to find rare Steves, in a way. They weren't NFTs, I don't think. They were just regular--

Steve: [Laughter]

Chris: Not yet anyway.

Steve: Yeah. Yeah. Not NFTs, but yeah. I was actually a bit surprised at how people -- how well that kind of went down. I kind of had this silly idea. I've always liked adding Easter eggs to things. I always liked trying to hide little things.

It's a bit like what Marvel will do. You can go to a Marvel movie and enjoy the movie just for what it is. But if you're a superfan, you pick up on those tiny little details.

Chris: Yeah.

Steve: I kind of like adding that kind of thing to the stuff I build. If you know to look for these hidden Steves, then you go look for them, and you might find them.

Chris: Yeah.

Steve: That's super fun. Yeah, I had this idea of creating a collection of versions of my avatar and then just hiding the URL in places. If someone comes across the URL, they just go to it. It says, "Oh, well done. You found the actual Steve." Sometimes, it's obvious because you click on the picture of the avatar, and it then takes you there. Sometimes it's just a code, and you've got to kind of know what that code means to know what to do with it.

Chris: Hmm. Nice.

Steve: Yeah, some people it kind of really worked. Some people really got into it. It was really nice. It was a fun, little thing that I really enjoyed seeing who found it. Yeah.

Chris: Nice. Yeah. I watched a YouTube video the other day. This was way back early Web. There was some URL that just had a login screen on it. It was black and white. It captured the attention of early Web forums. They were looking at the HTML source code. They were pinging it. They were figuring out who it was registered to. It had this element of a real Web mystery. I'm not sure it was all completely healthy.


Chris: Probably some obsessives or some person that was the target of this search that didn't want to be, necessarily. But it made me think. Wouldn't that be fun to put together? You've actually done it here with your cool avatar game, but one that was more involved.

Steve: I remember that.

Chris: Yeah?


Steve: I remember this. There was a website for the TV series Lost. It was years ago, back.

Chris: Hmm.

Steve: It was like the Flash website. It had this thing where it came across. I can't remember the company. It was like Dharma Initiative, or something, in Lost.

Chris: Yeah, it was the Dharma Initiative was the mysterious company with the crazy polar bears.

Steve: Yeah. That's right. It was a website.

Chris: Yeah.

Steve: It was a website for them. But as you kicked around, you found mysterious things. The website kind of broke. Yeah, I remember that being a whole thing where you had to spend ages trying to hack the website to try and work out what was going on underneath. It was really cool.

Chris: Oh, man!

Steve: That kind of inspired me for years.

Chris: I wish -- that's so cool. Wouldn't that be the greatest if they came to We the Collective? You know, Lost was rebooted or something, and that was the way to launch the show.

Steve: [Laughter] Yeah.

Chris: Remember the numbers, like 4, 16, 18, whatever. But you'd do it with a delay in ping responses or something weird. God, that would be so fun to work on.

Steve: Yeah. I mean that website was really cool. It's a long time ago now, so maybe it wasn't as cool as I remember it. Maybe I've kind of imagined something better, but I certainly remember it. I don't remember many websites from back then, so it worked.

Chris: Yeah. The fact that it stuck, that's kind of a big deal. It helps the old brand, especially if there's an element to mystery to the brand already, which that was the whole deal with Lost.

Well, animation has always been clutch for you, in a way. I'm not sure if that's how you think of it or if that's just a natural aspect to digital design these days - or whatever. Lots of GreenSock stuff. Then you had a newsletter for a while that was all about animation. It sounds like you're in it.

Steve: Yeah. Yeah, well that's how I kind of got into Web development. I didn't start my career with the intention of being a Web developer. I wanted to be an animator, so I loaded up Flash to learn frame-by-frame animation.

Chris: Oh...

Steve: As I started using Flash, and I started realizing that adding code was quite easy -- back when you just applied a bit of code to a button and told the timeline to go to and stop at a certain place.

Chris: Right.

Steve: That kind of sort of learn code by mistake. After a while, there was a moment where I was like, "I'm enjoying the code more than I am the animation."

Chris: Oh...

Steve: Yeah, so I'd come in from an animation background.

Chris: Okay.

Steve: That was the desire to learn that, and then the code became the creative outlet more than maybe the animation did.


Chris: You, like so many CodePen people -- I'm not sure what the magic sauce is here -- end up at least having GreenSock be a part of their toolkit so regularly. I don't know if it's just because their library is really good or if there is some community crossover in some way. Certainly, you've been a user.

Steve: For me, it was because I learnt it in Flash. It was a Flash library to start with.

Chris: Oh, no! You go way back, then. Yeah, right.

Steve: [Laughter] Yeah.

Chris: Yeah.

Steve: Yeah, so as we transitioned, as we all kind of lost Flash and were kind of blindly trying to rediscover what we were going to do in this JavaScript world, there was this familiar plugin that I knew already.

Chris: Yeah.

Steve: It is really powerful as well. It's not just because I'm familiar with it. It's a very powerful library.

Chris: No, and where I was going with this, to some degree, is they're continually evolving - and all that.

A couple of years ago -- this is one of the greatest Pens of all time by anybody's record, I would think -- you did this Pen with airplanes. Again, I don't know if this one was client-related or not. I guess it doesn't matter, but it's just this astounding -- I think they call it -- scrollytelling these days. As you scroll downward, things are happening on the page. Not necessarily parallax in this case, but a literal model of a plane is moving around and things are happening to the plane. It's really kind of outstandingly classy looking, and GreenSock is involved there in some way, too, right?

Steve: Yeah, so that's their scroll trigger plugin, which was a revelation, really, because you could do it before with GreenSock and (I think it was called) Scroll Magic, maybe. I can't exactly remember what it was, but it was a bit clunky. It didn't work so well together. It took a lot of effort to get them to work.

When they released scroll trigger and everything kind of just worked out of the box, it was really nice. The reason why I built this one was because, as soon as I saw what it could do, I was like, "Well, this becomes relatively simple." Again, you're loading in a model.

Chris: Right.

Steve: Then you're just using GSAP to just animate it around. It's essentially a timeline. You create a timeline in GSAP and say, "I want this model to move here, here, here, here, here."

Chris: Yeah.

Steve: Then just attach that animation timeline to the scroll.

Chris: Okay. In the grand scheme of things, for you, you look at this Pen as not particularly -- like compared to the Christmas Cannon -- this was a piece of cake.

Steve: Yeah. It was certainly simpler. The difficult thing with this one was the transition between the 3D, the plane flying, and then to the blueprint kind of design where the model stays still.

Chris: Yeah.

Steve: The background sort of becomes sticky, and then it's sort of rotating in a kind of wireframe view. That transition was a little tricky. Since making that, I've learnt better ways of doing it.

Chris: Oh, funny. Really?

Steve: Yeah. Every time I make a CodePen, a week later, I want to remake it. But that's fine. [Laughter]

Chris: [Laughter]

Steve: You have to move on.

Chris: It's astounding to me that it works so well on any screen size because it's just a miracle of the layout that you chose, I guess. You'd think things like this would be very hard to make responsive. But no, in this case somehow you've gotten it just right.

Steve: I think that might be because a lot of it is just standard HTML. The 3D model is on its own, so it's like a transparent background.

Chris: Right.

Steve: Everything else you're seeing is just HTML, so it's just acting responsively like a normal HTML page would.

Chris: Right, and you've kind of embraced the idea that when the plane overlaps the text, it's kind of a cool and temporary thing.

Steve: Yeah.

Chris: It's okay that that's happening. It's actually kind of good.

Chris: No, I like it. It's like the clouds as well. I think the clouds go over it as well, and that's okay. That's cool. It's all part of it.

Chris: Yeah, and those are almost especially okay because they're a little transparent. It just ends up being a cool thing.

It's like every frame of painting, in a way. This is like that. You could scroll down to any arbitrary point, kind of take a screenshot, and be like, "Yeah, that could be a poster." You know? Really beautiful in that way.

Does this lead to more? I'm curious about how that works, especially now that you're back in agency work. Do you get a client that's like, "Yeah, just do it like that"? [Laughter]


Steve: [Laughter] Yeah, not so much the 3D stuff, but the scroll trigger for use, we've used it a whole bunch of times. Yeah, it's become almost while I wouldn't say standard, but if you need anything other than a simple kind of fade in.

Chris: Yeah.

Steve: The intersection observer could do. Yeah, it's what we reach for, for sure.

Chris: Yeah. You'd think the plane thing, you know, like if I was on the Web team at Delta or whatever, I'd just be like, "Yeah, we want that. That should be our homepage." You know? [Laughter]

Steve: Yeah.

Chris: It would be a lot cooler than what they have now, I'm sure. All right. Well, great. You're back at it, and the creative juices are starting to come back.

Steve: Yeah. Yeah. I've got a list, a list of things to make. I just need to find the time now.

Chris: Oh, nice.

Steve: The desire is back. We're kind of in the middle of moving countries, so that's kind of putting it on hold for a moment. But, yeah, I definitely have a desire to get back into it, for sure.

Chris: Yeah. Yeah. I know. I know what that's like. It's a big life change. Everything is just on pause. Don't worry about it.

Steve: Yeah. [Laughter]

Chris: Come back in a different way. Well, good luck with that. Good luck with the new gig. I'm not sure it's that new, right? How new is it?

Steve: I've been working for them for six months, seven months. Yeah, it's not that new now. Yeah, I kind of feel like I'm kind of settled now and I know what I'm doing, so it's nice. It's a good little team as well, so it's, I feel like, a really close-knit kind of team.

Chris: Yeah, fantastic. They even have a team on CodePen, I believe.

Steve: Yes, that's right. Yeah.

Chris: Yeah, long-time fans. That's fantastic. Well, good luck with the move. Good luck with the new job. I appreciate talking to you and sharing some of your creative spirit and choices. Is there anything you want to tell people, encouragement? What if you want to be the next Steve?

Steve: I often say, "Build random, silly things." I think that's a good way of learning because you can't just look it up. You have to just get stuck in and just build it.

That's my philosophy a lot of the time. Just build something a bit silly. I'd recommend people build more silly things.

Chris: I like it. Maybe we'll work that in. We'll put that at the top of the show notes, people. "Build more silly things!" You heard it here from Steve.

Steve: [Laughter]

Chris: I appreciate your time, man. Take care.

Steve: Thank you for having me. Cheers.

[Radio channel adjustment]