Monitor performance issues & errors in your code

#202: Building a software business Transcript

Recorded on Wednesday, Jan 30, 2019.

00:00 Michael Kennedy: One core question around open source is how do you fund it? Well, there's always that PayPal donate button, but that's been a tremendous failure for many projects. Often the go-to answer is consulting. But what if you don't want to trade time for money? You could take things up a notch and change the equation, and exchange value for money. That's what Ines Montani and her co-founder did when they started explosion.ai with spaCy as a foundation. Listen to her story about building a sustainable software business on open source and Python. This is Talk Python to Me, Episode 202, recorded January 30th, 2019. Welcome to Talk Python to Me, a weekly podcast on Python, the language, the libraries, the ecosystem and the personalities. This is your host, Michael Kennedy. Follow me on Twitter where I'm @MKennedy, keep up with the show and listen to past episodes at talkpython.fm and follow the show on Twitter via @talkpython. Ines, welcome to Talk Python.

01:04 Ines Montani: Yeah, it's really nice to be here, thanks.

01:06 Michael Kennedy: It's really excellent to have you here. You gave such an excellent talk at EuroPython in 2018, and I just wanted to have you on and talk about that and share some of those ideas. I think it's going to be a lot of fun.

01:17 Ines Montani: Yeah, I think so too.

01:18 Michael Kennedy: For sure. Before we dig into those, let's just get started with your background. How'd you get into programming in Python?

01:23 Ines Montani: It's actually kind of interesting because I would say I don't have the typical programming background. So I started..,

01:27 Michael Kennedy: You didn't write games at five years old?

01:30 Ines Montani: No, but I started making websites when I was like 11, when we got our first computer. So I first started...

01:33 Michael Kennedy: Oh that's awesome.

01:34 Ines Montani: in Microsoft Word. It was back in the day when you could just look at the website source and copy it and so I would do that and always build websites. I did then decide, when I was older, that I wouldn't want to do this professionally. For some reason it never appealed to me. So I worked in media, I worked in marketing and then eventually ended back at programming when I realized that I could combine all the things I liked into a job. Because I also did linguistics in uni. So, I was always interested in language.

02:01 Michael Kennedy: That's a really interesting background, You don't think of that as a normal path, like marketing into software development, and especially something like data science, where it's really deep. But I get that it ties more into your linguistics side of things, right?

02:14 Ines Montani: Yeah, and spaCy especially. When I started working on spaCy, I realized that, wow, I can really combine what I like, for example front-end development with a bit more programming other types of stuff with language and really using computers to understand language. That was kind of like the perfect combination of stuff.

02:30 Michael Kennedy: Yeah, it's cool. Was that kind of how you got into Python, because the NLP side of things, or where was Python in the story?

02:36 Ines Montani: Yes, mostly, yup.

02:36 Michael Kennedy: Nice. Today, you're running a business of your own doing some really cool stuff, which we're going to dig into. Maybe just tell people quickly about what you do day-to-day.

02:46 Ines Montani: Our company's called Explosion AI and we develop a lot of open source software. One of those projects is spaCy, which is a popular library for NLP in Python. We also publish other products and other tools for software developers. We're a developer tools company.

03:03 Michael Kennedy: It really sounds like such an interesting project and I love how you have spaCy and you kind of built a proper business on top of it, not just throw like a PayPal donate button on there and hope that that does something, but legitimately building something on top of this open source stuff that you all have going on, which is great.

03:22 Ines Montani: We just needed to spend some time thinking about how we could best do this. It combines all the things we like doing. It's really nice to have an open source community to put our stuff out there. So, yeah, we're very happy with the way we've made this work.

03:33 Michael Kennedy: It seems like it's working out really well. Let's dig into this idea of building a software business. It's something that I'm very passionate about, something that I've done. I have my own business and work for myself as well. I think one of the things that really appealed to me about your talk was, it kind of pushed back against some of these startup San Francisco, high-growth, VC-type mindsets that are fine for some things. But, it seems like a lot of folks see that and go, oh, well if Instagram raised all this money and was successful, I'm going to have to raise all this money for my new text editor, or something silly that doesn't fit that mold, right?

04:13 Ines Montani: Yeah. No, that's definitely, that's something we see a lot. Of course I understand why this narrative is so prominent, because it's often pushed by people who like that narrative because it makes the money. Also I'm not saying it's the wrong narrative for everything, but definitely, I think are lots of businesses that also work very well if they're not following the typical startup playbook.

04:32 Michael Kennedy: Yeah, absolutely. I think it was partly popular because it's a little bit like winning the lottery.

04:37 Ines Montani: People like these winner-takes-all scenarios. People like imagining that type of success and going after that. So I think it does play to some of the instincts that we all have, probably, yeah.

04:48 Michael Kennedy: Yeah, probably. Alright, we'll get into more detail about this. But you talk about selling what you currently have versus selling potential. This is going to be great if we just had a hundred million dollars in VC money and we could get everybody to use it. Think how amazing that would be. I feel like that's also a little bit, I don't know. I feel like so many of those things are a little bit shallow. I don't know, that's not quite the right word. But it's like they're not really creating meaningful things for people. They're just trying to get a bunch of people to use something silly so that then somehow they can skim a bit of money off of it.

05:25 Ines Montani: Well you're selling the potential to make future money because the idea is, of course, if you take a hundred million in funding, you need to deliver a lot more than that, so you're working towards that future way that you're going to make 100 billion, rather than the present, where you could be making 200 million, which is still a pretty, s business with 200 million in profit, I would call a very successful business.

05:48 Michael Kennedy: Unqualified success. But in this venture, sort of win-the-lottery thing I told, that actually would be kind of a failure. Just doing double what you did in raising your money, that would actually be probably not enough to make the investors happy. They look for more than that generally. It's better than failing, but still.

06:05 Ines Montani: Yeah, its true.

06:05 Michael Kennedy: Yeah, so let's talk about your journey and your projects, your company, Explosion AI. So I guess, maybe just set the background. Like, how does Explosion AI and spaCy, and we'll talk about some of the products you have, how does that whole history fit together and whatnot?

06:20 Ines Montani: My co-founder, Matt, he used to work in academia. So he was a researcher and he was working on NLP. He, very early on, saw that all this is getting, this is finally getting useful. We're finally getting to a point where this can actually be used in commercial projects and help companies. So he left academia and started writing spaCy. He was in Australia. He moved to Berlin. He took some time off and focused on the open source project. And that's kind of the early beginnings. We met here in Berlin and we started working together very quickly because he always had ideas for like visualizing the software, making it more accessible, making it more usable. That's also something I was very interested in. So, we started working on spaCy. This worked very well so, we founded Explosion AI together. Of course, we had to think about, well, how do we make money, how do we fund what we're doing here? And so, for the first, I would say, six months, eight months maybe, we did consulting. There were lots of companies who were interested in that, so we did have the advantage that we had spaCy. People liked our work, wanted to implement this better, and...

