HomeAboutContact
Landing in Tech
EpisodesStoreDiscord

Ep4 - Transcript

Episodes transcripts are powered by Otter AI, this is an awesome service that transcribes the audio, the grammar it's not perfect and there are some inconsistencies with punctuation and casing, but it's quite accurate to turn sounds into words.

If you wish you could edit the transcript on the Landing In Tech GitHub Repository

Jacob Tomlinson: On becoming an open source software engineer

Fabio Rosado

Hello, today I am joined by Jacob. He's a software engineer, and he has a very interesting story. You started as a self taught developer, and you're now a senior software engineer at Nvidia. Would you like to get us started by just sharing your story.

Jacob Tomlinson

Yeah, sure. I mean I guess I've been a software engineer like I've been working full time as a software engineer I guess for maybe eight or nine years now. But I go back to the beginning right? So as a as a kid, I always think I was quite fortunate in that when I was about 10 somebody let me touch a computer, and that was kind of it. That was just like a spark and I was like, right. I kind of I know what I'm doing I know what my entire career is going to be. I know exactly what I need to study and I know exactly what I want to do. And I think, I mean I feel extremely fortunate that that I had that exposure and that something just clicked for me, because I know a lot of people don't have that kind of, you know, it takes a long time to work out where you want to be. But I think from from quite a young age I knew I knew what I wanted to do so. Kind of all the way through school from that point, I was just focused on how do I get in front of computers as much as possible. How do I learn to write software, how do I start doing things, wait till just like regular schools but I had very supportive teachers and things around me that were kind of pointed me to books and given me time to go learn things and build things and resources, the high school I went to actually this secondary school was, um, it was like a technology specialist school, so they were mainly focused on like physical technologies. So, you know, building things out of metal and other wood and CAD CAM type stuff they had a bunch of like CNC machines they had laser cutting stuff right the whole school was very focused on that kind of thing. And I remember like at that point I was trying to learn. You know how do I how do I make computers do the things that I want to do. And they ended up letting me build a full size R2D2 which, like, you know, I was super lucky I just kind of went to them with this, with these plans that I found on the internet and I was like, I want to build this thing. Can I have some wood, we go to our wood right because that was what the most of the courses covered was how to cut wood with laser cutters and things like that right I want to try and build this thing. And then I want to put a computer in it and then I want to like, write code so that it does something. And, you know, we only we only kind of half built the chassis but we built it enough that it could move and we put motors in it and it drove along and we put this computer in it. I think the computer was actually like a till from a supermarket. But it was just it was just cheap right it was something that we just managed to find online really cheap. It had windows on. And so at that point was like the first time I really started learning code was writing the code for this robot right we ended up, this was kind of before or it was around the time that Arduino and things were really becoming like a popular thing so I had no idea that those things existed or were kind of kicking off. So I found something that was like written in Visual Basic some little controller boards I could control that would drive this thing forward so I ended up learning Visual Basic kind of in my spare time. At school, and the teachers were, you know, really supportive of doing that. And that was kind of hard but I kind of enjoyed it and knew that that was where I wanted to go so you know after that I went on to do my A Levels and did A levels in computer science and maths and physics and stuff. And I again I was, they continue with visual basics we were writing more visual basic in classes this time, and I was kind of enjoying these things but we're struggling to actually do anything useful in that language right it was all very much about scripting and maybe XML type scripting and, and that kind of stuff and kind of learning the fundamentals, but I was kind of itching to do something that I could really see, like, a result of an a relative actually, that was kind of a distant relative but somebody I met at a wedding. I said I was into software and learning things and he was like, Oh, you should go and learn JavaScript and you should go and learn PHP because those are like the thing that everybody should learn. So, I, at that point, decided okay he's, he must know what he's talking about. So I went aside learning those things. And through that I ended up actually building websites for like little local businesses in my hometown and actually spent more of my time I'd like class time I'd like sat in the corner working on a client project in PHP, rather than doing my coursework in Visual Basic that I should have been doing, which looking back I do I do regret doing that now right, kind of, I got to the end of my A Levels and you know go some A Levels and things. I had this little business running and I was I was like okay, I think I'm already doing the thing that I want to do right I want to write software, I'm already writing software people are paying me to write them software. I'm not earning very much money but I'm happy so I'm just going to do this. I had got into some universities but I deferred my placement at university, and just carried on trying to build this business because I thought well I'm happy and I'm going to keep going down this path. So I did that for like a year, I just kind of sat in my parents house writing websites for people not earning very much money but kind of trying to build up a business, but I I felt like my, my rate of learning had like slowed down massively. I was just starting my own I was building the same thing over and over I was probably not doing it very well. I was trying to learn stuff through YouTube and online tutorials and, you know, courses and things but I was, I felt like I was sat on my own too much and I needed to be around other people that could could help me learn and point me in the right directions and teach me things. So after a year of doing that I was like right do I do I pick up this university placement or do I go and try and work somewhere that has like an apprenticeship scheme or training scheme or something along those lines. So I did I did actually sit down and start going through the university process again. but I also started applying to like loads of businesses around, and I ended up getting a couple of, like, temp jobs. The first one was, I ended up working in a software company that was building software for people, but my job was to ring up new customers and help them use the software and I was kind of doing customer support. It was actually the, the company was building software for like farms and supermarkets so like a farmer would, you know, grow some stuff they'd pack it onto a pallet, they would then go on the computer and type in, you know, I have six pallets for Tesco, and it would print out a barcode and they'd stick it on, and then they drive it to a big warehouse and then that would kind of get into the logistics system for the supermarket and you know the supermarket would handle it from there. So I would spend all day on the phone to farmers basically teaching them how to use the software so that they could get their deliveries into into these big logistics centres, and again that was I was like, I'm in the right place. I'm, I'm in a software company I'm not writing software and that's what I want to do, but I'm kind of I'm closer to doing this thing and I kept being worried that if I go to university now, I can have to wait three or four years before I actually can do this. And I was kind of really wanted to not so eager to get started. And so I ended up just applying for more things and applying for more things I ended up landing a temp job at the Met Office in the UK right just like the weather forecasting government agency in the UK, which is, it was only about 15 miles from from where I lived, and the placement I got there was in the QA the testing team for the most of their like customer facing products. And again, I was like, right. I'm not I'm still not writing software but again I'm in the right place I'm now in a larger place this is an organisation of like a few thousand people, there's hundreds of software developers here I'm going to be sat in the same room as them, and I'm going to be. I mean, I'm going to be probably annoying them by testing their stuff and finding bugs with it and I don't really know what I'm doing so I'm probably going to be, you know, raising so many bug reports and they're like yeah that's not a bug yeah that's not a bug and you know all those kind of things. I I did that for about a year and I got into that organisation and they have great training schemes and loads of processes for folks that were kind of in that position I was in right I don't necessarily want to go to university, but I want to do this as a career, how do I like make this this route and so when I was in the organisation I was then just like speaking to those people I was like, how do I stay, how do I become a developer, how do I like because I was a temp. I think I was just on like every 30 days like a few days before the end of my contract they would say, Oh, we need you next month, so I'd like get renewed for the next month. So like every month right towards the end of the month, I'd be like, Oh no, do I still have a job, do I have to leave do I you know, I really stay here.

Fabio Rosado

