Episode 10 ·

Brunno Attorre CTO/CoFounder At Uru

Today we are talking to Brunno the CTO at Uru. You won’t believe what they are doing with machine learning.  We talk about the struggles of learning to manage people and speak up when going from developer to CTO. We got a question from the FB livestream Leonard asked  “With so many types of testing, When do you test and why?”. All of this right here right now, on the Modern CTO Podcast.

Livestream on Facebook & Youtube.

Use the contact page to provide feedback, say hello, show us some love. We make this podcast for you.

Transcript

(Joel Beasley at 00:00:00) Today we are talking to Bruno, the CTO at Uru, and you won't believe what they are doing with machine learning. We talk about the struggles of learning to manage people and to speak up when going from developer to CTO. We even get a question from the live stream. Leonard asked Bruno, with so many types of testing, when do you test and why? All of this right here, right now on the Modern CTO podcast.

(Bruno at 00:00:24) Here we go.

(Joel Beasley at 00:00:25) This is the Modern CTO podcast. Okay, so I've got some questions about—you're really big into AI and machine learning.

(Bruno at 00:00:42) Yes.

(Joel Beasley at 00:00:43) Right? Have you seen the Sophia that Saudi Arabia made her a citizen?

(Bruno at 00:00:49) I saw that. I saw that. It's a little worrisome, right? Because how they can give more rights to AI than to their human beings, like women. I mean, it's a little worrisome, but I mean, it's interesting.

(Joel Beasley at 00:01:05) Yeah. So were you involved in programming her at all?

(Bruno at 00:01:09) I wasn't. I wasn't at all. But I followed the news, and I think it's interesting. There'll be a lot of interesting things that people need to figure out about AI and how it fits in the world. Right? Like, because we're getting closer and closer to having things that basically they're not hard-coded rules. Right? It's a computer taking decisions, and who's accountable for those decisions and things like that. So it's always interesting to see how those things are playing out in the legal field and things like that. So yeah.

(Joel Beasley at 00:01:48) Right. And we get to live through all of this.

(Bruno at 00:01:50) Yeah. Exactly. That's the most exciting part.

(Joel Beasley at 00:01:53) Yeah. We got some responsibility, though. Right? Because otherwise, our kids are gonna hate us.

(Bruno at 00:01:57) Exactly. Yeah. We need to be careful what we do.

(Joel Beasley at 00:02:01) Absolutely. So, because you're deep in the industry and you're in it and you're programming, what do you think is sort of the biggest misconception that the general public has about AI and machine learning?

(Bruno at 00:02:14) The biggest misconception. That's a good one. I think that one thing that we notice, and it's kind of funny, is that I mean, AI, it's cool and works really well, but I mean, it's still in the early days. Right? We still don't have robots walking around offices and doing things on their own. It's still very early. And I think there are things that people see, and they get your own impression. And I'll give an example. So for instance, let's say you have a picture of a dog and you show an AI system, and the computer says it's a cat. For humans, that's clearly a dog, but maybe the computer just got that one wrong, but it got a million other pictures right. And that can cause a kind of a little bit of misconception because AI is always a numbers game. Right? Like, if you have 99% accuracy, there's always gonna be 1% that you're gonna get it wrong. And sometimes for a human being, when they look at something that you got wrong, they're gonna say, why didn't they get this? This is crap. When in reality, it's more like a numbers game. It's hard. It's too early. But I think that I think people are getting more used to it and used to the kind of shortcomings of AI, I would say.

(Joel Beasley at 00:03:29) It's like demoing any software. It's hard to explain to the people looking, oh, you're seeing the exception. This usually works. You're seeing the one in a million.

(Bruno at 00:03:38) Yeah, exactly. And when you're talking about AI, you're talking about things that for us humans are very natural, like speaking to someone or answering a question or looking at an image and seeing what is in the image. And for us, a kid, like a five-year-old kid can answer those things. But for a computer, sometimes it gets confused, and there's edge cases. There's even some interesting edge cases that you can see online. There is a researcher that basically took a picture of a stuffed animal, like a turtle toy. And it made the Google TensorFlow to think it was a weapon just by adjusting the color of the turtle in such a way and positioning in such a way that for the computer itself look like a weapon, where if you're a human, you're looking at it, you clearly see that it's a turtle toy. So, I mean, there's always shortcomings with any technology. So it's always important to communicate that. And I think AI will evolve, and with that, people will get more used to this kind of shortcomings. But it is interesting. It's definitely interesting.

(Joel Beasley at 00:04:43) Or maybe it's a weapon that shoots turtles.

(Bruno at 00:04:45) Yeah. Maybe. Maybe.

(Joel Beasley at 00:04:47) Have you seen those Boston Dynamics robots walking around and pushing them over and stuff?

(Bruno at 00:04:52) The one that does the double flip? Yeah. I saw that.

(Joel Beasley at 00:04:55) Yeah. That scared me a little bit.

(Bruno at 00:04:58) Yeah. It is a bit scary. I think that's another thing that, I think it's one of the main challenges for AI. Right? I think a lot of people are scared of it.

(Joel Beasley at 00:05:08) Well yeah. And usually when people are scared, they tend to ignore it. And that's the scarier part. So how did you find yourself in this niche of AI?

(Bruno at 00:05:18) Sure. So I went to Cornell to study computer vision, artificial intelligence under Serge Belongie, who's an amazing professor there. And prior to that, I was doing machine learning, and I was looking at the way the world was moving. And I was like, computer vision is really evolving now. And I was like, look. There must be ways that we can evolve, use this kind of new technologies and apply that to the industry. So I thought, okay. Let me do my master's at Cornell, really study under someone that is an expert in this, and then go to the industry and apply this knowledge to certain aspects of the technology that are still underdeveloped in this sense of AI and stuff like that. And that's exactly what I did. So it was kind of like a curiosity, but ever since I was an undergrad, I always studied AI. Not AI, but more on the machine learning side. And when I came here to the U.S.—I'm not from the U.S., I'm actually from Brazil—so when I came to the U.S., I started studying more deep learning and things like that, and then started my own company, and here I am. So that's kind of like the short story.

(Joel Beasley at 00:06:29) Yeah. Did you do any programming before AI machine learning?