07:23 Michael Kennedy: That's cool. That seems like level one of this sort of, how do I make my open source project or my open source success or passion be my job? I guess level zero is, create a successful thing that is open source. You got to start with that. And then, level one is, I'll do consulting, high-end consulting, as the creator of this project. But you all were looking a little bit beyond that, which I thought was pretty cool. You really like this phrase you used in your presentation. You said, "To sort of get the project going, we raised a client round." and which meant, you did consulting and you made money to fill in the gaps until enough momentum was there and the products were there and stuff, right?

08:03 Ines Montani: Yeah, it also helped us get all these insights that otherwise, even venture-backed startups have to do this too. You have to talk to your users or potential users, and find out what's working, what are their problems, what are you really going to solve? That kind of came almost for free with the consulting, because we actually worked with users who were already using our open source projects. We saw what they were doing. We really also prioritized companies who already had something running that they wanted to improve. So yeah, we got to see, okay, what's working for them, what isn't, what are the main pain points? And one of them was, really, creating training data for machine learning models, which is what then really convinced us that this idea for Prodigy, our first product, was definitely something we should invest more into and launch as soon as possible because that's really something that people wanted.

08:48 Michael Kennedy: Absolutely. That seems like a perfect follow-on. We'll talk about that in just a second. But I think one of the really important things that maybe, I would guess you gained through that whole experience is, you not just learned what people want and need, but you also made connections with these big companies as you consulted for them. They probably trusted you. So you could say, hey, we have this thing that's going to help you if you all want to get it. It probably, it's almost like building an audience of folks who will be your customers before you're trying to make them your customer. What do you think?

09:21 Ines Montani: Yeah, that's true. I think that also happens with the open source project. Because, if you want to convince people to give you money, you need to show them why they should give you money and not some other guy. So of course the open source work can function in that way. People see your software. People can see that we can build useful software, and it makes it easier for them to trust us that, of course, the software we're selling them will also have a similar quality and solve their problem in the same way spaCy did.

09:43 Michael Kennedy: For sure, so let's talk a little bit about Prodigy. And that's your first paid-for product. You go to the website. It has a, how much does it cost? You put in the credit card and you get it, right? It's not like...

09:53 Ines Montani: Yes.

09:55 Michael Kennedy: well, you sign up. We're going to market to you and then maybe we'll run some retargeting ads on you or whatever. Like no, no just.

10:01 Ines Montani: No.

10:02 Michael Kennedy: you come, you find the value, you pay for it. So tell us about Prodigy.

10:06 Ines Montani: Prodigy is an annotation tool mostly that helps people label data for machine-learning projects and run experiments. Because, the idea is, if you're using a library like spaCy or any other machine-learning solution, you ultimately, once it's really giving you a lot of value, you want to train your own systems that are very, very specific to your problems that you're solving. For example, you get a lot of customer emails and you want to have a system that automatically labels them whether they're about an invoice question or whether they're about some other problem the user is having, whether it's a complaint, whether they're happy. So that type of system, and you need examples for that. So you have all of your emails and you want to train a system. And for that, you need to label the data. Often you need to label it 10 times until you find a way that works. That's very tedious work, so we've thought a lot about how can we make it simpler. And one conclusion we ended up with is that it needs to be a developer tool. The developer needs to run it locally, needs to be able to quickly also program their own workflows. It needs to be a Python library that you can interact with. It can't be just some app that's on the internet. And you need to have that control.

11:10 Michael Kennedy: Yeah, it's not going to do it, yeah.

11:12 Ines Montani: Yeah, and also it's what people are used to working with. We call it, let them write code. Developers want to write code. That's not an issue. It's actually, it's a feature. You know how to write a function in Python. No matter how you want to do it, if you can write it in Python, you can use it in Prodigy.

11:28 Michael Kennedy: That's really cool, 'cause most people doing something with spaCy or other machine learning, chances are they're already somewhat competent with Python anyway. So you might as well just leverage that. That sounds really cool.

11:42 Ines Montani: And also a big reason people are using spaCy and open source tools like that, is because they want to build their own systems and implement them themselves. And also because often the data they're working with is not just something they want to upload onto the internet, and they probably also shouldn't. They're building their own systems, which means, also their other tooling needs to fit to that kind of workflow they've set up. The data needs to stay on their machines, on their servers. It can't just be sent to us. And Prodigy really fits neatly into that kind of workflow. It's been very popular and we're very happy that we were able to provide more value to our existing users that way.

12:17 Michael Kennedy: It sounds like a really great product and it sounds like it's being pretty successful. You talked in your presentation about having two products that you're working on that are kind of follow-ons, one called Annotation Manager and one called Data Store. Do you want to tell us about that as well?

12:31 Ines Montani: Yeah, the Prodigy Annotation Manager or what we're now calling Prodigy Scale, is basically an extension that lets people scale up their annotation projects. Because once you found out an approach that works, you often want to have more people labeling your data and you want to be able to see what they're working on, you want to be able to farm out texts to people who might not be sitting in the same office. You also want to compare what they're labeling to see if there's a problem. Maybe someone's misunderstanding the question. That can lead to lots of hassle later on. And ideally, you want it to be accessible over the internet. It's been under development for a long time and it was a infrastructure that does not compromise on data privacy while still offering a software-as-a-service-like feel. So you still log in on our website, but you're also running a local cluster that farms out the work. And so the data never goes through our servers, so it directly goes via your cluster. Your annotators can access it. They still have the same nice feeling of accessing it through a web app we own and we run, but you don't have to send us your data and we don't store your data.

13:35 Michael Kennedy: That's an important thing that you talked about a lot, how, basically, a lot of these high-growth VC companies, their goal is to race for as many users as you can, so you can, basically own their data, infer things about them, and then try to sell them something, or sell marketers to them, or something to that effect. Facebook or whatever, right?

13:56 Ines Montani: Yeah. That's not very important to us, no.

13:58 Michael Kennedy: It just didn't sound like it's going to fly very well with machine learning. You want to send your most important data flow of your company, probably containing private information through it. That needs to be something private, right?

14:10 Ines Montani: Yeah, and we do have a lot of users in, for example, the healthcare field, who are actually also working on very interesting stuff and, for them, it's just like an absolute no-go. They have their very secure, audited environments that they can have their data on because it's, maybe, sensitive patient data, and that's it. So they need tools like that and they're very happy about tools like that.

14:30 Michael Kennedy: Yeah, absolutely. We have laws, like HIPAA in the U.S., about healthcare data. But, also things like GDPR in Europe and even Washington State, the next state over from Oregon, is working on a GDPR-like.

14:44 Ines Montani: Yeah, I read that. In fact, I think GDPR is a good thing. I'm a fan of regulations in general if they're reasonable. Not saying that everything that comes out of the EU as regulations is great, but I do like the general sentiment of those kinds of privacy laws.