Sounds like a bit scary.

Jacob Tomlinson

Yeah,

Fabio Rosado

because this is something I want to do, but maybe next month, I don't have that job. So, yeah, that must be a bit stressful.

Jacob Tomlinson

So it was yeah it was a hard year that and I you know I was always in the back of my mind I was like I should I have, should I have picked up that university placement and gone and, you know, I would at least be guaranteed three years of being somewhere doing something, but I just, I kept speaking to people and being like, you know, what do I how do I apply for things, what's the process like what's, what are the interviews like how do I fill in a job application in a way that people are gonna take me seriously and things and I got loads of great advice from from people that were, you know, very very nice to me there. And I ended up applying for loads of different things now you know I interviewed for some and was rejected but I was kind of like, I need to, I really want to hang on inside this organisation, while I was working on all the website stuff right building these PHP websites I was ending up running them on, you know Linux servers, kind of as you do with with those kind of websites and I was kind of like, Oh, actually I'm, I'm really enjoying the Linux side of things I'm enjoying managing systems and stuff and so I ended up putting in an application to the Linux support team in our organisation. They were the team that took me right so I managed to get through that and I interviewed and got the job and so I joined the organisation permanently on like a full time contract as a, like a junior sysadmin maintaining Linux systems. So again, I was like, really, I'm happy I'm kind of in I've come in through the IT side rather than the software development side but I'm like really happy doing this stuff I'm enjoying working with these servers. I'm employed properly, and I can learn loads from people so I started down that path right I did my certifications that my red hat certifications my apple support certifications that went through training and scaling up on that side. And a lot of that teams like scripts were done in bash, or there was like a bit of Python and I was quite into python in that by that point and so I was trying to build on top of that and learn more Python and get more involved in it. And there was, there was a bunch of automation around the servers as well so there was like some red hot automation stuff that was puppet, there was all these kind of tools that they were using for managing all these systems and that was that kind of felt like software right you had all these config files you would use git to version control them and check them in and make pull requests and I was I was kind of like getting through all of that stuff. And I was like I do, I do want to be a software developer I'm really enjoying what I'm doing, and I'm no good at it and I'm liking it, but I do want to be a software developer. And so after about two and a half years I think of doing that, that job. There was like an announcement that they were starting this team, there was going to be like a research and development team for the organisation. They wanted people from all around the organisation to apply because they wanted, like in a large organisation like that you tend to have each department is completely separate, and you have software developers and one room you have ops folks and another room, you have all the scientists that are actually, like, the point of the organisation sat in another room right and you have all these people and they're separate and they only communicate via support tickets and things. And so they wanted to build this like multidisciplinary team where they take somebody from each department mix them all together in this team and they would do innovative things I guess I was kind of wanting to do more development stuff I was still wanting to do the OP stuff. I was doing things like going to hackathons, which I hugely recommend. I feel like I've glossed over that a little bit maybe but when I, when I was applying for for that job on the Linux team that I managed to get in the interview, you know they were asking me all these things like how much teamwork experience do you have and how much experience do you have right you know doing this and doing that. And basically every single example I gave was from, not from the like temp jobs that I'd had or my work in my own experience it was all from hackathons that I had been to. I kind of got embarrassed by the interview, they will ask me another question I was I'm really sorry I'm going to give you evidence from this hackathon again and I know it was just a weekend but actually I feel like I was in this team of people and we did, we built some software and we did some awesome stuff.

Fabio Rosado

But either way, working with different teams as well. So that's also shows that you can adapt to different teams so that's also a good thing.

Jacob Tomlinson

Yeah, exactly. This r&d team, kind of came up, and I've been going to these hackathons and things and they approached folks that had been going to these internal hackathons saying oh, you might want to apply for this and kind of signposting over people and I ended up applying for that and getting that so I I did like an internal transfer to this r&d team to basically still be the sysadmin person on that r&d team, but the nature of that team and multidisciplinary teams everybody starts sharing skills, and you work on stuff collaboratively. So I was writing more and more software and, you know, working with like the software developer on the team, who'd come from the software department, like he was teaching me loads of stuff I was teaching him sysadmin stuff, you know that some scientists and mathematicians they will like teach you that was kind of the first point after being in this weather organisation for three and a half years. That was the first point I started learning about how the weather really works and how they predict the weather and build these systems because I'd only ever been supporting them. So you know I was in this great team I was learning all of these things. One of the big bits of research that team was doing was should the organisation stop managing their own data centre and should they move to cloud computing. So I spent loads of time learning AWS and working out, you know, the team was using it kind of as a trial run see if anybody else should use it and so we did a bunch of stuff building, big systems on AWS, to kind of replicate some of the internal systems just to see whether it work and whether it would scale and whether what the learning curve was like, and I was in that team for about four years altogether. And so I ended up through that kind of progressing from being a sysadmin, and through to being a software developer that does a lot of cloud infrastructure stuff, you know, the kind of things that maybe a Solutions Architect would do in an organisation, but they're kind of like, learn problems that people are having and then, and then figure out right here's how we could, we could design some infrastructure with a database and some web servers and some app servers and you connect them together like this, you get somebody to write some software like this and here's a quick prototype that I threw together and I was kind of filling filling that role, one of the one of the things that that team decided early on is that the public side, like the organisations like that often have a public and private side so part of the organisation will take in taxpayers money to pay for services that kind of for the public goods. So just the weather forecasts that you often just see on the benefits website, you get that for free, because it's paid for by taxpayers money and all the weather generation is done like that. But there's also like a private side so if you're an airport and you want something really bespoke or really specific like there was a project that I worked on at one point which was for de icing planes right so airports a very specialist forecast for. Should we do ice planes or not and how much de-icer Should we buy months in advance because you know that there was similar things for like councils as well they would buy salt for gritting the roads months in advance and they'd be trying to work on long term forecasts for how much salt should we stockpile as a add all of those were kind of paid services like the airports or pay the met office. So that was like the private side, but the team that I was in was completely on this public side, kind of working with, with public services. And so we decided that all the software that we wrote would be open source, and that was that was awesome. I've been playing with open source software already and kind of working on some things. And we just decided right everything we're going to do we're going to do on GitHub. This is all research this is all experimentation and if anybody else picks up and uses it and turns it into a product, good for them. Hopefully people in our organisation will pick it up and turn it into products and that's good for us and kind of had that mindset so we we worked a lot with open source software we built a lot of open source software.

Fabio Rosado

Was it how you sort of got more into open source, you said that you already were contributing or into open source.

Jacob Tomlinson

Yeah, I guess I mean I'd, I'd already started doing some pieces, a lot of the hackathons I've been to like some of the rules that those hackathons have the NASA Space Apps Challenge is the main one that I've like participated in and organised events for the past. More recently, like they have judging and you can win prizes for the things you build in the hackathon, but one of the conditions of you being like eligible for a prize is that you have to open source whatever you've worked on. And so I had already kind of built some stuff and put it on GitHub and I had kind of, you know, shown these things. I also I managed to go to the Mozilla festival a few times in London, which was like an excellent event where they were very positive about open source and, you know, these kind of things. So it's kind of getting into that world and that ecosystem. So, when this team said, you know, we're starting this team, we're just going to be building open source software. I was like Oh great, I'll go and it's just a great opportunity for me to do more open source. There was actually another team in the organisation that was doing open source quite a lot already. And they were quite public facing so I felt like I learned quite a lot from them and the tools that they were building

