New CodePen team member! As we recorded this, it was just Robert’s 2nd day at CodePen, and we snuck this podcast in within the hurricane of stuff happening during that time. There is a pile of new software to get access to and acquainted with. There is the dev environment stuff. There is getting acquainted with people, with the extra challenge of doing that remotely. There is understanding the flow and structure of our work days. There are meetings! So many meetings! Figuring out the Zoom culture.
For now though, we chat about Robert’s history and how we’re luck to have gotten someone with such deep expertise in the field. He lives right in Bend, Oregon where Chris is, hence them knowing each other through BendJS.
Timejumps
- 00:36 Guest introduction
- 01:37 Blind spots exposed by new hires
- 03:48 What’s it like to onboard at CodePen?
- 05:42 Sponsor: Jetpack
- 06:45 More about Robert
- 11:22 Is it important to work on things that matter to you?
- 15:03 A computer is a fancy wrench
- 20:16 Did Node draw you to Javascript?
- 25:35 Where CodePen is headed
Jetpack
Sponsor:It’s so cool that Jetpack acquired Social Image Generator. Jetpack already does stuff to help your WordPress site be better integrated with social media (check this video), so why not really go the extra mile and help you with those tricky-to-pull-off social media images? We’re all very much looking forward to see what new features this acquisition unlocks.
Transcript
[Radio channel adjustment]
Announcer: Today, on CodePen Radio.
Chris Coyier: Hey, everybody. Welcome to another CodePen Radio. This is a great numbered episode, 333. Oh, my gosh. We've been at this for a while.
This is kind of a surprise episode in that you'd never guess who I have on because they're a brand new employee of CodePen. In fact, this is day number two for Robert. Hey, Robert. You're here with me in the studios.
Robert Kieffer: Hey, Chris.
Chris Coyier: Hey.
Robert: Nice to be here.
Chris: Yeah. Is this your first podcast - were you saying?
Robert: It is.
Chris: Oh, that's amazing. That's so great.
I know you, though, so we're comfortable together already because I've known you for years now because you live in Bend, Oregon, here with me. Yeah. We know each other through various things, probably mostly tech and our little Bend.js local meetup thing.
Robert: Mm-hmm.
Chris: You've been going to that for longer than I have. Probably gone through some leadership changes, but we're back in town. It feels good. [Laughter]
Robert: Yeah. Even got some nice clean air for a change.
Chris: Yeah. That's what we talk about here in Bend.
Robert: [Laughter] I know.
Chris: We show each other our apps for tracking air quality. Yeah, we ate lunch. We walked outside today. The clear blue sky was amazing.
This must be a little bit of a whirlwind for you. That's on purpose. That's how every job is, right? You're like, "I'm going to show you the 500 pieces of software we use to run this company. Remember everything. There will be a test."
Robert: Yeah, it's definitely a bit of a firehose. It's always fun seeing the blind spots everybody has in terms of the information and knowledge about the product and company that just gets taken for granted. You always see anew with first impressions.
Chris: Oh! Interesting. Right, the things that we're just like, "Oh, you just click. You turn the widget-o-meter to the left," or whatever.
[Laughter]
Robert: Right. This term means this thing and been using that term for five years.
Chris: Oh, yeah. Internal slang. I don't mean to put you on the spot, but can you think of one in the last couple of days that was like some weird word we use, or something?
Robert: Oh, there was one in the meeting we just had, and it's slipping my mind. I'll remember it in a few minutes when it's totally inappropriate to recall it. [Laughter]
Chris: [Laughter] Yeah. Good. But you have a lot of experience. We hired you. We're so lucky to even get you at all because you have a deep experience in tech - period. You've ran companies. You just know how stuff works, and I appreciate that.
In this last meeting we were at, we were just talking about different types of errors that could happen on a Pen. You're like, "Let's call them what they are," kind of thing. These are build errors, and these are different kinds of errors. Just because you don't have our baggage, that was the perfect time to do that. We haven't gotten too deep into the slang crap where we just forget what reality is.
Robert: Yeah. Well, one of the things that happens is, as you become a more seasoned developer, your brain gets full, and you realize that there's a lot of value in simplicity.
They say that one of the hardest things about programming is naming stuff, the other being, caching. But the naming thing definitely comes into play.
For me, I've definitely gotten to where I appreciate just keeping things simple. Call them what they are. And try not to have more than one term for one thing. It just makes life so much simpler.
Chris: Just wait until next week. We have a meeting on naming our cache.
Robert: Yeah. [Laughter]
Chris: It's going to be.... [Laughter]
All right, so that's cool. Onboarding has been, I'm sure, not surprising to most people, but this podcast is largely about, like, "Hey. How about a little insight into what is it like to run a software business?" So, that's what kind of try to do here.
In the spirit of that, the onboarding is not unusual. We're not trying to change the industry with our incredible onboarding skills and want to share it on this podcast. It's what you'd expect. There's HR-like stuff, like health insurance, getting payroll set up, and that type of thing.
We have a checklist of software, like, "Oh, yeah. We've got to make sure to add them to our Cloudflare access group." [Laughter]
Robert: Yep.
Chris: Even getting the email set up at all, you've got to remember how Google wants you to do that. Eh, what is it, admin.google.com or something?
Robert: Yeah, right. I can never remember that, the admin interface.
Chris: All that....
Robert: I was going to say, I will say the nice thing is that CodePen is using a very similar stack to what we had at my previous company in terms of use Google for mail and the main accounts. Then Gusto for employee benefits.
Chris: Yep.
Robert: There's just sort of a standard stack there that's nice and that was familiar for me, so that made things a little bit simpler.
Chris: Yeah. It's not Jira and Outlook. [Laughter]
Robert: [Laughter] Right. Exactly. GitHub for source code control.
Chris: Some of that stuff is really intentional, you know. We were like, "We should do industry standard stuff."
Robert: Mm-hmm.
Chris: Every time we make that choice, it feels good. It feels like there's less friction and people get it. I guess this is an example of that playing out that you can hop on and just have no trouble. We can just get to it because obviously, we're not building an email client here. We just need to have one.
Robert: Yup.
[Guitar music starts]
Chris: This episode of CodePen Radio is brought to you in part Jetpack. You know the plugin for your self-hosted WordPress site that brings it all kinds of abilities and such.
I was so pleased that they have acquired this plugin called the Social Image Generator, which I've been using on CSS-Tricks, actually, to generate those image cards that show up in iMessage, Discord, Slack, Twitter, Facebook, and all that stuff. It's important. You share a link, and it's the image that goes along with it.
I love having a customizable, really beautiful one that matches your brand and all that stuff. That's what Social Image Generator plugin does, and Jetpack snapped them up, which I think is pretty rad because then it's going to be part of the Jetpack offering pretty soon. Not available just exactly yet but keep your eye on that because I think that's just a tremendous offering for Jetpack, which already helps you with your WordPress site to social media integration. A perfect fit, I think.
Good job. Thanks for the support, both of you, and congrats on the acquisition.
[Guitar music ends]
Chris: I'm sure people would be interested in a little bit more about you. I can tell you, like I said, we were lucky to get Robert because of his deep experience here. What is some of that experience?
Every time we chat, it tends to come up a lot, right? You've done the huge, huge company thing and the small, small company thing.
Robert: Yeah. I've been very fortunate in that I've worked for a variety of companies, both large and small. My career has basically been spent bouncing back and forth between small (like under ten people) startups and going to Fortune 500 tech companies.
I worked for TRW Aerospace straight out of college, and the other big companies since then: Sun Microsystems, AOL, Facebook. I did a brief stint at Google.
In the interim, between all of those, I've had little startups that I'm sure most of your listeners haven't heard of, frankly. [Laughter] Yeah, it's been great.
I was very fortunate in that a couple of my companies have actually been acquired. That's how I ended up at AOL, originally.
Chris: Oh, really?
Robert: Yeah, it was a company called iAmaze. We did that back around 2000 to 2003. We basically built the first generation of single-page Web apps, but it was on IE 4 and Netscape 4 instead of the stack today, so it was a very, very different space.
Chris: I suppose, but did ajax even exist? Could you do an XML HTTP request?
Robert: Well, no. The short answer is no.
Chris: [Laughter]
Robert: The XML HTTP request API was not a thing. But you could kind of bodge stuff together.
Chris: Yeah.
Robert: JSONP and Comet. Those terms may be familiar to some folks, but it was just terrible.
[Laughter]
Robert: I mean compared to what's available today, it was literally like banging two sticks together to try and make fire, but we got it done.
Chris: I bet.
Robert: We got it done. We built a presentation app, a word processor, and a couple of other things. We went on to do that for AOL, so we built their first webmail app.
Netscape Radio used our technology, and there were a few other things in there. Yeah, it was cool. It was fun.
Chris: Well, that's cool. Yeah, so little, little, little gets swallowed up by big, big, big.
Robert: Yep. Exactly.
Chris: Yeah. Yeah. Wow! Wow. You have seen a lot. Facebook is in there, too, somewhere, isn't it?
Robert: Yeah, so I landed there in 2010 as a talent acquisition deal with a startup that I co-founded with three other guys. It was called Zenbe. Basically, our vision for that was to create a unified online communication, so email, calendaring, and file sharing, and Twitter and Facebook integration. Bring all that together in one spot and provide the perfect experience, which was, of course, way too big of a bite to take.
[Laughter]
Robert: But we did end up at Facebook, and that was a whole other experience, which I'm happy to talk about. But of all the large companies I've worked for, I would say Facebook is the one that I would consider going back to.
Chris: Oh, really?! It was a positive experience.
Robert: Oh, yeah.
Chris: Yeah.
Robert: Everybody has their opinion of them in the public eye, good or bad - take your pick. But internally, as a company to work for, as an engineer, I would say the culture there is better than any other company I'd been to.
For example, one of the problems that a lot of engineers have at large companies is just staying connected to the experience that your end users are having. You can be very insulated from that.
Chris: Mm-hmm.
Robert: At Facebook, which even then was still a large company, as an engineer, you were pretty much right on the frontlines just in terms of how the features you were implementing were working and making a difference - or not. It was really cool and definitely unique among the companies I've worked for.
Chris: Yeah. So, it sounds like it's important to you, but I wonder. Is it universally important that the things that you work on matter to people?
Robert: That's an interesting question. One of my favorite anecdotes is I sat down to lunch with some of my coworkers when I was at Google. The topic of, like, "Why do you code?" came up.
For me, in high school, when I graduated, I was like, "I want to go to college, move out to California, live on the beach, and write software that tons of people use."
For me, it's always been, like, I like knowing that people are using my code. It's just sort of viscerally satisfying. I said as much at this lunchtime conversation with my coworkers. But as we went around the table, I was just astounded at the variety of responses that I got.
One guy was like, "Oh, I love the academic problems, the really abstract architectural stuff." Another one was like, "Oh, I like doing the user interface design." Another guy was like, "I like solving the bugs, like really polishing stuff at the end," and I thought that was absolutely crazy because that's the worst thing in the world for me. [Laughter]
Chris: [Laughter] I can understand a polished engineer, though.
Robert: It is, yeah. I had tremendous respect for all of the answers. I was just surprised at how much variety there was.
Chris: Yeah. Was anybody like, "I like to extract as much money from the Internet as I possibly can and code is one way of doing that"?
Robert: Um... Not really. I don't know. I'll sort of go out on a limb.
Chris: A little implied, maybe?
Robert: Well, I'll go out on a limb and say that that's more of an entrepreneurial personality trait than a programming personality trait.
Chris: I see.
Robert: I don't know. Most of the engineers I know (or have known over the years) come at it from more of a pure love of the challenge, however they define challenge.
Chris: That pure programmer thing is interesting to me, too. I just had Dee on the podcast last week (or a couple of weeks ago) to talk because she does programming, too, for CodePen.
Robert: Mm-hmm.
Chris: Primarily, but also has this deep finance background.
Robert: Right.
Chris: She has this interesting pivot in her career where she bailed on finance. Not bailed because she still does it for us.
Robert: Right.
Chris: But just bailed on it as a primary career.
Robert: I thought that was really interesting. You know I talked to her as one of the interviews, and we didn't dive deep on that but I'm definitely looking forward to talking to her about that because that's such an unusual combination in developers.
Chris: Mm-hmm.
Robert: Especially going from finance to programming.
Chris: It's not like she got a degree in finance but then never used it.
Robert: Right.
Chris: She went into the career very heavily and did finance. That's how we know her, working together at SurveyMonkey.
But anyway, one of the things now that she likes is, because she does both, that she can use that tool to affect the outcome of CodePen with both of those tools. It wasn't that finance is just for measuring it, but now she can program and now that's satisfying because she can make changes and then see the results in finance. That's cool, too. But now she's just got multiple levers.
With finance, sometimes you can create a chart and be like, "Look. We're making money from this," or "Our expenses are high over here," but it's more complicated than that because finance involves weird stuff like cohort analysis and stuff, like, "Oh, you lose people if they don't do this particular action on the fifth month," or something. [Laughter] Then you can point at that. Finance uncovered it, and then other disciplines fix it. Maybe we can fix it with programming.
Robert: From that perspective, at the end of the day a computer is just a really fancy wrench. That's effectively what it is. But it's a wrench you can throw at any problem anywhere. If you get really skilled in how you use that, it allows you to create and build things (for whatever your actual interest may be) in ways that just simply aren't available if you don't have that skill.
If you're not a mechanic, you've got to go and pay somebody at the garage to fix your car. They're going to do what you ask them to, but if you really want your car tuned in a very specific way that allows you to get down the road as fast as possible or corner or whatever, you kind of want to do it yourself.
Chris: Yeah. Yeah, I like that.
CodePen, I guess we're a wrench-wrench, then, if we're going to help programmers do what they need to do. We are mostly focused on the front-end, so it's a limited wrench at the moment, but a wrench nonetheless.
Most recently then, I knew you when you had your own startup. I guess, your fifth. Who knows however many you've done, but it was very out there. I remember when you talked, I'd be like, "What?!" Communication with robots and all kinds of fancy stuff, but it definitely had captured your attention there.
Robert: I got into computers when I was young. I started programming when I was 11. This was basically in the early '90s. I went off to college, and I was like, "You know I'm not going to get a programming degree because it's going to be a saturated market." I was completely wrong, of course.
My other interest at the time was robots, like electrical engineering, mechanical engineering. That's kind of the path I went down.
Chris: Mm-hmm.
Robert: But I actually got my degree in electrical engineering.
Chris: Okay.
Robert: But I never used it until this last startup with a couple of other folks, friends of mine here in town. We did a company called tend.ai, and it was--
I'll try to keep this brief, but basically, we started out trying to connect industrial robots to the cloud to allow you to train and drive robots over your phone or what have you. It turned out there wasn't a market for that, and so we ended up pivoting to do monitoring and analytics software for basically industrial robots that are used, like in car factories or to assemble appliances, in that space, which was a very different world from the one I've been in, in the past. But it also allowed me to kind of dabble in that interest that I had from when I was in high school and college. So, it was a lot of fun.
Chris: Fantastic. It nurtured this. I almost envy your career, in a way. You got to jump around so much and do just super different things. Are you a better programmer for it?
Robert: Yeah, I would hope so.
[Laughter]
Robert: But, in some ways, I've been very fortunate to work in very different environments: Google, Facebook, little, tiny startups in the Bay Area and in Bend.
Chris: Mm-hmm.
Robert: But I've also, for the last 20-some years, been doing Web applications, so the stack of stuff I've worked on has actually been consistent, at least in that regard. But doing development at Facebook is very different from what AOL had or TRW (way back in the day).
I feel like I've got a perspective on what it means to be an engineer that's certainly been influenced by that and it makes me really grateful for just what I've been able to experience.
Chris: Yeah.
Robert: I'm very fortunate.
Chris: And a lot of JavaScript, right?
Robert: Oh, yeah.
Chris: Why so much JavaScript? [Laughter]
Robert: I don't know. [Laughter] I actually got into JavaScript. It was 1998, and a friend of mine had this idea to basically build Microsoft Office for the Web. He mentioned there was this new sort of JavaScript language that started to show up in the browser, and he wanted me to take a look at it.
And so, I started poking around. I was like, "Well, this kind of allows you to do stuff, and maybe we can make this work."
Chris: Yeah?
Robert: But at the time, I was like, "I'm not even going to put this on my resume because nobody is going to give a shit about any of this in three years." [Laughter] I thought it had like a three-year half-life - tops.
We got into it and managed to make it work. It's just been growing. Well, you guys know how it works. JavaScript is now the number one language on the Internet - or something.
Chris: Yeah. Partially because of Node, though, right? Were you interested because of Node, or well before that?
Robert: Well, so actually, well before Node came along. There was a certain esthetic beauty to JavaScript. I know some people might raise their eyebrows at that. it's a controversial language in terms of how people feel the language itself is, but I really liked the untyped interpreted nature. It made it really easy to write code. You hit refresh in the browser and it's just running.
In some ways, for that very quick, rapid, iterative prototyping experience, it was a great language, which was very different from anything else that was really available at the time, and it was in a different environment. It was in the browser, so it was a very visual experience. You had the DOM underneath it. You had a lot of the scaffolding already there to make an interesting application and publish it to the Web.
It was a very different environment from the traditional, like, I'd done Objective-C doing applications for the NeXTSTEP platform, which was the predecessor to Mac OS. It was just a very different experience, and I really enjoyed a lot of those aspects, and I still do.
I still think it's a great language.
Chris: Yeah. That's a big deal, right? The fact that it runs in a browser and is one of the few, right?
Robert: Yeah.
Chris: Especially that's really kind of considered a programming language.
Robert: Yep.
Chris: I know that's a little dramatic, but for real, right? It has access to APIs that other languages just don't have.
Robert: Yeah.
Chris: That's a big deal.
Robert: When Node came along, that was a big missing part of the puzzle. Like, "Okay, I only need one language, and I can actually start to deploy back-end capabilities."
Chris: I'm curious about that. Were you all over it? Were you like, "Holy!" Was it an ah-ha moment?
Robert: Yeah. No, when Node came along, I wasn't a super early adopter. But I think I picked it up in 2009, 2010. I was pretty early on.
I know or knew Ryan, the Node creator. I had him come and talk at Facebook a couple of times, so it was a small community. I got to it early, and it was great.
It took a long time for large companies to be comfortable putting it into production. I think that's the one downside was you couldn't just go into a business and be like, "Hey, I've got this great technology that I'd like you to use." I actually tried that at Facebook. [Laughter]
Chris: Now you can, right?
Robert: Yeah.
Chris: How things change.
Robert: Yeah, so it's matured. There's just a given timeline to that sort of thing, and you've just got to wait it out and give people time to adjust. Node needed to mature as well. Yeah, it's great.
Chris: Yeah. Pretty transformative to me. I have a slightly different perspective only because I'm more of a front-end person. When JavaScript is brought up or brought to somewhere else, like, "Oh, it works on the server now," to me it's just like, "Oh, great! [Laughter] Now I can do stuff and I don't have to learn anything."
Robert: Yep.
Chris: Which is surely a reason why its uptick is so high because the front-end developers can kind of repurpose their skillset.
Robert: Yeah. One of the things that I really like about the Node JavaScript stack, which we had at Tend. So, the first company I actually worked at that had a full end-to-end JavaScript stack was Tend, this last startup. One of the epiphanies for me from that was that it's not so much that you can share code between the client and the server or the front- and the back-end. It was that you have the ability to very easily migrate responsibilities around your architecture.
Tend, we were running JavaScript in really three places. We were running it in the browser. We had a Web app. We were running it on the server up in the cloud. But we also had a fleet of IoT devices that we deployed in our customer sites. We'd have a little Raspberry Pi-based unit that would talk to these robots. All of that stuff was running JavaScript.
As our experience with the system evolved, we were able to take something like a data aggregation logic that would take data from the robots and compact it down to a size that we could actually store efficiently and move that from the IoT device onto the back-end without having to change much code.
Chris: Nice.
Robert: Or we had a way of, like we wanted to analyze and do reports based on that data. We could actually do that in the browser or on the back-end or in the IoT device. It made for a very adept system. It's pretty cool, and I've never seen anything exactly like that prior to this.
Chris: Yeah. I feel ya. The fact that Lambdas started to exist and--
Robert: Mm-hmm.
Chris: Whereas JavaScript was supported right away, was pretty transformative. We make use of that at CodePen quite a bit, but other things as well. That was one of the reasons we're hoping you're such a good fit at CodePen. I'm sure you will be because of that Node experience, but also just architectural experience and lots of different company experience and all that.
We've been moving to Go. We've had some podcasts about that. We hired a Go specialist (Dale) who works for us now, which is pretty great to have.
But we wanted somebody that wasn't afraid to focus on Node stuff as well, as we get deeper into our ideas for the future of CodePen.
Robert: Sure.
Chris: It's going to be awesome. There's just going to be Node stuff involved because it's unavailable.
If a new framework were to drop today and get all buzzy on Twitter or something, it would be Node - probably.
Robert: Yeah. It's certainly going to be involved.
Chris: Yeah, right. Maybe Deno. Certainly, some of the bundlers and stuff have been going toward Go and Rust.
Robert: Mm-hmm.
Chris: But the JavaScript ecosystem is there. The expectation is that you'll be able to write NPX install thing, and it will work, right? Even if some underlying languages are in something else, they'll have figured out how to make it work in the NPM ecosystem.
Robert: Yeah.
Chris: It's just the expectation.
Robert: Yep. That's something that I'm looking forward to seeing how that evolves, how the NPM ecosystem expands to embrace the less traditional projects. You don't necessarily have to have a Node or a browser JS project to publish to NPM.
Chris: No, not really. The last I've heard from them, they don't really have any particular interest in expanding language. [Laughter] Stuff changes. That's for sure.
Robert: Yeah.
Chris: That's cool. All right, well, thanks for talking to me, Robert. Welcome to CodePen.
Robert: Yeah. It's great to be here. I'm looking forward to it.
Chris: We'll grab you more times as we build more stuff, and then we can talk about the stuff that we build because that's the other thing we do on this. All right. See you later.
Robert: Awesome. Thanks, man.
[Radio channel adjustment]