(Bruno at 00:06:32) Yeah. Sure. So, actually, my first job, I was a software engineer at JP Morgan back in Brazil. So it was more distributed systems. It wasn't related to AI. But as I said, I was doing a lot of research in AI. I started writing for a magazine called Java Magazine, and then I started writing about a cool open source framework for AI called Apache Mahout. Back at the time, it was pretty big. It ran on top of the Hadoop file system. So it was pretty big at the time, and I wrote this magazine about it, and they published my article. And I started getting deeper and deeper into it. Then I joined another startup in Brazil. I work a little bit on the machine learning there, and I started getting deeper and deeper into that. And then I finally decided, okay. I think it's time to transition to somewhere where I can have a deeper knowledge of how this works, really under the hood. And that's why I started my master's at Cornell to really understand that. But it was good. I mean, it's good that I have both sides. Right? I have both the software engineering side and also the research side, because it's always hard to put those two together and make it work really well.

(Joel Beasley at 00:07:46) Oh, absolutely. I was talking with my sister about that. She's a teacher, and she's been tuning in and listening to the show. And she asked me, she said, you know, Joel, I'm a teacher right now. I'm a science teacher, very education-oriented, great student. And she said, what's the future for me? Like, what could I learn? Should I go learn Python? Should it be programming? I said, no. I was like, you're so good at your research and understanding of concepts. I was like, just if you want to be involved in this world, in this future, from my perspective, I would go learn everything you can about how humans interact and then go join some AI team as sort of like a subject matter expert in anthropology or psychology or something like that.

(Bruno at 00:08:29) No. Yeah. Definitely. And I think that's one of the things that I think AI will most benefit on is actually drinking the knowledge from the experts. Because, I mean, a computer can only learn what you feed it. Right? So if you feed it bad data, it's gonna learn things all wrong. So you need to have this kind of the more accurate, the more valuable your data is, the better your machine learning and AI models will be. So I think having these experts in a certain domain that can help annotate data, create data that can then be fed to these models, that will definitely be the way that AI evolves even more as we go forward.

(Joel Beasley at 00:09:13) Yeah. I have a lot of ideas. Right? I'm a normal person. Normal people have lots of ideas. And I'm guarantee you do as well. You can't be in this world not be constantly thinking about the future. And one of the things I was recently thinking about was developing software that would assist you in developing different sets of training data for AIs to consume.

(Bruno at 00:09:39) Yeah. I mean, that sounds cool.

(Joel Beasley at 00:09:43) Yeah. No. I know. Because every time that there's a new industry, there's a standardization of data. But those standards of data and those formats of how the AI will consume the data, I don't see those out there yet. You know?

(Bruno at 00:09:58) It's kind of like a wild west. Right?

(Joel Beasley at 00:10:00) It is. Everyone's kind of doing their own thing. All the heuristics have their own little way of doing things. It's really—everyone's just kind of—it's like going through this puberty almost. Right? I'm watching—I have a little girl, my first child. She's four months old. And I'm watching her—she just became this week, she just became aware of her legs and her feet. And watching her figure out her feet, I'm like, how is she not a machine learning algorithm right now? Like, she's just trying things. Trial, selection, error, variation. She's just trying things and then storing them. And then, is that not what we are on the most basic level?

(Bruno at 00:10:38) Yeah. And I mean, definitely. And that also put us in perspective how amazing your brain is. Right? Because it's so hard to make a computer learn things, and you can see our brain—like you said, your daughter, she's learning a vast array of things just like that, and it's amazing.

(Joel Beasley at 00:10:59) Yeah. And it's just—it's interesting about how much processing power it actually takes for your brain to figure out how to start speaking, because, you know, we get frustrated when we go train a model, and it takes two or three hours to train a model. Right?

(Bruno at 00:11:12) Yeah.

(Joel Beasley at 00:11:13) But she's had, what, four months times all those days times twenty-four hours. I mean, she's had a couple thousand hours of training already, and she's just now learning to move her feet. Right? So it kind of—and then you correlate that with the amount of processing power that the brain has and all that good stuff. And it's just like, we're not that far off.

(Bruno at 00:11:34) Yeah.

(Joel Beasley at 00:11:34) You know? It's true.

(Bruno at 00:11:35) It's true.

(Joel Beasley at 00:11:36) Cool. What are your thoughts on voice?

(Bruno at 00:11:39) What do you mean by voice?

(Joel Beasley at 00:11:40) Like, the Alexas, the passive consumption of voice being able to say, hey, Alexa. Order me coffee, or hey, Alexa. You know, Amazon me a surfboard. Right? Like, what are your thoughts on how voice and AI and all that stuff? Because they're collecting a lot of data right now. They've got the whole world telling voice commands and learning a whole lot about people.

(Bruno at 00:12:01) Yeah. And, I mean, that's the thing that most people don't notice. There's a lot of products out there. You're paying for them, and they're actually collecting data about you to train machine learning models. I don't know if you ever got the Google Captcha that asks you, like, which of these images has a car or something like that.

(Joel Beasley at 00:12:20) Oh, yeah.

(Bruno at 00:12:21) Those are all training machine learning and AI models to say which pictures are of cars and not. So, I mean, yeah, definitely. I think it's a cool business. Right? You create something, you collect data, and then you start having more and more things to train and get better than your competition. So the bigger your market, the better your technology gets. It's a fun thing. I think voice definitely is something that will grow a lot. I think we are at a point that these things are actually can be used by anyone, but I think there's still a long road to get to understand things such as, is someone being ironic? What is the sentiment? How to better respond that in a sentimental level? I think those things will be something that we'll see in the next few years, because I think that will create more organic conversations with your Alexa or your Google Home or whatever. And you actually feel like you're talking to a person, not to a machine. Although that's a bit scary, but it's cool at the same time.

(Joel Beasley at 00:13:30) As long as they don't become self-aware, I think we're good.

(Bruno at 00:13:33) Yeah. That's true.

(Joel Beasley at 00:13:34) So how did you—I see that—how do you say the name of your company? Uru?

(Bruno at 00:13:39) Uru. Yeah.

(Joel Beasley at 00:13:40) Yeah. You want to tell me a little bit about that?