Fabio Rosado

I was going to say and that team when you were saying that it seems brilliant because you're all sharing your skills and you all evolving together, it seems. Brilliant. And I have to say, I love that you said that you were going way back. You were in a, in a wedding, and you talk with someone that someone told you how you can get started. And in my case, I always wanted to do something with computers, and I always wanted to work with computers. My dad, he was a photographer for weddings and actually met someone that was a. He wasn't a developer he used to build computers, and he had his own company just building desktops and things like that. And he said, Okay, so if you want to get started and learning how to code, you have to instal Linux and he gave me a Linux CD, and he said, this is for free you can get started if you need any help, just give me a call and I can help you. And I was like, brilliant, but at the time I didn't have internet, and, you know, this was, I was 14. So, for you to look for drivers and all this stuff. If you didn't have internet, it was almost impossible to get things working properly. But that was also my, my sort of beginning on development, you know, and going back to open source. The first time I heard you was on the podcasts that you've done when you're talking about opsdroid. And you, you finish off the episode saying well if anyone wants to contribute, I'll be more than happy to give you a hand, which, after the whole episode I was like, you know, this project seems so cool. And at that time I was already past the whole, doing tutorials and more tutorials and more tutorials, and I want to do something with chat bots, when I, when I go to the your, your interview or your, your episodes like this is just brilliant. This is something I want to do. I remember I was on Portugal I was on holidays. And I wrote the name, and I said, when I get home, I will look for the GitHub account I will try and that's how I started it as well. And I have to say, you'll see me from pretty much nothing to to now and even though we don't speak that much outside opsdroid. I still kind of see you as my mentor because the things that I've grew up with. It's because of you, you know, and the whole just making a proper git commit. You probably remember the first time I contributed to opsdroid, it was opening, lots of prs and make a mess of the commit and stuff like that.

Jacob Tomlinson

Yeah, but that's that's the beginning right I mean, thank you for saying all of those things is very kind of you I very much enjoy working with you on opsdroid, it's been really, it's been really great watching you kind of grow I guess we're kind of getting, like I'm kind of going through my, my thing in, in order right and I were basically getting up to the opsdroid point right as I was working in this this team. We're doing open source software stuff. And I was trying to automate a bunch of stuff because there was only like nine of us in the group or something and we were trying to build these big systems and I just needed to automate things. So I was trying to do more stuff with chat bots to automate things, and I ended up in my spare time, starting like I was, I was using Hubot. Right, which, which is this JavaScript oh it was a CoffeeScript implementation of a chat bot that GitHub produced. I had a few issues with that and I was kind of getting frustrated I didn't like that it was in CoffeeScript I, I was right trying to write JavaScript for it but you could mix them but it all the documentation was in CoffeeScript and I just had a genuinely bad experience. I was writing loads of Python. And I was like, right, I'm gonna build a new chat bot framework, that is, you know, completely written in Python, kind of does things the way I want one of the things I really wanted to do is get away from people treating chat bots like a command line, kind of in your chat, which is a pretty standard thing right as you build up command line like syntax and there are like frameworks for doing that kind of thing. But I wanted something that was like no I want to speak English to this thing and I want it to understand me and do the right the right thing. And part of the research group was trying to understand language is a big part of communicating the weather is understanding language and how people speak and interpret things and we wanted to build chatbots for people asking what the weather was and all that kind of stuff right so I was getting very into these things, and I was like right I open source communities that I'm part of and I'm learning a lot from home assistant is a big one right which is a big home automation Python framework, which is excellent. I was like, I want to build my own thing, and I'd started loads of projects I felt loads of things, I was like right I want to build a thing that is a piece of software but I want it to be a community. I don't want it to be all down to me, because I'll get bored and forget about it and move on and do something else I want other people to come and help me. So I tried to put this project together in a way where the instructions are clear on how you contribute the issues are well written and there's kind of a clear path. And instead of writing code I would try and write issues and hope that somebody else would come and pick up an issue, and basically do what I told them to do in the issue but it would be somebody would do something for me which is useful, they would learn something, and also hopefully they would take ownership of it and look after it into the future so that when other people find bugs I can be like, Oh, I didn't write that somebody wrote that. I think I kind of push that off and so yeah I started doing this for a while and I had them podcast reached out to me and say you know you want to come on and talk about opsdroid. And I was like, I will. I would love to talk about opsdroid I've got all these ideas about opsdroid but I really want to try and get across that I want people to come and join in, join in and help me and stuff. So I did this interview I said, you know, I'd be really grateful to come and work. I think you messaged me like the next day or a few days later, after after I'd gone out and you kind of said something like, you know, I heard you on the podcast I'd really liked help and I was like, Oh, that's great. I really really hope that this guy does do stuff, and then you know you started putting in some pull requests and I was like this is excellent. There's room for improvement but I also have no idea what I'm doing and I'm just trying to figure out, I'm trying to figure out how to run a project like this because I've contributed to a few things. And there was you trying to learn how to contribute to a project like this, I was like, I feel like I can, I can help you. I'd much rather spend my time helping you do this stuff and then you keep doing stuff, rather than than me just doing stuff on my own and so yeah we've had like a bunch of back and forth on on GitHub over that and then, you know, few like a few people kind of came in, and were contributing. But you kept coming back and kept coming back, which was just like I found that really exciting as running this project I was like, ah, I've like I've hooked somebody, they're like invested in this project, they like care about this thing you know in the same way that I care about this thing, and they want it to be better. And then you know it's just been so much and you, you kind of grow through the various stages of running open source projects.

There's a great project that my, my old boss I used to work for a guy called Matt Rocklin who used to work for Conda started dask and a bunch of things he's going on, start his own company now called coiled, which is for like scaling out data science workflows, using dask which is great, but he writes, really good blog posts, and one of them that he wrote a while back, was the various roles of open source, people in open source, and he's kind of writing about contributors and reviewers and maintainers and like the different things that each person does and some of the like short definitions of that is contributors come along, either because they want to learn something. And so they want to kind of write some code to do something for a project, they don't have their own project or want to write something, do something, or are a user of a project and they want something something's missing or something's broken. And so he adds that thing to the project, but the contributors are generally very focused on themselves right they're either developing themselves and improving themselves or they're fixing something for themselves and that's kind of it and that's great. We love contributors we want lots of people to come and do that on all the projects I work on just because then it becomes the best thing that it, it can be and suit people because, you know, if somebody comes along and says I want this feature, there's a good chance lots of other people want that feature as well and if they're willing to add it, it makes the thing more valuable. But then as you kind of get involved in a project and invested in the project. You also get folks that review right so they look at other people's contributions, even if they don't have like the power to do anything they can look at other people's contributions and say, Yes, that would be a good thing we should add this and they like, add a plus one or a thumbs up kind of thing to the pull request and say, you know, or they might say, Oh, you've done something wrong here or you could fix this here and I think there's more chance of it getting merged if you change this or, you know, they kind of help people along, and I think you started doing that in opsdroid, pretty quickly right after adding your own pull requests. You've kind of started speaking to other people on their pull request and helping them and, and I think I feel like you had the same kind of thing where you were in this position where you were trying to learn and you're trying to get started and you're trying to do stuff and you can see these other people who are doing, trying to do the same thing. And you'd maybe worked on a piece of code, a couple of times and you knew a bit about it and you saw somebody else do something and you're like, ah, I can help you. You're me from like two months ago, let me help you do this thing right and you can't do that so you're reviewing other people's code and things which is great. It took some of the pressure off me. In doing that kind of thing. And then, I think. I always wanted to get to the point where I was not the only person that could merge code into opsdroid, and so I was really on the lookout for somebody to start doing that. and I kind of designed things in a way that I wanted to be really strict about tests I wanted to be really strict about coverage. I wanted to be really strict about documentation, kind of write all this up, put in, ci and testing and GitHub for this stuff because then I would feel more comfortable handing the reins over to somebody else. I was like, Look, you can merge whatever you want, as long as all these ticks go green within the project, it kind of gave me that it was like I can I can more safely hand my baby over to somebody else if I've kind of set some set some rules. And so yeah I remember saying to you like would you like to, would you like permission, you're doing great stuff, you're kind of going on people's pull requests and saying this is great, like would you like the ability to click that button as well. And you know so I upgraded you collaborator and you since then probably merged more pull requests than I have basically since the day I've gave you these permissions.

