Tobias and Colin are founders at Caktus Group, a Django consulting shop that has been around since 2007. We discuss changes in Django over that time, Tobias’s work on the Django Ops Team, and leveling up junior engineers.
This podcast does not have any ads or sponsors. To support the show, please consider visiting LearnDjango.com, Button, or Django News.
Will Vincent 0:06
Hello, and welcome to another episode of Django chat, a podcast on the Django web framework. I'm Will Vincent joined by Carlton Gibson. Hi, Carlton. This week, we're joined by Colin Copeland and Tobias McNulty. Welcome both of you.
Colin Copeland 0:17
Tobias McNulty 0:19
Hi, guys. Great to be here.
Carlton Gibson 0:20
Thanks for coming on.
Will Vincent 0:21
So we wanted to have you both on for a long time cactus is a pillar of the Django world Consulting Group. Tobias. You're also on the ops team for Django, which I've been roped into that last couple of years. I'd love to talk about that. But maybe First, we could say, how did you both get into programming? And we'll go from there?
Colin Copeland 0:39
Yeah, I could take a swing at that first. Yeah, I think in into programming to start, I learned HTML early on and built some websites with a few friends and eventually met somebody online, he just was like, an hour away from me. And we became friends and decided that we are just kind of found out that we both had similar interests and wanting to build applications together and started a small Mac application company. It was tiny. We were just in high school. But we built a couple of small, small applications and sold a couple. Not very successful overall. But I think that's kind of where I got started. That was all in, I think, real basic. And, dear,
Will Vincent 1:27
do you recall what type of applications they were? Was it things related to high school life or something for businesses, if you sold them,
Colin Copeland 1:34
we did sell we had a chat application with like a server and a client that was bought by a few businesses to use internally for chatting. And then the rest were fairly, fairly random. There was a bookmarking application and a small game we built. So it was definitely whatever we got kind of interested in, we wanted to build
Carlton Gibson 1:55
the charts like this, like Slack, right? Yes, the head ahead of the curve.
Colin Copeland 2:01
Very simple compared to slack.
Will Vincent 2:03
I think it's interesting what you said about meeting someone online, because I think for people of our generation, so a couple decades in, I found that's pretty common in terms of people who got into programming when they were younger, there wasn't a community, there weren't resources or necessarily easily accessible books. So usually, it was going on IRC or some equivalent and finding someone. And then if you do happen, I just think in San Francisco, when I worked out there, basically everyone had that same experience. They were, they were interested in it, no one around them was an online, they sort of connect with people. So pre pre Facebook and MySpace. But if you're able to do that, you're able to have this power and control over what you do. So I wonder if that's the same. Now? It seems like there's a lot more support and communities out there. So maybe that's not as common, but it feels very common to me for people a couple decades into things as we all are.
Colin Copeland 2:57
Yeah, yeah. Yeah, we we both had similar like fan gaming websites, and then found each other just to that network. And so it was a funny, small world to realize that he just lived. So close in the end, and, and still, yeah, still keep in touch today, which is nice.
Will Vincent 3:14
Just to continue to then. Did you continue? Or did you ever formally study computer science? Or was it just completely on your own?
Colin Copeland 3:22
Yeah, I went to a very or book device. And I went to a very small college Earlham college, which in my class was the CS department was very small, I was only about 333 of us. Inside did I did study computer science there. And one of the things I did really like about it was that they all of the functions within the CS department were run by the students like the website and the networking. And they had these applied groups where we could all participate in the various activities that the department did. In one one was the that I was a part of was called the hardware interfacing project where we got to play around with these little embedded arm Linux machines. And the project was to connect them to data monitoring devices for like we had when monitoring devices and like temperature monitoring. And we would kind of test it within the local science department and then set up remote field devices so that they could record wind and temperature and send readings back to us over like over a SIM card over data connection. And and that's really where I got into Python programming. We did a lot of scripting. With that and and it Yeah, it was, it was a lot easier to do than some of the C work that we were learning at that time. So I really fell in love with it then. And eventually what led me to Django there because we had wanted a way to kind of view all this data and look at it once we got it. Dig into a Postgres database and started building a Data Viewer in, in an early version of, of Django, and remember really liking the how easy it was to just kind of see things in the admin and, and how easily it connected to Postgres. It was, I was my first experience with it at a time there.
Carlton Gibson 5:19
I think that's quite common now, right with the way data scientists Come on this, you know, these folks who are using pandas or whatever, and then they're like, well, I need to get this online. And, you know, there's a few options, but Django is a good option there. Right. When you create an HTML report, you can stick it up serve it, it's quite simple.
Will Vincent 5:36
Well, it's not simple Carleton, though, right? I mean, because a fair number of the people who, who get my books or who live here in Boston are in that community, right. So at a meetup, they're, they're doing whatever with math and advanced Python, and they're just completely befuddled by the web, because they've never done it before. So it's, I often think if there was a way to have like a plug and play for, take your data, and put it on a Django site with you know, ListView, and detail view and login, that would be worth a lot. But the problem is the data is not easily munched together in my experience. But that's extremely common, at least here in Boston, whenever I go to meetups, or even the Django Boston group, when we are meeting, there were quite a few people who were, you know, scientists, and PhDs, and they wanted to know how to display it. And it was, you know, not simple for them.
Colin Copeland 6:25
It's true. It's kind of a big jump to go from, like a panda or a Jupyter Notebook to Django web app. And, but you can do a lot in those Jupyter notebooks. They're fun, really fun to play with and document what you can do in them.
Will Vincent 6:40
Yeah. So Tobias, let's, we're talking about college. Can we get your backstory since I believe the two of you met in college? Right?
Tobias McNulty 6:46
Yeah, we did. And, you know, before that, we actually, I was just for clarity. I was not Collins friend living down the street who he met and had to share our company. We very much later discovered that. Yeah, that I had also had a small Mac shareware company in high school that route applications in real basic, which was like, totally coincidence, because
Will Vincent 7:11
Yeah, why weren't you doing that? What can I ask why aren't you doing the web? Was the web? Not as not as
Pre LAMP stack?
Tobias McNulty 7:19
I think I. So I was doing some PHP MySQL development as well. But think real basic was the first thing that I was like, oh, like I yeah, again, for me see was a little bit over my head. But real basic, was something I could understand. And the first application I built when we got cable modem in in junior high. And you had to have like a login client on your computer to use this thing to enter your username and password. And she's, like, totally foreign to us today. And the client that they had for a Mac was just totally unusable and crashed all the time. But I found somebody who had figured out the protocol, posted the details of it online and was able to write a little login client for that. And real basic, and the the official one was so bad that people actually paid money for it. I think I made a few $1,000 or something like that in high school. So I was like, super proud about that. That's known
Will Vincent 8:20
for life, right? You've got this thing going understand you paid for it. Like, I'll just do that.
Tobias McNulty 8:28
And yeah, so I guess fast forward, I got, I actually took a year off in between high school and college to sort of figure out what I was doing and got a job. Writing and statistics software actually responded to an ad about HTML scripting, somebody was looking for somebody to some HTML scripting, and responded to that. And pretty quickly, they asked me to go into a programming role. Instead, that was a lot of fun. I think the one part of that that I really enjoyed was, they ran their own mail server, and on a Mac, and
Will Vincent 9:09
in a closet
Tobias McNulty 9:10
in a closet. And, yeah, I didn't really know what they're doing with that. So volunteered to set up and ran their mail server for them. And I think that was sort of where my love of managing servers got started. And as you know, continues today in my work with cactus, and also with the ops team.
Will Vincent 9:30
So this is all you know, pre Gmail, because I think that came on the scene 2004 or something like that. But yeah, and that was the first one, as I recall, that was like, boy, just use that right before that everyone had something in their closet for email, like everyone had some sort of setup. I mean, we're at where I grew up. We were next to a local university. So we tapped into that, but there was no good cloud option. Yeah, so I assume most around that time when you were doing Because, you know today, it's not no one mail server. But it was, but it was common back then. And then there was that interesting overlap, where I saw companies even in the 2000s, were still running stuff in a closet, and I would go to them and be like, you know, this is crazy, right? Because you got, but you know, now no one would do that. But I'm sure there's it back then. It was, yeah, very common. And the cloud was scary and seemed less safe. Whereas today, it's really, you know, the opposite, right?
Tobias McNulty 10:28
Yeah, I still do have a soft spot in my heart for postfix was the mail server that we used at the time and still have a soft spot for for that and my heart.
Will Vincent 10:37
So then you decided after a year of doing that, that you wanted to pay to learn how to program instead of getting paid to program?
Tobias McNulty 10:42
Yeah, so I did, I played to irlam at that time, and got in actually chucked the CS department for a couple years there. I had decided that I wanted nothing to do with software and programming. And first, I think I wanted to pursue an acting degree. I eventually settled on philosophy, but I was around a two year old help you
Will Vincent 11:05
Yeah. Carlton Carlton agrees with that. So do you have a philosophy? Dr. Carlton
Unknown Speaker 11:10
Dr? Oh, well,
Carlton Gibson 11:11
I did I do. Yeah, yeah,
Tobias McNulty 11:16
everyone. First, I don't know if James knows this. But when I first discovered the Django community and found James Bennett, Bennett, I was like, absolutely thrilled that he also had a philosophy degree. So I've never told him that before. But anyways, yeah, I discovered that I really do love programming, and sort of joined the CS department as a add on and specifically sat in on software engineering class, my senior year. And that's how I met Collin and the other two co founders for cactus. And yeah, I think we just really enjoyed working together and writing software as a team. That was all the work I had done previously, was individual and just was, like, felt like we were so much more powerful as a team together. And I think it's that mentality that we try to carry through in our work today as well.
Carlton Gibson 12:11
Okay, so tell us about cactus because like, you know, for my entire time in the Django sphere, cactus is one of those sort of landmarks, agencies. Yep. But for people listening who perhaps don't know, here, tell us about cactus and how you got started?
Tobias McNulty 12:26
Sure, sure. Yeah. I chuckled when I was listening to your episode with Aaron Malini, who is a cactus alum. And I think the line was something like cactus has been around forever. And,
Carlton Gibson 12:41
you know, if I had to sit there and think, you know, what are the you know, what are the foundational agencies, you know, the groups that have been there for,
Tobias McNulty 12:48
you know, for the whole time, we're, we're really honored to hear that, and yeah, meant a lot to hear that coming from you guys. So, but anyways, yeah, we call it actually moved to North Carolina, in 2007, after he graduated from irlam. And just because it was a central spot for all of us, and I think we tried a few different things at the time, we were doing some PHP development, I think we looked at rails as well, but settled on Django, I think, because of its affinity for Postgres. And I think this is probably changed. Now, I don't honestly know. But rails philosophy at the time, seemed to be that your data constraints only needed to exist in the application rather than in the database as well. And we didn't really feel comfortable with that. So I think that's what pushed us over to the Django side.
Will Vincent 13:42
Do you recall what the tight what version of Django This was? Was? Was it 3.0? Or is it after
Tobias McNulty 13:49
it was it was point nine, six, or point nine, seven, if those are even things and, but no one really used them from what we could tell like everyone was following the subversion of what was then a subversion repo, the trunk branch of that, because so much had changed and there wasn't another release. And so it was a really interesting time to get into Django. And like, every commit that hit the subversion trunk branch, like you would need to go and read that and understand what was happening and make changes in your code. So it was a it was an exciting time to be a part of the Django development for sure, Carlton, that's
Carlton Gibson 14:33
about when you join that really is the world that really is the Wild West, right? compared to today, where it's like, yeah, the new version, just pip install. It'll be fine. You know, nothing's broken. Oh, one deprecation warning. You know, I've got to go and read the commit and understand it and rewrite this whole section. It's a big different world. I came in about 1.1 I would say I got a book. 111 point 111 something
Will Vincent 15:00
So the four of you can I just ask about why? Why do an agency versus a company? Or maybe that's sort of morphed over time? Right? Cuz you said there's four of you who met in college and then decided to do stuff together? Yeah.
Tobias McNulty 15:12
What? Like why Client Services instead of a product company?
Will Vincent 15:16
I just curious the genesis of, yeah, I guess. So. I mean, because generally, it's some sort of mix of, we all like working together. And we like technology, and we have some ideas, but we can also get paid for client work. And you've all continued, obviously, with client work. So I'm just curious how that path unfolded, I think a little bit of his life as like, actors and musicians, right? Like, they all want to be the other, like, every consultant has like a side project or like a passive thing. So they don't have to work with, you know, clients. And on the other hand, everyone who's working a big company, sometimes like me, and I'd like just something new and different. So there's a tension from where I sit in terms of the roles, but disabuse disabuse you of that stereotype?
Tobias McNulty 15:59
Now, that's a good question. I mean, I don't know if it's a question anyone has ever asked us before. I don't know that it was, particularly at least on my part, it was particularly thoughtful, or intentional decision was probably largely naivete at the time, and like, Oh, we can totally do this. And, you know, I think in retrospect, we had no idea what we were doing. And a lot of it was, you know, timing and just, you know, being a part of the Django community when it was so small, I think certainly gave us a leg up during that time.
Will Vincent 16:34
Yeah, I think that that's what Peter from Lincoln, Luke was saying a similar thing in terms of, he just, he very deliberately chose Django over rails, in part because Django was a little bit newer. So there was less, you know, places that needed Django needed help. But that's, you know, keep writing that, that wave in a way. And also Python is great, right? Like rubies, rubies, pretty but Python is clearly one out is the more useful language of the two, I would say,
Carlton Gibson 17:04
Okay, yeah, I'm not just gonna sit there in silence for hours, because like, the, like, the standard niche, niching, down, right, niching down, like pick your niche focus on it, if you've, if you've got, if you can be a Django specialist, then you're always going to have a market where you can, you can be a Fortran specialist, you're always gonna get work, you can, you know, I saw something the other day people moaning about not being able to hire Objective C developers anymore because everyone's learning Swift. So if you know Objective C, you've got, you know, you've got a job for life. And Adam Johnson was saying to me yesterday about Amazon, I am, you know, if you can work your way around I am you've, you've got a job, right? If you if you know if you know Django,
Will Vincent 17:44
but at least there was a desire among all four of you to sort of carve your own path. Because today or in the last 510 years, I've seen a lot of work, especially I was hiring, trying to hire at a startup in San Francisco, someone who comes out of a school with a computer science degree, has a lot of offers, like good offers. And so the opportunity cost of going to do your own thing is, is pretty high. So I wonder, maybe it's the previous work experience you both had, but but turning that down takes a lot of guts, because I recall when I interviewed people, if they were flirting with Google or Facebook or whatever, they weren't going to go to a start up, they needed to know that they wanted to start up. And then if they did want to do a start up, well, then I could, you know, make a good pitch for it. But I couldn't solve that problem for them of like, well, all this, you know, prestige and money and my parents will like it. Like, I couldn't fight against that one. Yeah.
Tobias McNulty 18:35
Yeah, I think, again, yeah, I guess reflecting on that. We felt we were doing incredibly well for ourselves at the time, like my, my job before college, I think I was making less than $20 an hour doing software development. And then, you know, we started cactus and, you know, 2007, we're charging, you know, $65 an hour us for this work. And this is you, I think, by the standard of what was being charged at the time was probably quite low. But we were absolutely thrilled with it from, from my perspective, so I think it was pretty touch and go there for a while. Colin actually told me just yesterday that he applied to be a baker at the time. I didn't know this, but I'm really glad.
Will Vincent 19:29
That's my retirement goal to King Arthur flowers is actually in my hometown. And every time I go up there, I'm like, you know, it's like, I could do that wake up early. He just done and it doesn't need an update.
Colin Copeland 19:43
It's very different than programming. It's kind of a nice change of change.
Will Vincent 19:48
Yeah, it's like woodworking all these like analog hobbies of programmers. I think it's probably a good thing. Yeah, yeah. In my case, I just have kids so that removes the need for hobbies.
Carlton Gibson 19:58
Yeah, maybe when they Leave there at college, you can have a hobby. So okay. So you've been running an agency for, you know, 15 years, 14 years. 15 years? Yeah. What advice would you give to someone starting out than that? Right? Because it's, you know, a lot of that is the business side about, you know, client development and business development, making sure you, you know, when one project ends at there's another one there, and what would you say on that you say, was a bit difficult touching at one point?
Tobias McNulty 20:29
Yea, I think my answer to that today is to, is to hire a chief of staff. There are a lot of different people out there in the world who will tell you, you need this, or you need that or you need to, you know, figure out your strategy for this. But I think for us, one of the things that has allowed cactus to continue is just being able to adapt. And it wasn't until last year, actually, that we made this made this leap and hired a chief of staff. But just for a company that is as small as we are, being able to adapt to the changing times is really, really critical. So that's been the role that as an Kel, Hannah's or Chief of Staff, not to kill. I've been really happy to be working with her. And she's probably what I would recommend as the first thing to anybody sort of embarking on a building a small team, like this bootstrapping a small team like this.
Carlton Gibson 21:39
Okay, and what does the chief of staff do? Because they, what are they? What's
Will Vincent 21:46
a cactus now to just in terms of size?
Tobias McNulty 21:50
Sure. We're 18 full time employees. And we have a handful of contractors, maybe four or five contractors as well.
Will Vincent 21:57
That's quite big.
Tobias McNulty 21:58
Yeah. Pretty. Yeah. decent sized team. And we're so yeah, we're organized into four different teams within the company right now, three of those focus on client work, one, you know, just helps keep the business humming. And yeah, I think to your should probably have go on to answer that question. Because I think the answer is anything and everything. But just, you know, supporting I think the organization too, I would say that you have to find it's, maybe it sounds cheesy, but to find its true self and enable the people within the organization to find what brings them joy and, and do that work?
Will Vincent 22:42
Well, I mean, because it is, it's super entrepreneurial. I mean, you you love to code. So maybe you do an agency, and then you find yourself doing kind of everything, but coding at some point along the way. And so figuring out how to, you know, get back to what you want to do and think you're good at, I'm sure it can be a challenge. But actually related to that. One thing I want to ask is, I've always had a sense of cactus has a reputation of really mentoring and leveling up developers, you know, people who come in maybe the junior level, and are really Aaron and others who are able to make that transition. So I'm, I just wanted to ask about how you manage that, because that's a wonderful thing. I know, it's not an easy thing, but it leads to people from different backgrounds, and I don't see a lot of companies or even agencies, investing in their people in the way that I've seen cactus.
Tobias McNulty 23:29
Oh, thank you. Oh, yeah. And that was a, I should probably call and talk about that as our CTO, but I think it was an intentional choice on our part. In part, because, you know, we maybe had no choice like we did, we did want to grow and, and very senior developers expect, rightfully so expect a lot of money. And so this is a, I think, yeah, like you said, a unique way that we found to give back and tried to, you know, grow team members, hire team members and more junior level one and provide an opportunity for them to grow within cactus and hopefully they'll stay but if not, you know, like, Aaron, that's, that's totally okay, too. And we're delighted to see what the cactus alumni go off to do in the world, after cactus do. Anything you would add to that gone?
Colin Copeland 24:29
Now? Yeah, I think that we, you know, finding a good fit with the companies is always something we're looking for. And for junior folks, we can we just, I think I like kind of lucky, we'd find a lot of folks who were just really excited to work with us and we were excited to work with them. And it would turn into a great kind of relationship that we would grow together because we were learning a lot too at the time and how do we grow the company as well as you know, helping people with their with their skills and experience to thoughts. Yeah, I, I enjoy it. I mean, I think part of the fun for it too is just to be working side by side with somebody and learning from each other. So whether it's yours that a similar skill set, Toby and I like to do a lot of pair programming together. But also, if different skill sets, I think can go a long way of what you can learn from each other and pick up when you can when you have the time to pair and work together.
Will Vincent 25:30
Well, I think that culture is so important, because that's not you don't take that for granted. Right that you clearly do have to have a deep sense of mentorship, enjoying it, to do it, as opposed to right, like the Guilfoyle types, right in Silicon Valley. Like I've worked with people like that, you know, if anything, I would say that's more common than wanting to pair program with a junior developer. So it's, I think it's a great thing. But yeah, it's a mix of the business from the top deciding it's important, and also the type of people you have who find satisfaction in it, as opposed to feeling like they're being held back.
Colin Copeland 26:06
Yeah. Yeah, when you can work with somebody and, and I think is doing development, you get a lot of these easy wins, and you can kind of get excited by Oh, wow, look at that it's working heavy. And I feed off that kind of energy. Like, when they get excited, I get excited. And I like to just be a part of that sort of loop and that cycle of, of excitement.
Will Vincent 26:30
Because coding is, so it's so intimate, in a way, it's sort of like this hive mind, like I struggled to find another analogy in terms of white collar profession that is so intimately tied together. I mean, it's really, you really get to know someone and how they think. And also you get to see how someone, you know, couple years before was thinking at the time, you know, you have an understanding of the people or a team. Well, then I looked at my own my own code from a year ago, and like, Man, that guy's terrible. So what it does, it does, it's, I like that I like that intimacy of knowing people and seeing how different people approach the same problem, which I think is less, I think, is less common in other fields, where there's no sort of agreed upon way to do things, hopefully, in programming, sort of, you know, free for all in a way. Right? I
Tobias McNulty 27:25
mean, I think it's, yeah, part of it's, for me is tearing down the curtain to have, you know, what is this mysterious software development thing? And in many ways, it's a, it's can be chaotic and disorganized. And, and, you know, you know, our CS, Professor irlam, you know, like to joke that it's you just just honing your Google skills to, you know, figure out what is the best question to Google and going off and googling that and finding the skeleton that you can carve out and sort of hop inside and to sort of tearing tearing down the mystery of that. And that it, you know, it is a very sort of slow arduous process at times, I think, is I hope, you know, something that we can communicate through pair programming with folks on our on our team.
Carlton Gibson 28:18
Yeah, I think that's important for juniors to see, that is really slow, because you so many, I know, blog posts and things in the tech media about rapid development, and, you know, getting things done quickly. And it's like, but I don't know about you, but it takes me ages to write software, you know, it really. And a lot of it is you know, it, I've got to transform this string, well, that you know, that it's a four or five step procedure that's difficult to get, right. You've got to write tests. And it took you all morning to do this really trivial thing. But okay, but that now works. And now I've got that block that I can build on. And that took me, you know, all afternoon to build that. But the next day, I've got two blocks in there together and Okay. And then I think people have kind of unrealistic expectations about how quickly it's possible to write software.
Will Vincent 29:05
Yeah, I get bugged by that, too. And, you know, the media also went over a weekend, you know, threw together something or other it's like, well, maybe, but they kind of just copy and pasted something that they spent five years in another capacity building. And then, you know, voila, it works. So, oh, so we tried it. We have the founders on, you know, to really push them on like, okay, you build something in a weekend. I remember we had that listen notes. Fellow on who really impressive company, and he threw together a search engine for podcasts in a weekend. And we really pushed him on like, well, how did you do that with Elasticsearch? It's like, Oh, well, my day job, I'd spent years on it. And I knew exactly what I wanted to do. And it's like, okay, you know, cuz I, I do want to, as you say, pull back the curtain and show. What does it mean to throw something together over a weekend, it's like, it's basically copy and paste. I mean, based on years of experience, and then anything new. It's like, well, it all stops and the gears Start to grind. Yeah,
Carlton Gibson 30:02
yeah. Coming back to characters and clients, then how do you how do you communicate that difficulty to clients? You know, because when you're talking budget with clients, it's always this tricky question is they want, you know, they want to spend a small amount and get quite a lot. And you're like, well, but it's gonna take a lot like, I mean, how do you deal with that negotiation?
Will Vincent 30:20
as the Chief of Staff, Carlton not not their problem anymore?
Carlton Gibson 30:24
We just turn up in coding.
Tobias McNulty 30:26
Now, yeah, that's a that's a great question. And I think Kyle and I both really love interfacing with, with clients on that, and, and trying to, you know, just break down the complexity as it were of the work that we do. And, and really the challenge of getting any sort of concrete estimate for a software project? I mean, it doesn't, yeah, estimation is one thing that, for me, at least, has not gotten easier with time. Like, it's, it's always been a challenge and can throw some numbers at the wall. And they're usually wrong, but I think I can move on. Yeah. So I think, yeah, we, when speaking with clients, now, we really tried to focus on and understand what the what the business priorities are. A key part of that for us as, as, in the past few years, especially has been involved in user experience experts in that process. So trying to get at, you know, what is it that the customer really needs to solve this problem and not know, necessarily what it is that they're telling us because sometimes those things can sometimes be the same. Sometimes those things are different, and can take a little bit of teasing out to figure out what those things are. And I think part of that, too, is just, you know, sometimes understanding the customer's business domain, if it's a business that we're not familiar with, there's a whole lot of knowledge that our customers have that we don't and just having a methodical process for breaking that down and understanding it, I think has a side effect of showing how complex the work is that we do and sort of getting them on board with the process if the if they do come from a less technical background. And so
Carlton Gibson 32:18
there's it strikes me that there's a large discovery phase, they're
Tobias McNulty 32:21
not necessarily large, but I would say we, more often than not, we'd like to spend what would you say karlen. Or at least two weeks, you know, possibly four or more, depending on the size of the projects size of the project, before we get started to answer some of those questions. And, you know, set the team on a good foundation going into it. Yeah, yeah, fine. So
Carlton Gibson 32:48
it's going to be important to set the expectations of that.
Tobias McNulty 32:52
How do you mean, that
Carlton Gibson 32:54
to set the expectations of the client that there is this initial phase, which is discovery? And you know,
Tobias McNulty 32:59
yeah, yeah, at some, some clients love that. It is, it is certainly a harder sell for some, but I think once once we get into the, you know, the, the the time definitely proves itself.
Carlton Gibson 33:13
So he got a new gun to say,
Colin Copeland 33:15
Yeah, no, I agree with all that does that you that initial time when you're first becoming acquainted with the project, and with the clients having that discovery process to kind of figure out the requirements together, because no one really knows what what they are until we can all get in a room with the technical knowledge combined with their knowledge. And we can kind of put the the main goals ahead of something and think about those. And it helps with prioritization as well. You can have, through some conversations, figure out what what what do we really aiming for in this, you know, the first couple versions or the initial release? What what are the highest priority items to focus on, because that can help kind of limit limit what you're trying to build and not let's go get too big to cause the project to get a little? Too much too expensive.
Carlton Gibson 34:06
It's that's good to have in the back pocket as well, a few weeks into the project, when you know, the requirements start to change a bit, and you're like, hey, but you did say priority. Was this. Is that still the case? Oh, yeah, that's still the case. You okay. Yeah.
Colin Copeland 34:19
Yeah, and it's good to check in because maybe things would change, and you kind of have to, like swap things out. But overall, I think, when you can, when you both take when everybody takes part in that discovery process together, you do have a shared vision. And I think that really helps keep everybody kind of on the right track together in the end, which is nice.
Will Vincent 34:39
So I can't think of an elegant segue, but I want to ask about the ops team for the Django Software Foundation. Sure. So let's shed some light on this. Right. So we just interviewed he Durbin, who runs infrastructure for Python. And Django has its own ops needs around Django project and other things. So Tobias, you're on that team? Could you just talk about maybe call out Who else is on that team and what that role entails? Because it's a volunteer role, but a pretty important one within the Django community.
Tobias McNulty 35:10
Yeah. So it's a it is a small team, small volunteer team, Marcus, Marcus. And I guess Marius is also a fellow, but Florian is the other member of the ops team. And they, yeah, they predate me on the team and I think have their hands in probably more things and take credit for more things than I can really claim. But I thought, yeah, I joined in 2016. Just as a, as I mentioned earlier on, I always have enjoyed tinkering with servers. And, you know, this was a way that I could do something that I love, and hopefully give something small back to the Django community as well. And so the ops team maintains the servers for Django project COMM And all the related sites like the ducks, sites, Django, people, things like that. I think the bigger lift is probably maintaining the CI infrastructure. There's a whole bunch of servers that power the custom Jenkins configuration that you know, every time there's a committer pull request on Django runs tests on every possible configuration of Python and Django and database to make sure that nothing is broken. So that's, that's a big lift. Certainly, I think we don't have to worry too much about that. Because I think Marcus and Florian handle most of that. One thing that I think I was particularly proud of was setting up the CDN for the ducks Jango duck site. So somebody had was my idea. Someone just emailed the Django developers listserv and said, Hey, over here in Australia, or I don't remember exactly where it was. The Django doc site takes a really long time to load. Is there anything that we can do about that? Because at the time, it was hosted on a single server at Rackspace, in the US, East region, and you know, it takes a couple seconds for light to travel halfway around the world. So set up, fastly call out to fastly on donated CDN, to the Django Software Foundation. And we set that up in front of the dark side, and more recently, some others as well as static and media sites. And, yeah,
Will Vincent 37:31
he mentioned that fastly also donates to the Python Software Foundation, which has a little bit more traffic than we do. And it makes a huge difference, obviously, in terms of speeding things up,
Tobias McNulty 37:42
yep. Yeah. And it's really, it's really fun to watch the statistics, the live statistics dashboard that they have with the traffic popping up all over the world of where where requests are coming from to hit the Django doc site at any given point in time.
Will Vincent 37:57
Yeah, I mean, it. Yeah, the Django doc sites does get some real traffic. So traffic?
Carlton Gibson 38:02
Yeah, yeah. I mean, it's kind of non trivial as well, because there's the all of the supported versions, all of the unsupported versions are still there, as well as each of the translations for, you know, brand new versions of 3.2. Or up and it's non trivial to get them built to get them up and to serve them.
Tobias McNulty 38:21
Yeah, and we tried, I hope that it's working, we tried to instrument something to invalidate the, the cached pages every time a commit happens. So that, you know, especially when a new Yes, security release comes out that you can actually see that page right away, and you don't see the stub that was there ahead of time, because that would be particularly frustrating and off putting, I think, for the community if the new security release, but nobody can see within the release notes for that. So
Will Vincent 38:52
hopefully, that is working. So you're just so you're trying to just refresh the changes, as opposed to just when is a new commit re running the whole cache?
Tobias McNulty 39:02
I think it does just invalidate the whole cache. I don't actually recall it was a few years ago. So I don't recall exactly what it does. But I think it had other invalidates the whole cache, or just for maybe just for that version of the Django, Doc's, it will invalidate that that stem in the URL,
Will Vincent 39:18
because I just curious, because I mean, for smaller sites, certainly, it's easy just to invalidate everything. And there is an option. I mean, on my smaller sites, you know, I use CloudFlare. And sometimes I'm like, well, should I just, you know, change the section I just changed or do it all. And at the end of the day, it's like, it only takes one hit to warm it up. But that whole process of warming up the cash. I always wonder when does that really, really matter? I almost think that maybe it doesn't matter as much these days as it used to. But it's a cool concept of pre loading the cache and running a script to set all that up. It's sort of like fun to do, but I wonder if it's, you know, I wonder if I should be doing that on my own sites versus like right now. It's kind of man Cuz I'm a little bit lazy, I
Tobias McNulty 40:01
don't think we added anything to sort of pre warm the cache after flushing it like that. So there will be a period of time after, you know, the cache is invalidated, where you can see the, I think it hovers around 60% hit ratio for the Django duck site, the static media is much higher like a, you know, 100%. Like, because those files never change. But I think it hovers around 60 65% for the doc site, and it pretty quickly returns to that if you once it's invalidated. So, yeah, it didn't, didn't bother with that. For this.
Will Vincent 40:36
I mean, that that's it. I mean, you know, I'm on the emails, but it's still a little bit of a mystery to me what the ops team really does, as well. So she just wanted to shed light on it, cuz I know, there's all of you who work on it. And it's sort of, you know, as long as it's working, it's working until there's a problem. And who's in charge of that?
Tobias McNulty 40:54
Yeah. And speaking of, yeah, speaking of sort of think it's turned into less of an emergency, but yeah, much less of an emergency but a year. So you're a little over a year ago, I think it was when Rackspace, announced that they were affording a lot of their free open source projects. We sort of had a mad scramble to find hosting providers for that. It was just pretty. pandemic, I think, maybe I'm misremembering, and that was two years ago. It's about
Will Vincent 41:26
I remember I remember it well. Yeah, there was. Because I think, as part of that, I went, I was there was those emails about it? And I remember thinking like, No, that can't like there must be someone at Rackspace who feels strongly about Django. And I think I tweeted out and yeah, we sorted it out. So they were they were very generous again, but
Carlton Gibson 41:48
yeah. You know, the people who provide the some of the resources, right, because it's not, it's non trivial.
Will Vincent 41:55
Yeah. But yeah, they're, I mean, they're in the footer of the website. But yes, Rackspace, fastly, I guess what? There's, there's also now there's the Oregon computing group,
Tobias McNulty 42:05
right? Yes. Yeah. So it's right. So yeah, it's part of this mad scramble to figure out if we are losing Rackspace or not, I think we ended up with far more hosting than we probably need. And got, I think, yeah, I think probably over 70, maybe close to $100,000 worth of free hosting provided annually to the Django Software Foundation from sis 11, which I think is a German company, the Oregon State University, open source lab, which Yeah, I had a very small, open source project there many, many years ago, a couple decades ago. And they were able to donate roughly equal to what Rackspace was providing previously, and then AWS as well. They recently started an open source, free hosting for open source projects program. So Rackspace had to be with this webinar and LSU also, I think are now all hosting providers as well as fastly to the DSF. And the biggest thing
Will Vincent 43:09
I think we have something on Heroku I think we pay also I forget what do you know which which which area? I
Tobias McNulty 43:16
think it might be the Django people sites.
Carlton Gibson 43:19
We shut down we sunset Django people last year, but Django snippets,
Tobias McNulty 43:23
snippets. Okay. Thanks Carlton.
Will Vincent 43:25
snippets while there was also so Django packages is, is not part of Django formerly, and that that just transferred over from Daniel and Audrey, we're running that with some volunteers and Jeff triplet from Red sis has taken over the hosting of that, which is hosted on digitalocean. So we're just covering everything, all the all the platforms,
Carlton Gibson 43:48
can I just ask the biggest The biggest thing is the docks, right? That's the biggest. That's the biggest bandwidth.
Tobias McNulty 43:55
Will Vincent 44:26
Well, on the board, we get the emails that come in through the contact form, and there's always amusing, you know, generic ones being like, Hey, we see your site has some traffic, we'd like to put ads or we'd like to do a sponsored post, you know, they're just spamming the web and it's interesting to see like, oh, like, you've got some traffic on this site. Like, it's like, Yeah, we do. You clearly don't know anything about you know, you hopefully you have some thought and not some person sending these emails but they're pretty amusing to see Um, I know we're, we've gotten a little on time, I really want to ask about projects. So you both like, there's a whole list in our docs here of some really cool projects that cactus has worked on. I'd love to hear about some of them and how they shook out right, we part of this podcast is to talk about Django in the wild and actually being used. So what what comes to mind for either of you have cool projects with Django? Yeah,
Tobias McNulty 45:26
I think, for me, we've, we've worked on so many projects over the years, I think, for me, I usually think back to the the first project that we did with UNICEF in 2010. In part because it was a Yeah, incredibly fun and exciting project to work on, in part, because I think it also, you know, maybe precipitated some of cactuses growth, we'd applied to this project, to travel to Zambia and Malawi, and build a Django backed SMS application to deliver infant HIV test results from the lab. So there's only one PCR lab at the time, there's only one PCR lab in Zambia that could do the test for ancient HIV test result. And then they would, you know, take the results on paper on a motorbike and take them back to, you know, the rural health clinics that were serving these families. And so we were able to cut the time in half for delivery of those HIV test results, by sending them by text message, because there's mobile connectivity all over the country send the text message to the provider, who would then you know, follow up with the patient, if there was a positive result. So yeah, that was one and I think we won that. And we're like, oh, my gosh, we have this other contract that we also need to serve. And so that sort of precipitated some of our initial hires at cactus as well. So that's probably the one I think of calling what what's a project for you?
Colin Copeland 47:03
It's a good question. I was looking at these here, I think a lot one that I actually got to work on recently, it was related to it started as a volunteer project of mine, I befriended a, an attorney in the area who knew about this data set at the state that basically, there's a statute North Carolina that all police agencies need to record their data and send it to the state DOJ. So that they, it's recorded and stored centrally in this large database that no one had really looked at, because at this point, it has now 22 plus years of data in it, and most folks who try to use it just didn't know how to work with that. That large of a data set and what started as a volunteer project to build this website called Open Data policing and see well eventually became a cactus project later on when we tried to expand it into other states that had somewhat similar statutes, but not as good at North Carolina actually has a fairly good one overall. But overall, I mean, the site itself is what I like about is that it's local to us. So it's in, it's in the North Carolina area. But it also helps you visualize and see what what your local police department or department area, what your the stops look like, and what led to a search and kind of a there's a form that a police officer fills out that has some demographic information on it. So you can slice the data based on like race and ethnicity to see if see if there are some disparities and how the departments are operating. And we just relaunched that as nc copwatch, with another organization here in North Carolina. And, yeah, I think it's a great project to be a part of, and how we can kind of help help shed some light into the policing around our area and what we can do to help there.
Carlton Gibson 49:05
That kind of things that reminded me when we had Jose PD are on he doing a similar thing in Puerto Rico, about government expenses, that they're all sort of available, but they weren't available. So by putting them on a website and shining a light on them, they're able to, you know, hope, will hopefully improve behavior over time, because visibility is the greatest disinfectant.
Will Vincent 49:28
Yeah, well, this, of course, Simon Wilson is his project data set is trying to make this more off the shelf for journalists and other people. I'm looking at the the site. So how do you do search? If you're a call on the like open data policing? Because you've got a search bar there, you've got 10s of millions of records. Do you recall how you are? I'm partial to search them. I did a talk on it. And I find it a really interesting topic.
Colin Copeland 49:58
Yeah, you mean the finest Stop feature. Is that the part you're looking at? Well, so
Will Vincent 50:02
on Open Day policing, like a North Carolina, there's a way to view agency dashboard, you can search. I guess any of it right? I'm using the same type of search, like, is it it's true Postgres search is that, you know, Elastic Search or something? I
Colin Copeland 50:15
mean, yeah. How? Yeah, it's, it's all Postgres behind the scenes. This the searches? It's it, it doesn't there are there are a lot of stops in there, like 22 million stops. And when you, when you join that with the searches, it can get expensive. But by far, like the largest data set is the State Highway Patrol that they make over 60%. I think of all the stops and searches in the state. And so any anything you kind of do with that agency, it's a little more expensive than the others. But yeah, I think it's just, it's all just Postgres and just some tuning to get it to respond quickly. And, and it works pretty quickly. And the idea is that, like, you know, you could, you could get stopped by the State Highway Patrol, and the agency has basically 60 days to report that to the DOJ. But eventually, your stop would show up there, and you could look at it. And then the, the, the officer ID is not like their badge number, so it doesn't actually identify who the officer is. But it is a unique number tied to that, that officer so you could actually then look and see what what they're, you know, stop history looks like and get a sense of what, you know, who they stopped before as well.
Will Vincent 51:34
Yeah, that would be I mean, that's one of the things I I've read about the Derek jovon trial going on right now is that they're able to talk about the back history of Floyd, but not none of the police officer in court, they're not allowed to mention his history as an individual or as a police officer. Even though in North Carolina, at least, that'd be readily available.
Carlton Gibson 52:04
it's, it's, it's an interesting question of jurisprudence isn't it's like counting, like, if you bring someone to try it, or you're bringing them to trial for that particular event, not, you know, not convicting them on their shady character, which, you know, is led to miscarriages of justice in the brilliant times. I'm not saying mentioning anything about this particular case. But yeah, it's an interesting philosophical problem, like, what are what is accessible as evidence in a court of law? Anyway, that's not Jango chat. That's
Will Vincent 52:38
what I'm speaking of other civic things, though. So code for Durham, either of you talk about this, this organization?
Colin Copeland 52:45
Yeah, yeah, that's a volunteer effort that that I'm a part of here and is part of where Open Data policing was, was born. And, and yeah, it started, I think in, like, around 2013. And I'd learned about Code for America from other activities that were going on in the area. One was an open open data day, that was just looking at open datasets that were in a triangle region of North Carolina, and learn about these, the idea of brigades, which are just volunteer groups, in certain areas that are organized around helping their communities using using technology, and has really just kind of grown I mean, we meet every other week, used to be in the cactus office, though, and in there in a while. And, and, yeah, the brigades I think can vary a lot from area to area. But in during we do a lot of building apps for for it and for Durham and the policing. One was one, we also recently worked on a project that we're partnered with legal aid in North Carolina to help with record expungement. And that one was kind of fun, because cactus held an internal kind of pitch competition. And where we could kind of bring a project idea and cactus, one of the cactus teams would work on it for a little bit. And I pitched the idea to help do an improvement to it and ended up winning. So it was kind of exciting to get a little bit of the cactus forest behind it to help push the project ahead. So it was nice, good help there.
Will Vincent 54:23
I love that you're doing this because I I feel like sometimes engineers don't know what to work on. But at the same time, people are interested in code, they have the all these very real things they'd like to solve, but they have no idea how any of the pieces come together. So to know that these data sets are available, you can build a site and search them you know, yeah, that would completely I'm sure hook people into like, Yeah, I do want to learn how to program I do want to get over the humps of things because it's powerful. And it's, you know, anyone with knowledge can do it.
Colin Copeland 54:52
Yeah, definitely. It's definitely motivating for me to know I can really like help help this the community and these attorneys with Breck An expungement. And it's not that complex of a problem, but like, once the technology comes into play, it can really help. Help out. Certainly,
Will Vincent 55:07
if you know what you're doing. I mean, here, I guess we had two episodes ago, built the COVID tracking for the entire state of Massachusetts in about eight weeks. And someone I knew, and, you know, I've used that all my friends have used that. And you know, it's like, wow, that's, that's Django being used. Same thing. A lot of the vaccine trackers, the open source ones that are out there are actually also Django in various states where you can, you know, compile which pharmacies in which hospitals have stuff. So yeah, it's program is a superpower, right? If you if you know what you're doing. I did, actually. So I know we're coming up on time. One thing I wanted to ask the two of you, because you do work with junior developers. So the command line, how do you introduce this to people? Like, I know, this sounds like a non sequitur, but like, everyone has to learn how to use it. But nobody, it's completely befuddling to people. And then there's like wsl on Windows. I wonder if when you have a junior developer, like how do you explain that elegantly, because this is something I'm struggling with, right? Like we all use the command line, we need to use it and you kind of use the same commands. But getting to that point, like the first time you go text only is super scary for people. And it's it's I feel like it's this like switcheroo where it's like, I want to use pythons like well, first you got learn the command line and data and don't type these commands, because that'll nuke your computer. And then you can come around to Python, and all the rest. So I just from personal standpoint, ask if you've had any inspiration, I'm like, What is this? You know, scary thing that is or, you know, we use all the time, but we don't think twice about it. Right? It's like, I use the same five commands. And anything else I look up, but it's taking me a while to get to that point. Right? Yeah, learn with the file system is and as I just curious, as you level up developers, this must be part of part of that process is working with the command line.
Tobias McNulty 57:02
I think the suit calling things too, but I think the Django girls tutorial does a wonderful job of introducing the command line and, and talking through that. So yeah, many years ago, we actually had our own Django boot camp that we put together. Yeah, that's a huge amount of effort to maintain and found that as much easier to do with the hair the force of the entire world behind it, you know, behind it tutorial like Django girls or something else. So we will often point people to that, you know, whether internal or outside of capitalist point people to that as a starting point. So for Python, Django in the in the command line, anything else, that's maybe a bit of a cop out anything else.
Will Vincent 57:47
But I mean, even that one, and I was just looking at Code Academy, like, you know, because on a Mac, it switched over to Z, sh, by default. And so the prompt is different. It's the percentages instead of $1 sign. So, like, just how do you explain to someone it's like, Well, okay, you're on a Mac, okay? What type of Mac? What's your operating system? Okay, the prompt may look like this, it may look like that. Don't worry about everything to the left of it, you know, what's terminal that's different than shell that's different than console. You know, there's hyper and iterm in Terminal. It's just like, what, you know, oh, and the commands are different on Windows, and so is the file system. And by the way, there is a file system. It's just like, I feel like it's me, being that engineer I hate who's just like, oh, here's a you want a simple answer. Let me go into our digression. But you do need to know those things. Right. So it's like how do you so maybe the Yeah, the Django girls tutorial is really good. Even though it's still uses the bash prompt. Sorry, calling, you're gonna I'm just venting because I'm just like been thinking about this a couple days. I just, like, got programming sometimes, you know, with all the power is this just like, there's still these things are like, I don't want to be that person who just completely bomb someone with information who wants to just get started?
Colin Copeland 58:57
Yeah. You know, I don't, I don't know, if I have much I do feel like we, when I have paired with someone who is learning that type of even just looking at or interacting with get, I do think it's really to do like to like start at the, at the, like the mercy Li rather than the gooey versions because I think it's easy to kind of jump into the GUI if you're new to the command line and using one of those, you know, source tree or some of the tools out there but I think it's more of like a hesitancy to jump in. If you're like peering with someone you can walk through and talk about each each command and we have sometimes, like built out a little like cheat sheet of things to do like run, you know, run git status for certain things and how to make a new branch and I think if you can, kind of like help get over those first couple of humps, it's easy. It takes away some of the anxiety that you may have jumping into the the terminal in the command line. For the first time,
Will Vincent 1:00:01
right and then set up your alias, so you can do GS because git status is just wasted. That's my fault. I totally forget what the actual commands are because I have all these shortcuts like, you know, commit GC. I get kind of annoyed. I'm like, I gotta type this whole thing. But I guess pair pair programming be good, because you do need to actually do it. And yeah, going, Yeah, that beginner mindset.
Colin Copeland 1:00:26
Yeah, definitely. Definitely.
Will Vincent 1:00:27
Carlton I know, we're out of time. Now, I've hijacked the conversation, but I just want to ask this on your command line, because it's, it's, I think about how to educate people, right? And it's like, if I'm sitting next to someone, that's one thing, but how do I do it in a, you know, verb in a text or video form, I have to kind of guess all the things that could come up and address them without, you know, swamping someone, and it's just this command line thing. I was just, I just occurred to me like, Oh, yeah, like, the prompt is different, you know, so if you go into a server, it's probably still bash, but you could install z, as, you know, z, sh, but, and like, how different are the two of them? And it's like, it doesn't even like really matter. Like, right, like, all you need to do is like CD and LS, basically, and then run a script. But getting to that point, you know, not to mention, you know, my path, like I saw that if you install the new, so I run this site, install Python three.com. And I'm updating it. So that's like a opinionated way to install Python. And it seems like on Mac, you know, homebrew, you don't want to use you want to use the Python installer. And the Python installer is great. But it automatically add, like, add something to your path. So it, put it in front. So it's like, do I want to tell someone that that happened, or just be like, it probably worked? Right? It's like, I don't really want to get into that. But if I'm sitting next to them, it's like, Oh, sweet. It worked. But if it doesn't work, now, someone has a munched up path. And that's like Google hell. Try to fix someone's path. Yeah. For sure. Maybe.
Tobias McNulty 1:01:59
Yeah, I think the concept of like, yes, changing, just changing directory CD, and moving around within the file system in the in the show, you know, thinking back to pair programming or, you know, tutorials, have done that as a, it's, it's, yeah, it's a hard thing to understand. For sure.
Will Vincent 1:02:21
Well, that's why we all get the big bucks right.
Tobias McNulty 1:02:24
Now you can cd.
Will Vincent 1:02:26
Carlton Gibson 1:02:27
I can successfully change back out of my home directory.
Will Vincent 1:02:31
And what's the home directory, why doees that matter? Yeah, like, what's till this symbol? It's like, I didn't know that was called Tilda until I was. Yeah. Anyways, is there anything I've missed? I know we have a lot of notes. Any other projects or things either of you wants to call out?
Tobias McNulty 1:02:49
Yeah, just wanted to call out. Karen Tracy. I don't know if you've had her on here before. But she has a I don't think such she has fun. Origins origin story of how she first heard about cactus, which I'll, I'll let her tell if if she's comfortable sharing. I'd love to have
Carlton Gibson 1:03:10
her because I got a book of her. So she wrote about debugging and testing with Python. With Django, you know, early days, like quite a while. Yeah. But it was it was a great book.
Tobias McNulty 1:03:22
Yeah. Yeah. And we met, we met Karen back in, I think 2009, when we had emailed the Django developers listserv about organizing the sprint in the triangle and had no idea that there was a Django core developer in the triangle of North Carolina, and we're absolutely thrilled that she could be there. And that, you know, you know, turned into obviously, Karen joined cactus in 2010. And he has turned into now a decades decade long relationship, so we're happy to have Karen and grit just grateful for all of her help. Over the years,
Will Vincent 1:03:59
I should check out that book. I didn't know about that book. I know it's Django one one testing and debugging, but I'm sure a lot of it still applies. No, it's
Carlton Gibson 1:04:07
totally still applies. I mean, you know, it's, it's just gold dust. That book is great.
Tobias McNulty 1:04:13
So but yeah, other than that, Colin, anything you hadn't?
Colin Copeland 1:04:18
That's great. Yeah,
Will Vincent 1:04:21
what, Tobias, it's nice to see you in person. I feel like we've we've sent so many emails back and forth over the last couple years, but I never actually had met you. So yeah. digitally, hopefully, you know, we can all meet up at a Django con or event. Okay. Yeah, yeah.
Tobias McNulty 1:04:38
Yeah. Yeah. Thank you all for all your help with the hosting related things and the DSF ops collaboration. And yeah, call it call and I were just talking yesterday about how much we really miss getting together at conferences and things with with folks. I was Yeah, I was actually just before the pandemic was like, one of the nice things about the UPS team, which I'll throw in at the end is that I'm definitely a person who does better in smaller groups. So like meeting Marcus and Florian there's has been really great and Marcus directly gonna share a hotel room at Django con EU and then, of course, the pandemic happens. So we're very much looking forward to getting back out there and meeting medium folks in smaller groups at conferences and you guys as well. So thank you so much for putting this together and everybody has to be on.
Carlton Gibson 1:05:33
It's a lot of thought. Thanks for Thanks.
Will Vincent 1:05:36
Great. Yeah, thank you both. So we will have links to everything in the show notes. We're at chango chat.com. Chacha and go on Twitter. And we'll see you all next time. Bye bye.
Carlton Gibson 1:05:44
Join u us next time.
Will Vincent 1:05:45