14:58 Michael Kennedy: Yeah, I think there's a big pushback on the overstep and misuse of people's data. So this trying to build your business on people's data is a, I don't know, maybe it's a little shaky ground. So, it's good that you are not, right?

15:10 Ines Montani: Yeah, I also, I think it's just not necessary. Also that's one thing I tried to get across also with that talk. It's like, there's so many other ways you can build a business that's very sustainable. So you don't even need to do that.

15:21 Michael Kennedy: Yeah, I do think that people are kind of myopic about seeing VC funding as the only way. Like it's, I don't think so.

15:27 Ines Montani: No.

15:27 Michael Kennedy: Now, one question I did want to ask you, and not quite seriously, but just to get your thoughts on this, because I've made the same decision. But, why not just keep consulting? You had six months of this. I'm sure it was going really well. You're like, oh, we could totally just continue to consult. And a lot of people go down that path. I think its a little more risky to start a business and spend your time on that. So, what was your thinking, and why go, no we're going to build a product and we're going to sell it, rather than try to just keep working for a Bosch or whatever, right?

15:58 Ines Montani: It's a good question and I think, to some degree, comes down to personal preference. There are other companies in our space that are doing very well with consulting. But, I think you do get to a point where, if you want to scale consulting, you need more consultants. Then you're actually running a consultancy business and you're managing other consultants. Also we don't see these as our strengths. We are quite aware of, what are we good at? Where do we have an edge? And for us, that's building good developer tools. And we always thought we were a good team on that, so. And the nice thing about selling software is that, you write it once and then you sell it lots of times. In terms of a business, that's very good. You have one thing and you sell it. It's still there. You sell copies of it.

16:40 Michael Kennedy: I totally agree and that touches on something I deeply value these days. It is it seems so important to me that, if it's possible to trade value for money, rather than time for money, I mean, I've always had a good job. I've had a lot of freedom in my job when I was doing full-time work, but it was like, well, you can't really go on vacation with your family this month 'cause there's that project, and it's just, it's not the same feeling of, I'm going to create something, people like it, they find a lot of value in it, so they'll exchange some money for it. That just seems, to me, a much more rewarding thing to do than book another week of consulting.

17:16 Ines Montani: Yeah, and I also think offering consulting on top of an open source project that you also have, I think there's actually a very weird, the incentives are very, very misaligned on this, because you are making money off people needing help with your software.

17:28 Michael Kennedy: So, don't make it too easy?

17:29 Ines Montani: Yeah, yeah, exactly. Like, we've always wanted to have great docs, wanted it to be easy for people to use spaCy. So if it's too easy to use spaCy, people don't need our services and we make less money. But, if spaCy is shit, we're losing business that way because people are not coming to us anymore and the library loses adoptions. So I think it's, there's a very weird...

17:47 Michael Kennedy: Yeah, they are a little misaligned, the incentives there. Yeah.

17:50 Ines Montani: Yeah. So that's also why we think, we think there's a great business in this for other people and actually, in fact there are lots of consultants who are somewhat specializing on building stuff with spaCy and it works well for them, and we think that's much better for us than if we did all of that.

18:04 Michael Kennedy: You talk about bucking the startup playbook, like going against it at some of these common misconceptions. In your talk you had four main misconceptions. I think they were really spot-on and super interesting. So let's talk about those a little bit. The first one was, you have to lose money in the early days, and the early days could be six months. They could be 10 years. There are big companies that are still losing money.

18:31 Ines Montani: Not making money.

18:31 Michael Kennedy: but just less. Yes, and it's incredible, right? And, you know, maybe that makes sense and you actually talked about when it does makes sense, but a lot of times it doesn't. So, let's just start there. Do you have to lose money right away, for a long time, until you've got enough growth?

18:46 Ines Montani: In some industries in some areas, that might be the case. So I'm not saying, oh, running at a loss is always bad. There's a legitimate reason why you might have very high startup costs. For example, any social app, in that sense, or anything that really can only make money once you have users falls into that category, because you need to grow.

19:05 Michael Kennedy: Yeah, like a two-sided marketplace like Airbnb or Uber or Lyft or something like that.

19:11 Ines Montani: Or anything that has a physical product. I think in my talk, I had this mattress business where, okay, you need

19:17 Michael Kennedy: Casper.

19:17 Ines Montani: to build something. Casper, yeah. And then you need to sell that. So you need some cash up front. That's fine. But, for a lot of digital things, that's actually not the case, and you can, especially if you have a product that you want to sell, there is definitely an advantage in selling that straight away, rather than running at a loss, even though you have something valuable that people will be paying for.

19:37 Michael Kennedy: I totally agree with this and I feel like, especially in the digital world, where it's software or something along those lines, you can work your way into it. You don't have to say, we're just going to quit our job and start writing the first line of code. You can start working on this for an hour a day. You can start testing. You could see, is this something I built that seems like it's going to be successful. And then, slowly, sort of transition to it, which also helps you have enough traction when you're started, that it's like sort of covering some of the bills.

20:07 Ines Montani: Yeah, and also I think this whole idea of running at a loss is still kind of inspired by much more traditional manufacturing where, actually, things become cheaper at scale, so you need to reach that scale, like if you have a manufacturing plant, yes. If you're building one car, that's going to be much more expensive than if you build 100,000 cars or one hundred million cars. But that's usually not actually the case with software development, because that's actually more expensive at scale. So, this whole concept all falls apart if you're actually applying that to digital or fully digital products and tools.

20:43 Michael Kennedy: This portion of Talk Python to Me is brought to you by Linode. Are you looking for hosting that's fast, simple and incredibly affordable? Well look past that bookstore and check out Linode at talkpython.fm/linode, that's L-I-N-O-D-E. Plans start at just $5 a month for a dedicated server with a gig of RAM. They have 10 data centers across the globe, so no matter where you are, or where your users are, there's a data center for you. Whether you want to run a Python web app, host a private git server, or just a file server, you'll get native SSDs on all the machines, a newly-upgraded 200-gigabit network, 24/7 friendly support, even on holidays, and a seven-day, money-back guarantee. Need a little help with your infrastructure? They even offer professional services to help you with architecture, migrations and more. Do you want a dedicated server for free for the next four months? Just visit talkpython.fm/linode. We brought that up and you were talking about it. It was so interesting because, you're right, things do get harder in software as the software gets bigger, whereas they get, maybe harder, but much cheaper, in any form of physical manufacturing or something like, yeah. Elon Musk built the gigafactory 'cause he needed to make batteries at a larger scale so they could be cheaper. These type of things, Like that.

21:56 Ines Montani: Yeah, yeah. But it's not like he's making much money with that yet.