Fabio Rosado

Maybe smaller ones!

Jacob Tomlinson

You tend to deal with all automated ones right like is excellent. But that's that's been really great watching that project grow it's kind of helped me grow as a maintainer of this project, and it's just been excellent watching you go from somebody that accidentally opens multiple pull requests, because it's not clear how to push new commits onto a branch when you're first starting through to somebody that's like basically every time I see somebody open multiple pull requests and you help them is like I feel like this has kind of come around.

Fabio Rosado

Yeah.

Jacob Tomlinson

Full circle right? like you're, you're, you're fixing that thing and helping folks, which is just, you know, it's just excellent.

Fabio Rosado

It's funny that when when you asked me if I wanted to help you with it think I took a good five minutes just looking at the message like. Did he sent that to me? Really?

Jacob Tomlinson

And then I was probably bouncing up and down the walls, really happy, because like you said. I think this whole four years that I've been learning how to code. Opsdroid is the one that I've been contributing constantly. And in a way, it's sort of like my baby as well. Because I seen that contributing was the thing that really helped me grow more and see how you write code how other contributors write code and learn things that say okay I didn't know that you could do this or I didn't know you could contribute it or writes, your code like this, and even with basic things like this list comprehension, I never really got into that and then I saw you use that on, on one of the prs okay so this is how it works. Yeah, that makes a lot of sense. And then I remember my first Hacktoberfest. I tried to contribute to different projects as well. And I remember I brought some things, one of them was the contextlib suppress to opsdroid, because we're doing a lot of try and pass and say hey I just learned this cool trick from a different project. Maybe we should do the same thing in opsdroid and you were like yeah that sounds good, because we will refactor refactor the code and it will be perfect, like, Okay, my, my opinion was good. All right, cool.

That's one of the things right like I, I also learned about contextlib suppress my you asking right like I hadn't really used it. I think I had seen it maybe a few times but I hadn't really used it. And when you said we should do this. I was like, well, much nicer than doing try except some task, you know you're condensing that that block down, and you're kind of being more. I know Python got the whole thing about ask forgiveness not. permission and all of that, but when suppressed you're kind of explicitly saying, I expect this to fail, don't worry about it if it does fail. And so I learned something through you learning something which was great, but also from my point of view. In order for you to do that. That meant that you had to go through the whole code base, find every time that i i or somebody else had done, you know, except pass and replace all of those which means your fingerprints are now all over all of this code. So the next time a bug comes up in this area, you know more you know what that code is trying to do because you had to understand what that exception was doing. And so there's just kind of increasing the bus factor and increasing the knowledge in various areas of this code that I you know initially wrote on my own. And so that's my point of view, it just makes me feel more more safe because I, I'm really lucky that I since getting that job at the Met Office, working on open source software, you know, for the last five years, through into my time at Nvidia I write open source software for a living, where I'm like really fortunate to be in that position. I'm really happy that I'm able to do that. But it means that I have less energy for my own open source projects. Right. And so, work on opsdroid and other things kind of in waves and it depends whatever my work life is doing basically, if I'm writing loads and loads of software at work and doing things, then I probably do less or nothing on my personal projects, but I have this like compulsion and a need to write software. So if my work starts going in other directions like if I, if it's conference season and I'm starting to prepare loads of talks and spending lots of time writing abstracts and not writing so much code more writing words, I start itching to write code and so in the evening I might work on opsdroid to like balance out and make sure that I've, you know, committed some stuff because that's just what makes me happy. And so having other people involved like you, means that when I, when I'm busy at work doing code stuff and I completely ignore opsdroid for a few weeks or whatever. I know it's like in safe hands and somebody else is looking after it and if people raise issues I don't have to respond immediately and stuff which is great.

Fabio Rosado

It's funny to say that I remember listening to one of the podcasts, many years ago. I think this was when I was starting, and one of the host was saying exactly what you're saying that sometimes you feel just so mentally drained, because you're working on some specific thing at work that you just want to get home, maybe boot up your ps4 or whatever, and just play a game to do everything but think. And I understand that completely even, you know, I work as a flight attendant so sometimes I might do a whole week of 50 something hours because I'm doing all the extra long flights, and I sit down and like I really want to code, but I just don't have the energy for that anymore. And in a way, it seems that sometimes we don't work on opsdroid that much but then someone comes in and say oh I want to work on this I want to work on that. We are recently, going from unit test to pytests so there's a few people wanting to help and that's, that's great, that's when we both are not able to dedicate 100% to opioid murder someone at least is trying to help so that's good. I wanted to ask you, you are also working fully remote as well. How does your day look like at work.

Jacob Tomlinson

