Episode 13 ·
Stefan Poulsen CTO of iPaper

Today we are talking to Stefan, the CTO of iPaper. We talk about hijacking high end electric cars, security issues with your tea kettle, and how to let someone go gracefully. {tea kettle noise} Jake the episode is ready! Right here, right now on the Modern CTO Podcast.
Live streamed on Facebook and Youtube.
Transcript
(Joel Beasley at 00:00:00) Today we are talking to Stefan, the CTO of iPaper, and we talk about hijacking high-end electric cars, security issues with your tea kettle, and how to let someone go gracefully. The episode is ready right here, right now on the Modern CTO podcast. Here we go. This is the Modern CTO podcast.
(Joel Beasley at 00:00:34) Alright, hopefully Zencastr will fix their bugs, write a test, patch it up.
(Stefan at 00:00:42) Seems like my job on Black Friday.
(Joel Beasley at 00:00:44) Oh yeah, what was going on on Black Friday?
(Stefan at 00:00:47) We do a lot of advertising, so we have a lot of traffic around Black Friday, and all of a sudden everything just hit the ceiling.
(Joel Beasley at 00:00:55) Oh no, that's the worst. Yeah.
(Stefan at 00:00:58) But you...
(Joel Beasley at 00:00:58) You engaged the team though, and you guys pulled through and came out strong?
(Stefan at 00:01:02) Well, it worked out and we survived, so not too much fuss about it, but a few unhappy customers.
(Joel Beasley at 00:01:09) Yeah, you know who's unhappy right now? A lot of the Bitcoin customers.
(Stefan at 00:01:14) Oh yeah, I saw they started dropping again.
(Joel Beasley at 00:01:16) Yeah man, it was just like boom, just like dropped through the floor there.
(Stefan at 00:01:22) How far did they go?
(Joel Beasley at 00:01:24) I don't know. I'm scared to open up Coinbase.
(Stefan at 00:01:26) I'd have to check it out now.
(Joel Beasley at 00:01:29) I know, it was like 17 and then it was $15,432, and it was like below $10,000 for a minute, and then I just had to close the app.
(Stefan at 00:01:40) Wow.
(Joel Beasley at 00:01:41) It's like watching a train wreck.
(Stefan at 00:01:43) Oh.
(Joel Beasley at 00:01:43) So...
(Stefan at 00:01:44) $9,800.
(Joel Beasley at 00:01:46) Oh yeah. But you know, the good thing is that it will come back, whether it takes five, ten, twenty years. I'm confident that it wins the long game. And if you're investing in long game, you're smart. If you're investing in short game, well, you're investing in short game.
(Stefan at 00:02:04) As you truly are. It's a matter of risk management in the end.
(Joel Beasley at 00:02:09) Right, and that's the whole thing with investment. I always hear these sob stories: people, "Oh, I lost everything." When you invest, you're only supposed to invest as much as you are willing to lose.
(Stefan at 00:02:19) Exactly. You don't gain anything until you check out and get all of the money.
(Joel Beasley at 00:02:25) Exactly.
(Stefan at 00:02:27) Wow.
(Joel Beasley at 00:02:27) Wow, we're on the same... Let's bring it back up. Let's get positive here. I'm curious, I gotta know, Stefan, what was the first piece of code that you wrote?
(Stefan at 00:02:38) That is a good question.
(Joel Beasley at 00:02:40) I know.
(Stefan at 00:02:40) I actually think it was a really horrible assignment at the school. I'm one of the guys that actually never started coding before I went to school.
(Joel Beasley at 00:02:49) So you got your first experience in school. Was it like punch card programming?
(Stefan at 00:02:52) No, no, no, no. It was actually... It's gonna hurt this one. It was actually, we were supposed to do Java, but they were kind of lazy and had a good arrangement with Microsoft, so we were using J++, like the worst Java you can ever get. But it compiled to an EXE file and you could use it.
(Joel Beasley at 00:03:13) So what were you writing about? Like what was the topic?
(Stefan at 00:03:16) I can't actually remember. It was...
(Joel Beasley at 00:03:17) You can't even remember?
(Stefan at 00:03:18) No. I was in the military and after that, after like...
(Joel Beasley at 00:03:23) Oh, I get it. You can't remember. You were in the military, okay.
(Stefan at 00:03:26) I was in the draft for eleven months in recon, and then I went to Bosnia for half a year. And I came back like with the start of February, and school started in February, and we had to like send all of our stuff back. So I couldn't start school until like mid-February, and everybody had like the basics up and running. I was like, "Yeah, how does this programming actually work? How do I start?"
(Joel Beasley at 00:03:53) So I'm gonna go ahead, and for the official record, I'm just gonna write down that you were programming secret robotics for the government. Is that cool?
(Stefan at 00:03:58) If only that were true. That'd be a lot more fun.
(Joel Beasley at 00:04:00) Alright. So you have a long experience, long history as a developer, and then you transitioned now to the CTO role.
(Stefan at 00:04:13) Yeah, I can actually only blame my current CEO for that. He came to me at some point, like, "I'm trying to help these guys figure out a new CTO. Is that a thing for you?" I was pretty much sitting around live chatting to him like, "Never thought about it, so I'm probably not a good fit."
(Joel Beasley at 00:04:34) You sort of turned it down at the beginning?
(Stefan at 00:04:36) It wasn't the current CTO job, but more like... I think it was like our mother company or some other company he knew. And I hadn't really spared it a thought, so I figured out it was a really bad idea to do it. And well, a year or a year and a half later, the position opened up at the current company, and they're like, "Yeah, why is your guy leaving? Did you fire him? Did he just run out the door?" "No, he's actually moving to Copenhagen, so we need a new guy." And they sort of tried out people with management background, and they're like, "Nope, absolutely not. We need a guy with a technical background. Then we'd rather teach him all of the management stuff and how to handle personnel and all that stuff."
(Joel Beasley at 00:05:24) Yeah, I find it's much easier to take someone technical and teach them the management side of things than the inverse.
(Stefan at 00:05:30) Yeah, especially with our product. We start out with a PDF and we end up with like a flipbook, and the process from PDF to actual flipbook is a long and dangerous travel with a lot of dragons hidden.
(Joel Beasley at 00:05:46) In the background, are you guys doing dishes?
(Stefan at 00:05:49) No, my girlfriend just picking up some food, and then she's probably gonna go upstairs and stay silent.
(Joel Beasley at 00:05:55) Oh, she just came home from the CrossFit center?
(Stefan at 00:06:00) And she's like worn out and needs food.
(Joel Beasley at 00:06:04) From the CrossFit center?
(Stefan at 00:06:05) Yeah.
(Joel Beasley at 00:06:06) Oh, is that big over there?
(Stefan at 00:06:08) Yeah, I think we have like three or four boxes in our city.
(Joel Beasley at 00:06:11) Yeah, it's real big. It's gotten real big around in our country too.
(Stefan at 00:06:14) It's crazy. I started out in '12, and like it's just exploded since that time. And the season is coming up because it's like the Open season where you qualify to Regionals, and from Regionals you can qualify to the Games.
(Joel Beasley at 00:06:31) Have you qualified? Have you competed?
(Stefan at 00:06:33) No, no, no, no. It's far out of my reach.
(Joel Beasley at 00:06:36) Do you train at all though? Like do you go just to get some exercise?
(Stefan at 00:06:41) I do weightlifting on Tuesdays on a regular basis, and then I try to get back into doing regular workouts. I had a bad shoulder last year, so I just need to take it nice and easy to get back.
(Joel Beasley at 00:06:53) Yeah, I work out regularly, probably about three times a week.
(Stefan at 00:06:56) It actually started out due to me starting to have like chronic neck pains and headaches and so on. Like, "Yeah, I need to do something." Like a week in, I had no trouble with my neck or anything.
(Joel Beasley at 00:07:07) Yeah, eat a little better, be active, and then you can be in a better position to manage your team. How big is your team over there at iPaper?
(Stefan at 00:07:16) Let's see. I have six developers, and then I have one UX guy, and the ever-going joke that he's actually not on my team but he's sitting with my team. But like, it's a small team of seven people.
(Joel Beasley at 00:07:30) Do you have a Chief Marketing Officer, someone in like growth and marketing there?
(Stefan at 00:07:35) Yeah, we have, I think, I think he's CMO or CGO, whatever, Chief Growth Officer. He has a team of, is it two? And he's looking for the third person to do like content for him. So one is inbound sales and one is, I think his new title is Head of Customer Journey, perhaps.
(Joel Beasley at 00:07:57) I like how the marketing departments, their titles, they create new ones because they're all creatives, and then they market their titles. And then it's like they're all in this consistent like churn of new titles. "Oh, do you have a Chief Growth Officer?" "Oh no, no, we only have a Chief Marketing Officer and a Chief Human Officer and a Chief Friendly Officer. We need a Growth Officer." It's crazy. I love it.
(Stefan at 00:08:18) When he got the Head of Customer Journey, all of the developers were like, "Oh, now it starts."
(Joel Beasley at 00:08:25) So is that when you're talking about your UX guy... Is that the individual that kind of straddles the line between your marketing and your department?
(Stefan at 00:08:35) No, our product is pretty much set up around our CEO and the UX guy. They pretty much decide everything, but with our group of seven people going into the roadmap meetings.
(Joel Beasley at 00:08:48) Oh wow, so the CEO leads the product there?
(Stefan at 00:08:51) Yeah, exactly. He actually used to be a CTO in the company, and before that he was a developer. So he's been there like since day one.
(Joel Beasley at 00:09:00) Is he like part owner or...?
(Stefan at 00:09:02) He's part owner now.
(Joel Beasley at 00:09:04) Wow.
(Stefan at 00:09:05) And it's actually him running all of our SQL infrastructure because he used to be a Microsoft SQL Server MVP.
(Joel Beasley at 00:09:13) I love it when the CEO and the CTO, like everyone's technical and they're all very involved in the execution of the product.
(Stefan at 00:09:21) It just makes it way easier for us because he can take the discussion with the salespeople when they have like a crazy idea in a meeting, and he can say, "Yeah, I see where you wanna go, but it's actually not technically doable at all."
(Joel Beasley at 00:09:35) Yeah, that's the beauty of being technically inclined. You can do this sort of real-time quoting analysis of the creative ideas that are flying through the air. That's like a very valuable skill.
(Stefan at 00:09:45) Yeah, I was sitting in a meeting today. One of the sales guys was like, "Yeah, if I say anything, just make sure to stop me or if I say something wrong." And he actually said it in front of the customer, which is great to me because that sort of signals that you know your stuff, I know my stuff, and if I crush your line, it's okay to stop me.
(Joel Beasley at 00:10:04) Yeah, well we're all very open here. Like Jake and I, we were talking today because I came in and I was all really like super pumped up and excited about some videos and answers we're gonna record. I'm like, "Yeah, we're gonna do this, we're gonna live stream, we're gonna do this and that and that and that and that." And he's just like, "No, no, no, no, no, no, no, no, because we need higher quality. It's gotta be better quality." And I'm like, "No, we're gonna GaryVee that and we're just gonna get content out like rapid fire."
(Stefan at 00:10:28) Yeah.
(Joel Beasley at 00:10:29) And then so we're eating lunch about an hour later, and I'm like... So Jake's really, really good with quality, right? Like he produces the podcast tremendously well. And so I kind of had some internal reflection while I was making lunch, and we're sitting at the lunch table and I'm like, "Hey, you know, you gotta do me a favor. When we're interacting like that and I come in and I'm like high on ideas and stuff, I need you to be a cheerleader and be like, 'Yeah, that's great, that's great.' And then when we're actually sitting down to execute, then shift me to the quality. Like know that you want my quality, but rather than me just saying, 'We're doing this, we're doing this,' don't say like, 'No, no, no, no.' Instead, you know, just make sure that it ends up quality and keep me up on my high." And that was just like an example of team communication, right? Like I could have... I had the option of saying nothing, right? And then the next two or three times I come in high on ideas and ready to roll, and then I get knocked down again. But instead of letting that happen, we just communicated and rolled with it and high-fived all the way through it. We're like, "Yeah," because we just want what's best for the company, right?
(Stefan at 00:11:34) Yeah, it was actually quite hilarious. I had like, was it five or six months overlap with the old CTO, and he sort of introduced me the first day and like, "This is my replacement. He'll be the new guy saying no to everything." I'm like, "Okay."
(Joel Beasley at 00:11:52) That is amazing.
(Stefan at 00:11:53) Yeah, and always when some of the sales guys come running, "Yeah, I have this great idea," and they can just see it on my face, like, "Yeah, I'm just gonna leave again."
(Joel Beasley at 00:12:03) Oh yeah. They used to call my dad... So my dad was an engineer and he would take me to work with him. That's how I got into programming. I started writing some basic terminal-style commands and then got into a little Delphi and stuff like that. But we used to call him Mr. No, and people would, you know... He ended up managing quite a large team, but I started to identify that the more... If you get the reputation of Mr. No, you are limited in your career and you're limited about where you go. Like you can't always be a yes man. You kind of have to balance it. So what I kind of do is I kind of say, "Yeah, that's awesome. Now I'm gonna go take a look at what the requirements are to execute that."
(Stefan at 00:12:44) Yeah, I think was it on one of your blog posts? I saw the going from no to "no, but."
(Joel Beasley at 00:12:51) Oh yeah, you did see that, okay. Yeah.
(Stefan at 00:12:52) That's the...
(Joel Beasley at 00:12:53) That's the way I roll, you know?
(Stefan at 00:12:55) Yeah, I think that's quite a good way to go. Some people will just get like really angry when you say no and just stop. But sometimes it's fun... We have a lot of sarcasm in Denmark, and sometimes it just works really great when you just look at them standing around looking like dead fish and saying just "no." And they'll be like, "Oh, come on man, you gotta give this to me."
(Joel Beasley at 00:13:18) "I need it. I need a win today." Yeah, yeah. Oh man, yeah, that's the key is finding that right balance. Have you been... So you've read a couple of the blog posts?
(Stefan at 00:13:32) Yeah, I read through some of them. I think they're quite a fast read as far as I remember.
(Joel Beasley at 00:13:38) See, that's what I want, you know? So I posted on Reddit and stuff, and I'll get some people that get upset at me because they're not long enough. And my goal going into it is I have something I need to get off my chest, like a feeling that I've felt multiple times, and I wanna cover the topic and I wanna do it succinctly. You know, I wanna do it in just a quick, like, "This is it." And then the moment I feel like I'm being repetitive, I kind of end the article, you know?
(Stefan at 00:14:07) Yeah, it's just a newer thing: microservices, microblogging. You just gotta catch it all.
(Joel Beasley at 00:14:13) Yeah, and I just turned them all into a book.
(Stefan at 00:14:16) Yeah, that's... I think that was... I think it was a sponsored post. Did you sponsor like a post on Instagram? I think it was on Instagram I saw it first.
(Joel Beasley at 00:14:25) Oh yeah, you did.
(Stefan at 00:14:27) Yeah.
(Joel Beasley at 00:14:27) What are you doing on Instagram? Is it mostly family stuff, or do you do technology stuff on Instagram too?
(Stefan at 00:14:32) I think we're down to like hardly ever posting now.
(Joel Beasley at 00:14:35) What other tools are you using? Are you on Snapchat? Are you just using Instagram? Like what are you...?
(Stefan at 00:14:41) On everything these days: Twitter, Instagram, Snapchat, Facebook.
(Joel Beasley at 00:14:46) Where do you spend most of your time?
(Stefan at 00:14:47) Oh, that's a tough one. I think it's actually Instagram because it's really easy to consume. Starting to use Facebook more for special groups, like looking into brewing beer now. I found a great group for that. Ventured into some really geeky stuff with wet shaving.
(Stefan at 00:15:05) There's a perfect forum in Denmark on Facebook for that. So it's more of the niche stuff I find on Facebook these days, and Instagram is just a flow of what's going on.
(Joel Beasley at 00:15:15) Alright, so Instagram is kind of like the stream of the river where you just kind of watch it, and then Facebook's kind of where you're doing some engagement in your special groups.
(Stefan at 00:15:24) Yeah. I hardly ever read anything in my regular feed on Facebook. One can only hope that it's getting better now that they sort of announced change of the algorithm, so you don't see so much bunch of stuff anymore.
(Joel Beasley at 00:15:36) Yeah, that was last week. Stock fell, like, what, 10%?
(Stefan at 00:15:41) Yeah, and the feeds didn't work the next two nights.
(Joel Beasley at 00:15:46) You know, I was interested back to investing. Like, for me, that's a buy decision. It's like if they're going to say that they're putting their people first and they're getting rid of their crap, they're making their platform more usable, which makes it a better long-term, more viable product. And so I'm surprised their stock didn't go up.
(Stefan at 00:16:04) Yeah, but, well, it is the magic of Internet stocks. You never know where they go.
(Joel Beasley at 00:16:11) So what are you doing on Twitter then?
(Stefan at 00:16:15) It's sort of getting dusty these days, but I used to use it a lot to get everything tech news. And whenever I'm at a conference, I'm using Twitter a lot. That's the place to get hold of people and find them for all of the best sessions at a bar at night talking about random stuff.
(Joel Beasley at 00:16:36) So Twitter's good for your conference interactions?
(Stefan at 00:16:42) Yeah. I used to follow a ton of people, and I was like, yeah, I got all this news. And all of a sudden, you could just feel your brain collapsing from all the news.
(Joel Beasley at 00:16:51) It's too expensive to advertise. Have you ever tried any advertising on there?
(Stefan at 00:16:55) No, refrain from that. The only advertising I've ever done is on Facebook and Instagram. That was really, really cheap because I did it in a really limited area and set a cap on it.
(Joel Beasley at 00:17:09) I like to play with the different networks and see kind of where the returns are for my world. And LinkedIn overpriced, Twitter overpriced, but Facebook and Instagram were like the soup, right? Too hot, too cold, just right. So Facebook, Instagram were the platforms that were right for me as an advertiser.
(Stefan at 00:17:30) Yeah, and especially, I think you said in one of the other episodes that you're not trying to make money off the podcasts. Well, then you sort of want to keep down the expenses as well.
(Joel Beasley at 00:17:41) Yeah, that is the goal. I want to educate the world, but not at my demise.
(Stefan at 00:17:49) Yeah, I guess the streaming of the actual podcast runs up.
(Joel Beasley at 00:17:55) Yeah. Have you—so what about voice? Do you have an Alexa or Google Home?
(Stefan at 00:18:00) I have nothing. I have a big tinfoil hat. That's why I don't have any.
(Joel Beasley at 00:18:05) You don't want them recording your every thought and move and action?
(Stefan at 00:18:09) Yeah, exactly. That's why I'm going for the tinfoil hat version.
(Joel Beasley at 00:18:13) So I'm loving it. I have an Alexa and a Google Home. Man, I'll tell you what, it's like having a new best friend.
(Stefan at 00:18:20) Yeah, but that's so easy for you when you're a native English speaker.
(Joel Beasley at 00:18:24) Oh, I never thought of this. Your English is perfect, Stefan.
(Stefan at 00:18:28) Yeah, that's the effect of playing World of Warcraft online for over five years.
(Joel Beasley at 00:18:34) Yes, I'm sure you can curse like nobody's business in English.
(Stefan at 00:18:39) I learned a lot of British awkward terms that aren't really good for anything, but it's quite hilarious from time to time.
(Joel Beasley at 00:18:47) So I noticed that you were speaking about the Internet of Things all over the world—Belgium, Sweden, Norway, Denmark. I was like, whoa, Stefan's well-traveled. And what are you talking about when you're talking about the Internet of Things?
(Stefan at 00:19:00) It's such a cheap session to do because it's mostly like you should do all of this to get success, and this is how everyone failed. So I think I had, what's it called, "The Road to Success or Absolute Failure," and it was pretty much reiterating what the first definitions of Internet of Things were. You had different parts with proximity, augmented—it could be augmented reality, it could be something else that was augmenting your real world. That would be the various steps and the different parts of how far you're going into IoT.
(Stefan at 00:19:41) But the sad part is that everyone sticks on the, "Oh, I got this piece of hardware. Let me just throw Wi-Fi or Ethernet on it, and now it's Internet of Things." And then I started talking to a lot of the guys that did security sessions. They're like, "This is a great topic. Nobody's doing it yet. This is definitely one that could get me to conferences." So it was pretty much an open ball just to grab it and run with it, and I ended up venturing a bit further into security. I did a security certification, so it was just really good valuable stuff that earned me a bit of credit on that.
(Joel Beasley at 00:20:15) A little street cred in the security and Internet of Things because you kind of went out there and dismantled a misconception.
(Stefan at 00:20:21) Yeah, all of the different products that wasn't really helping the world at all, like the iKettle. Somebody did a kettle on Wi-Fi so you could turn on the kettle when you are driving your car home, so the water would be hot when you came home. The biggest issue with it—it was really open, so anyone could hack you from your iKettle. And what did you achieve? Well, look, I can turn on my kettle.
(Joel Beasley at 00:20:47) Well, alright, so I've got mixed feelings about this because I drink a lot of tea. When I heard you saying that, I'm like, I will go Amazon one right now, man. If I can IoT my kettle, like, come on.
(Stefan at 00:21:00) Yeah, then you just watch some security conference stuff where they actually hack an iKettle.
(Joel Beasley at 00:21:06) Right. Well, see, the problem isn't the usability of me heating my water. That's a valid idea. That's something that exists in the future. The problem is these people putting out these startups and these products with no regard to security.
(Stefan at 00:21:19) Exactly. There was an issue with the—I think it was the Nissan LEAF. There's a guy, I don't know if you ever heard about Troy Hunt.
(Joel Beasley at 00:21:28) No, I haven't heard about this. Let's hear about the LEAF.
(Stefan at 00:21:30) I think it was Troy Hunt and Scott Helme. I think Scott is living in Norway and Troy is living in Australia. So they recorded a small video episode with Scott in his car, Troy sitting by the pool with his laptop, and he started the heating in the car from Australia.
(Joel Beasley at 00:21:47) And this was like a hack?
(Stefan at 00:21:49) Yeah. Or hack and hack. It was more a stupidly open API. So he actually took the title of Stupid Security Researcher on conferences after that because people flamed him to hell for, like, "Yeah, you broke my remote control of my LEAF now."
(Joel Beasley at 00:22:06) I was talking with my dad. He, uh, engineer, pulled me into programming, and we were having a conversation. Did you see that video going around? I believe it was Europe where they had these car thieves that were RF hacking the keys for Teslas or some other types of e-cars. Have you seen that video?
(Stefan at 00:22:23) Not sure I've seen that exact one, but I've seen a few of them.
(Joel Beasley at 00:22:26) Alright, so this is how it would happen. There were two boxes and two thieves, okay?
(Stefan at 00:22:30) Mhmm.
(Joel Beasley at 00:22:30) One thief would be standing with his box, about one foot by one foot, next to the car. The other thief would be standing with his box and holding it up to the garage or holding it up to a window or something of that nature. And what they were doing was they were getting the key fob in the house to respond, and then they were cloning it. That device would clone it, and then the other individual would unlock it and open the car and drive away.
(Stefan at 00:22:53) Yeah, it makes total sense. I'm pretty sure I've seen it now. It's like a night photo.
(Joel Beasley at 00:22:59) Yeah, yep, yep.
(Stefan at 00:23:00) Yeah, yeah, then I've seen it. That's a really good reason to never have your keys near the front door.
(Joel Beasley at 00:23:06) Well, you know, first of all, the Tesla keys—I don't think it was definitely, probably not a Tesla. Unless—just say it wasn't because I like Elon, and so I use his first name because I'm hoping, like, when he hears this, he's going to be like, "Oh, that's my bro," right?
(Stefan at 00:23:20) And then, "What up?"
(Joel Beasley at 00:23:21) "What up, bro?" I'll be like, "Oh, not much, man."
(Stefan at 00:23:22) "Did you want a free car?"
(Joel Beasley at 00:23:24) No, but I will hang out with you for a little bit. So I was talking with my dad about it, and I said, you know, this is a classic case of lazy developers because there's no reason why that should have been such an open, easy thing to do to clone. Like, where's the—where's the one-off? And if it did clone, like, shouldn't they have been doing a setup where it was a one-off use key every time that the transmission occurred? Shouldn't that be a one-time use key?
(Joel Beasley at 00:23:52) Or did they have inside information, and they were maybe previous developers or had an in at the company so they knew what they were assaulting with or how the technologies worked internally? Like, I'm always curious. I want to know if those guys are really smart nerds or if it was really lazy developers.
(Stefan at 00:24:10) I think it's a mix because behind all of those guys are some really clever people, and they sell—they sell the vulnerability and make some money off it.
(Joel Beasley at 00:24:18) That is true.
(Stefan at 00:24:19) That's the prime thing to buy on the dark web. You've got to say it with a deep voice to make sure that people decide what's really dark.
(Joel Beasley at 00:24:31) You're going to be like the Batman of the dark web, Stefan?
(Stefan at 00:24:34) No, definitely not. Never been there. Don't dare to go there. You never know what you're going to get back on your feet after going there.
(Joel Beasley at 00:24:42) It's the tights, isn't it? You don't want to wear the tights.
(Stefan at 00:24:45) No, I'm okay with tights.
(Joel Beasley at 00:24:47) You're okay with the tights? Alright, that's—so, you should give a talk called "Tights and the Internet of Things."
(Stefan at 00:24:56) We were actually talking about doing a dual session on what developers should respond to in physical training. And we're talking about doing a two-person thing, so whenever one talks, the other one should do exercises. But it never really caught on to a perfect idea.
(Joel Beasley at 00:25:15) So it's like pair programming but with exercise.
(Stefan at 00:25:17) Yeah, and imagine doing a presentation, you're just trying to catch your wind again. You're like, "Yeah, and then you want—"
(Joel Beasley at 00:25:25) CrossFit meets programming.
(Stefan at 00:25:27) Yeah, exactly.
(Joel Beasley at 00:25:28) It would be—
(Stefan at 00:25:29) It would be something like Darth Vader or something like that.
(Joel Beasley at 00:25:34) Red, green, refactor. Alright. Are you guys doing pair programming at your company? You guys do any of that? You get into that at all?
(Stefan at 00:25:46) We do sometimes. Usually, our tasks are pretty well-defined, and people talk about the solution before they start. But whenever somebody is sort of feeling stuck, they always just call for another guy to sit by them.
(Joel Beasley at 00:25:59) You know, I've seen people use it just to get better at talking. Have you seen this use case?
(Stefan at 00:26:07) I think my guys, they're pretty good at talking, so it wouldn't really be the right tool to make people talk because they talk a lot.
(Joel Beasley at 00:26:18) Well, do they talk about—as far as instructing another person what to be doing while they're typing? Like, because I do that with my consciousness and my body. I'm kind of telling myself as I'm programming, "Okay, now I'm going over here, and now we're doing this, and now we're doing this." And I do that in my internal dialogue, and I may be just crazy, but that's how I roll. But when I started pairing developers, they were like, "Oh, we know what to do." And I'm like, "Oh, cool, like, tell me what to do." And then they had a hard time saying it with words without touching it. Like, they could show me. They could grab the computer and they could type and they could do it, but they had a hard time sort of like—like a cox, like a what is that word? Like a coxswain or something on a boat when they're rowing, like, yelling out exactly what to do. And so that was an interesting skill to find that was dull with some people who are really great programmers. Have you found that at all?
(Stefan at 00:27:05) No, it's usually more like, "I have this weird issue," or "Could we sit down and look at this and figure out how it actually works? Could you have a look at this, and we can have a chat about should I structure it differently? Am I doing something stupid here that will turn our databases into full load or anything like that?" Like, it's more like they have the solution. I want to do a pre-verification for it when they send the pull request later on, or at least just have a discussion about it. Is this a good path to go down, or does this confine with the rules we have? Or it's usually more really concrete about, "I have this issue. Can you help me with this? Could you take the opposing side and try to shoot my solution down a bit to see if I'm missing something?"
(Joel Beasley at 00:27:59) Yeah. So how many alarms will this set off in New Relic?
(Stefan at 00:28:04) Usually, it's more like how many emails will Stefan receive within the next five minutes.
(Joel Beasley at 00:28:12) They have little character graphics for you, like a smiley face to an angry face. Like, which Stefan will we get for this?
(Stefan at 00:28:19) They definitely should have.
(Joel Beasley at 00:28:21) So how much time do you spend on security at your own business? Is that something that you have someone that's really talented on your team, or are you kind of the security lead on your team?
(Stefan at 00:28:30) It's a mix between the CEO and me—probably more like the technical, really, "We should do this. We should do that. We should definitely do this." And he's more like, "Yeah, but do we really need it?" So we're a good mix and match because I want to do everything right now because we're definitely insecure. And he's like, "Yeah, are we really?"
(Joel Beasley at 00:28:51) When you get that update from, you know, the Ruby threads and it's just like security patch—are you guys using Ruby?
(Stefan at 00:28:57) No, no. We're a full .NET house.
(Joel Beasley at 00:28:59) Oh, you're a full .NET house. Yeah. So you still—well, then if you're a Microsoft company, you're getting those security updates every day.
(Stefan at 00:29:05) Oh, yes.
(Joel Beasley at 00:29:06) Oh, yeah. What products are you—so you got .NET. What other stuff you got going on in your stack? What are you using? How do you run your life?
(Stefan at 00:29:15) We use, for our viewer that all of the consumers see, we're using plain HTML, CSS, and JavaScript and using some old school Underscore stuff, and we started introducing Vue into it. On the back end, then it's a mix of—yeah, it is going to sound crazy, but our CEO wrote his own micro-ORM. So we're using that, and we're using MSSQL Server as well. Then we started venturing a bit into using Akka as well.
(Joel Beasley at 00:29:49) What's a micro-ORM?
(Stefan at 00:29:50) You pretty much write raw SQL, and you get your entities back instead of having a big magic thing that iterates your database and creates models.
(Joel Beasley at 00:30:02) Okay, so it's like a minified ORM?
(Stefan at 00:30:05) Yeah, exactly.
(Joel Beasley at 00:30:06) Oh, okay, yeah.
(Joel Beasley at 00:30:07) just didn't know the terminology.
(Stefan at 00:30:08) Oh, okay.
(Joel Beasley at 00:30:10) So have you seen this thing I just came across yesterday called StackShare?
(Stefan at 00:30:14) Yeah, I've seen it. I'm actually subscribing to it and getting a few things in my email every week.
(Joel Beasley at 00:30:21) What are you using it for? Like, to kind of find new tools to come up? Or...
(Stefan at 00:30:26) I think I just signed up for it and was curious, like, what—how much can I see different companies are using? Should we actually post our stuff onto it? Does it tell any vulnerabilities? Do you have to share, like, specific versions you're using? If I have to do that, then I probably won't be using it.
(Joel Beasley at 00:30:44) When I saw it, I was wondering—alright. So it was really cool. It was a lot of sizzle. Got me really hyped up, right? Because it, like, let me into this whole world of every other company. Right? So my first thing was, okay, this is cool. After spending fifteen minutes and seeing alright, well, I mean, we're all using the same stuff. Like, I'm like 20 companies. I was just like, I get it. Right? I was thinking, where's the continued value to hang out there? Like, where's the value?
(Stefan at 00:31:12) I wish I knew.
(Joel Beasley at 00:31:12) It's like the only thing they—
(Stefan at 00:31:16) —do is pull in data.
(Joel Beasley at 00:31:19) Yeah. I'm like, why would I go back? Like, I see that they're running some ads. Like, you can do a search, and I can see alright, well, they're collecting data. They're getting everybody—everyone puts their stack. But, like, what's my incentive to maintain my stack? Like, why do I care?
(Stefan at 00:31:34) I haven't actually noticed who's behind the site. Is it like Thoughtworks trying to gather which stacks people are using for the tech radar once a year? Or...
(Joel Beasley at 00:31:46) No. It was just—it's a business that went—that I saw on—I subscribed to Crunchbase, right? Because I like to watch who gets invested in and stuff. And they did, like, $5 million or something like that in capital that they raised, and they had a lot of people involved. Oh, nope. Total funding, $7 million.
(Stefan at 00:32:07) Wow.
(Joel Beasley at 00:32:08) And I'm like, what the hell are they—like, where—like, okay. It's cool. It's sizzle. It's pop. How—where's the hook? They've been going since 2015. Okay? We got $300,000 investment. Then in '16, they got $1.5 million. Then January ninth of this year, they got $5.2 million led by—looks like it's a company called Eventures. And I'm thinking, alright. Total funding—they did three rounds, $7 million. What is—like, and they're cool. They look pretty. Alright. They got some people to go in there. Why am I gonna go keep it updated? What's the benefit to me? Like, what—like, why—if their play is data, right, let's say their play is data. Like, they want to collect a lot of data about who's using what so that they can then sort of use big data and turn around and sell it or make money or do some advertising, something like that. But that is useless if I don't keep coming back.
(Stefan at 00:32:57) Yeah. And, well, is it really that useful, the data you're getting?
(Joel Beasley at 00:33:02) Well, maybe they're selling the data to this marketing team. I don't know. I mean, I could go ask 20 people and figure out what's hot in the market. Right?
(Stefan at 00:33:11) Yeah. And you can, like, install a browser extension and visit the website, and you can get a pretty good idea of what people are using.
(Joel Beasley at 00:33:19) I can go to GitHub and look at the stars.
(Stefan at 00:33:21) Yeah.
(Joel Beasley at 00:33:22) Alright. There we go. Done.
(Stefan at 00:33:23) Just noticed the website. It's "attract developers by explaining what you use and why." Well, I can do that in my job position I'm writing. I don't need a website for that.
(Joel Beasley at 00:33:35) It's like, alright. We've got GitHub versus Bitbucket versus GitLab. And, like, okay.
(Stefan at 00:33:42) It's all Git. Right?
(Joel Beasley at 00:33:45) It's all Git. It's just where I'm storing it. jQuery versus—jQuery—that was a versus React. It's just like, I don't look at jQuery versus React. That's not, like, a decision I make by the way.
(Stefan at 00:33:56) No. The only time I'm looking at jQuery is like, okay, do we really still need it? Yeah. Unfortunately, we do.
(Joel Beasley at 00:34:04) Right? I'm gonna—and you know what? I actually threw—did an Instagram picture. I said—because I was having some nostalgic moments the other day. And I was like, oh, man. One day, like, soon, jQuery is gonna be your father's JavaScript library. Right? Like, that's never cool.
(Stefan at 00:34:23) I bet it already is.
(Joel Beasley at 00:34:25) Exactly. I mean, if you think about it, the kids—I started programming at a very young age just because my dad would take me to work. But, you know, by the time I got out of high school, I've been programming ten years already, and everything was old and gone. Right? And it's only moving faster. Things aren't moving slower.
(Stefan at 00:34:46) No. Absolutely not. It's like a crazy speed. I saw the—I think it was a blog post from Stack Overflow. Was it last week? They're writing about the different lifespans of JavaScript frameworks. And usually, the lifespan is, like, six months. And something—
(Joel Beasley at 00:35:04) I read that same one.
(Stefan at 00:35:06) Yeah.
(Joel Beasley at 00:35:06) I caught it off Reddit, and it was—they were talking about how they showed the graph, and then I think it was Vue was the hottest one this year in the recent future.
(Stefan at 00:35:16) I'm happy to see that because there needs to be way more developers behind Vue.
(Joel Beasley at 00:35:21) But I don't—so you're gonna—I'm gonna show a sad side of me here is I haven't—I haven't touched Vue.
(Stefan at 00:35:30) Well, neither had I until I started at iPaper.
(Joel Beasley at 00:35:33) What do you think about it? Like, what's the—give me some sort of context or something useful over another library.
(Stefan at 00:35:40) Well, the good use for us is, like, we need to pay really, really, really good attention to the payload of the actual library. And then the next step is looking—how easy for us is it to integrate it into, like, a quite big—well, it sounds sad to say it's legacy, but, like, our current code base that has some things that are five or six years old, where we just can't start rewriting everything from the ground up again. So we need something that we can slice in in small pieces. We could probably have done that with React as well.
(Joel Beasley at 00:36:15) We had—we had an application where—wait. You could have done it with React?
(Stefan at 00:36:21) I think we could.
(Joel Beasley at 00:36:22) So wait. So is Vue an alternative to React?
(Stefan at 00:36:26) I'm actually not sure it is. I think they take a bit different direction. But to our need, it was a benefit to use Vue. I think when we were writing it from the ground up again, we would probably use React or something like that for it.
(Joel Beasley at 00:36:44) I had a couple applications that were Rails apps that I slowly moved, like, feature by feature to React. Because we were just using the, you know, the Rails ERB or Slim, actually. But we took each, like, core feature and then slowly moved it over to React because—just, like, for us, Rails will forever now be an API.
(Stefan at 00:37:08) Yeah.
(Joel Beasley at 00:37:09) Just the JavaScript framework—everything needs a mobile app. If everything needs a mobile app, like, double down on your strengths. Like, Rails is great for us. It's great for writing tests and models and handling those sort of things in the controller, and it's wonderful for us for that. It's just we don't use their view system, like, at all anymore.
(Stefan at 00:37:28) Yeah. That turns really sad, and you're sort of stuck with it, but you're okay with it.
(Joel Beasley at 00:37:36) So you like Vue, though? It's easy to slice in?
(Stefan at 00:37:40) Yeah, it is. Well, usually—the team is pretty much set up like two front-end guys, three back-end guys, and a full stack. So they're pretty much doing everything with Vue. So I don't get to play around with it that much. It's mostly through the reviews and some early assessments.
(Joel Beasley at 00:37:58) Yeah. That's what I'm facing now too. Now that we're doing the show and I'm not writing as much code on a daily basis. I mean, don't get me wrong. I've got fifteen-plus years and, you know, sixty-hour weeks writing code. But the tools change so fast that, like, Vue can come and be the most popular thing in the world without me even knowing about it until I read about it on Reddit. You know?
(Stefan at 00:38:20) Yeah. I think the most sad part is there's so many good new libraries, and some people are just stuck with some really old stuff and don't want to learn new stuff. That's, like, the worst coworkers I could have or the worst developers on my team would be like, "Yeah. I'm done. I don't need to learn anything new."
(Joel Beasley at 00:38:37) What have you learned becoming CTO at this company? What's, like, the big skills that you've learned coming from developer to CTO?
(Stefan at 00:38:44) That's a tough one. My initial thought about joining was that I was—yeah, I'm gonna be like a team lead plus, since it's only a six-man team. Yeah. And then reality comes around, and you don't really have time for just being a team lead. You need to think about strategy. You need to think about pricing, recruitment. Luckily, I haven't had to fire anyone. But I had a guy quit on me and figuring out the solution for that and so on.
(Joel Beasley at 00:39:15) A day's coming, man. You're gonna have to fire someone one day.
(Stefan at 00:39:18) Yeah. Sooner or later, it will happen. I know that, but I'm gonna hate it when I have to do it.
(Joel Beasley at 00:39:22) Oh, you know, I had to do it. Well, I've had to do it. We're not gonna talk about how many times I've had to do it. But we talked about the first time I had to do it. It was super tough. I was 18, and I was firing someone who was, like, 43. And, yeah, I was—well, just to give you some perspective, I was 18. I looked like I was 12, and I was firing someone who was 43. And it was really tough, and I hated it. And then that experience taught me how to fire someone better, and so I have a new way of firing someone. You want to hear it?
(Stefan at 00:39:57) Yeah.
(Joel Beasley at 00:39:58) Okay. So usually when someone needs to be fired, it's very obvious to both people. I don't think anyone is ever surprised when they're fired.
(Stefan at 00:40:06) Right? They shouldn't be.
(Joel Beasley at 00:40:08) Right. They're fired—you don't fire someone who is getting along with everyone, who's productive, who brings value, who is hitting their deadlines, who is—like, you don't fire those people. You raise them up. Right?
(Stefan at 00:40:22) Yeah.
(Joel Beasley at 00:40:22) So whatever the thing is that they're doing or not doing, what I'll do is I take that, and then I talk to them about it. Right? Hey. Like, are you—how's life going? Like, what's going on? How are you feeling? Like, I genuinely care about them, so I don't have to—
(Stefan at 00:40:38) Yeah.
(Joel Beasley at 00:40:38) —it's not like I'm faking it. And then I talk to them about the problem and, you know, I use the whole sandwich, like, compliment thing and then, you know, compliment and sandwich the feedback. So after I do that, I focus on the thing that is the problem. Let's say that they're just not completing features on time because they're not hitting deadlines that they're setting for themselves. So then I'll say, okay. Well, we got to work on this. So, you know—we're gonna—you're gonna do the next three deadlines, and you're gonna pick them yourself, and you're gonna be fully responsible and you come to me if you need any resources to hit them. And then, and we'll go from there. And then if they're missing them and they come back to me, I'll be like, look, you know, what do you want me to do? Like, we have a team. This is a group. We're all going after the same goal. You got to set your own deadlines and you're not hitting them. And so this is, like, your last chance here. Set two more deadlines. And if you can't do it, then it's time for you to move on and go on new adventures in life. And that's—they fire themselves. They don't hit it, and then they have to go.
(Stefan at 00:41:42) Yeah. It—you just got to set up some metrics so that they know your expectation for sure, and then you can say to them, "This is my expectation. It's here. I can write it to you. I can clearly explain it to you. If you don't live up to this, well, we're done."
(Joel Beasley at 00:41:56) No. It's just—not—it's—okay. Like, in relationships, I tell my wife all the time. I tell my wife—you're gonna get in trouble for this. I am gonna get in trouble. She listens too. So—I tell her—I said, look. I love you, and I'm very happy with our relationship. I want you around. I go, but if you ever wake up and you don't want to be here, like, I don't want you to have to feel like you have to be here. Like, you move on. Like, I will help you. You come to me and you tell me—if my producer came to me today, he said, "Joel, look. I'm just not happy. I want to move on." I'd say, "No worries, buddy." I would actively pursue helping him move on and get a better paying job somewhere else. Because I want people that want to be here. You know?
(Stefan at 00:42:40) Exactly. I do, like, monthly one-on-ones with all of the developers, and we have, like—we have some set questions they have to answer. What are you excited about? What are you worried about?
(Joel Beasley at 00:42:51) Mm-hmm.
(Stefan at 00:42:51) What can I do to help you? What can you do to help me? And then I took the first four questions from the previous CTO, and then I added, like, what have you recently learned? And the guys were like, "That's actually a really good question. Now I got to pay attention to what I'm learning."
(Joel Beasley at 00:43:07) Right. "What have you recently learned?" I'll write that one down. Because if you say nothing, then that's a problem.
(Stefan at 00:43:15) Yeah. When they have nothing, I'll be, like, poking a bit like, okay, you did this feature. Did you learn anything from that? Have you ventured into something new? And I'm always really open saying, "You can tell me everything. It doesn't have to be work related."
(Joel Beasley at 00:43:30) Right.
(Stefan at 00:43:31) It goes for all the questions.
(Joel Beasley at 00:43:33) Yeah. And, and you know what? It's not always—I take the position that everything's my fault, 100% total responsibility. And if I've got someone who's really smart and they're in a position where they're not learning new stuff, that's my fault as the CTO because I need to—I need to give them bigger challenges. I have an underutilized resource that I can throw more at.
(Stefan at 00:43:52) "What am I doing to hold you back?" would be the perfect question.
(Joel Beasley at 00:43:56) Yeah. That is absolutely perfect question.
(Stefan at 00:43:59) It's quite hilarious. I'm like—when I was talking about doing the CrossFit stuff, and I'm following a lot of athletes and especially all of their coaches. And I'm sort of leaning into, like, a good coach for an athlete. Take his mindset and apply that to managing a team because you have to do everything you can to make sure that athlete can perform. That goes for a developer as well. You need to have the right tool, less disturbances, less friction in general.
(Joel Beasley at 00:44:28) Yeah. It's—if you—everyone says "teams," and it's such an overused word, right, like in life. We hear it everywhere. But what it really is is, like, effective ways of dealing with humans and groups. Like, when you hear that, you're like, "Oh, man, this guy's a master at that." When you hear that they're coach of a basketball team, you're like, "That's not relevant." But if you flip that perspective and say it differently, it all of a sudden becomes relevant.
(Stefan at 00:44:53) Yeah. You've got to make sure that everyone wants to play the same game and they run in the same direction. It's quite funny. I had a small, fun discussion with one of the salespeople today, and when he left the room, he was like, "Yeah, could you please start this feature?" I'm like, "Do we have a signed contract for this? I won't start it until we have a signed contract." "Yeah, but I agreed with the CEO." "Okay, if you can make him say yes to me, I'll happily do it and schedule it in." He's like, "Okay, just because you said that, I'm going to go to him and have him write okay to you." And then two minutes later, I get a message from the CEO. "Okay, are you sure what you're saying okay to?" "Yeah, I'm pretty sure." One of his things were like, "Remember, we're all in the same team," and of course we are, and we just throw a few pranks at each other, so...
(Joel Beasley at 00:45:42) It's all in good fun. Look, you have to spend time. You want to have fun in life. You need to be working somewhere where you're enjoying it and having a good time.
(Stefan at 00:45:49) Definitely. But you don't want to go into the places where it's more fun than actual work.
(Joel Beasley at 00:45:55) Yeah, that's the balance again, right? To find the sweet spot where you're having a good time, but you're with a bunch of people who really are motivated. I always find it's way easier to get a bunch of people who are motivated and then encourage having a good time because their default is going back to work, rather than finding a bunch of people who only want to have fun and then trying to get them to sit down and work. So if you were to give advice to your past self, like, if you were to go into a time machine—let's say Elon Musk shows up at your work and he's like, "Stefan, here's a free Tesla, and we're going to go get in a time machine. You're going to go back in time, and you're going to tell your past self some advice." You get to go back ten years. Think about yourself the way you were ten years ago, and you get to give yourself a piece of advice. What would it be?
(Stefan at 00:46:40) I would probably say don't be afraid of applying for a CTO job earlier. I started programming in 2003 on my first job, and, well, I didn't switch until last year.
(Joel Beasley at 00:46:52) Wow. So that's more than a decade.
(Stefan at 00:46:54) Yeah. But at the same time, the first few years for me were like—I worked at an advertising agency for the first couple of years, then I went into some energy management systems. I was like, "Yeah, I'm just having fun, still learning." I have, I think the closest you can relate it to is an academic profession in computer science. So I was always thinking that I'm behind the people that graduated from university or became a software engineer here. So I just felt I had so much to learn before I was ready to go higher up the ranks.
(Joel Beasley at 00:47:30) So you're really smart, and that's—I often see a lot of smart people feel like they're not smart enough to go forward. And then I'm kind of hanging out with all the different CTOs, and I'm tapping on the shoulders of the smart people being like, "Yeah, you're ready. Like, get in the game, buddy. Now is the time." You know?
(Stefan at 00:47:47) And I think the speaker part—I started in, I think it was 2012. I had my first speaker gig. That actually pushed me quite a lot because then you start meeting a lot more people that are in the same space as you, and you can just feel like, "Okay, now I'm feeling that I'm getting aware of what I don't know, so I can actually start applying this stuff." Like, "Yeah, I can help you with this. If you need this, go talk to that guy. He'll be the right guy," and you can just sort of start directing people and help them out more generally.
(Joel Beasley at 00:48:17) You have to jump into the pool to get used to the water, right?
(Stefan at 00:48:20) Exactly.
(Joel Beasley at 00:48:21) You can think about the temperature of the water all day. It's not going to change it. You've got to jump in and get used to it and then swim.
(Stefan at 00:48:27) Yeah. And get some healthy ideas of should you follow mythology, or shouldn't you just care about it at all? Everybody wants, like, "Are you doing Scrum? Are you doing this?"
(Joel Beasley at 00:48:41) Are you doing that?
(Stefan at 00:48:41) Come on. No, I'm definitely not doing Scrum, and I probably never will. I'm doing whatever works for us.
(Joel Beasley at 00:48:48) Yes. Thank you. I'm like, "Okay, I know you're excited because you just read a book about how to run a team for the first time."
(Stefan at 00:48:54) Yeah. When people read about Scrum, it's like, "Yeah, we want to apply everything that was in the book." Okay, you clearly missed the message from the book.
(Joel Beasley at 00:49:00) Do whatever works for you.
(Stefan at 00:49:02) There you go.
(Joel Beasley at 00:49:02) Dispelling more misconceptions, Stefan. You are the Batman of the programming industry. You're the Batman CTO. And we even have a black and white picture of you, and like, oh man, it's great. We're going to put a little—we're going to Photoshop a little Batman hat. Oh, it's going to be great. Dude, thank you so much for coming on the show and talking with us.
(Stefan at 00:49:24) You're welcome.
(Joel Beasley at 00:49:24) Great conversation. I very much enjoyed it. Thank you so much for listening to the Modern CTO podcast. Share this, get the word out. Thank you guys so much. I couldn't do it without you. I appreciate it. You guys are the absolute best.