22:00 Michael Kennedy: Not yet. I think they actually said Tesla was going to have a profit. Either it just did, or it's just about, But yeah, that's a whole big growth sort of side of the world as well. So the idea that software gets harder to build the more people you try to throw at it is really interesting. Long ago, we had the whole mythical man month, that you can't have a hundred people working 10 times faster than 10 people, that sort of thing. So, it's just, it doesn't always take a huge team to build these products. You talked about some of the open source projects and others that were actually built by pretty small teams. There's not that many people behind spaCy and that's super successful. There's not that many people behind Flask, and that's super successful. The people involved in the Pallets Project, they run a bunch of open source projects, and that's like, count-them-on-my-hands number of people.

22:52 Ines Montani: Actually, even if you look at the large companies, if you look at things that are produced by Google or open source projects released by other companies of a very large size, it doesn't mean that all of Google is working on TensorFlow or all of Google is working on some other project they released. Facebook's React is another example. It's not like all of Facebook is working on that. They actually have a very, very small core team as well and it's a very successful project. And I think that also a unique, maybe a single author or very few authors, to really give a project the direction it needs. It's like writing a novel with 200 people. That's like a very fun art project, but, it's not it's going to be like the most amazing,

23:29 Michael Kennedy: Exactly.

23:29 Ines Montani: continuous like novel of all time. I think it's the same, which is why I always found contributors a very weird metric to look at open source projects, and how big or successful they are.

23:41 Michael Kennedy: Yeah, I guess, even in these big companies, the reason the small team gets to work on it, is they have enough extra money. They can just pay them to work on these projects. But that doesn't mean they put a hundred people on, like you say, React or something. That doesn't make sense.

23:52 Ines Montani: And it also doesn't mean that the project is necessarily has like, more of a chance to stay than a project that's developed by a small company. If anything, it's much cheaper for a company like Google, or easier, to just shelve some project even. Look at all the stuff Google's killed that people loved, like

24:08 Michael Kennedy: I know.

24:08 Ines Montani: Google Reader. I'm still bitter about this to this day.

24:12 Michael Kennedy: I'm bitter.

24:13 Ines Montani: Yeah, it's been 10 years and I still think about this a lot.

24:16 Michael Kennedy: Still have a few scars from that? Yeah, they're killing Inbox, which I absolutely love, and it's gone.

24:20 Ines Montani: Oh yeah, yeah.

24:21 Michael Kennedy: It's gone in two months, yeah, two months. So, well, you're right. It doesn't mean it.

24:26 Ines Montani: Yeah, so, that's why, when people are like, oh, but how do I know that your project is going to stay around, it's a weird way of looking at it. It's a valid concern, but just because something is developed by a very large company, doesn't mean they're going to keep it alive for longer or necessarily want to invest more resources into it.

24:41 Michael Kennedy: Yeah, that's for sure. One other thing you touched on about this kind of running at a loss side of things, is it's a little bit of a winner-take-all situation? That means people are pursuing these sort of big VC-funded, they got to be really big projects. And that leaves room for a bunch of small and medium-size success stories that are just a little too small for that big investment or whatever, but would be really great for many people.

25:07 Ines Montani: What we're talking about there as small is still like a very, very significant amount, like, in a lot of these areas, a few hundred million would be too small. And, I think for a lot of people, that's actually, that's a pretty good business.

25:18 Michael Kennedy: Yeah, I would think so.

25:20 Ines Montani: Yeah, yeah, and also there are lots of these types of businesses where you can, for example, if 50% of your revenue is profit, you have a much, much higher trajectory to actually, if you grow at a similar rate, organically, you're actually much better off than if you're in a position where you have the same profit, but it's only like 10% of your revenue or 2% of your revenue. So, we've always seen it like, okay, we don't have to be the one provider of developer tools ever in the world.

25:49 Michael Kennedy: Right, so, basically, if you're not chasing this tournament, winner-takes-all, I got the big VC round and we're going to, Facebook's going to crush MySpace, or whatever type of narrative we're trying to tell here, then it's not necessary to run at a loss, because you can be more organic, you can work on the products that people really want, and just grow a little bit slower, but still totally good for you and your smaller set of people, right?

26:14 Ines Montani: Yeah, or you can have a competitor. It's fine, you don't have to crush everything else.

26:19 Michael Kennedy: Exactly. Can't we all just get along?

26:21 Ines Montani: Which is quite expensive if, you know.

26:22 Michael Kennedy: Yeah, that's for sure. The other one which we touched a little bit on, is that you'd need to hire a lot of people. So, you think that small teams actually are a big advantage here, yeah? I agree.

26:32 Ines Montani: In our case, definitely. We started off as two people. Now we are actually working with a few more developers, especially for Prodigy Scale, to get that ready, and some other projects we've lined up. But yeah, we're still very small and the ideal company we envision is also very small. For us it means that actually we can really take advantage of working with people, a bigger variety of different skills that we can use. In my talk, I called this like t-shaped skills, they're tree-shaped skills, kind of based on this idea of the t-shaped skills, like a t-shirt. So one foundation and like two other skills you kind of have.

27:13 Michael Kennedy: So maybe just to try to summarize that idea of the t-shaped skill is like, you have a bunch of things you sort of know. You're sort of competent. You can sort of create a website in Python. You can sort of work with CSVs or databases. But you're really good in, like the stem of the T is, you're really good in one deep area.

27:31 Ines Montani: You're like a systems engineer. That's the idea of the t-shape. And then, I say, actually, what's even better than that, and even more useful in small business are the tree-shaped skills. So you still have a base, but you have all these different branches and all these different other skills that you have. They can overlap with other trees. You can grow a new branch, which is kind of nice, because, actually, yeah, a t-shirt is really quite static.

27:55 Michael Kennedy: Just gets worn out over time, that's right.

27:58 Ines Montani: Yeah, but like the tree, you can, a tree is active, a tree is growing so I kind of like that metaphor more.

28:03 Michael Kennedy: I like that metaphor a whole lot too because I think it's one thing to hire people, but you're never going to hire people that have all the skills you need. But, you know what, they can learn it. They can take an online class. They could go and do an in-person class. They could get a book. There's so many ways to learn these days that you can sprout these new skills and I think that's a great analogy, these tree-shaped skills.

28:24 Ines Montani: The types of people who have these sort of versatile skills, it's not really selected for in a lot of larger teams and the more stereotypical software development. Because in large companies, it's fine and makes sense why a large company hires differently than a small company, because you need people to be a bit more interchangeable, and you need a very different type of team. But if you're small, you kind of don't have those concerns. And so, it can really help you a lot to have very different people, very different backgrounds. And that's kind of what we're doing.

28:56 Michael Kennedy: So another analogy that I really like about this is this tree and this idea of growing new skills. To be successful as a software developer, especially in smaller companies, you have to be always willing to be learning new things. It's not enough to like, well, I went to school and I got my computer science degree, so now I'm just going to go do that. You're continuously learning and this tree analogy and adding new skills, I think it embraces like the best type of software developers anyway, because they're constantly learning.

29:26 Ines Montani: No, I agree with that.