Sure. So I guess I've been remote for the last, just over a year now since I joined Nvidia right so i, one of the open source projects, I was working on at the Met Office, its called dask, which was like a tool for scaling out Python. Go dask joined Nvidia because Nvidia was starting to build software on on top of dask, and as well as one of the folks that was regularly contributing to dask they asked me to also go and join Nvidia which was really exciting to do that but that one of the huge factors for me was going from an office, there's 2000 people in the big building and I'm in a team of 10 and you know we spend every day together and I I built some amazing friendships in that place and being part of an institution like that it's like being part of a school you know it's kind of that kind of thing like there's all these people you know you see them every day. And so one of the big things was like do I do I go and join this organisation where I'm going to be sat on my own all day every day. That that was like a huge thing and I was unsure about it and I was talking to lots of people I was trying to find the people that work remotely and get lots of advice and things, and ultimately I decided to join because it was like a really exciting opportunity but working on my own, is a challenge, and I'd like to do certain things to try and mitigate the, the issues with that right so i, the way I do things at the moment, I got two small kids, which is another reason why I don't have as much time for opsdroid as I used to and open source projects, my oldest is just coming up two my youngest is about six months. And so, mornings are hard because they're both small and they have very different needs at the moment. So we wake up from the moment we wake up is just kind of general chaos until about 9:30. And so, you know, we just we just deal with all of that and about 9:30 I can get into my office so I'm in my in my office at the moment this is where I work every day, it's actually just the back half of my garage, we moved here a few months ago. So I need to actually, I just painted everything white just to try and make it a bit nicer but I'm where I'm going to actually do it I'll probably right but, um, and plaster and everything but. So I come out here about 9:30 and the beginning of my day generally is is catching up with everything that's happened asynchronously because I work as part of a team that's all around the world. The bulk of my colleagues are in the US, like, about half of Nvidia staff are in California. And then the other half are kind of all around the world, either in various offices or working from home. So there's a lot of things that happen when I'm not at my desk. So I kind of get in I have loads of emails I have loads of slack, I have loads of GitHub, I should just kind of come in and absorb everything so I kind of have like half an hour at least to just sit and absorb everything that's happened, kind of look at all my open source projects that I'm part of like the various tasks or projects and things, and have a look at the issues and prs that have been raised and try and try and catch up so that maybe by mid morning I'm like, up to speed with what is what is happening and what's going on. And then in the mornings, it tends to be like my quiet time because my American colleagues have not started work yet. So there's like a few Europeans that I, you know, can speak to and things. But that's my time... generally like my, my solid focus time where I know I'm not gonna be disturbed and I'm not gonna be interrupted. If I have like a big pull request or something that I want to work on I'll like pick that up and put my headphones on and try and really, really focus on on that kind of thing. Through until lunchtime. And then, tend to try like make a point of leaving my office for like a good hour at lunchtime. Partly just because I currently don't have any windows in here as well, because it's a garbage so I need to I need to fix that at some point but it's hard sitting in a dark room all day every day and so I have to, I have to make a point of going outside, go for a walk. Sometimes I've gone have lunch with my wife is probably in the house with the children or maybe they've, you know, I mean, obviously the whole world has exploded for the last five months so they haven't really gone anywhere but, you know, in theory, they could be out. But things are a bit more normal and so in those situations I might try and do something like go for a walk or or whatever. I used to swim quite a lot. Is harder with kids and locked down and everything but more recently I've been slowly getting back into, into swimming in like an outdoor pool where you can kind of stay away from folks. And that, that helps I tend to find like. I think a lot. I like swimming fair like thinking through a hard problem quite often there so if I'm working on something in the morning that's challenging. I quite enjoy something, because I can really think it through it's quiet it's almost like being in your own little isolation booth right. Just, just all you've got to do is think so, I tend to do to do that and then I swim a couple of times a week, and then I come back in the afternoon, and around that point. My like East Coast colleagues are starting to come online so I might start getting messages and things might start picking up at that point. And I'll probably like switch tactics then from maybe working on something longer and harder. It depends on the scale of what I'm working on right but often I'll switch to something where I'm doing like maintenance or small pull requests or something that I need to work with somebody else on. And so maybe I'll send somebody a message when I get back in, from lunch and say, you know, should we meet in a video chat and half an hour or we can pair program through a problem or, you know, should we pick up the thing we're working on last time or say go on for like a couple of hours and then generally I think they just because I work in in this team is pretty distributed. I you know a lot of meetings happen late afternoon for me and I think that was just to kind of. So that is the there's like an hour at the end of the day where California, and Europe, like overlap just slightly. And so a lot of meetings tend to be targeted for that time, just so you can get as many people on a call as possible. So the end of my day tends to wrap up with meetings, and then you know I normally Leave, leave my office between kind of half five six o'clock, something like that, just because I tend to start start later. And so yeah that's that's like generally like a pretty normal day for me, I would say.

Fabio Rosado

It sounds very interesting and I think you're very smart, that you have that mentality of okay I actually need to leave the office for a while, because I think when we work remotely, it's very easy for us to just sit down and just keep at it on a problem or two or just the next task next task. And then when you realise you haven't really left home or you haven't left your desk for a whole day. So it's good that you are, you're doing that. And like you said sometimes when I'm stuck on something, I tend to go for a run and that helps me as well because it's one of the things that you don't really need to pay much attention you just have to run, which is the same thing for you when you are swimming you just do it and you can let your brain just Munch over all the problems that you have, and usually get the solutions for it. Do you have any sort of way to manage your time. Do you use like Trello boards or.

Jacob Tomlinson

Yeah, it's so I used to do list as like a to do list manager, and that tends to be, like, I try and make sure everything goes on there so I used to be like a big Inbox Zero Google inbox kind of person I used to prefer that. But then, you know, they took away Google inbox.

Fabio Rosado

Yeah,

Jacob Tomlinson

which made me sad. And, you know, also I've gone from when I when I was in the r&d team, we were completely in control of our own it so we decided to go with the Google suite of tools for all our email and everything. And that's my preference, but now switching back to a large organisation, I've kind of gone back to the Microsoft tooling and I just find it less like I don't really like using Outlook to manage my manage my time I just kind of use that as a maybe a place for calendar and email, but as a way of working out things I have to do. I like having something else so I tend to use to do lists. You know I've played around with like doing the Pomodoro Technique and all that kind of stuff but I think because, because I'm kind of working with other people in different time zones I need to be reasonably flexible to whatever's going on, kind of at the time and as maybe slightly harder to predict, you know, I've got these big blocks of time for doing this or that. Also just with having children and the interruptions that come with with working from home with with young children around and stuff. But yeah, I tend to mark things, I try and make sure that everything that goes on my to do list has a deadline. Even if I know that I'm probably going to miss most of those and I'm going to defer them to the future, because I often find if I don't put a deadline at all like, I'll forget about it and it'll drop to the bottom of the list and then that's just that, but often the way that I tend to do things at the moment is I'm usually only working on one or two things at a time, they tend to be large chunks of work. And so each of the things I'm working on is probably a piece of open source software and so we were using GitHub and GitHub issues and project boards and those kind of things within within GitHub, for managing individual things. So, you know, the dask community users has like a maintenance project board, which you can find if you go to the dask GitHub. And that just tends to be. We just have like a big column of these are things that are like maintenance tasks which are just the things that a contributer probably wouldn't do because they're a bit too specific to the project, and they're also a thing that nobody really wants to do, but we kind of need to do for the health of the project so we'll be fixing some obscure bug or, you know, doing something with the CI or documentation or those kind of things.

Fabio Rosado

That's this like the issue that's on the page, 20 something that no one wants to touch then.

Jacob Tomlinson

Yeah, so we tend to keep these on this list, and then in dask we have like there's about 10 people, I think that kind of are the core dask maintenance team. And so, you know, people do different things. Some people have like one day a week to work on desk. I like for me I'm my default position is that I'm working on dask but occasionally I get asked to do other things so I kind of mostly work on that but but I get bursts of other stuff, whereas other people have the other way around like they have been given one day a week, and they have to fit that in with all their other commitments. Some other people have like, there's somebody on the team she's 50/50, but they do that in, they do like two week sprints in their company, and she'll do two weeks, two Sprint's on and two Sprint's off. So basically once a month she will either the flip to being fully dask or flipped or being not at all. And so, this board is to try and try and manage all these people who are working in different ways right you've got one day a week people you've got most of the week people you've got on and off, people. So like how do you how do you help people manage stuff so we have this board we have things people don't want to touch, and then we tend to each week we meet on a Tuesday and assign things nobody just says right this week I'm gonna try and do this, this and this, and then they'll fit that in however they're going to fit that in in the week. And then the next week they kind of come back and say, I didn't manage to do that so we tend to just have a couple of lists, just like things that need doing things that we've said we're doing and things that are done and so we can kind of track through track through how things are going. So, I tend to use that just because I'm working on that, that most of the time but then I like maintain my own to do list as well of like all the other things I'm trying to try to think about