(Bruno at 00:13:43) Yeah. Sure. So, Uru started from—me and my co-founder, Matt—we started from the belief that the word of media, the word of media consumption is changing. And we believe that it's moving towards something that is more visual. Right? So people are more and more looking at videos and things like that. And due to that, we believe that advertisement needs to change and adapt to those kind of mediums. So it doesn't make sense anymore for you to just go into—because before you had TV, you knew all the programs that would come up. But now, when you have a live stream, someone's live streaming, you don't have previous knowledge of what is that person talking about? What is happening on the screen? When should I put my ads against this content and how to better put those ads? So I think our idea was that this belief that things need to change and things need to be informed by this visual content. And that's where we started. We actually started by thinking of, look, how can we drink in this video content and solve this problem, which is creating better advertisements, transforming visual content that is coming. And that's where we saw a good fit for AI machine learning computer vision to understand the video content, AR content, live video content, any kind of visual content, and then automatically parse that, understand what it's talking about, finding the best brands to be against it, and then immerse those brands inside the visual feed in an organic way. So doing that whole pipeline and making that seamless for advertisers is where we want to get to, and we believe that that's gonna solve a major pain point, which is this kind of how the brands approach people in this new kind of media that's coming up. So yeah.

(Joel Beasley at 00:15:33) Well, look, you're absolutely brilliant. So I really — that got me psyched before the call when I was looking at what it actually does because, first of all, it shows your diversity and your ability to take and work with technology, the programmer side of you, but also the human EQ side of you to understand what brands actually want, right, how to merge the two. And so, you know, if I'm going to bet on anyone, I'm betting on Bruno. Right? That's it. It's smart what you guys did, and I love it.

(Joel Beasley at 00:16:00) At the same time, right after I thought that, I thought, oh, oh, here we go. This is, uh, this is going to get acquired by, like, a Facebook or something. And I'll tell you why. I run ads on Facebook, right, in Facebook videos, and I can select an audience to show a video to and some traits. And they offer the option of me being on the, quote unquote, audience network where I run as, you know, as videos after, before content. But there's nowhere in there I can say that I want, uh, like, a specific type, to avoid a specific type. They're not — I don't think they're doing anything like that. At least they don't offer options to the advertisers. And if they see your technology as something that could be plucked up and acquired and then put in and bring value to their customers, that's, like, all day. So, so have you talked to Mark about this at all?

(Bruno at 00:16:51) No, no. We haven't talked to Mark yet. But I think you're speaking to a problem that actually a lot of advertisers see. And I can even tell you a bigger problem which has been seen on YouTube the last couple months, which is, like, sometimes your ad is going to appear against videos that are unsafe. So it can be videos talking about violence, can be videos, extremist videos and things like that. And that was a huge problem on YouTube. And the reason for that is basically because advertisers are basically advertising against audiences or very broad categories, but they don't know where their ads are showing up in the videos. And we believe that that's a problem, especially now that you're going to a place where, like, look, if I'm making, like, a live stream right now, you have to understand what I'm talking about before you put an ad against it. And there's no way for you to do it besides understanding what the visual content is. So the visual and audio as well. But so I think that I think there's a huge space there, and that's our belief that, like, this is a huge problem that needs to be solved.

(Joel Beasley at 00:17:58) I fully agree, and that is rare. So, like, nine times out of ten I hear the startup ideas or the new technology white space ideas, and I'm just like, okay, yeah, yeah, yeah. But this one, I was like — in my mind, like, clicked. Like, I just got it. So how far are you guys through funding and stuff like that?

(Bruno at 00:18:15) Sure. So we actually raised a pre-seed round back in, uh, November last year that was led by amazing investors here in New York City. November last year, I mean, 2016, not '17. Sorry, I'm still adjusting my calendar to 2018. But yeah, so right now, actually, we just started raising our actual seed round, or proper seed round, and we're talking to a bunch of investors right now to try to close it by February.

(Joel Beasley at 00:18:47) Oh, excellent. What are you working on in that round?

(Bruno at 00:18:50) So our pre-seed round was $800,000, and we're looking to raise $1,500,000 in this next round.

(Joel Beasley at 00:18:58) When's that going to close?

(Bruno at 00:19:00) The next one? Probably February.

(Joel Beasley at 00:19:02) That's interesting knowledge. So I dislike the mid-roll ads because it jolts me out of my train of thought. Like, I'm following, I'm following, and then boom. Something, like, completely unrelated. Like, I'll be watching — I'll give you an example. I like Tony Robbins. You like Tony Robbins? It's kind of hard not to like the guy. Right?

(Bruno at 00:19:24) Yeah. Yeah, he's good.

(Joel Beasley at 00:19:25) And sometimes when I take a shower in the morning, getting ready, eating breakfast, I like to play, you know, an hour-long episode of him talking just to, you know, get ready for the day. It's just passively consuming the content. And all of a sudden, boom, I get some 16-year-old kid who's like, "Would you like to better and improve your life?" And, like, I'm like, oh, come on, dude. Like, get out of my mid-roll. Like, stop that. I will never run a mid-roll ad. But I noticed that you guys were doing something with embedding objects into the video so it's not an interruption and a pulling out. And I was like, whoa. I know they do some product placements in movies, but that's really interesting. What are you guys doing there?

(Bruno at 00:20:07) Yeah. So that's — we totally agree with the understanding that, like, look, we understand that the way we advertise today doesn't resonate with a lot of people. Some people dislike them. And especially when you do this kind of mid-roll without picking the right time, we know that a lot of people get annoyed with it. So our idea is actually, it's basically, it's three parts. Right? So the first thing you have to do is understand what the video is about. The second part is actually you need to find the right match. So you have to match the video with the brand. And the third part, which is what you're speaking about, is the kind of activation. So how do you act once you find the right brand for the right video? How do you activate that content so it doesn't interrupt the experience of the viewers and create a good feeling for the brand? So the brand sits there and the viewers don't hate the brand. Like, just like you said, like, when you see those ads, you're like, oh man, what is this 20-year-old talking to me? You don't want your brand to have that — someone to have that feeling against your brand. So the activation is actually super important. And when we get to mediums like AR, VR, live video, having an activation format that is both native, but at the same time it's not disruptive and it's highly effective, will be a game changer. And our idea there was basically, like you said, like, look, product placement is one of those things that people notice. It's been around here for a while, but the main thing was it's not scalable. Right? When you think about product placement, you actually need to ship a product to someone. They have to put in their set, and then they have to shoot it. So what we're working on is basically on this activation part, basically creating a way for brands to insert products, insert their logos into that video itself as if it was product placement, but through digitally generated assets. Right? So imagine how cool it would be. You send your — you're Nike and you send your logo. And now in a video, every time there's a billboard, we put the Nike logo there on the billboard automatically. And that can be done on a video. It can be done per viewers. So a viewer might see on the billboard Nike, but another one might see Adidas and things like that. So we do think — yeah, go ahead.