29:27 Michael Kennedy: So another thing that you said was, you don't have to be sneaky. And I feel like that comes back to this kind of data is the new oil, what we need are users, so we can take their data and somehow make money on it. And maybe we're going to do something a little shady, so we got to be a little sneaky about that. What did you mean there?

29:42 Ines Montani: I also had this point like, the true value lies in your users' data, which is basically the same idea that, you were trying to trick people into using your product, but actually your incentives are very different, or you're trying to monetize something that you don't already have. You're monetizing some future promise that you've made which will actually offer you those returns that you have to come up with because just making a profit isn't enough. So you actually end up often on. But I've definitely seen, there a lot of products on companies that have made, in my opinion, bad product decisions in order to kind of satisfy those types of promises.

30:19 Michael Kennedy: Yeah, promises to investors, Not promises to the users.

30:23 Ines Montani: And actually it's not even just that you have all the evil investors. You go for a business model where, okay, you get a lot of money up front, and that's great, and you can work with that. But also for yourself, you need to turn it into a certain type of company in order to make it worthwhile and to also get some money out of it for yourself. So it's just that thing you agreed on and that dynamic. And that works for some types of products and for others it really doesn't.

30:48 Michael Kennedy: Yeah, absolutely. Machine learning that's processing sensitive private data, probably not so much. Sneaky is probably not a good option.

30:55 Ines Montani: No, and also you do want, I think trust is very important and actually genuine trust. Like if your users think you're a decent person, that's worth a lot and that's also something you don't want to play with. It's a scary thing to do and say, okay, look, I'm ready to really take full responsibility. Or we say, well we want to be held accountable for the things we do. Like, it'd be much easier to just not do that

31:19 Michael Kennedy: Yeah, that's for sure.

31:20 Ines Montani: and set off the expectations.

31:22 Michael Kennedy: That's right. Another thing that's big in the startup world is that you have to not just test things, or try them, but you have to A/B test them. Every time you send an email, there needs to be a couple of variations. Every time you have a page that talks about your product, you need to have three versions that sell it in different ways, and so on. That can just be overwhelming to a lot of people that are like, do I really need to do all this stuff to get started? I don't know, it just, it seems a little over the top. And one of your beliefs is that, you can make good decisions without testing all the assumptions.

31:57 Ines Montani: Yeah, that's true.

31:57 Michael Kennedy: You can, you can.

31:59 Ines Montani: You can.

31:59 Michael Kennedy: You don't have to test everything, right.

32:00 Ines Montani: That's true and also because I think the, or the underlying idea there is that you can't just replace logic and reasoning about things with pure data you've collected because there's always bias in some way and that's just not possible, and the thing is, the reality is, if you're running a business, you need to make a lot of decisions and you need to be right. That's sort of the secret. You need to make the right decisions and make them many times in a row. You can do a lot of things to make this easier for you and make it easier for you to make the right decisions, but, ultimately, you need to be able to reason about things and reason about it in a way that leads to the outcome that you want. And that's something you can't just compensate for by trying things until you maybe find something that works, and then going back looking at what you've tested there and drawing the conclusion, and half this must have been why this worked and the other thing didn't.

32:50 Michael Kennedy: And so many times, I think, those experiments, especially around price or offers, can feel really crummy to your best people, the people who buy stuff from you and support you. I'm thinking of things like Udemy, the online course place where, if you go there, they say the price of this course if 200 bucks. But, you know what? If you don't actually buy it, but you're logged in, you'll get an email saying, oh, it's actually on sale. For just one week, it's $15 or something. Like it's 5% of the price or whatever a little bit later. And then you come back and there's some other sale. It ends tonight. Oh wait, tomorrow the sale is on. Like there's just all these shady thing and just, my feeling of companies like that, I just like, ah man, like, either just sell me what you think the value of the thing is or, I don't know, just don't try to like continuously show me tricky stuff until I bite on something. It just feels like dishonest somehow.

33:45 Ines Montani: We, as developers, are maybe also a bit less like oblivious there, or like, we spot bullshit and we don't want to be bullshitted. I'm not saying this is something unique to developers, but I think you look at these things and you don't want someone to tell you like, ooh, this is magically going to solve all your problems. You want someone to tell you, oh, well you were developing something? Here's something that can help you and here's how this works, and here's how much this costs. And you're like, alright, or you're like, maybe not. We've definitely seen this as something that's very important for us and, just because you're A/B testing something, you still need to reason about stuff. If you just automatically you test every possible combination and you might end up with the conclusion that scamming people is actually the most lucrative way of making money.

34:29 Michael Kennedy: At least in the short-term, but it goes back to this trust thing as well.

34:32 Ines Montani: Yeah, in the short term. Maybe even in the long term. Like there are people who've been scamming for all their lives, and have been doing

34:36 Michael Kennedy: It's true.

34:37 Ines Montani: pretty well at that. So you can optimize for that. But is that really the thing you want to be doing? Probably not. Or, if it is, I thought about like mentioning this up front in my talk, like I'm going to be talking about ethical and legal ways of running a business. If that's not what you're after, I don't know, well, start some like initial coin offering stuff and leave now because there are other rules like, sure, if you don't want it to be legal or ethical, like, yeah, none of this.

35:02 Michael Kennedy: There's a lot of options, but who cares. That's not what you're about. Interesting, and you also talked about some of this A/B testing stuff is sort of driven by this tournament winner-takes-all mentality. Because if you're competing against another company and your belief is they're going to crush us or we have to crush them, there's no way we can both co-exist, then you're always looking for that little edge, right?

35:25 Ines Montani: That's true, and also, or you look at, like I think another thing that's also very popular is looking at others who were in the same tournament and didn't make it. So you look at some other company that was there before and they failed, and then you would try to analyze that and maybe even talk to them. Why did you fail? And they will tell you, well, we should have done X. Because we didn't do X, and that's why we failed. And so you're like, well, and that's actually where I think a lot of this advice comes from. It doesn't actually make much sense because it's not really, we're not that good at analyzing why something didn't happen. Just because you didn't do X and fail, doesn't mean that if you had done X, you wouldn't have failed.

36:03 Michael Kennedy: Yeah, if you actually knew exactly why it failed, you probably could just address it and make it not fail.

36:08 Ines Montani: Yeah, probably.

36:08 Michael Kennedy: Right? Like, well this is the problem. Let's just not do that. Not always, but it's still interesting. Then the last misconception you talk about is that the true value of your software, company, product, whatever, lies in your users' data.

36:24 Ines Montani: Yeah, because, I think we talked about this briefly earlier.

36:28 Michael Kennedy: Yeah, we definitely covered this, yeah.