Fabio Rosado

that makes a lot of sense so it's not entirely an agile environment but sort of is because you still have all these things that you have to work and then all the things that are still left to

Jacob Tomlinson

yeah i think it's it's partly because in open source, you don't have like a dedicated full time team of developers, you might, if you're lucky right but you're probably gonna you're gonna have this mix of people, especially on a large project like dask where we have people from multiple organisations that work on on things you can't you can't enforce a thing you can't say right, we're going to do agile and we're going to do it this way and this person is going to be the scrum master and we're going to have a product owner here and we're going to do a two week sprint and here's the ticket and if you can't, you can't use that stepping too far into how somebody else's company is running. So we kind of have to just put everything up and just say, here's all the things, could you try and do the things in whatever way fits in with your within your job. And so, in the team that I'm in in Nvidia which is called rapids. Rapids is like this, this other open source set of GPU accelerated like data science tools. One of the things that we like are rigid within that is that we have releases every six weeks we have like a code freeze time and we have burn down and we kind of have those principles from, like, an agile Scrum methodology. to kind of keep everybody on track but it's, again it's hard because everybody's different timezones doesn't necessarily work in the same way that you might have if you had a team of 10 developers or if you're a Spotify or you know something where you've got strict controls over over how things are working

Fabio Rosado

Makes sense. Like I told you before we started the talk, I want to keep this under one hour. Because Sunday, is your family day.

Jacob Tomlinson

we probably would have... I probably couldn't go until three other other latest. Alright, we have probably a wrap up time as well.

Fabio Rosado

But this is one question that I always ask the guests, is, if you're looking at a 16 year old Jacob, what is the one piece of advice that you would give him

Jacob Tomlinson

It's a good question. I think it's very easy to like be scared of change, and I'm a generally a person that's scared of change, but basically every time I've made a big change whether that's like moving from like an IT team to the r&d team which is a big move or leaving the organisation completely going to Nvidia as a big move those things. I, I always think it's good if you've been doing the same thing for a few years to like have some kind of change try and do something different, maybe move internally or swap around your role a bit or something like that. And that kind of is always really really scary for me, and it took me a while to become comfortable with that and I think I would maybe go back and say, as long as you try really hard, and you're continually doing things. It's okay to like change and do different things and try and learn different things. You don't have to like set yourself... I think when I when I became a sysadmin I was like right this is it I'm, I'm on the sysadmin path and I'm gonna do it forever. And then, when when an opportunity for change came up it was scary and I you know very nearly turned it down and I feel like I've done that a couple of times. So yeah, I would definitely say that, like, I always think the whole university thing is like a big thing I always, I do wonder like looking back, would I have done anything differently if I knew what I do now like and I think maybe I work with a bunch of people I'm in a team with folks with PhDs in computer science and degrees in computer science, and other folks without degrees or with unrelated degrees right to the field, and it takes all of those kinds of people to build like a successful software team and that's something that I think I've had to come to terms with and I've often felt a lot of a lot of imposter syndrome I guess with being like, well, now I don't have a degree Should I really be sat this table Should I really be here. And I think that's just always been been a scary thing and I you know I made the decisions that I made, but I think it's kind of reinforced that you can you can take loads of different routes and you don't have to have a computer science degree to be a software engineer, you know, and you don't have to have those things to work for a large company is just, it's hard, right, because a lot of companies, if they put out a job either and they get 100 people apply. The easiest way to cut that list in half is to just filter by what degree people have. And when you're hiring it's just hard right you only have so many hours to interview people and go through job applications and stuff. And so a really quick first card is to cut out everybody without a computer science degree. If you have too many applicants. And that just makes things hard when you're not when you have one. So I always feel like every every job that I've moved into is because I've taken a lot of time to get to know people build up my, my network and build up folks that, you know, kind of know me and know my skill set and then I can apply for something, and be more sure that I might get an interview because somebody's given me a tip off that they're looking for somebody, similar to what you can do and, you know, here's how you can you know we've talked a lot kind of offline about how to fill out job applications and interview processes and things recently,

Fabio Rosado

and you gave me a lot of great tips.

Jacob Tomlinson

I'm glad has been useful for you.

But that's I guess that's one thing that like, you know, I've gone from being this person applying like frantically trying to cling on to this organisation being in a 30 day rolling contract filling in all the job applications and probably doing a terrible job of that through to being somebody that is trying to write a job advert, and put it out, and then you get people apply, and you have to go through and review all of those job applications, and then, you know, once you've got your shortlist you have to interview people sitting on that other side of the table. And it's like, it's a whole different world and it's really like when you've not done that. It's just this massive revelation all of a sudden, loads of things click into place and it just makes you think like, oh no every job application I've ever sent, has been terrible, because it's not what I want. Right now you know I want other things. So I would try and go back maybe and give myself some advice about, you know, I have like a very maybe pessimistic view on this but when, when you're trying to hire someone if you're in a team and somebody leaves you you know kind of below well roughly we want that person back but maybe we're going to sit down and we're going to talk about what are we missing as a team, what, what do we need what, you know, are there any skills missing Are there any like qualities missing from from the kind of person we want in the team. And then you have to sit down in front of a blank page and be like, right, I've got a write a job advert, to try and find this person so what do I put in the different boxes and so you go through and you write this kind of thing. And that takes a lot of effort you might spend a couple of days trying to put together a good job advert if you if you're really serious about finding somebody like, there's going to fit into your team. And then, that probably goes to some HR department and you might not hear anything for a month, especially in government organisations right these are super long processes. So you write this job advert goes off somewhere. And then, like oh I have review applications on this date. And then on this date, you get sent like 30 applications for this job advert that you wrote two months ago. And you're like, probably busy at that point your attention has moved on to something else and you're like right I just need to get through this list I need to work out who to interview. So what I'm going to do is I'm going to take the job advert, I probably wrote a bullet point of like eight things that I wanted. I'm just going to read each one and be like, as soon as I find something that takes a bullet point I'm going to like ticket. And then every you know I'm going to go through these people and then be like right how many boxes did this person take, and then you basically do the same in the interview right you're like, probably, the day before you start interviewing or maybe the week before you start interviewing you're like, oh man, I've got to sit with somebody for an hour and ask them questions What do I ask them how do I figure out for the right person. And again, you go back to that job advert that you wrote because you've put loads of effort into it and you're like, well, I'm just gonna ask them questions to answer the things that I wrote on the job advert in government. It was quite rigid you had to like come up with the questions beforehand and you have to give that to HR and you have to only ask those questions and things and it was very, you know, it was very fair, compared to maybe some, some other companies but um yeah you kind of go through this and again like writing a job application, reviewing job applications and interviewing people is like a chore right like it's a hard task, who you want as a good person you just want to find a good person, but you don't really want to do those things to go through that process or, you know, maybe maybe there are people out there that enjoy these things right but for me it was kind of I don't really want to do this I'm excited about doing this I'm excited about finding a cool person but I don't really want to do all of the work that goes with it. And so every time somebody. Write a job application where they basically taken the four or eight bullet points that I'd written, and they'd written like a paragraph for each one where they were literally like you said this. I once did that. And here's an example, and I'm quite good at it. It was like, thank you. Thank you so much. I don't have to dig through your job application to find that thing that I was looking for you've literally just said, here's the thing, and you can just tick it off and then you're, then you're fine. And maybe, a lot of organisations have like scoring things it's like they score 1 to 5 on how well you tick this box and things and so it's like, you know, the folks that have gone out of their way to craft their application and their interview so that to your advert and your, your thing. It's just made me really rethink how I would apply for anything and as well. You know, if it feels weird initially if you write a job advert we're like, well, I'm just gonna, they've written four bullet points so I'm gonna write four paragraphs and they're going to be really the thing that they've said, it feels like you're being too direct but you're really not being on the other side of the table and you're really not being too direct, you're really you're doing them a favour and you're helping them out because they're probably quite busy. And so, I would go back and basically give myself a load of like job application and interviewing advice.