(Joel Beasley at 00:22:31) I'm sorry. So, like, you're just blowing my mind right now. So I'm retargeting a group, and I'm Nike, and I'm retargeting this group, and that group's all seeing my Nike. But Under Armour is targeting a different group on that same billboard they're seeing. Also, it's individualized.

(Bruno at 00:22:45) Yeah. Wow. And that's kind of the stack that we believe that has to be built. Right? So you have to say, okay, this video is about sports and it's passing through a billboard. Now we find this billboard and say, okay, this billboard is a good place to put an ad. Next, we're going to find all the brands that are interested in sports and are interested in putting their ads against a billboard. And then the final step is basically taking their assets and inserting there. So that's one example that could happen. And then you can even up that one up and say, like, okay, now you can actually put a Coca-Cola can on top of the table. And if it's —

(Joel Beasley at 00:23:18) Oh, yeah.

(Bruno at 00:23:18) It's a Pepsi can or it's a beer brand, if it's someone 18, uh, 21 is watching it. So you can go on and on. And we believe that you have to actually have the three aspects, which is the understanding of videos, matching with the right brands, and then finally the activation to get the advertising really right for this next wave of digital medias that are coming. So yeah.

(Joel Beasley at 00:23:42) Yeah. So what you do is — I'm just brainstorming here. Right? So I'm making notes as you're talking. Right? Because you're getting me all excited here. So I imagine — I imagine I'm a — back-end Bruno's company. There's some sort of little search engine. I type in, uh, you know, kitchen scene and comedy or kitchen scene and family movie or something like that. And all of a sudden, all the family — movies of family kitchen scenes pop up in sort of the search engine, and I click on it, and I somehow, you know, find the countertop object and inject the, you know, product onto the countertop, and it shades it appropriately so it looks fairly native and things like that. And maybe this is some sort of awareness campaign. And then I go over and I'm hooked up with, like, let's say, the Netflixes or the Crackles or the Amazon Videos. I'm hooked up with these video providers. And what's happening is there's some sort of concept of me consuming all of their content on their network so I don't have to acquire the content licensing rights myself. My AI is consuming their content, indexing, logging, storing, all this great stuff. And then what happens is I have some sort of system that actually is, you know, regenerating the content with the product in it, and then it's all just this, like, beautiful seamless process. And you guys kind of sit in the middle and just make, like, crazy money.

(Bruno at 00:24:55) Yeah. That's definitely the goal where we want to get to. Of course, it's step by step. So we don't have all those parts yet built out, but we're walking towards that. That's exactly it.

(Joel Beasley at 00:25:05) Yeah. Well, yeah, that's just kind of like where I see it. Like, that's, like, the far progression of it is when you're sitting back and you have that technology built and you have those relationships there and you've solved all the problems. That's like the end result. Right? The fun part is what you're going through right now. Like, how do we survive? How do we get revenue in the meantime? How do we find people that believe what we believe, that this is the future? And then how do we do all that while building the technology so it's actually usable and that the value is brought to the consumer?

(Bruno at 00:25:36) Yeah. No, exactly. And that has to be done step by step. Right? Like, when you look at big companies, like, let's say, like, SpaceX, like, their final goal is basically interplanetary colonization. Right? But, I mean, for you to get there, there are steps you have to — to be alive. You have to keep your company alive. You have to build step by step revenue and things like that so you can get there. So we also understand that we cannot just aim for the — we have to keep the end goal in line, and we have to walk towards it, but there are milestones that we have to hit in the meanwhile. And I think, yeah, like you said, that's the fun part. It's basically figuring out those milestones, working towards them. Once one is complete, walking towards the next one. And the cool thing is, like, when you look from, uh, when you look from a bigger perspective, you can see that you're actually walking towards your goal and you're getting closer and closer to this future, which for me sounds amazing.

(Joel Beasley at 00:26:34) That's the journey. I love the journey.

(Bruno at 00:26:35) Yeah. The journey is amazing.

(Joel Beasley at 00:26:37) I was talking to my wife about this last night. She has recently started refinishing furniture for fun. Right? Because we have a baby, so she has to be at home with the baby. And so she's got, you know, six hours of downtime while the baby's napping here and there. And so she started refinishing some furniture, and she's really gotten into it. It's really, really good. And I asked her last night at dinner, I said, hey, all right, imagine we're in the future and you could pay $150 and then boom, zap. Instantly in your brain, you're a woodworking expert, so you can go do whatever you want. You could go do anything you wanted with woodworking, and you know all the techniques. And I go, would you do it? I go, no health consequences, nothing. Would you do it? And she looked at me and she said, no. She goes, I like the journey. She goes, I like learning. I like figuring out the techniques. I like the moments. And I'm like, oh, I'm glad I married you.

(Bruno at 00:27:28) Right? No, yeah, you're totally right. The journey is the fun part.

(Joel Beasley at 00:27:33) Well, that's also — we kept talking. I said, you know what? You're right. Because, I don't know, after 15 years of programming 60 hours a week and knowing how to build anything I want to possibly build. Right? And I'm just like, okay, what next? Right?

(Bruno at 00:27:50) Yeah.

(Joel Beasley at 00:27:51) Because once you've mastered something, it's kind of just like, all right, what's the next — what's the next step? What's new? So, like, Elon Musk's life, that's not boring. Yeah. He's always mastering something new.

(Bruno at 00:28:03) Yeah. Elon Musk is — yeah, that's a cool thing. Also, like, not talking about Elon Musk, but just being, like, an entrepreneur and having your company, it's a huge learning experience that you learn so much and so much outside of your domain that's super cool.