36:29 Ines Montani: Yeah, and I think it's clear where this comes from. This was definitely driven by this idea that all data is so valuable. People talk about this and I think it's never even really clear what they mean by data. Do they mean your personal data? Because maybe that's valuable if you're in a certain position? Like if I want to sell you stuff, knowing who you are, where you live, what you're like is valuable. If I don't, for me, personally, your Amazon buying history wouldn't be very valuable. If I were in a different business, maybe it would. So it's not always even very clear what people mean with data. But what people have concluded is, that we need to harvest as much as possible, as quickly as possible. Whatever we can might be worth something. I think now we're getting to a point where people are sitting on all of this and now realizing that, actually, it's not even, necessarily that useful. Now we're at a point where companies have been really struggling to make sense of all of that data they've harvested at very-high costs in terms of user experience and trust.

37:23 Michael Kennedy: I agree, and I also think it's only valuable to the very large companies. Like, it's valuable to Facebook. It's valuable to Google. But if you were a three-person software company that had 5,000 really-committed users that could otherwise pay you, there's no way that those 5,000 people's buying history or whatever, is worth anywhere near just their trust and like, hey, I'm going to make something for you. I think it's valuable. I think you'll want it. They agree. You give them something. They give you money back. That's just a much better and easier story, I think. This portion of Talk Python to Me is brought to you by Rollbar. Got a question for you. Have you been outsourcing your bug discovery to your users? Have you been making them send you bug reports? You know there's two problems with that. You can't discover all the bugs this way and some users don't bother reporting bugs at all. They just leave, sometimes forever. The best software teams practice proactive error monitoring. They detect all the errors in their production apps and services in real-time and debug important errors in minutes or hours, sometimes before users even notice. Teams from companies like Twilio, Instacart and CircleCI use Rollbar to do this. With Rollbar you get a real-time feed of all the errors, so you know exactly what's broken in production. Rollbar automatically collects all the relevant data and metadata you need to debug the errors so you don't have to sift through logs. If you aren't using Rollbar yet, they have a special offer for you, and it's really awesome. Sign up and install Rollbar at talkpython.fm/rollbar and Rollbar will send you a $100 gift card to use at the Open Collective, where you can donate to any of the 900-plus projects listed under the Open Source Collective, or to the Women Who Code organization. Get notified of errors in real-time and make a difference in open source. Visit talkpython.fm/rollbar today.

39:15 Ines Montani: We can do that. We can sell products and not promises and that's very nice, That also means we can really make product decisions around actually providing that value that people want without having to engineer our personal objectives, or hidden objectives, into that somehow.

39:33 Michael Kennedy: Yeah, comes back to kind of the start of this whole conversation. Sell products. Don't be sneaky. All those kinds of things.

39:42 Ines Montani: Yeah, and also, I think in machine learning especially people have this idea that, oh, maybe the users, okay, our users are using Prodigy to label their data and that's because it's seen as such a tedious process. Maybe we could, People have told us like, oh, you're sitting on this goldmine, if you just harvest it. Everything people ever labeled with your tool, you could then use that and train one machine tree-learning model that knows everything. But this is actually very, very far from how machine learning works in practice. It's also, really, the true value is in creating very, very specific systems that are very specific to your problem. So, anything you label might not necessarily be useful to me. Also, this process is very, very experimental. So, I have no idea of knowing which one of your 200 datasets is actually the one that worked for you. And even if I do, I know it worked for whatever problem you were trying to solve. There's no machine learning model to rule them all. Also, we've built an annotation tool. We believe our annotation tool is one of the most efficient out there. So if we wanted to label some data and train a model, we would just do that ourselves.

40:46 Michael Kennedy: Right, just go to Mechanical Turk.

40:48 Ines Montani: Prodigy's very optimized for having people work very fast, having people you can hire, doing it yourself, so you don't even need any human labor platform because that also comes with a lot of problems. So, I could sit there, spend a day, and I could be very, very productive, run lots of experiments and end up with a model, at least knowing whether my model can learn what I want it to learn. And that's very powerful and so, if we wanted to do that, there's no need to just take this from our users, we can just do it.

41:18 Michael Kennedy: You've built the tool that they get to use, so really, to solve their problem, you could just do that for yourself. It makes a lot of sense. I think. I don't know. There's a whole lot of interesting ways we could talk about AI and machine learning and stuff. Where do you see AI going? Do you see it being these super specialized things? Do you see there being one AI to rule them all? What are your thoughts here?

41:38 Ines Montani: I think the one AI to rule them all, that's like maybe something you can come up with if you follow some of the media coverage. But I don't think it's very realistic and very close to what people are actually building. I think what we're seeing is, all across industries, whatever people are doing, they want more insights, they want to optimize their existing processes and they want systems that specialize very well to exactly what they are trying to do. It becomes more of a tool.

42:02 Michael Kennedy: Right, so the more specialized it is...

42:04 Ines Montani: Yeah, and they can use machine learning as a tool to achieve that. And of course there are realistic concerns that we do have to think about in, for example, what's going to happen with people being replaced, or how are companies dealing with this in maybe ways that are actually very harmful, also because of kind of a wrong idea of what the technology can really do? There are ethical concerns. There are concerns about bias and, just because we built some system, doesn't mean that it's like, perfect, and we still build it, so all the mistakes we make, we're just going to encode in that system all the bias. And all the problems we have, we're just going to encode in that system in code. If you make bad decisions, cool, you can train a model to make those bad decisions for you. It doesn't mean that things are necessarily better. So these are all the things we have to talk about. Ultimately, I think, still, machine learning is a tool at this point.

42:55 Michael Kennedy: I tend to agree. I am a little concerned about the automation and jobs, and then the effect that will have on politics and society. But, in general, I'm pretty upbeat on these things. Let me ask you a couple of sort of meta-questions around this to close out this. First of all, it seems like you're having a lot of fun. Are you having fun running your own company, you and Matt?

43:16 Ines Montani: Yes, definitely. I would say it's the best job I've had so far.

43:19 Michael Kennedy: Yeah, that's cool. I thrilled doing what I'm doing. I'm basically broken. I cannot go back to a regular corporate job. I don't know about you.

43:27 Ines Montani: I think it really depends. One thing I hate is this mentality that a lot of self-employed people have where they're essentially looking down on people who are in regular jobs. I read this a lot and I'm like, no, there's so many valid reasons why you would want to have a regular job working for someone else and that makes people happy. But, on the other hand, I do think, in general, and as a society, we should make it easier for people who want to start their own businesses to start their own businesses, and then make it easier for those businesses to actually create sustainable jobs that then other people can take.

43:59 Michael Kennedy: Right, we were just talking about AI taking away people's jobs. But if there could be other businesses so they don't lose their job, they just do a different job that's also meaningful to them, that's a much better option.

44:08 Ines Montani: Also businesses that can pay their employees out of profits they make, because that's, ultimately, also very sustainable, because that means the money is there.

44:15 Michael Kennedy: Right, rather than, say, stock options that are kind of promises down the line.

44:18 Ines Montani: in the future, yeah.

44:20 Michael Kennedy: Yeah, yeah, yeah, exactly.