Fabio Rosado

It's. That's very good. And, you know, when he told me that you should look what the advert is and structure your CV for all the things that they're asking, I think, ever since you told me that I've been sort of preaching the same thing, saying, Jacob told me this, and it makes a lot of sense. You should do the same thing. And that bit is sort of your foot in the door right, if you don't have that CS degree you have to stand out somehow. So, either be doing conferences, meetups, your networking, but also craft your CV, and your cover letter to the job that you want. I know that sometimes it's hard because sometimes you see some companies then you say, I would love to work for this company. You put so much effort on that application and then you get rejected, and you'd be like, man. Okay, so next one I would just add all of it. And then, looking back, and Eva, she mentioned that on her on her episode, she said, I only applied to companies that I wanted. So she had the time to craft her CV how she wanted. And that helps her a lot to get that foot in the door and start as a web developer. The thing I'm most afraid of. And this might be really silly but is this live coding interviews, because I know how to write code not sure if I know how to write code well but I know how to write code, and I know how to just... when I'm streaming, I can just stream and then talk about what I'm trying to do and stuff like that and that comes up naturally after a while. But when you're in the interview and they give you this hacker rank challenge, and you have to solve this thing. I was never very good at these kind of challenges. And unfortunately that's one of the best way to test someone right is give this challenge and then see how well they do. I guess the only way for you to do it is by practice.

Jacob Tomlinson

I think the guy on YouTube whose name I can't remember now but he's got some videos if you search for something like how to pass, how to pass a Google job interview because he's an ex Google employee, and he's done a lot of videos of like here's what the questions are like and here's how the things are right and he basically just says, practice, practice, practice, go on like coderdojo and like all these kind of websites and just keep doing these things because you're right that it is the easiest way to test someone is to give them a test like this but also is like the worst way to test someone. It's like the lazy way to test someone right and I've always tried when I've done job applications in the past I always want to test somebody on something, but I tend not to do it in the interview. And so, it'll either be like you know can you prepare this in advance because I've worked in a multidisciplinary team I've been involved in hiring more than just software developers, and I, one of the things I did was hiring a designer. I did a few rounds of hiring a designer, it took us a lot of time of find one that we wanted but seeing how design interviews go is like totally different to how a software interview would go, because a lot of it is around like, bring your portfolio with you and talk us through all of the things in your portfolio. And so it's like you're not putting somebody on the spot to do something. and so and so that was that was great and then occasionally. A couple of things we did experiment with which I would love to do more of really is, we would take somebody would have like a formal sit down interview but then be like right. We're going to go to our office for an hour, and we're going to work, and you're going to hang out and help us, and do a do a bit of work with us and see and that would that would be a far better test rather than giving them like a fake exam question kind of problem, though, there has been like a much better thing, and you're testing for things that are not you know you're testing for like can this person think on their feet can this person

do this or do that, and you do kind of open yourself up to like you know people that are really good can do these things when you ask them to people that are also very good at bullshitting can do these things when you ask them to. So you're kind of taking a chance now right of like you know you could potentially get they get the wrong kind of person that but I remember there's a book that we were a bit obsessed with when we started this group called joy Inc. which is all about this company in the States. That was kind of trying to redesign the way that their companies work so it's a great like workbook. One of the things they were saying is that their preferred hiring technique is to basically pay somebody for a day's work and be like, you know, our daily rate is x, we'll pay you for a day come in and work we'll give you a task, we want you to work for it at the end, you know, you'll come to lunch with us and hang out and we'll treat you like a contractor or a consultant for the day. And then at the end of the day, we'll see whether we like what you did. and if we like what you did then you could stay and have a real job. If not, we'll give you a day's pay, and we'll say thank you very much and that's the end of it. And so, as an applicant, you're going to get a day's paid work at the very least, and so we tried doing some stuff a bit like that, and that was fun and I would encourage more of that and some companies do that but I would, if you ever see on a job application or something that they do something like that I think that would be an excellent way to to apply for things but is in terms of doing coding exercises is like I, I, personally, only I write loads of different programming languages, just out of necessity, you know, for various different reasons, but Python is the only one that I can kind of write without any documentation open in front of me. And, you know, I, for small things I often write code without running it and write a test and let ci, tell me whether it works or not. And that's, it's taking me a long time to get to that point, but if I switch to JavaScript which I write much less of or go, or c++ or anything like that, I have to have documentation open I have to copy and paste stuff. I have to Google like this function in Python, what is the JavaScript equivalent because I can't remember or, you know, stupid things like appending to a list I can append to a list in Python easily but JavaScript, I can never remember, even though I do it all the time right and so at the beginning, I was like that for everything. Now I'm like that for everything except Python. And so, that's fine. And I think, like, folks hiring people should accept and acknowledge that that's true right like maybe you're super comfortable in something but you're only gonna be able to hire a senior developer or like, you know, a principal engineer or something, by giving them a test, without the internet or without, you know, really focusing on any documentation they're gonna need to be able to look stuff up on Stack Overflow they're gonna be able to, you know, they're gonna have to do these things. And so, you know, I'm really not a fan of of coding exercises in interviews, and it's just a downside of the industry that they exist, and I think the only way to get around them is to practice.

I've again I feel extremely lucky and privileged that I've never really had to do. Like any intense, I have I have done for for job applications I have done coding interviews like that none. I've actually, I think the only couple of times I've done it I either didn't get the job or turned it down right but everything I have done. I didn't have to lower it when I got my job at Nvidia, because I'd already been working on this open source project that they cared about. They were like, we're not gonna do a technical interview because we've seen your work we see you do this kind of stuff we know we want you to do that kind of thing. There are more just testing my work ethic and the ability to work as a team and other kinds of soft stuff that comes with with being in an organisation. And like the core values like Nvidia cares, lots about performance, and I think often when you're doing stuff, you get a choice between performance or, it's easy to work on an open source I'm always like, I would much rather write code that's slower that anybody can contribute to. And you know, I know you shouldn't like copy and paste code and repeat yourself but at the same time. If you try and make things too dry then then you're gonna end up with all this indirection and things can be really hard to work on. So I'd much rather go more on the side of keeping things simple and a little bit slower. Whereas like Nvidia as a company that cares a lot about hardware and making things go fast and benchmarking, they're much more on the side of, you know, write some code, it doesn't matter if anybody can read it as long as it's faster than the code that they used to exist and that was kind of one of those things that they were asking me about and I was honest with them in the interview and they were like okay well, you know, you need to make certain you need to make the right decisions at the right time like if if you're if you're working on low level code, then performance is the utmost thing and, you know, how would you measure that how would you profile code and I think that was the things they cared about is they care about performance and so they wanted to make sure that I could care about performance. Even though I was quite honest about the fact that I care less about performance and more about readability.