(Joel Beasley at 00:28:21) Absolutely. So I have here on the notes that some topics you were interested in talking about were rewriting systems and poor code.

(Bruno at 00:28:29) Yeah.

(Joel Beasley at 00:28:30) You've come across some brownfield projects then?

(Bruno at 00:28:34) Uh, no. I think it's interesting. I was actually reading one of your posts about the spaghetti code MVP. Right? Yeah. Yeah. So I think it's interesting how, like, how people — how can I put this? So I think people still have to — I always had this belief in my mind, which is like this. Look, if you're building a prototype, it's one thing. But if you're building an actual product, doesn't matter if it's an MVP, it has to work well, and it has to be something that you can, at some point, scale up. Even if you have to rewrite some parts, it has to be something that can be refactored easily. Right? It cannot be, like, a spaghetti code or things like that. And I think that, um, there's a lot of — you're right. There's a lot of people nowadays that just, like, oh, I'm just going to write whatever just to put it into production, and it's a little worse.

(Joel Beasley at 00:29:32) Oh, 100%. Because I'm assuming you read the comments. That's what you're talking about. Right?

(Bruno at 00:29:38) Yeah. Yeah.

(Joel Beasley at 00:29:39) It was really interesting how — and I meant — so that piece of content, that was like a rough sketch of content for the book. Right? Because I put all the different articles out as different chapters to kind of get a rough sketch to see what people responded to and to kind of improve it before I published the book. So after seeing all that feedback back and forth, I went and, you know, probably doubled the size of the chapter to address that about, you know, you saw people wanting to use it to make an excuse. I'm going to make an excuse — here's the excuse. So the reason why I'm not going to write good code is because it's a prototype or an MVP. And I look back at that, and I say, no, no, no. There's only two reasons why you don't write good code. One, you don't know how to do it, or two, you know how to write good code and you're choosing not to. And both of those suck.

(Bruno at 00:30:31) That's true.

(Joel Beasley at 00:30:32) Yeah. Yeah. Those are the two reasons. So what are you guys doing at — so you did some web programming. You did some other — you did some Java programming at the investment company, and now you're doing some machine learning stuff.

(Joel Beasley at 00:30:46) In my world, I'm using a lot of continuous integration type technologies. And what are you guys using over there? Like, how do you deploy the machine learning? Do you do any of that test or anything like that?

(Bruno at 00:30:57) Yeah. Of course. So we have our own hosted Jenkins. I don't know. I just like to host things because it gives me more control over any kind of custom stuff that we have to do.

(Bruno at 00:31:09) And we just deploy everything using Jenkins. We have started exploring using Kubernetes for our container orchestration. But yeah, we also use a lot of serverless, so not everything is running on containers. So yeah. But most of our CI is running through Jenkins.

(Bruno at 00:31:30) And I think from day one, we always had unit tests and integration tests running. At least from day one that our product was actually launched. So yeah, we always make sure that tests are running every time there's a commit, test runs, and things like that. I think that's very important.

(Joel Beasley at 00:31:47) I agree. That's how I have all of my products set up and all the monitoring and all the systems set up so that we have smooth production deployments. Right?

(Bruno at 00:31:55) Yeah.

(Joel Beasley at 00:31:56) So you have experience in something that I do not, and I'm curious to know how it affected you and what it was like. What was it like going through an incubator?

(Bruno at 00:32:07) I mean, all the incubators we've been at have been extremely helpful and extremely valuable for us. The first reason for that is because all the incubators we went through didn't take any equity. So it was always free help, so that's always good. But I think besides that, there is definitely things that an incubator can kind of fast forward you towards. So incubators, normally, they have a lot of resources that you as a startup either don't have the money or don't have the time to pursue.

(Bruno at 00:32:39) So for instance, I think all the incubators we've been at have provided us introductions to customers, introductions to venture capitalists or even workspace, which is something when you're early stage is something that you probably don't want to pay for. So an incubator has always helped on that. I think the only downside that I see from incubators, depending on the stage your startup is at, is that sometimes it's a time commitment that you have to have to go to the events, follow the kind of track they create and things like that. But I guess I mean, when you're early, those things also help you learn new things. So I think it depends.

(Bruno at 00:33:24) Each startup has their own kind of style and culture. So I wouldn't say this is for everyone, but for us, it has helped us a lot.

(Joel Beasley at 00:33:33) Fantastic. How big is your team currently?

(Bruno at 00:33:35) So right now, we are five. So we're four full-timers here in New York, and we have one working remotely for us from Argentina. But we're planning to grow that to probably eight or nine this year.

(Joel Beasley at 00:33:49) Where are you in New York?

(Bruno at 00:33:51) We are at this incubator, or it's called an accelerator, called Grand Central Tech, which is right next to Grand Central.

(Joel Beasley at 00:33:59) Oh, well, appropriately named then. Right?

(Bruno at 00:34:02) Yeah. It's a good name.

(Joel Beasley at 00:34:05) Yeah. I'm going to be out there before March, so I'll definitely stop by and be like, what up?

(Bruno at 00:34:10) Yeah. Definitely. Come. Yeah. There's free coffee, so that's always good.

(Joel Beasley at 00:34:16) Do you guys use Slack? You guys fans of Slack?

(Bruno at 00:34:18) Yeah. We're fans of Slack.

(Joel Beasley at 00:34:20) Dude, how can you not be, man? I love that thing.

(Bruno at 00:34:23) Everyone uses Slack. So it's a...

(Joel Beasley at 00:34:25) Everyone uses Slack. Yeah. Is that how you're primarily communicating?

(Bruno at 00:34:29) Yeah. Primarily Slack. That's kind of at least internally. Right? So yeah.

(Joel Beasley at 00:34:34) Right. That's what I use it for. Like, Jake and my producers and stuff, we all have Slack open on our computers so we can, you know, get messages quickly back and forth and share.

(Bruno at 00:34:44) Yeah. No. It's pretty good.

(Joel Beasley at 00:34:46) So what sort of challenges are you facing with those five people as you're kind of growing and you have the CTO co-founder role?