44:23 Ines Montani: A lot of these offerings, in order to exercise them, you already need such a privilege that you can afford this, and if you cannot, this is expensive. If you're already privileged enough, fine, but if you're not, none of this is going to help you very much.

44:35 Michael Kennedy: I totally agree. That's a great point. Another question someone asked at the end of your talk, which I thought was maybe worth mentioning, is you hear people talk about, I think this also comes from some of the VC-backed companies, is talk about work-life balance and just giving up everything to work super, super hard, and maybe they're really successful in business, but maybe not so much in life, with relationships and whatnot. How's that for you?

45:01 Ines Montani: I'm definitely very much against this kind of school of like, entrepreneurship, where only the hardest workers can succeed, and you need to run on four hours of sleep and like, I don't know. This is definitely something we try to optimize in the way we run our company that we're not measuring success by like how low can you go on sleep and how hard can you work, because I also think you can work smarter instead of harder. There's a certain privilege, of course, that comes with, you know, I can choose where I want to work. I could choose to structure my life in a certain way. I feel like this is important to point out because not everyone's able to do that. But, in general, I do think we can, in a way, if you're not in the competition, you can optimize for living in a place that's affordable. You can optimize for, okay, you want to have more time or you want to work in a certain way now, while you're younger, so you can maybe work less when you're older. Those are all important considerations.

45:57 Michael Kennedy: Yeah, absolutely. For example, you talked about living in Berlin, where life is fairly reasonable, as opposed to, $8,000 for an apartment in San Francisco or something completely off the charts.

46:09 Ines Montani: And we're lucky that we don't have to be in one of the tech hubs and we can be on the internet. But I'm always trying to, when talking about these topics, especially work-life balance, I'm always trying to be careful not to come across as like, yay, start your own business, it's all great. Like, ooh, I can, But also, not going the other route and saying, yes, yeah, you have to be prepared to work super hard and maybe you're on call all day. And it's like, there are valid concerns on both sides and I don't want to over-romanticize either of. But I do think it's possible to optimize for something that works for your living situation, yes.

46:40 Michael Kennedy: Yeah, you don't have to completely kill yourself to make it work in your specific situation. You and Matt have a good time not always working, always burned out.

46:50 Ines Montani: If I could keep it that way, that's a very good objective for me, yes.

46:53 Michael Kennedy: One of the really nice trade-offs, when that person asked that question, I thought, well, yeah, it's a little more stressful. You've got to keep the business running. There's more stuff on your shoulders. But also, you have more flexibility because you're trading value for money, not time for money. So if something comes up in your life, you're like, the next three days I kind of want to do this, like, you just do it. And then, maybe you work on the weekend to make up for it, or, like, I think there's more fluidity and freedom to find that work-life balance if you're after it.

47:22 Ines Montani: Yeah, and also this idea of what's often referred to as passive income, even though I find this, I don't know, I find this term a bit weird.

47:28 Michael Kennedy: I do find it weird as well 'cause you typically have to work super hard to get that passive income. It's not really passive.

47:34 Ines Montani: Yeah, it's also because it's this fantasy. Of course, everyone wants to sit on the beach while making tons of money, and that's why this is also been abused a lot in like, I don't know, life advice. If you Google, passive income, I'm sure the top results are all from scammy life advisor. Buy this ebook where I'm going to tell you how to make passive income. And the advice in that ebook is write an ebook promising others passive income.

47:57 Michael Kennedy: It's almost a pyramid scheme, yeah.

47:59 Ines Montani: like that kind of pyramid scheme. So that's why I hate this term. But, it's obviously, in general optimizing for a situation where you, for example, you've built something once that has value, that people like. You optimize for a business where people genuinely like buying your software, and are happy with your software. And you have one software, one piece of software that you can just sell to lots of people who are all happy with that, that's a good way of doing it because this means you can build something once and maintain it once, and sell it a lot to people.

48:28 Michael Kennedy: There's a lot to be said for that path, absolutely. I guess maybe we could close out our conversation around this building a software business, maybe bucking the startup trends, with just some advice you might have for people. So, if there are people out there, maybe they have an open source project, maybe they just have an idea for something they want to start, what advice would you give them about somehow making this their job? Starting some kind of company that offers value to people, maybe they're doing consulting, maybe their doing full-time work. I don't know.

48:59 Ines Montani: It's a very loaded question because it's...

49:01 Michael Kennedy: It's tough, I know.

49:02 Ines Montani: You know, it's very specific to people's situations. But, yeah, definitely. I think what worked for us was definitely, okay, you want to offer people something that they need and if you're in a position where, for example, you have an open source project and you see that there's genuinely something you're solving for people, that's a very good start. It is also very good to actually, you'd look at, how is it going? Are you making money with this? And also, have a plan for, when are you going to stop? Because I feel like that if you're going the opposite route, there's never really an incentive for, is it working, is it not working, because you can always optimize and you're running at a loss anyways. But if you're actually running at a profit, you can use that profit to really see, okay, this is where you're going. It doesn't lie. It's very, in a sense, it is riskier because, that's the only path. People are like, oh, you're doing the risk-averse thing. And I'm like, well it's not that risk-averse because we're actually making a profit. That's quite a risk because if you're not making a profit, that's it. Choosing not to make a profit is actually a pretty risk-averse.

50:06 Michael Kennedy: It's a little too open-ended, maybe.

50:08 Ines Montani: Maybe. It's like ultimately, or maybe, ultimately like, Giving advice is always difficult and, ultimately, the advice would have to be, make decisions and be right about them. That would be the most honest, genuine advice, but it's also often not what's really that actionable. Yeah, very satisfying, because the advice, you still need to do it. But on the other hand, I kind of, I also like this sort of way of thinking about it because it shows that, okay, a risk, and whatever I'm going to tell someone is always going to be kind of biased. Yeah, it's this idea, okay, you can, it is possible to shift value and make money from that. It is possible to offer something that people will pay for because people like paying for things. It's not like nobody wants to pay for stuff. People do want to pay for stuff if you can find a way to give them that opportunity. I think, also, if you can reason about things and your right, it's fine to do that. You shouldn't feel like you need all of this data to back up whatever you thought was right. If you can actually make this work, it's fine. You don't have to beat yourself up because you didn't A/B test that assumption and somebody's going to ask you, ooh, but how do you know that the sky is blue? It's like, well, I looked at the sky and it's blue.

51:19 Michael Kennedy: My experience is, it's generally blue.

51:21 Ines Montani: Yeah, yeah. It's real because I experienced it is also a pretty problematic way of looking at things, in my opinion. But it's still, there are some things that you can know when it's fine to know things and act on them, especially if it leads to a good outcome.

51:37 Michael Kennedy: That sounds good. I guess, take your understanding, make your best decisions you can and take action, and then follow that feedback loop.