Fabio Rosado

you know, I had a time before I so contributed to opsdroid so it was the time between doing tutorials and start doing coding challenges because I thought this might be a good way to learn. And then, maybe it was a year or a year and a half after a started contributing to opsdroid. I went back to see some of my coding challenges solutions and I look at that I'm like, did I really came up with a solution because it looks very good I don't remember doing that. And that was just an experience of doing them, and I was doing, maybe five to 10 challenges every day. And after a while you just know how to read the problem and just get it working how the challenge does, but I also felt that great. I know how to beat this challenge but I wanted to build projects and I had no idea how to build a project, because I know how to play around with the language and stuff like that but, building a project is completely different. So I think following your suggestion of what you've read is paying someone for a day's work, and just see if they can adapt to the team. I think if companies did that, and they said we're not going to pay you, if you can come, come. I think lots of people, they'll be more than happy to just give that a try as well, because, yeah, then you can see as well. How is it working in that environment. How do you work when you have to start with a new codebase that you have no idea what's happening. And it might be a bit easier to assess someone then, or I think maybe the other route is sending a coding challenge and say, Okay, this is your challenge and or a problem, and you have a week or so to do it, it shouldn't take more than three hours or something like that, and then book up another meeting and we'll talk about your solution and any problems you had and stuff like that you are not put on the spot because interviews are really stressful anyway. No, I think no matter how many interviews you do. They are always very stressful. And then when you know that you're being assessed. If you forget something basic in the back of your head you have that little voice saying, Oh man, you're crap, you're not going to get this. This is bad. This is terrible. And then you sort of start sabotaging yourself. So yeah, I think, either the whole week to do a challenge, or come work for one day and see how it is and we'll see how your work, might be like the best way to do it. But...

Jacob Tomlinson

yeah, I think, I mean, giving somebody a week to do a challenge. The only downside to that as like an interviewer as you're like oh what if they get somebody else to do the challenge for them, but you can always overcome that in the interview right it's like we'll just get them to talk through the thing get them to talk through the decisions they made it's not it there is like things you have to think about, but it's not super hard to overcome those, those things right. So yeah I'm definitely like a big fan of all of that, I mean, going back to your question about what advice would I give to myself when I was younger, is I. One thing I struggle with a lot in interviews, is I, when I get nervous I breathe too much right and I start hyperventilating. It means I don't like get into like a full on panic attack but I get into like a position where I'm I run out of breath I'm like talking and I have to take breaths at weird times, and that like you like overrides my ability to think properly right because I'm getting myself like lack of oxygen and running out what's going on, and something that I ended up learning a few years ago now is just a breathing exercise to just really oxygenate yourself in like a good like to like a good appropriate level, and and remember to breathe so I quite often before I have any kind of interview I will like I do this thing where I like breathe in for four seconds, hold my breath for four seconds and breathe out for two seconds, and I just sit there kind of counting around around, I do before public speaking as well right because I always do if I get up on a stage in front of those people. Okay, never mind do this right like I'm just talking to you on zoom and I don't really mind that there's like other people, but when you stood up on the stage in front of you know 100 people or whatever I,

I end up running out of breath. And so before I'm doing it I sit and do do these breathing exercises and they do them for interviews, because it's yeah you can get yourself really overwhelmed and it's funny sitting on the other side of the table you see somebody come in, they're really nervous, and they get themselves in that state, and and and all you want to do is be like, it's okay, it's okay all like before you've come into the room, I want you to come and work with me I don't know who you are. I'm really hoping that you're like, great, and that you can come work for me. And if you're not, then that's a shame and maybe you know, hopefully you're gonna find something else that that's good but like, I'm generally rooting for you and I want you to do well and i don't i don't i really don't like seeing people getting stressed or worked up in interviews and so I do everything I can to like put people at ease and relax and, you know, so I maybe go too far the other way right people come in I try and make jokes and like, you know, put people at ease straightaway because it's, it's, interviews, are horrible they're just like a horrible necessary evil of, of getting a job and it's such an unpleasant thing. But is it just seems to be the way that everybody, everybody works it out. I guess that's one of the things I like about open source as well as I've seen loads of people get jobs through their open source work because they're building something that somebody cares about and they're like well we'll employ you to come and build that thing or oh we like what you're doing here, why don't you come and do something similar for us or whatever and kind of putting yourself out there for open source i think is a great way of doing those things but it. Yeah, you said a minute ago about, people will probably come and work for free for a day in order to go to that interview process and I bet I bet most people would an open source is kind of like that right like lots of people do work for free, just to try and prove that they can do good things, but like everybody's time is valuable and everybody's time everybody should be paid for that time. And I think when you're hiring, like I would I would hate to like try and get free work out of people I would want, you know, as a company with money if you're putting money into hiring someone because you know hiring costs money you have to do job adverts and all that kind of stuff and spend employee time spending a bit of money on some contracting hours is not, you know, I guess, from a legal standpoint I think it. It also means that the company owns whatever was produced that day, rather than the past. Again, complications would be a bit weird forcing them to like open source what they did on that day right like is is I don't know. I guess hackathons do that but. But yes, I'm much more of a fan of these things is partly why I'd like didn't want to go to university and things is I don't, I don't really like exams I don't really like tests, I don't really like interviews, I think they're all imperfect measures of things, and I much prefer to like get out and do stuff and just try and make friends with people and show them that I can do good things and that does does generally worked out for me so far.

Fabio Rosado

I think it definitely paid off. And, you know, because we've been talking for a while now for a few years and I've also seen how much you've progressed in your career, and even in your life because yeah you move you moved house, you have two babies now so it's it's been really, really cool to see that side of you as well. Again, well I don't want to take much more of your time. So, thank you so much for the talk. I'm sure that a lot of people will get a lot of value from this from this talk, and a lot of good things.

Jacob Tomlinson

Yeah Thank you

Fabio Rosado

if people want to get in contact with you. What would be the best place to do so.

Jacob Tomlinson

Twitter is generally the place that I'm, I'm at the most I spent far too much time scrolling through Twitter so yeah so you have any questions or want to get in touch, at me I tend to be able to tweet back and things. I do have a website where I write up blog posts or, you know, if I write a blog. I tend you know because I work on open source projects there's projects sent out blogs, so I sometimes write on there but I try and signpost everything from my from my website I'm trying to take a bit of a leaf out of your. What's your garden analogy?

Fabio Rosado

Digital gardening. Yeah.

Jacob Tomlinson

Digital garden, Yeah. Okay, so I'll be having everything linked from my website, I'm trying to do more of that so you can find more about what I'm doing and working on things from my from my website that will link you up loads of places but yeah if you want to chat to me Twitter's just as the best.

Fabio Rosado

So thank you so much and I hope you have a good Sunday.

Jacob Tomlinson

Right. Thanks Fabio see you.