(Bruno at 00:34:54) Yeah. I mean, for me, I think one of the things that I think it's challenging, but it's a lot of fun is this kind of transition. Right? Because when we started, me and my co-founder, basically, I took charge of engineering, and he took charge of the business aspects. And initially, since it was just me and him, basically, what I did was just code.

(Bruno at 00:35:16) And then, eventually, we start hiring people, and all of our employees are engineers. So I started transitioning from this kind of I'm just coding to being more a manager and helping them. And it's kind of a — I mean, I have taken project leads and things like that, but I've never been actually a CTO or a manager before. So seeing how that transition happens and how your priorities are totally changed. Right?

(Bruno at 00:35:44) Like, before, when you're a software engineer, it's just like, okay, I have to finish this amount of issues or Jiras or close this amount of bugs. And now it's totally different. Now you have to make sure things are running smoothly. You have to make sure that everyone's happy. You have to motivate everyone.

(Bruno at 00:35:59) You have to work on their — think about their careers and how you can motivate them to be better and improve them towards where they want to get. You have to think about reaching the business goals, and it's a lot of thinking, a lot of strategizing and prioritizing things and making sure that at the same time, you're building the right technology, you're balancing technical debt with new features and things like that. So it's been a fun ride. I think it's really, really interesting.

(Joel Beasley at 00:36:29) Oh, absolutely. You know, I got a message from this CTO named Arthur Blake. And he was asking me about this. He's in the same spot you're in right now.

(Bruno at 00:36:40) Mm-hmm.

(Joel Beasley at 00:36:41) And he's transitioning and growing. And he was wanting to know, you know, how do you motivate the programmers and kind of get them to work well, you know, especially in distributed environments?

(Bruno at 00:36:52) Yeah. I think the first thing, and this applies not just programmers, but anyone: you need to have a passion. Right? You need to have a reason why you're doing your startup, and it cannot be just money. Right? I think there is a saying that says no one actually works for money. They actually work for something they believe in. So they have to believe in you as a leader. They have to believe in the path you're doing for your startup.

(Bruno at 00:37:17) So I think that's the foundation level of you need to explain to them, like, look, this is the mission. This is why we're going to be a billion dollar company a few years from now, and you're going to be a major part of this. You're going to have a huge impact in this. So I think that's a base level you have to set with everyone.

(Bruno at 00:37:35) But I think the next level is basically you listen to them, understand what they want to do with their careers, and try your best while they're working for you to also move them and improve their careers so they can get to that point. So we have people in our team that really like to publish papers or speak at conferences, and we try our best to, when time enables it, make sure they do those kind of things and they're happy with it. And they feel they're important and they feel that they contribute. Because in the end, if we don't have anyone working for us, we basically will just fail. So the people that work for you are the most important ones.

(Bruno at 00:38:17) So it's really important to motivate them in the right way.

(Joel Beasley at 00:38:21) Right. So it first starts with having the right people.

(Bruno at 00:38:25) Yes.

(Joel Beasley at 00:38:26) Right? Because if you don't have the right people, then you're doomed from the get-go. You know?

(Bruno at 00:38:30) Yeah.

(Joel Beasley at 00:38:31) And then after you have the right people, if you have the quote-unquote perfect people, right, then it's about building and keeping the momentum going.

(Bruno at 00:38:40) Yeah. Exactly.

(Joel Beasley at 00:38:41) Yeah. So you mentioned it. I don't know if you were referencing the article that I wrote, but I wrote one called People Don't Work for Money. They Work for Momentum.

(Bruno at 00:38:49) Yeah. I think so. I think that's the one I read. Yeah.

(Joel Beasley at 00:38:52) Yeah. Because it's true. Like, if you come into work, the money is great when you're getting the job. Right? It's like, oh, I can live and I can afford my life? That's exciting. You know? Usually, often when it's more than what you were currently making. Right? So you get excited about the money.

(Joel Beasley at 00:39:07) But I'll tell you what. You go into anyone who's been working there through three or four paychecks, and it's off their mind. It's just something that happens. And now it's about, you know, can you structure your teams in a way that where it's rewarding for them? And can you keep that energy up? And do you have that emotional intelligence to be able to tell when the energy is low? And then do you have the skills to bring it back up?

(Bruno at 00:39:32) Yeah. Exactly. And especially software engineers, I mean, the market is so heated up that if someone wants to leave and get another job, they just can and probably get paid more. So I think salary is becoming less and less important and things such as making sure that you get people that believe in the mission that you're trying to solve and are excited about it. And making sure they're working things that they can see the impact is definitely super important.

(Joel Beasley at 00:40:00) Absolutely. And then we had a question from Lennart, and he wants to know about how do you choose when and where to test throughout the different product cycle? Do you test right from the beginning everything, or do you kind of deploy your code and then make sure it's working and then put tests in place to monitor that it's working? Like, when do you — I know it's a hard question to answer. But do you have just some general nuggets of information for Lennart about when you go to test? Like, what triggers your mind?

(Bruno at 00:40:29) Sure. So I think the first thing is there are different kinds of tests. Right? So I'm from the belief that any development needs to have unit tests, and they have to be done as soon as you're developing your code. So later on, if you want to refactor it, if you want to rewrite your code, you have those unit tests to guide you.

(Bruno at 00:40:50) And they also make it easier for new developers to come and understand what the code is doing. So I think unit tests should happen from the get-go. So as soon as you start developing, make sure you have unit tests for the things that make sense. And also, as you progress, you're going to see that those unit tests are going to become more and more important. Now when you're talking about more of the integration testing and actually having a test case that simulates a user using your product and things like that, I think that's definitely a tricky subject.

(Bruno at 00:41:24) And the reason that I say it's a little tricky is because we went through a phase where we tried some products, and we weren't quite sure if those products would have a market for it. So there were more like prototypes rather than products. So at that point in time, since no one was using that in production, there was no one using it when we were demoing to customers. Didn't make sense quite to spend a lot of time working on tests just because we knew that those things could, you know, be totally different or they could just be gone. So I think if your system is at a point where you feel comfortable into saying, like, okay.