51:46 Ines Montani: And basically it creates a job for yourself where you can do all the things you like and channel that into a productive outcome that's commercially viable. Because, it took me a while to kind of get there, but often, I do think, for most people, they have things that they like doing that they're good at, that maybe are not so compatible in the very stereotypical system of working and typical jobs in tech. They might actually look very different once you're in business for yourself and you realize that, oh, actually, this sort of talent I have here, or this thing I'm really good at, I can actually use this productively in my own business.

52:18 Michael Kennedy: This is useful for people. Yeah, absolutely. That sounds great. Let's leave it there. So, hopefully, people got a lot out of that conversation. I'm sure that they will. But, before I let you go, I have to ask you the two questions at the end of the show, as usual. If you're going to write some Python code, what editor do you use?

52:34 Ines Montani: Visual Studio Code. Probably like most people these days. I'm not sure. What's the most popular?

52:38 Michael Kennedy: I would say the...

52:38 Ines Montani: VIM?

52:40 Michael Kennedy: No, I think Visual Studio Code is probably the number one most popular and PyCharm is actually going pretty strong there. If it's not one of those two, it's usually VIM or, not even Emacs, it's usually VIM, yeah.

52:52 Ines Montani: I've tried probably most editors. I'm also very, very open to trying new things if they come out. But I do think Microsoft did a really good job. It's a very impressive product. I didn't expect that at first when I started using it.

53:06 Michael Kennedy: Yeah, I hear that a lot, and it's getting better all the time, which is pretty cool.

53:08 Ines Montani: Yeah, and I'm actually very excited about the Python integrations and also the more like data science-focused stuff that they've been working on also. I'd always wanted like a spaCy extension. I haven't had time to look into this, but we have an open issue on the tracker. So if someone listens to this and wants to work on this I'm super super excited about that idea.

53:27 Michael Kennedy: That sounds super cool. And then, notable package on PyPI, maybe not necessarily the most popular, but some of the people, they're like, oh, somebody, I found this and they should know about it. And I'll go ahead and throw a spaCy out there for you already. So we can put spaCy on the list, right?

53:43 Ines Montani: Yeah, of course. One idea that we have to mention, like spaCy wouldn't have been possible without Cython. Sometimes people don't realize this, but most Python packages you use wouldn't have been possible without C extensions and all the great work that went into Cython, so I feel like I should just mention that because it's such a huge part of what we're building. But also, one thing I really got into recently was making our code more consistent, having a well-formatted, well-organized code base. So, often when I start organizing things I kind of get really into it. I've really started to appreciate the Black formatter, the auto-formatting tool, and just in general, the idea of enforcing opinionated formatting rules.

54:26 Michael Kennedy: Automatically, as like a pre-commit hook or something even better, right?

54:29 Ines Montani: Yeah, or even maybe, I actually think, for me, it works well in my editor because I actually, if something looks like super messy, it does remind me that like, often the code is actually not that great. If I write a line of code and then I see it gets spread over five lines and actually looks more confusing, it often means that, yeah, okay, maybe I shouldn't have had that for loop and if statement on one line just to kind of make things a bit nicer. Actually, it's not. It's harder to read. I should refactor that. So that's actually helped me quite a lot. And also just having Flake8. I always kind of liked having kind of a subset of rules that we enforce to have some standards. You don't have to go over top and like, okay, we want to meet exactly everything. But there's some things that are very helpful. You can catch bugs that way and just having things nice and tidy by default was very nice.

55:21 Michael Kennedy: I like that it doesn't complain, but that it just fixes it. Rather than going, here's the seven things you need to go reformat, it just goes, I'll reformat those. That's nice, yeah?

55:29 Ines Montani: Yeah, and also, and even if you run diagnostics, it says, okay, here you're overwriting something important. You probably didn't want to do that. And then I look at it and I'm like, yeah, I didn't want to do that. Oop. Or like, okay, something's actually not defined. Yeah, that's a bug. Thanks. So, stuff like that, it's helpful that it's simple and especially if you have lots of open source projects, lots of code bases.

55:50 Michael Kennedy: Yeah, a lot of contributors.

55:50 Ines Montani: it really helps.

55:52 Michael Kennedy: Yeah, it's great. So, want to give you a chance for a final call to action for folks. I think we already did that around the building a successful software business. So maybe just around spaCy and Prodigy. Tell people that are interested in NLP and what you guys are up to, where can they check it out?

56:08 Ines Montani: If you don't know about spaCy yet, you should check it out. If you feel like spaCy is not going to be useful to you, then you don't. I don't want to go here and tell everyone they should use our software. We're building very specific, maybe slightly niche developer tools. But, spaCy I think we really put a lot of effort into our documentation, we have a nice Getting Started guide. If you're interested, I'm hoping it should even give people who haven't really worked much with machine learning a good intro to how machine learning works with text and how you can use that productively. My EuroPython keynote was recorded and is on YouTube. So that kind of has the full overview of all my thoughts on that and all the stuff I was saying.

56:46 Michael Kennedy: I'll put that, the keynote, in the show notes as well.

56:48 Ines Montani: Of course Prodigy, if you're working with labeling data, if you're training machine learning models, we're hoping that Prodigy is a good developer tool that gets people productive. We have a lot of people who've felt like their work, yeah, it really speeded up their workflow and made it more efficient. Keep an eye on Prodigy for our announcement for Prodigy Scale which takes it to the next level. Follow us on Twitter because that's where we announce new stuff. We have a lot of cool stuff coming.

57:13 Michael Kennedy: Excellent, yeah, lot of great stuff. People should check it out. Ines, thank you for being on the show and sharing your experience.

57:19 Ines Montani: Yeah, thanks for inviting me.

57:21 Michael Kennedy: Yeah, you bet, bye.

57:21 Ines Montani: Bye.

57:23 Michael Kennedy: This has been another episode of Talk Python to Me. Our guest on this episode was Ines Montani. It has been brought to you by Linode and Rollbar. Linode is your go-to hosting for whatever you're building with Python. Get four months free at talkpython.fm/linode. That's L-I-N-O-D-E. Rollbar takes the pain out of errors. They give you the context and insight you need to quickly locate and fix errors that might have gone unnoticed until your users complain of course. Track a ridiculous number of errors for free as Talk Python to Me listeners at talkpython.fm/rollbar. Want to level up your Python? If you're just getting started, try my Python Jumpstart by Building 10 Apps course or, if you're looking for something more advanced, check out our new Async course that digs into all the different types of async programming you can do in Python. And of course, if you're interested in more than one of these, be sure to check out our Everything Bundle. It's like a subscription that never expires. Be sure to subscribe to the show. Open your favorite podcatcher and search for Python. We should be right at the top. You can also find the iTunes feed at /itunes, the Google Play feed at /play and the direct RSS feed at /rss on talkpython.fm. This is your host, Michael Kennedy. Thanks so much for listening. I really appreciate it. Now get out there and write some Python code.

Back to show page
Talk Python's Mastodon Michael Kennedy's Mastodon