A few months back, Alex and I did a 10-year anniversary episode that took the form of 10 bits of advice formed in the fires of running a software company for a decade. That was us talking at you. We thought it would be fun to turn the tables and have you talk at us in the form of an Ask-Me-Anything follow-up to that 10-year show.
Time Jumps
- 00:32 AMA it up
- 01:46 Is being a founder what you imagined it would be? — Russell Heimlich
- 06:20 What’s your favorite temporary hack that ended up lasting ten years? — Shawn Wang
- 11:19 Have you inspected popular sites to see if they’re running code you published? — Avi Zuber
- 14:18 What is one feature you wanted to do, but couldn’t? — Todd Libby
- 18:48 Who is your favorite employee and why is it Rachel Smith? — Rachel Smith
- 20:33 What’s your favorite part of CodePen? — Sue Pooh
- 23:46 What’s the interview process like at CodePen? — @jackson_the_dev
- 30:51 What can you tell us about future CodePen? — Andrew Walpole
- 35:05 Have you thought about offering a new product? — Andrew Walpole
- 39:48 Is the web always going to be monetizing all the things? — Charles Villard
- 44:30 What is the largest piece of technical debt at CodePen? — James Deagle
Transcript
[Radio channel adjustment]
Announcer: Today, on CodePen Radio.
Chris Coyier: Hey, everybody. CodePen Radio 387, I think. I've got Alex with me. What's up, Alex?
Alex Vazqez: Hey there.
Chris: Yeah, and Marie is on too. It's a triple.
Marie Mosely: Hey, everyone.
Chris: The point of this one is that Alex and I did a podcast a couple of episodes back commemorating ten years of CodePen existing, which was really cool and fun and a big deal. I still think back on that because I'll about write a sentence that I'll allude to CodePen being almost ten years. I'm like, "Oh, no. I can't say that anymore. We are over ten years old," which was cool. That was reflective. That's already out. You can go listen to that. Alex and I went back and forth with five major kind of things we learned and perhaps advice for you.
Then I got to thinking, like, let's give y'all out there an opportunity for this. Just basically on Twitter, I mentioned a few times that we would do a follow-up episode with your questions AMA style (ask me - or us - anything). We got some good questions from y'all, so this show is that show. Let's AMA it up. We've already got our questions here. Marie is going to read them, and Alex and I are going to attempt to answer them.
We're just going to wing it a little bit here. It's not like we spent two months researching our codebase to answer every detail here. It was just kind of a feel-for-it kind of questions. Let's get it started.
Marie: All right. Well, first up, we have a question from Russell Heimlich. The question is, "Is being a founder what you imagined it would be?"
Chris: Imagined it would be.
Alex: Chris, go ahead and take this one. I don't want to. I don't want to be Debbie Downer upfront.
Chris: [Laughter]
Alex: Let's sandwich this guy.
Chris: Yeah. Okay. I can't remember what my imagination was 10+ years ago. I can't jump back into that body and think about it. But I bet there was some excitement, like, "Yeah! I'm going to run this company!"
Alex: [Laughter]
Chris: And I 100% know that I don't feel that -- I don't know. it's not like I'm like, "All my dreams have come true."
Alex: [Laughter]
Chris: But I do like being a founder. I like having -- I think part of what draws you to it is having some degree of control over my choices and my day and stuff. Maybe I'm a bigger control freak than I think in my head, so that's about right.
Do I imagine every detail that we've had to go through all this time? Hell no. That's been crazy.
Alex: Yeah. Yeah. Yeah, my answer to that would be it is great. On one end it's great, but I think there are details that I didn't expect.
Like when we started, I realized that I had ideas about how certain things worked where I was so sure that I was right and that I was capable of accomplishing a certain task. One of the beauties of being a founder is you don't -- you can't just hold that idea anymore. When you actually go execute on it, you are given feedback almost instantly at how bad you are [laughter] at certain things. And so, I've always taken that to heart.
I find it to be a positive but, day to day, sometimes when you are reviewing and looking at improving, sometimes it can be a bit exhausting because you're always looking to adapt, you're always looking to improve. It's ten years in. We're still working and massaging on our project management, on our estimations (that I've never been good at for time estimates of delivery of software). And I've been working in the industry about 20 years.
And you don't have anyone to blame, right? Whatever happened, you're at fault because you're responsible for it. I think that part always stuck with me now where I don't get to feel like I'm just on top of the world.
We had good friends that had a really successful startup in Wufoo, and I watched them. I was like, "Oh, you know, they're very intelligent, smart, but I feel like I could do that." And our path has been curvier. Our path had more unexpected--
Chris: Longer. [Laughter]
Alex: --hills and valleys, I would call them. But at the end of the day, when I step back, there's nothing else I'd rather be doing. I do enjoy it. It is amazing. But that's when I take the long view. When I take the day-to-day view, you're a bit tired and you can pick out all the negative things.
Chris: [Laughter]
Alex: Yeah, that would be my answer to that, yes and no, and everyone's story is going to be different. The Web has changed so much. Tech changes all the time. And no one is going to remake Justin.tv and make Twitch ever again. Those are really unique experiences you end up having, and we've had our own path. And so, it's always interesting because you're never the same person after a while.
Chris: Yeah. Yeah. Don't you like how he put "founder" in the question, too? Founder is a very specific role.
I was reading this thread just the other day about CEOs. It was about this guy that's hired a bunch of CEOs. He's like, "A good CEO is not involved in the day-to-day just like writing code and stuff." Certainly not. Not driving the delivery truck. Not cleaning the toilets or whatever. He's just the vision guy and just making partnerships and rubbing shoulders.
I'm like, "Oh, my God. Yeah, right. That's me just wandering the halls shooting finger guns at people." Get out of here. I wish. [Laughter]
We are individual contributors, let's say, here at CodePen.
Alex: Yeah. Definitely.
Chris: Okay. Let's do another one.
Marie: All right, so this is one that's going to ask you to look back into your memory banks here. [Laughter] This one is from Shawn Wang. The question is, "What's your favorite temporary hack - will fix this later - piece of code or feature that ended up lasting about ten years?" [Laughter]
Chris: I think Shawn knows that we just hit that ten-year milestone.
Marie: Mm-hmm. Yeah.
Alex: Yeah, we were talking about this before the podcast. The only thing I can think of is GitHub login. When we started, we had GitHub login with GitHub, and we've kept that the whole time. Although, we have added other social media auth logins and our actual email password login. That was a quick fix to be like, "Ah, we don't really want to deal with username and password sometimes."
I wish we had just added more social media logins, but it's also nice to let people log in that don't have an account associated with anything else, specifically if you're coming from a school and you're a kid. That's really nice. You don't have to tie it to any other account. But I would say that was the quick fix that stuck around, and I still use that today as my main login for CodePen.
Chris: Ah, me too. I can't be bothered to use my password. I just click the GitHub one. The GitHub one, not the Facebook one, not the Twitter one. I always use the GitHub one for whatever reason.
Alex: Yeah, it's just part of it is habit and just getting used to that. But yeah, it's really nice.
Chris: I think everybody has their order. You know you go to some site you've never signed up for before, and it always gives you three or four choices. Everybody has their personal, like, "If Google is there, I'm going to use that one. If it's not there, I'm going to use this one." But GitHub is always my top. If that one is there, I'm going to use that one.
Okay. That's a good one. One thing that occurred to me. It's always like, "This week," but this week, I was in some Rails code, and we have this VS Code extension installed (most of us) called GitLens. When you're hovering over a line of code, it says who the last person who touched it was and when, because that's just information that Git knows about your code. It was just some really old Rails code. It says Alex Vazquez, seven years ago. Not quite ten years ago, but there's definitely code in our codebase that you run across once in a while that has not been touched in a very long time. But it wasn't a temporary hack. It was just some fundamental feature of how CodePen works.
Another thing that happened this week, though, that I do think was hackery-ish is that Stripe just released this new release from Stripe. It's called the "No code customer portal" or something. it has some really marketing-y name to it. But the whole point is that if you were building an app today and you used Stripe as your payment provider, as we do of one of our payment providers, you don't have to write a payment UI at all in your app. Not only can they go there to sign up, but they can go there to change their credit card. They can go there to change plans. They can go there to switch from annual to monthly or whatever. You write nothing. It's all handled on Stripe.com, and it looks pretty classy and dice. But I'm like, "Oh, my God. All these kids these days have it so easy."
Alex: [Laughter] Yeah. Yeah, l can't imagine how much easier it would have been if we just started out with that. We started out with PayPal, which--
Chris: Yeah. Or get this, have stayed with Stripe. At one point, somebody -- I remember these conversations. I'm sure you do, too.
We were like, "There is evidence that's easy to find on the Internet that the more payment providers you offer the more money you make. Revenue is tied to options," at least to some degree.
We were like, "We are leaving money on the table if we don't support PayPal." We were like, "Leaving money on the table? That's not our style. We have to offer PayPal."
Now we have a branch of payments that deals with PayPal and a branch of stuff that deals with credit cards via Stripe. Wow! That was a fork in the damn road because, to this day, we are paying the price for that.
Alex: Yes, we are. Yeah. Those are the hacks that I wish were around at the time. But we chose a different path.
A lot of people still use PayPal. It's just convenient internationally. But that's part of the lesson.
Chris: I don't know if I would choose these if we could go back in time. Part of me thinks we should just not have done it. That that should just not be a payment option (knowing what our app could have been if none of the minutes we spent on payments were all dedicated to something else).
Alex: Yeah. If we're going back in time I'm, first of all, buying Bitcoin when it was $20.
[laughter]
Alex: And I laughed at it. And then, second of all, I would not make a website where you allow people to execute code. That was a lesson learned.
Chris: Sure.
[Laughter]
Alex: Just saying.
Chris: we're going to go back to our WordPress themes idea. That was solid.
Alex: [Laughter] A solid idea.
Chris: Yeah. All right. Here we go.
Marie: all right. This one, Chris, I think is mostly for you. This one is from Avi Zuber. The question is, "Between CSS-Tricks and CodePen, you're probably responsible for a volume of copy/paste production code comparable to Stack Overflow."
Chris: Hm...
Marie: I'm interjecting here. I don't know about that. [Laughter]
"Have you ever inspected popular sites to see if they're using code that you've shared?
Chris: Well, sure. A little bit. Yeah, I agree with Marie. You're either underestimating Stack Overflow, Avi, or overestimating CSS-Tricks and CodePen. If we were anywhere near that market. What did Stack Overflow sell for? Like a hundred--
Marie: Let's not talk about that.
Chris: $100 billion or something. No, but you know what was more likely is that, on CSS-Tricks, I would publish something that I wanted to be used, like, "Here's the super cool jQuery slider." Then once in a while, you'd see that.
I do have a memory of, like - what was that? It's a little bit like Panda Express. It was a fast food place like that, but it wasn't Panda Express, but it was like that. I really liked the place, too. We'd go there all the time when we were in Florida.
They used that slider on their homepage. You could do in there and just look and see that they were loading that jQuery plugin, and that was very satisfying. I'm sure it was live for six months or whatever just due to the nature of those kind of websites.
You know what's nice on CodePen? Our code is MIT, you know? If it's a public Pen and you've just found it (because you've just landed on CodePen), you can use that code. I imagine lots of code that people have found on CodePen has found their way into other projects. I mean, obviously.
Alex: Yeah, I mean I remember one time someone -- I think it was H&R Block or Tax Cut. They actually linked directly to an asset, a JavaScript asset, on our website (hosted by CodePen). Then they deployed their software that wouldn't get deployed for a very long time. Wouldn't get updated for a very long time. [Laughter]
And so, people do certain things like that where they'll just link to someone's Pen, someone's library. But yeah.
Chris: Dude. I remember that was the best story ever. They went into total code lockdown because it was tax season and it's just way too risky to deploy your doing taxes online software. Oh, my God. They were like, "Could you please not change that code?"
[Laughter]
Chris: We were like, "Oh, God." We should have been like, "How about you cut us a check for a hundred grand."
Alex: Yeah. That was before we were willing to do extortion at the time.
[Laughter]
Alex: We were just being -- [laughter] We were very new to the profession. We've since added that as a possible way to make money.
Yeah, people do nutty things like that, but appreciate the comparison to Stack Overflow.
Chris: Yeah, we'll take it. We'll take only $1 billion for CodPen.
Uh, okay. What do we got next, Marie?
Marie: All right. Next up from Todd Libby. This is a real good question. We could go on this one for a while.
"What is one feature you wanted to implement but for whatever reason did not or could not?"
Chris: Oh, no. Marie, you don't get to go on this one.
Marie: [Laughter]
Chris: [Laughter] You've got a whole list that you actively maintain, so it's a little unfair, perhaps.
Marie: Let's not open up that scroll. This is for the founders.
[Laughter]
Chris: I'm more interested in that. I have a minor one, but I want t know Alex's.
Alex: It's funny because I feel like the feature that I've wanted to implement, we're actually working on it, which is pretty nice.
Chris: Aw...
Alex: But as far as things that I've wanted, I've always wanted to implement -- I'm blanking on the name -- the language, like a smart language type ahead. What are those things called?
Chris: Oh...
Marie: Oh, an Intellisense type thing?
Alex: Yeah, but the ones with the language server, basically.
Chris: Yeah, I know. It does have a fancy name, doesn't it?
Alex: Yeah. Something to that effect. But just getting real hot and heavy with being able to give more intelligent recommendations and things like that. That is something--
Chris: LSP?
Alex: Yeah, language server process? I don't know.
Chris: Server protocol or plugin or something.
Alex: Yeah.
Chris: Yeah, that's it.
Alex: Just so that while you're typing, you get a little bit more intelligent help. But we've always figured out how to do a bunch of other things, and I think we're finally going to be homing in on being able to do nice details like that (after this release).
Chris: Yeah. Yeah, that'll be fun. That's a common dream among us. There are these little things that would be so satisfying and fun to work on. But we all know that we kind of can't. Not because that's a bad idea, but because we just have bigger fish to fry.
But the goal is to not be swallowed up by these big things forever. It's to be able to be like, "Oh, next week, I'm going to do a little nicety for TypeScript users because I think they'll like it."
Alex: Yeah and it's also a function of the size of the website. I ended up taking it away because it got annoying enough and buggy enough that I couldn't support it. I embedded some sort of code mirror widget where, when you clicked on a color, it let you choose a color picker or whatever in CSS.
Chris: Oh, yeah, yeah, yeah, yeah.
Alex: Little things like that. But at our scale, if it's not done exceptionally well, it's a bit of a nightmare to support and it ruins Marie's day.
Chris: [Laughter]
Alex: And it will ruin my day as well.
Marie: [Laughter]
Alex: Because, if you're going to do something like a language server or little widgets and things like that, they just have to be done so exceptionally well that the amount of support they generate and frustration they generate for the entire community is very small.
Chris: Yeah.
Alex: That's definitely something that changes over ten years.
Chris: Yeah and I remember that color picker thing. Even at the time, there are so many other things that were fighting for. You could be like, "Oh, you don't like it, user? Well, then we'll put a setting in to put it off." But we weren't in a position as a company to be like adding editor settings for complicated reasons. It just never became a setting. And because we couldn't make it a setting, then it was like, "Ah, let's just take it out." Those are lessons we learned that inform us to this day, like, "Ooh, we should be able -- we should architect for the future so that we can be nimble with settings." Believe it or not, we are now. That's cool.
Chris: I put a little micro one on that I dreamed about for a long time would be a search anywhere function. Not function but a way that's integrated all throughout the app.
Let's say you're looking at a tag on CodePen. You should be able to search within the tag.
Marie: Hmm. Yeah.
Chris: Or you're looking at your own profile. You can already search your own stuff. But let's say you've already scoped it down to hearts that you've hearted twice. Right? You've already got a lot of filters applied to what you're looking at, but you can still search. Wouldn't that be cool?
Marie: Yes. Oh, yeah.
Chris: Or you could search a collection that has 500 Pens. You're like, "I know I put it in this collection, but I want to find one."
Alex: Really fine-grain search.
Chris: To be able to combine filtering and searching, yeah, would be cool. That's all doable stuff. It's not like we're sitting around like, "I have no idea what technology it would take to do that." We're just like, "We have a lot to do."
[Laughter]
Alex: Yeah. Yeah and we're not sitting around like, "What kind of ... do we buy to make that work?" That's something we know how to make. Cool.
Chris: All right. What do we got next?
Marie: All right, so the next couple of ones are questions about favorites. This one, the first one, comes from Down Under.
[Laughter]
Marie: This is from Rachel Smith, who is my favorite coworker. "Who is your favorite employee and why is it me?"
[Laughter]
Chris: I love that we kept this in there because it's just Rachel deciding to be silly. Yeah, you're going to pay for it, Rach. You're going in.
[Laughter]
Chris: You're a wonderful employee, Rachel. Rachel has been with us for almost as long as Marie has, I think.
Marie: Yes, just a matter of days. And that was just paperwork. We're part of the same -- like we came in together, basically.
Chris: Yeah, a long time ago. Rachel has learned -- Wow! You know? She even just said the other day. She's like, "It's a good thing that we change the technologies and stuff that we use at CodePen," because I think she's been challenged just as much here learning new things as she would have if she's had five different jobs. [Laughter] You know? So, keep sticking around.
Marie: I can relate.
Alex: Yeah. Yeah.
[Laughter]
Alex: It's funny because I feel like the whole team probably feels that way. We've all grown up dramatically. Miss Marie, you never stop learning things. You're always adding things to your repertoire, and so it's a cool thing. It's actually something I really enjoy about being here.
Chris: Yeah, well, it comes from you. [Laughter] You're the one that's like, "Everybody is learning Go now. Sorry."
Marie: [Laughter]
Alex: Yeah. I'm a bit of a tech magpie.
Chris: Yeah. We were responsible about it, though. Yeah, well, thanks, Rach. You are our favorite employee.
Marie: [Laughter] And now here's another one about favorites. This one is from Sue Pooh. The question is, "What's your favorite part of CodePen?"
Chris: Hmm... So many. You get to go on this one, Marie. [Laughter]
Marie: I do?
Chris: Sure.
Marie: All right. Well, my favorite part of CodePen is the CodePen Spark.
Alex: Ah, nice.
Marie: Because I write it [laughter], but also because I like putting it together. And I am really, really into highlighting the incredible work that people do on CodePen. That's my favorite part.
Chris: Well, I'll take an abstract version of that. I think it's cool that I can literally wake up in the morning and just be like, "I think I'll poke around on CodePen or on a social media network where people post things from CodePen." Guaranteed, 365 days a year, somebody has done something cool, interesting, and clever to look at, which is kind of the whole point, right? It just still blows my mind after all this time. "Oh, you chose our little app to do that? Good job."
Alex: Yeah.
Marie: [Laughter]
Alex: Yeah. I wouldn't say it's exactly the same thing, but I love seeing what the front-end community does when we're building things out and building features. Being able to support that and keep up with it. Keeping up with tech is part of the job here. Just understanding what people are doing with front-end, I'm really happy we chose to focus on that because it's such an innovative part of programming and just development, in general.
There's just a nonstop stream of open-source projects where I'm like, "Oh, that looks interesting. That looks really interesting." And so, the creativity, when you have the tools and you can see the amount of power that's been added to the front-end, the amount of capabilities and things that you can add, it's always kept -- ten years on, I'm still curious about a lot of things because of how much innovation happens. That's really cool. IT's very motivating to see. You kind of want to add to that.
Chris: Yeah. We lucked out in that the front-end changes so much and has been a real -- that's the hottest thing in tech is basically front-end stuff. That could have not been true and been worse for us.
Alex: Yeah.
Chris: Thankfully, it is true.
Marie: Yeah, we're lucky. We have so much experimentation happening on CodePen. It's so cool to see people just take on whatever is new. They start tinkering with it right away, and we see, immediately, all the stuff that's going to inform how people use a brand new feature.
Like for example :has (in CSS), the new :has thing.
Chris: Mm-hmm. Tons of stuff on CodePen.
Marie: All of that is happening here.
Chris: Yeah.
Marie: Yeah, exactly, and it's so cool to see it go from, like, "Oh, this is a concept. This is going to be something that people can do," to "This is what people are doing, and this is what people are going to be using in production real soon." I love that.
Chris: Right. Right, right. I remember when Alpine came out - or whatever. There were tons of people playing with that. Or ZDOG, or whatever. There was just an explosion.
Or if there's some news story about Banksy or whatever. That turns into stuff.
Marie: Yeah. [Laughter]
Chris: It can be kind of meme work that I think is pretty funny.
Marie: All right. Next up, we have a question from @jackson_the_dev on Twitter. It's an on-brand question for someone with that handle.
"If you're interviewing candidates for a senior dev role," let's say at CodePen, "what would you ask them and what would the interview process look like?"
Chris: Hmm... Well, we tend to only hire senior just because we've been so small. And every time we've come up to hire, it's been a moment where, like, "Oh, crap. We really need somebody who really knows what they're doing right now." [Laughter] So, I'd say that's our main experience.
You know Alex has done the most work here. In fact, I was reminded of a repo we have earlier today. I think it was one of those dev, those depend-a-bot alerts came up for it, for some reason.
Alex: [Laughter]
Chris: But you put a repo together at one point that asked a pretty specific question.
Alex: Yeah. Because we are developers who create tools for developers, having an understanding of that is a big deal. But I think it continues to evolve with every interview - dramatically different over time.
These days, I like to see what kind of -- create a project instead of questions that exposes your nature in when you develop. Right? We have developers at CodePen like, say, Stephen Shaw. He really likes to put polish on his features. He likes putting these little pizzazz moments, which we all love. It makes the experience feel really good.
Rachel is very good at explaining a complex idea and documenting it.
Dee is very good at organizing things and putting them together.
Exposing that is really difficult in an interview without really eating up someone's time. So, my ideal is to give someone a small project that it's impossible for them to accomplish because I want to see what they gravitate towards when they're unable to finish something. Right? Like where do they put the focus where you have to triage your time?
What I'm trying to do at that moment is mimic the experience that we have because we're constantly triaging our time and where we spend it and what requires effort. Communication is huge. I think I didn't--
In the past, I've always said that's the superpower of a developer, someone that can communicate a complex idea to a lot of other people. It's how you go from, like, "I'm a 10x developer," to "I'm a 10x team," which is really what you want.
And so, looking for that, that's what I'm looking for. I'm looking for what's in your nature. Where do you want to put your effort. Versus saying, "Do you know how to make a linked list?" or "Do you know how to solve this puzzle?" because, at the end of the day, when you're looking at doing the technical skills, we can overcome almost any technical problem. But being helpful to everyone else on the team is something that you can't just teach someone. It kind of has to be in their nature where they want to help, they want to explain. At least that's just been my anecdotal experience. Communication is king and wanting to help and being interested in doing that.
We're very lucky. We don't review people on how many lines of code they've committed and take that approach because we're developers as well. We know that sometimes you have a negative code line count and you've done some amazing work. Just being able to understand that during an interview process, that's kind of what I'm trying to get at.
But honestly, it's exceptionally hard, especially if you try to balance that with not doing a six-hour interview where you're like, "Hey, am I employed here at this point? Do I work here? Because I've been here for like six to eight hours doing these interviews." [Laughter] And so, we try to be mindful of that but, at the same time, get to the root of that. Yeah.
Chris: That seems pretty grown up considering we've hired a handful of people. You know?
Alex: Yeah. You realize, especially nowadays, things are getting a little complicated and everyone needs help across the board.
When I say complicated, I should say more like sophisticated. The kind of development that we're doing these days -- just judging from industry and what people do -- we're not doing the same thing we were doing in 2015. Not even 2017 or 2019. We keep it moving, and I hope that's going to be really reflected in the software that you see on CodePen very soon.
But it's a difficult process. I don't know if anyone has it right.
Chris: I didn't even know that that was the trick. I'd like to home in on that just to repeat it for a second.
You give someone a task that's too big for them to do in the time that you give them - on purpose. That way the result of their work is the type of developer they are because you get to see which thing they homed in on. That's really funky.
Alex: Yeah.
Chris: I've never heard anybody-- That's cool.
Alex: Yeah, I used to work at Walgreens, guys. I don't mean to brag, but I was an assistant manager. And so, one of the guys that was mentoring me, he was a really great guy. He was the guy that everyone sent people to, to teach them.
One of the little tricks he would do is he would speed up walking, right? Because I'm following this guy around the store, and he would speed up, like do a little speed walk. He'd want to see if you tried to keep up because if you did, it meant you were -- to him, this is his review, his idea of what it was. It meant that you were motivated to kind of keep up and keep trying and put in effort. I always loved that.
Granted, we don't work in a store. And if I walk really fast, that's not going to prove anything about your development style. But I like little things like that where I don't ask you directly, like, "What are your strengths and weaknesses?" I like to see if I can observe them. That's just my own personality.
Chris: Hmm. Yeah. I remember that maybe there were a couple of hires where we actually did the thing that most people do where you actually call their references. [Laughter] Then when we did that, we were like, "Wow! That was a good idea."
Alex: It turns out, and they were spot on, which is really interesting.
Chris: Yeah. That's a little minor one for you there. Not exactly what you asked about but close enough.
I don't have anything to add to that.
Marie: All right. Well, the next question is asking for spoilers, so--
Chris: Hmm.
Marie: We have to think about how much we want to give away here. This one is from Andrew Walpole.
The question is, "What can you tell us about the use cases the new version will go after? Are you worried about alienating any current CodePen use cases?" We're talking about the future, future CodePen here.
Chris: Yeah, we've alluded to it like 100 times on this show, so I don't think it's any surprise that we're working on some new things for CodePen. But we have never told you exactly what that's going to be, and we don't plan to now either. Sorry.
But I think we can attempt to roundabout answer Andrew's question.
Alex: Yeah, I would say we've been around long enough that we see how quickly things change. Being able to support that change long-term is a huge concern for us. Being able to support all the communities and tech that comes out is a big deal for us. We're trying to do that for developers with a bit more experience.
I think that's what I really liked about the question. "Are you worried about alienating any current CodePen users?" I would say yes. There's always that fear, for me, of becoming Photoshop where you can't even get started until you take eight hours of tutorial and you feel inept. It's not something that is intuitive because it's so sophisticated. It's professionals-only software.
And so, for us, we've always been the place where you kind of can just get started. You don't even have to know very much about the tech. And so, trying to retain that, that's been a real struggle and something that we're putting a ton of effort into. We think we got it, but you'll be the judge.
Chris: Yeah. Right. Worried is an interesting way to put it because you're like, "Am I worried?" Yeah, of course, I'm worried. Worry about alienating some user that liked us because they liked us. Then we went and moved their cheese or changed something that they thought was wildly important. But because we're so worried about it, it makes me not worried about it. You know?
Alex: [Laughter]
Chris: It's almost like an ouroboros kind of thing. I'm like, man, we have talked that one to death. It's like, yeah, things change, so I'd like to think that the thing that we're building, there's almost nothing that you can't do later (on CodePen). But of course, I'm going to be a little wrong because it's not done yet, for one thing. There might be little things.
Marie was just talking about it today, making sure that people get as heads-up on what's changing and so that nobody just wakes up one morning and is like, "Oh, man. My workflow is ruined now." But I'm just not worried about it.
This is moving, and it's not moving because, like, "This is how things should be!" We're working for you. We're building this thing because we think you're going to like it. [Laughter] Right?
Alex: Yeah because we think it solves real pain points.
Chris: Yeah.
Alex: We've had a really unique experience solving how you build, essentially, webpages with different technologies. We want to serve so many technologies, so it's been really interesting to have that long-term, that experience over a long period of time because one of the drawbacks of having all these pieces of tech is that every time you try to add them, it complicates things. So, we're hoping we can help there.
Chris: Yeah. Well, that's the answer to the first one is that we've been around a long time. We watch. We know. We're front-end developers ourselves, so we know what the landscape of tooling is like. Intimately, we know what CodePen supports and what it doesn't support. We want to bridge that gap in a really, hopefully, intelligent way so that you can do more things on CodePen. No surprise there.
Alex: Yeah.
Chris: All right. Andrew sent in another one, it looks like.
Marie: Yes. Yeah, there's a second one here from Andrew. This question is, "Have you ever thought about growing through offering a new product? Not just a feature or version of CodePen, but things like a suite of offerings maybe along the lines of the CodePen version of Figma, the CodePen version of SVG tools, et cetera."
Chris: [Laughter] Yeah. We're going to make five CodePens. Buckle up.
Alex: Yeah. Just put code in front of it. Yeah, my take on that is it is so overwhelming to try to make one good product, and we struggle with that and try to improve on that. I've never been like--
I mean I'm brimming with ideas. If anyone ever catches me in real life, ask me about Four Corners Cooking. That's my personal cooking channel on YouTube that is not on YouTube yet, but I will start that once I'm done with CodePen.
No, we're brimming with ideas. We love tech. We love all kinds of things. But I think, because there's always been a big idea that we've wanted to get to at CodePen, we've always focused on that. I can't imagine starting another product. It would feel like I'd have to abandon CodePen because CodePen itself requires a fair amount of maintenance, a fair amount of upkeep, and it would feel to me like, yes, it would be fun and exciting to start on something completely greenfield. But then you're right back where you started before, and you're not adding that depth.
You're not also serving the people who kind of support you. And so, for us, I don't think I've ever truly considered that for CodePen where we would just start on something new.
Chris: You know we have considered, though, is kind of that -- we've dipped our toes a little bit, but it's guided where we're going now, and so I have to be careful about how I talk about it. But the idea that let's say you supported -- like we have a Flutter editor. That's no surprise, right? That's kind of like what you're saying, Andrew. The CodePen version of Flutter, or whatever. Now that is a long, weird story, and it's best told ten years from now, probably, rather than right now. But that's tricky, right? That kind of proved to us that that's a complex road to travel, and we like a lot of aspects of that road but have learned from that experience (and other similar experiences) where I want the good parts of that and not the bad parts of that. And so, that's what we're going to do.
Alex: Yeah, we have a Vue editor that's specific to Vue and a Flutter editor that's specific to Flutter, and so we've learned from that. But the idea of starting another domain where we, I guess, market it from CodePen, it sounds attractive, it sounds awesome, but it also sounds like it would be difficult to support both, and so we've always been small enough that it's been overwhelming to support one thing.
Chris: Right. I think you'd have to. You'd have to start over, in a way. I rarely see somebody just pick up the tech they already have and say, "Oh, this is for nurses now," or whatever, and have that work out.
Alex: Yeah, except Stack Overflow, who seems to do that pretty well where they kind of take that model for specific topics, but I've never actually considered being like, okay, let's start something Figma, something design specific. It's interesting, but you have to build up that trust where people trust you knowing full well that, hey, I have this other thing that I'm no longer going to focus on as much. You're asking people to trust you that you'll support this new product that you're going to invest time in when you just left another one, which I kind of want to be all in on one thing.
Chris: That's a good one, too. I remember in the early days when we were hoping to be bigger than we wanted to, and part of it was building features. But part of it, I remember the feeling and the conversation was, "Just wait because the longer you're around, that's how you earn the trust."
Alex: Right.
Chris: Trust does matter to developers. Now we've built it, and I hope we're still building it, and I think that's awesome.
Alex: Yeah, it's huge for people who invest their time and put their code on a website to keep that around.
Chris: How would that look: Chris and Alex go start working on some fricken' other app? Not a good look.
Marie: Yeah, I would have questions.
Chris: Yeah.
[Laughter]
Alex: Yeah. I imagine you would.
Marie: Yeah. [Laughter] I might have a comment or two.
Chris: Yeah. [Laughter] I have both a question and a comment. Yeah.
[Laughter]
Marie: All right. Well, moving on, we have a question from Charles Villard. This is an interesting one.
"Web dev used to be a quirky personal space. But today it's been commoditized and mined for data. Do you see a world where we bring the Web back from this need to monetize every data possible or is this just the new reality for future generations to work with or around?"
Chris: [Laughter] Does CodePen do that?
Marie: I mean [laughter] I almost feel like I could slightly offer an answer to this question, but it's either going to be two seconds or two hours long.
[Laughter]
Marie: But these are questions for the founders.
Chris: Well, I feel weird because we take your data. We look for analytics. We send it through machine learning models to learn from and stuff. In a way, we're mining your data too. Sorry if that's offensive.
Alex: I want to focus on what we do with that because, when you're saying that, we do that so that we can show you better content, but we don't sell that data. So, that's the key.
Marie: No, not at all.
Chris: No. No way.
Alex: That never leaves CodePen - for the record.
Chris: For sure.
Alex: And I think you might be alluding to the idea of ad-based stuff, kind of like the way Facebook does it where they're like, "Hey, do you want to target 21 to 28-year-old males who live in Iowa?" or something to that effect.
Chris: Yeah.
Alex: We don't do any of that. Honestly, when it comes to that kind of a Web, I always kind of hope that more people will support small sites and services and things like that. I see a lot of value in the individual content creator market where there's--
What's the site where everyone writes and kind of does the newsletter?
Chris: Substack?
Marie: Substack?
Alex: Substack. You have Substack, Patreon, and things like that. But until people kind of ask for a better Web without all the ads and all the data mining, it's going to be hard to compete, especially when you have -- like I was just hearing Mark Zuckerburg speak on a podcast. He was talking about how they invested $10 billion in their AR/VR laboratory. It's like the numbers are so huge; I think that there'll always be this kind of indie part of the Web that's interesting but that the big spots, people just get conditioned to the fact that there are ads absolutely everywhere.
I really like cooking, and I hate that every single time I find a recipe, sites are just littered with ads, littered with it, and it's just like, how do you deal with this?
And so, what I like to do is I pay a website called cooksillustrated.com. Amazing. And I just give them money.
First of all, they have amazing recipes. Really great tasting, everything. But on top of that, they don't serve me ads, so I feel like I have my part of the Web isn't ad ridden. I don't use Facebook and things like that. But until people ask for it and support it financially, I don't know if that's going to be the main way people experience the Web ever.
Chris: It's not going to. In no way is the Web just going to change to be like it was - or something. It only changes. Time is not going to reverse and be like, "You know how you used to like it in 1994? The Web is like that now, again."
Alex: Yeah.
Chris: That's not going to happen.
Alex: It's going to go beyond the Web. I think there'll be some weird AR experience where we're all living in our own. We're going to just go from a metaphorical bubble to a technical bubble where everything we see and hear is chosen by us. I don't know.
I think what will break us out of this version of the Web will be something that makes us go beyond the Web - would be my take. It'll be exciting, interesting watching all the workaround, the AI stuff like DALLE and Facebook just came out with Meta Video where you can just kind of give it a line and it gives you a little video clip.
Chris: Produces video.
Alex: Yeah, and just like, "Oh, cool. We're all just headed for a Ready Player 1 world but in a weird, hodgepodge way. Some people will live in that world and some people will live in the old Web - mostly our parents.
Chris: [Laughter]
Alex: They're going to support Facebook until the end.
Chris: Yeah, if you're mad about it, Charles, just stay mad, though, right? Be like, "No! I hate this."
Alex: Don't support them.
Chris: Vote with your wallet. You know?
Alex: Yeah, vote with your wallet.
Chris: Yeah.
Alex: And your time and eyeballs - everything. Stay off those portions of the Web.
Chris: Okay. One left?
Marie: Yeah. We've got one left. This one is from James Deagle. This one, I think we could spend a little time on.
"Looking back, what is the greatest or largest piece of tech debt CodePen took on and when did or will you end up having to pay that off?" [Laughter]
Chris: Yeah. Technical debt is a word that gets thrown around a lot. We throw it around, too. Let's trim it to mean--
Oh, I guess you can answer however you want to, but I like the thinking of as it's stuff that you code that you write and tech that you choose that ultimately you have to pay. Right? It's not tech debt if it never comes due. You know?
Alex: Yeah, it could be tech. I would differentiate it as a tech asset. There are things that you benefit from. And they are assets because you're like, "I'm keeping this around. This is good. We're going to keep this around forever."
Chris: Right.
Alex: Then there's the debt that doesn't quite pay for itself and it costs you more to work around it and things like that. That's how I would couch that or differentiate the two.
Chris: That's good. I like that. I like that. When we picked Ruby on Rails, was that technical debt? That makes me think, no, it wasn't.
That was a tool that we used. We still use it. It's been around forever. It's provided a ton of value. We might be moving off it. It might be coming due a little bit, but it doesn't ring that way.
Alex: Yeah. I would say Ruby on Rails was something that allowed us to move very fast at the time and be very capable, get the features out, and things like that. We just need a little bit more of safety due to the scale of CodePen, and speed due to the scale of CodePen. But Ruby on Rails was a huge asset. It still is today. We still mess with it when we need to. We're just trying to slowly move over to the GoLang programming language.
Chris: Yeah, so maybe not in the tech debt bucket.
Alex: Yeah. I was just going to say my version -- I was thinking about this. Someone on the team suggested Redux. We were not fans of said technology, but in thinking about it, looking at the codebase, I was like, I think the worst choice that I wish we had improved at the foundational level was--
Chris: Oh, I can't wait.
Alex: --we stayed on MySQL 5.6 for almost damn near a decade. I think we've been on PostgreSQL 13 for a year. Less than a year, actually, because we did it right before my boys were born.
We stayed on this very old version of a database for a very long time because we were just like, building data is scary. That's crazy.
Chris: Yeah.
Alex: That's something that we needed. I remember one time we moved from the same version of MySQL where we were running it to an Amazon service that would run MySQL, but it was the same version of MySQL, and we were too scared to move to a different version of a different database or even an upgrade of MySQL.
Chris: Mm-hmm.
Alex: We hired a contractor who specialized in databases, all these things, and then less than a year ago, we were like, "You know what. We're going to PostgreSQL 13," and we've also moved to a larger database. We cleaned up a lot of the problems.
Now, I think this week, a couple of days ago, I was -- our Pens table -- we are CodePen -- our Pens table was by far the largest table on CodePen. And because of the problems around MySQL, this piece of technology, you couldn't add or drop columns without locking the entire website for -- I don't know -- 24 hours.
Chris: [Laughter]
Alex: And because we're a website and we're not a government site, we don't get to shut down at night. So, what I did was I used some AWS services to move in real-time. We didn't even have true -- I think we had less than 30 seconds of downtime during the move from MySQL 5.6, which is ten-year-old technology--
Chris: Thirty seconds.
Alex: --to the latest version of PostgreSQL at the time. We moved to a bigger database. It's very fast. There are all these things that we do, whereas we used to just live with 70% CPU.
Chris: It's not reverse debt, but it's like the debt was not being able to innovate when we wanted to with our database.
Alex: Yeah.
Chris: It wasn't how long it took to move. It was the scared--
Alex: Yeah. Looking at the database, we coded around it. We cached things in Reddit. We did all this coding where we spent time where we were like, "Oh, don't do that," and we weren't able to rename certain things. We'd be like, "Well, actually, here it means this, but there it means that."
We did all these things where (in conversations, in meetings) you'd have to explain, like, "Well, okay. That's actually different here because of this situation. But we can't change that. We'd like to change it. We wish we had chosen the right path."
Finally, now that we're on this modern version of PostgreSQL, we can add dropped columns, rename things, do all these things that we need to do without having to then go into a meeting and explain why it's completely different for these three cases. And then adding tests for those three cases.
That to me is tech debt where you're just constantly working around it and coding around it. All the time, it's the actual cost to upgrade the database, to have something bigger, better, all that stuff is small compared to all the confusion, the bugs, and support requests, and how much time we spent working around those issues.
I wish I had focused on the fundamental problem, which is, "Hey, your database, we can't move it. So, let's figure out a way to move it. If we have to build the tools ourselves, we should. But guess what. There's this entire industry that's dedicated to building tools for databases. Just use those," and that's what we did. And it's been huge.
I just dropped, I think it was, 12 columns from the Pens table, so I cut a third of a table. We had the largest high-used table drop by a third in number of columns because we just had that laying around.
Chris: I bet long-time users would get a kick out of that because remember way back in the early days, there was a dropdown, and you could pick between different JavaScript libraries, for example. Although, that one ended up being more complicated. Or you could pick between different CSS resets and stuff like that. Those things, I know there's a different story to every one of those columns, but then we'd kill the feature because we're trying to move CodePen forward.
Killing features isn't always moving forward, but it was in these cases. But we would leave them in the database because you're like, "Well, we can't--"
Alex: Yeah, we can't. Don't touch it. Don't touch my table.
Chris: Ah, just leave them alone. Yeah.
Alex: Even repurpose some columns where we were like, "Well, we can't add it. This one is not being used, so go ahead and put that other thing in it."
Chris: Ah! Don't tell people. We're the worst.
Alex: That's super fun, so we don't do that anymore. [Laughter] We've grown up.
I think the more foundational the problem, the more benefit it is when you fix it. Everything, for us, starts at the database level. If that's messed up, everything else has to pay the cost.
Chris: Really been good at it. It's been years now of not necessarily just sitting around paying off technical debt, but just sharpening the tools for a while now, and we're really benefiting from that. it's been pretty cool.
Yeah, even Redux. Yeah, we make fun of it. But hey, we got a product out with it.
Alex: And it works all the time. It's fine.
Chris: We're going to rip it out but, yeah, it's fine.
I think back on that whole ETL project that had so much promise that ended up just delivering nothing for CodePen, ultimately. That kind of sucked. But that's not really technical debt because we just turned it off.
Alex: It was for a bit. [Laughter] This was definitely technical debt for a minute. And then we just got rid of it. Then it felt like things were all light and airy. That was the beginning of our database journey to a better place. [Laughter]
We had one database that depended on another database and was recreated several times a day. It is a long story and a little nutty. But we fixed it by just throwing one of the databases away. Now we run on one DB.
Chris: I like thinking of, going forward, there are moments that you bring to the table that I think are really interesting. One that I thought about today was how many different URLs there are on CodePen for different things. URLs, to me, do represent technical debt, in a way, that you have to maintain a URL forever.
There's a lot of nuance to this. It depends. But making choices to kind of trim down your URL usage can be pretty satisfying.
Alex: Yeah, I would definitely say that the URL tech debt is a story that is too soon to talk about right now.
[Laughter]
Alex: When we are no longer running CodePen, I will talk about URLs. But until then, it's just too soon.
Chris: Yeah. I don't know. Yeah. That's all good. All right. Well, that was fun. [Laughter]
Alex: Yeah. Thanks, everybody, for the questions.
Chris: Thanks for the great questions, everybody. Yeah.
Alex: Yeah, and thanks to Marie for listening to us talk about things that she probably also regrets.
Chris: No. [Laughter]
Marie: [Laughter]
Alex: [Laughter]
Marie: I just wrote it all down in my diary. I don't speak about it out loud.
[Laughter]
Chris: That's my favorite aspects of this podcast sometimes when we talk about something. It ends up being like a meeting, like, "Oh, we had to bring this to a podcast to really get it properly talked about."
Alex: I'm surprised no one has converted that, like a meeting to podcast converter where you just kind of take your standups and just turn them into a podcast. You've got to monetize, guys.
Marie: There you go. That's an AI. That's an AI product right there.
[Laughter]
Alex: Okay. Sometimes--
Marie: Take that transcribe and turn it into tweets.
Chris: Oh... All right. It was a long one. We better be done. Thanks, everybody.
Alex: Bye.
Marie: Bye.
[Radio channel adjustment]