(Bruno at 00:42:06) This is kind of — I think people are going to start testing this. People are going to start using this. Definitely write test code for the most important aspects of it. But now if you're in the other spectrum where you're still trying things and you don't know if this is the final thing, maybe you should just make sure things are working. And then write minimal test code just to make sure that when you deploy things, you make sure that nothing's broken.

(Bruno at 00:42:32) But I wouldn't worry that much about full length of spectrum of test codes. But that's just my opinion.

(Joel Beasley at 00:42:39) Oh, no. I fully agree with you. I love your opinion. So the way I look at it is, I think, exactly the way you — I believe unit tests should be written as you write code. It shouldn't be — you shouldn't separate writing code and writing unit tests. Right? It should be something that happens, and that's simply because how else are you testing the output? Like, what else are you doing? Like, you hitting save and going into the console and reloading it every time? Like, you know, I have automated test suite set up, and then I write the unit test, and I see the output, and I pass it, and I pass it.

(Joel Beasley at 00:43:09) And then every once in a while, I'll do a little refactoring if I think I might want to try something new. You know? Does it still work if I do this? No? Okay. I don't want to figure that out. I don't want to figure out why it doesn't work. I just — here's how it works. Let's move on to the next task. They also force you to think about it logically when you start writing the actual text for the test, when you're describing the test. And it really opens up the gaps of where you could have logic issues. Right? And you don't necessarily have to handle all the edge cases, but at least you can be aware of them and kind of, you know, make a note of it and come back to it later.

(Joel Beasley at 00:43:42) If it's not too critical. And then, again, right when you roll into integration test, yeah, if you start binding it to the interface elements too soon, things are likely to change, or the expected results, you may just have — you know, at the beginning of any product, you're going to have a lot of changes.

(Bruno at 00:43:55) Yeah.

(Joel Beasley at 00:43:56) You're going to be talking to the customers. You're going to be making sure you're building the product that brings value to them. And even if you're not binding to the interface, even if you're just binding to the result, you know, that result may become unnecessary and removed, and then you're cleaning up tests, and it can just be a little messy. So the way I like to do it is I write the unit tests as I write code. Integration tests when a section of the application feels like it's, you know, at a good mature point, I'll put some basic tests in there to make sure I get some — and they won't be super detailed.

(Joel Beasley at 00:44:27) I won't test a lot of different things. I'll just throw some very light tests in there for the most mission-critical parts just so I get the little ping before in CircleCI or Jenkins or whatever.

(Bruno at 00:44:39) Yeah. Exactly. And I think that's where we started as well. It was just our integration tests were more of a way for us to make sure our new commits weren't breaking everything rather than testing the full application. And then as we move towards something more stable, we start writing the tests to make sure every single scenario is covered and everything's working.

(Bruno at 00:45:01) So yeah.

(Joel Beasley at 00:45:02) Absolutely. Yeah. No. I think you answered Lennart and Arthur's question pretty well. The other thing, speaking of — has that — have you had — look. We've all had trouble. Like, I was super quiet, and now I host a show. Right? So I kind of learned that skill of being quiet. Did you start out quiet, or were you always fairly outgoing?

(Bruno at 00:45:24) I've always been quiet. I still think myself as a quiet person right now. So...

(Joel Beasley at 00:45:29) Oh, well, you sound awesome.

(Bruno at 00:45:31) Okay. Thank you. But yeah, I'm a very shy person — I was a very shy person. I still think I am, but I'm definitely sure that I have improved from that.

(Bruno at 00:45:41) And I think that's part of being a CTO and being a manager position. You have to also develop your interpersonal skills and be able to communicate clearly to people. So yeah.

(Joel Beasley at 00:45:54) It was definitely counterintuitive because in life, it's the unspoken concept that if you're loud, you're dumb.

(Bruno at 00:46:01) Yeah.

(Joel Beasley at 00:46:02) Right? Like, you associate loud and dumb and quiet and smart. It's, like, universally accepted across language barriers and everything, all cultures. And so it's real interesting to find. It makes you not want to be loud because you don't want to be associated with that. So that's part one.

(Joel Beasley at 00:46:17) And part two, it's very difficult for me to differentiate the people. There are people who are loud who are smart, but they're just the exception, not the rule. And so it's hard for me to sift through and find those people to follow. Like, I like Simon Sinek. He is loud and smart. Have you come across him?

(Bruno at 00:46:36) I haven't come across him.

(Joel Beasley at 00:46:38) Okay. So he talks about—he's not technology per se. He's got the second or third most watched TED Talk.

(Bruno at 00:46:46) Mhmm.

(Joel Beasley at 00:46:47) You like TED Talks?

(Bruno at 00:46:48) Yeah. Of course.

(Joel Beasley at 00:46:49) Okay. So he's got this one, second or third most popular TED Talk of all time. It's called "Start with Why." And I promise you, Bruno, if you watch that, you and your cofounder will have so much to talk about, about how you present your brand.

(Joel Beasley at 00:47:02) It'll blow your mind, and it's, like, thirty minutes of your time, and it changed my life.

(Bruno at 00:47:06) I'll definitely watch it.

(Joel Beasley at 00:47:07) Yeah. And I mean, I'm not surprised that it became such a popular talk. So how did you meet Bill? Bill is your cofounder in this project. How did you meet him?

(Bruno at 00:47:19) We met at Cornell, actually. We're doing the same computer science master's. And we just met, and we actually started working on some different projects. We had similar interest, and I think we both share the same passion for working on things and being really dedicated to things and making sure things were really good when delivered. And I think we just, like, that was kind of like, "Okay. This person is really dedicated. It puts a lot of effort on these things."

(Bruno at 00:47:42) And I think we just, like, that. That was kind of like, "Okay. We kind of like, okay. This person is really dedicated. It puts a lot of effort on these things."

(Bruno at 00:47:50) And then we start working on this project, which eventually turned out to be our startup, which started as kind of a research project in one of the classes at Cornell and grew and grew and grew to a point where we actually spun out as a company. So it was a fun period of our lives.

(Joel Beasley at 00:48:09) So you guys are both attracted to each other because you both have a passion for your craft. You care. You're, like, a skilled craftsman at what you do, and that was, like, rare.

(Bruno at 00:48:20) Yeah. And I think also the kind of—I think work ethics was something that we really like about each other. I know it's a term that it's wrongly used a lot of times, but just, like—I mean, everyone has been through college or school, and sometimes you end up with teammates that don't do a lot of work or don't care that much about it.

(Joel Beasley at 00:48:44) Most of the time.

(Bruno at 00:48:45) Most of, yeah. And I think when every project that me and Bill worked together, we both just, like, went the extra mile and always tried to deliver something that was—even if we had to spend, like, the whole night at the university just working on it, we wouldn't care. We would try to do our best. And I think that's how a startup is. Right?

(Bruno at 00:49:07) Like, you're going to spend a lot of nights working, coding, answering emails, and doing a lot of stuff. You're not going to have a personal life, a lot of weekends, and things like that, and you just have to do it because you know you want to deliver the best you can. So I think that was kind of the thing that matched us together to do this company.

(Joel Beasley at 00:49:27) Yeah. And, you know, I think about this a lot. Right? Because people, they say, "Oh, he's working all the time. He's a work addict. He's a workaholic. He's always doing that, that, that." And then you turn around and you ask them if they love their job, and it's no. It's like they don't love what they're doing. So they almost feel bad for me or think of it negatively.

(Joel Beasley at 00:49:49) And I'm like, look. You call it work because it generates money or something, but that's not why I'm doing it. Like, I'm doing it because this is what I love to do. I'm very, very satisfied. My work-life balance is working a lot, which actually makes my family moments more rare, which actually makes them more enjoyable for me.

(Joel Beasley at 00:50:12) You know? Like, I don't like to just hang around.

(Bruno at 00:50:16) Yeah.

(Joel Beasley at 00:50:16) You know? I'm not the monkey that hangs on the tree and eats the banana. I'm the monkey that runs through the forest at life speed, swinging from branches and is like, "Oh! Oh! Uh-uh." You know? Like, I want to go and see what's on the other side of the forest.

(Joel Beasley at 00:50:27) And then when I get out there and I see a mountain, I want to go and see what's on the other side of that mountain. You know?

(Bruno at 00:50:32) And—

(Joel Beasley at 00:50:32) Then, eventually, like Musk, I want to go jump in a rocket ship and see what's on that other planet.

(Bruno at 00:50:38) Yeah. I mean, that's the way to do it.

(Joel Beasley at 00:50:41) Yeah. So the fact that you guys were able to identify—because, you know, the business—and even though you both have passion for your craft, there's nothing that will convince me in the world that there's not things that you have to work through as a relationship because a cofounder is just that. It's a relationship, and there's ups and there's downs, and there's highs and there's lows. So that's also a skill that is learned when you actually work with a cofounder. Is this your first cofounder?

(Bruno at 00:51:07) This is my first cofounder. Yes.

(Joel Beasley at 00:51:09) Yeah. So you're figuring this out right now?

(Bruno at 00:51:12) Yeah. No, it's definitely an interesting—I think we definitely had our lows and our highs, and I think we learn to respect each other's opinion and learn—we basically start to learn how to communicate to each other so there's, even though there's conflict, it's not an emotional conflict. Right? You want to keep things the less emotional as possible and irrational and think through things in a rational sense and figure out the best solution. So I mean, yeah, definitely, for sure, it's something that we're constantly learning, but I think we evolved a lot from where we started.

(Joel Beasley at 00:51:48) Oh, of course. Because it's all about that balance.

(Bruno at 00:51:51) Right? Yeah. Exactly.

(Joel Beasley at 00:51:53) Fantastic. Alright. So I'm going to wrap it up with this question. Okay?

(Bruno at 00:51:57) Yeah.

(Joel Beasley at 00:51:58) Elon Musk calls you up. He's like, "Bruno." And you're like, "Elon, what's up?" You fly out to him, see him, hang out. He's got a time machine waiting for you.

(Joel Beasley at 00:52:08) He says, "This time machine goes ten years into your past, and you get to talk to yourself for a minute and give yourself, your past self, some advice. No consequences." What would you tell your past self?

(Bruno at 00:52:20) Let me think. Start a company earlier, I guess.

(Joel Beasley at 00:52:25) Start this company earlier?

(Bruno at 00:52:28) Not exactly this company, but any company. I guess, like, when I was younger, I just had many good ideas for companies, and I always, like, tell, like, "Oh, I don't have the skills to start this. I don't have the skills to start this." And I think one thing that you learn is that if you just wait to have the right skills to start anything, you're probably not going to do a lot of stuff in your life because some things you just learn doing, and that kind of pressure pushes you towards being a better person. So I'll just say, like, "Look, just try it, and if you fail, it's okay. You're going to learn much more." But, yeah, that would be my advice.

(Joel Beasley at 00:53:07) Dude, I couldn't give better advice than that. What a fantastic way to wrap that up. That is—I 100% agree. You just got to do because that ability to go and try and fail and learn—and that is learning. If you're just reading and hypothesizing and thinking and you're not doing, you're literally going nowhere.

(Bruno at 00:53:25) Yeah. Exactly. And I think there's a lot of people that think like that, "Oh, I don't have the right skills." And, I mean, you never know. You never know. Like, maybe the difference between a person that thinks they don't have the right skill and the person that is doing their job they wanted to do is just that the other person has a higher confidence in themselves. So I think you have to try.

(Joel Beasley at 00:53:49) Well, it's like walking. Okay? You know, you know you're going to fall. Like, you're sitting, but you want the ability to walk. So what do you do?

(Joel Beasley at 00:53:58) You stand up. You walk. You fall. You fall. And then, eventually, you don't.

(Joel Beasley at 00:54:02) But as long as you sit there laying down and think, "I want to stand. I need to learn how to stand. I'm going to read how to stand. I'm going to plan. I'm going to draw up maps and schematics on how to stand." You're never going to walk.

(Bruno at 00:54:13) Yeah. It's true.

(Joel Beasley at 00:54:14) Got to fall. Awesome. This has been, like, one of my favorite conversations ever. Bruno, I'm actually—I want to, when I'm out in New York City later this year, I'm going to stop by and give you a high five or something.

(Bruno at 00:54:27) Cool. Definitely. Let's meet up.

(Joel Beasley at 00:54:34) 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.

(Joel Beasley at 00:54:41) I appreciate it. You guys are the absolute best.