Matt is a Software Architect at Doctor on Demand and a prolific Django educator. We talk about Django at scale, leading a large engineering team, and teaching Django to newcomers.
This podcast is a labor of love and does not have any ads or sponsors. To support the show, consider purchasing or recommending a book from LearnDjango.com or signing up for the free weekly Django News newsletter.
Will Vincent 0:06
Hello, welcome to another episode of Django Chat, a fortnightly podcast on the Django web framework. I'm Will Vincent joined by Carlton Gibson. Hi, Carlton,
Carlton Gibson 0:13
Hallo Will.
Will Vincent 0:14
And this week we're very pleased to have Matt Lehmann joining us from Dr. On Demand. Hi, Matt.
Matt Layman 0:18
Hi.
Carlton Gibson 0:19
Hello, Matt, thank you for coming by to be here.
Will Vincent 0:21
So I think I think I first met you at Django con out in San Diego, you came up. And maybe I was even talking to Carlton at the time. But I've been following your work. So you're obviously you're a doctor in demand, we'll ask you about that you have a personal site, you do Twitch, you have a podcast, you do articles. So we're gonna ask you all about those things. But maybe we could start with how did you find yourself into programming, and then specifically Django.
Matt Layman 0:44
The Django part of it starts probably around 2014. But I'll rewind before that. So I was one of those typical suburban kids in the 80s, or 90s. I grew up in suburban town in Massachusetts, and was really into video games as a lot of kids, or at least boys were at that time. And it drove me It drove me to be one of the ones that wants to go on to college and become a game developer. And so I pursued that path to a degree, I went to the University of Virginia, and got a computer engineering degree. And somewhere during the course of those years realized that being a game developer was a really hard gig, or at least the reputation was, and I said that No, thanks. So by the time I finished school, I didn't go into game development, I actually went to Lockheed Martin, and worked there and did a lot of communication software, actually. So nothing to do with the web at all. But I got into satellite development, the first thing I did was working on the GPS, ground control station, and that modernization for moving it off of a mainframe, and onto actual Unix operating systems. It was the letters at the time, but so that was my, my first exposure to real life programming was working on this thing that people use all the time, which is kind of fun. And so I just worked on a bunch of contracts going through there. And along the way, you know, didn't do Python, because you don't you don't put Python on satellites, typically. Yeah, I was gonna ask what languages are using, I mean, so yeah, like a wide variety so that when it came to the satellite stuff, it was usually c++ seemed to be the the language does your share. But you know, what I found was that there were a lot of actual languages that go into supporting these contracts. So I do a lot of Perl development, and Java and all these other languages that kind of build around it that are used for the glue, to do the build systems. Because you know, just like any other gig, you have to build a binary, or you have to build an artifact for your product. And there was a lot of that. So I got into Perl, of all things. And that's actually where I really fell in love with programming actually, because my experience of college I actually kind of hated programming to be able to be blunt.
Will Vincent 3:10
I came out of the sea through it, but and
Matt Layman 3:13
the school was heavy into the the Microsoft stack. And this is old Microsoft remember, this was not this is like the bomber days. And it's not the Microsoft of today. So it wasn't a pleasant experience. And I just didn't do that well added in, in the scheme of things and was much more into the electrical engineering side of my degree.
Will Vincent 3:37
So well, this is pre internet, right? Cuz I think you and I are about the same age. I went to William and Mary and I didn't take a single computer science class because I looked at the curriculum, and I talked to people who are doing it and it just sounded. Yeah, as Microsoft stack. It just sounded super technical and boring. Yeah. I mean, no one was doing a startup, no one was showing their work. It was just like, I don't even know what you're doing here.
Matt Layman 3:58
You build, you build some kind of Windows app. And yeah, I learned data structures. I know, don't get me wrong. I did like my time at university. And I learned a lot of valuable computer science things. So you know, big O notation and data structures, and all the typical stuff that you might expect from a comp site to crowdfund stuff in the Windows registry. Yeah, that too. So I put, you know,
Will Vincent 4:22
when a couple years later, like when you hire people, right, they're all like, have they're out there, like, Yeah, I was doing PHP in high school. And then I have my own site, have a startup, or at least for me, when I was out at Quizlet hiring people. So this is 2010. So, you know, kids in college, then they were all like entrepreneurs, right? Because so it was just a big shift from I think, again, like the, you know, early 2000s, computer science curriculum was very, it wasn't well, yeah,
Matt Layman 4:50
for sure. And so and I still didn't get into web for a long time. So I I kind of my first exposure to Python was it was probably I think 2007 and I found this dive into Python book from Mark pilgrim.
Will Vincent 5:06
Yeah, yeah.
Matt Layman 5:07
Yes. Great book, especially, I mean, I think you have to know a bit of programming first because it's kind of throws you headlong in and assumes you have some knowledge about loops and all that kind of stuff. But but it was, it was a good intro. And I really fell in love with language. Actually, I read the book by printing out the webpages. And then it was free online reading them in a three ring binder at work. And like that was, that was my experience to to learning Python. So when when folks actually asked me today, like, how do you learn Python, and like, well, first you learn Perl, and then you go print out a book and put it in theory, I don't really have a good answer anymore. Because the way I learned Python was pretty different from all of the tools and sites that are available to learn it today. So fast forward a few years and getting up to 2014. My, my youngest daughter had just been born that summer, I had a two year old son as well. And I was driving. I live in Frederick, Maryland, which is an hour northwest of DC in our district do West Baltimore. And I was driving to Baltimore every day into a classified lab, which means no cell phone, no way to communicate with the outside world while you're there. So I basically for my wife, I'd go dark for like 13 hours a day. And she was just like, this is this is not working Dude, you need to, you need something else. So I did. And I got my I got a job with us education startup called storybird. And there were a Django show. And that that's how I got into Django was, you know, I, at the end of my time at Lockheed, I had done a bunch of web development with the Microsoft stack, ironically, and Java and for graduate school and I. But I had dabbled with, like turbo turbo gears and pylons and pyramid and those sort of frameworks, but I just, I never had gotten into Django for whatever reason. In fact, I think, back in 2007 2008, time window, I had seen Django but I just wasn't ready for it and totally bounced off it. When I hit the page. I'm like, What is this? I don't get it. And I was out. So, yeah, 2014, I got into Django and spent four years at storybird, doing all sorts of stuff, learning, getting really into the web stack and learning it deeply. And by 2018, I was ready to move on to a new thing. And I moved on to a doctor on demand, which is where I am today. And so I have been doing Django there ever since. So I guess that's that's my backstory.
Carlton Gibson 7:44
That's great. That's just phenomenal.
Will Vincent 7:48
That's, that's it that's about as traditional, you know, lineage as I, as we've had for a guest, to be honest, I mean, you actually sit you studied an undergrad and you had broad exposure. I mean, Carl and I are both, you know, educational months, we didn't study it then. And you'd already had web experience, because I always, you know, for me, like Python is my first programming language, and Django is my first web stack. So I came with all this, you know, baggage that I, you know, initially applied to Python and Django. So to that question of like, how do you learn Python? Right, the first question, usually I ask is, do you know how to program because most people you know, if you do, if you do, okay, you can take the mark pilgrim or these sort of, you know, your third or fourth language books. And if you don't, you probably want like Python Crash Course like Eric Matheson's book. But like, that's a big distinction. And same thing with web stuff, right? Like the whole approach is different depending on where you're
Matt Layman 8:41
Yeah, they're, they're very, there's a lot of different worlds out there. And even the Python world you look at it today. And if you've been in the Python space long enough, you know that there's a schism is not the right word. But there's, there's a definite divide between if you're doing data science, or if you're doing web like there's there's two camps and it's to two different choose your own adventures for what how you get into the language. It's such a broadly utilized language and so versatile, that you can do so many things with it that it makes it really difficult to provide this clear guidance depends on like, you really have to ask question, what do you want to do with this language by the time you're done, because it's going to matter? On what I suggest to you about how you get into it.
Will Vincent 9:26
Right? Well, so Dr. Demand, maybe that's very timely now that we're all in quarantine. So this is, broadly speaking telehealth, could you just talk about you know, what services it's done and then how that's changed cuz I know a lot has changed around regulations. And I assume you've seen a big spike in traffic. Yeah,
Matt Layman 9:43
we have this year significant significantly. So doctor on demand, as you said, it's telemedicine. So it means you can get on a video call like we're doing here with Google me and except physicians on the other side, and the physician as your bio information and all the tools that he or she needs to do everything to help get you a prescription, if you're sick or tell you your arm is broken, go to the hospital, I can't do this virtually. So it's not for everything, but it can serve a lot of the needs for the common ailments that are out there. And, and has that that convenience factor, I guess of being a simple video call. And then can you also serve at the same time serve underutilized areas like in rural communities that are having hard times, actually having the doctors out there. So that's that's largely what we do. So it provides that service, but it's also it's it's focused on patient care, and getting you your lab work done. There's a behavioral health stuff. So psychologists and psychiatrists and that kind of thing, too, which is also something we've seen a large uptick with the pandemic, there's a lot of, as you might imagine, there's a lot of depression out there. And, and a lot of people really struggling. So yeah, I think I think we're doing some good in the world. So I definitely feel good about the product and what it stands for. And knowing that it's, it's built on Django, so we're a gigantic Django shop, I was looking at it last night, just kind of have some rough estimate for the ground of like, how big is this thing. And so our Django system is primarily a monolith. We're moving to services and talk a bit more about that. But it's a it's a Django app with 80 plus Django apps. So Django project, I guess, with 80, plus, Django apps, and somewhere in the range of 300,000 to 400,000 lines of Python code. So it's no small app. Right? So
Carlton Gibson 11:41
here's the big question, then templates. Do you keep them in each app? Or do you keep them in a project level Templates folder?
Will Vincent 11:50
API karlton API's?
Matt Layman 11:52
It's more of the latter essence, we will note that we're we have a lot of JavaScript clients that do our member web application. And our provider application. They're both Angular apps, and their native native clients as well, which are, you know, the primary way that our patients actually interact with us is either through iOS or Android.
Will Vincent 12:14
So we had just into Shelley on in February, who was the technical co founder of doctrine demand, and she talked kind of about the early days. So I'm really curious about. Yeah, the challenges now with you guys are huge. What are the I mean, because she had mentioned, you know, building it from scratch, and video, and there's a lot of around things around billing around if the insurance provider was in a different state, which I believe that's something that was relaxed during quarantine, it's gotten some of the laws are still there. So it's, you know,
Matt Layman 12:44
the legal stuff is complicated, I guess. But there there, it has gotten a bit easier with the with the quarantine mode. It's, I can't speak to just send is awesome. And she obviously knows a lot of the history because she, as you said was the technical co founder. So at some point, within the last, I guess it was sometime in 2019, she she stepped away, she went on to a new gig, and was as the CTO left that that hole in our, our company, and we needed someone to fill those shoes, which is a very hard task, because she's a very talented individual. And so my role is actually, I'm the software architect, so I kind of stepped in halfway to, you know, if I do half the job that she did, I'm doing a good job, I think. And so this broad half, I have to get this broad view of how Dr. On Demand works. And it has changed quite a bit since since he's left, we're doing lots of lots of things to modernize the stack, like when you start the company, when you start any startup, I guess, you got to get default alive, you have to make sure that your business gets off the ground. And sometimes that means making choices that, you know, in a perfect world you wouldn't make. Yes. So the reality is, is that some of those choices were made in Dr. ondemand history, and we're working to steer the ship away from a glacier, I suppose. And make sure that we have a good solid forward trajectory. So we're doing a lot of modernization to switching from kind of legacy, easy to deployed instances, to a more Docker container flow and getting towards containerization and orchestration and all the bits that come along with that. And it's not because you know, I'm actually a big fan of, of not doing doing that person in my personal projects. So there's definitely a spectrum of what it means to when you should apply these techniques versus others. And I think it's important for a company of the size are becoming because of the pandemic because of just the need for the growth of telemedicine general. We're growing rapidly. And in order to make the product work for the team, we have to move to these different technologies that kind of make it more manageable to move artifacts in or in our build pipelines and, and get our deliver the actual software. So it's a big transition that we're going to be running like lots of instances, right? Because if you use a big service, you've got lots of client calls, you've got lots of, you know, individual clients making API requests all the time. So you need, you know, it's not just that you can run one container, you're running many containers, and at that point orchestration, you know, container orchestration platform becomes,
Carlton Gibson 15:35
yeah, that sounds like a good idea.
Matt Layman 15:37
Yeah, cuz, you know, part of it is like, we, we need to be available for doctors like you, we have active running calls, basically, all the time. And so, to the best of our ability, we have to be a zero downtime service. And going from, you know, really high uptime service to as close to zero as you can possibly get. That's a really hard engineering challenge in order to make sure you do your database migrations properly, so that you never lock the database tables. And there's a lot of stuff that, that if you can, if you can skip that stuff, if you can be like 99 point, you know, three nines or four nines, whatever, you know, is the term that we like to use an industry, right? If you can be at that level of uptime. Your life just gets a lot easier, I think.
Will Vincent 16:27
Yeah, well, speaking of scale last, or the episode that came out last week was Carl Meier, Instagram, which is, you know, the ultimate, like, however many nines you want. But yeah, it is interesting how, yeah, yeah, the nines, and it just sort of becomes exponential with the difficulty. But I want to ask, so the software architect role, so did you. Sorry, you manage? So you're managing engineer, like, how does that differ from CTO? And had you done that? It's storybird. Right. That's, that's a big shift from being a individual contributor, if that's what you were before, which,
Matt Layman 16:59
yeah, it is a really big shift. And I, I didn't know what the role would necessarily mean. And it had to mean something different. And the company wanted something different from just into this role. As, as the technical co founder that she was, she also was pretty forward with the customers. So she had a lot more direct interaction, just because of the nature of she was the first engineer and she had had to talk to them more directly. But in the intervening time, we've grown large sales organizations, we've grown different kinds of capabilities. So the the role that was asked of me was, was really purely a technical one, where I didn't have to, to stand in two worlds. So I've been, I did move from kind of a, an individual contributor, or lead lead ish type of role to to being in this architect, and, and I don't have any, you know, I'm not a manager. My job is I basically been asked to step back from the whole system and stare at it from the 30,000 foot view and say, hey, what, what can we do to make this whole thing go better, which is really cool in some ways, but really intimidating to me the other. So I said, I didn't actually know what I was going to do. When I started, my initial process was to essentially interview the entire engineering team and say, Hey, what do you think it is, is important to you as an architect, because everybody's going to have this different vision of what an architect is actually going to be helpful for? Or what they think an Arctic even is? And then that was, how I started just trying to shape like, what does it mean for me, and here's this idea in my head about how I can best help the team. And so ultimately, I settled on, my job is to help unblock engineers as much as possible to try and help set standards for the teams to make sure that we have the right tools in place to do all the things that are essentially boosters. And for and multipliers for the actual team itself. Though the, you know, the boots on the ground. engineers who are writing tons of code, I do still write code, just to be clear, just less of it these days. But the the ones that are fully devoted to those feature domains that are doing tons of work. They get all the junk out of the way. That's that's my objective.
Will Vincent 19:24
I think that's a wise approach.
Matt Layman 19:26
I try and be trying to be a force multiplier. That's that's the real goal.
Will Vincent 19:29
How many engineers? Can you say do you do you all have now?
Matt Layman 19:33
Oh, the rough number
Will Vincent 19:35
roughly,
Matt Layman 19:37
is hundred plus, and growing rapidly, I think.
Will Vincent 19:42
And then what's what's the split of Django versus front end or, you know, servers? How does that divide?
Matt Layman 19:49
We do have a large because Django is so big. There's so much of that code. It is the majority of our engineers, I think, fall into that camp. We have solid front end And as I mentioned, we have native clients too. So it's a lot of specialized knowledge. Because when you get to a system the size, you can't ask the Android developer. Well, I mean, there's there, there is the rare breed, mobile developer who can just jump around between all the different mobile languages. But what we found is that it gets specialists that specialize in Android and specialize in iOS and specialize in the JavaScript stacks. And so we have a lot of littler teams for our different clients, and then a large pool of Python developers to actually work on all the business logic, because business logic has, as you mentioned, insurance and dealing with the actual communication of medical data, and the clinical operations aspects of it that deal with all of your interactions between the physicians and the patients. And so there's kind of different camps in our business logic as well, that have wildly different functions and what they do within our gigantic monolith.
Will Vincent 21:05
Carl, did you have some questions? I've got a whole list, but I feel like I've been monopolizing.
Carlton Gibson 21:09
No, I'm just listening. And I mean, massively interesting. In a team of 100 engineers, that's a big team. And, you know, the coordination problems on a team that size. And so you talked about starting to think about breaking off into services. And one reason why companies do that is because the coordination problem in the monolith becomes too big. Right? So it's much easier to break up a bit, and then we can give that to that team. And they can work independently. And
Will Vincent 21:35
I mean, and not take down the whole stack in it. Yeah, well, I mean, I've heard that argument that serverless is just, you know, to protect the technical thing from junior developers and not left, yeah,
Matt Layman 21:47
and we're switching all that age. Now we're 100 is a pretty at some level, that's a target. I don't know the exact number I wish I did. Although I don't know that it'd be allowed to share it, technically, but so our staff is really we have a lot of QA engineers as well. There's, there's a wide variety of staff beyond just Python. So there there is the complexity of managing a lot of people. That's true. But I think that we have enough kind of specialized roles that are still, there's still enough autonomy in there, I guess, is what I'm getting at. That it's not like a management nightmare. We don't have tears in tears, like I can't. And I say all this because I came from this gigantic defense contractor, where, when I was the only one there, the top guy, the CEO, CEO of the whole company, was if you had counted the numbers was like level 12. So if you imagine a pure, like, it was literally a command and control structure that was like a gigantic pyramid of managers. And I was at the bottom, and this guy was at the top, and there were 12 layers in between, we're now nowhere near that level of complexity doctor and a man. So it is a it's a bit more amorphous. And we've got a lot more flexibility, which is, is there's I guess the point is that there's a lot of opportunity for us to be rapidly evolving to the way things are going with our technology.
Will Vincent 23:10
So you mentioned QA, can you talk about testing and how you again, you're, you're in the medical space? It's very important for it to work? How do you maybe start, I assume using pi tests, but how do you think about testing? And what are your kind of your goals is organization to be well tested? Because obviously probably don't have 100% test coverage?
Matt Layman 23:29
We don't, but we are we strive, we never striving for outright 100%. It's not a realistic goal, in a lot of cases. But we have shifted the culture wasn't always this way, shifted the culture. So that new code today, it comes with tests, if you're changing code, there's an expectation that you're going to write test code along with it. And we did that. for a lot of reasons. We were started on Python two were moved to Python three was important. And and we wanted to make sure that the system worked as we switch the runtime from major breaking change with the language and and how do you discover that in the language that you can't compile? Well, you just got to run the code. And so we did a lot of work to to really increase our test coverage. And I think we're probably the back end code is probably in the range of 90 ish percent coverage, which is pretty well covered. That's,
Will Vincent 24:30
that's fantastic. Yeah,
Matt Layman 24:31
it's a, it's a lot of its uses pi test and, and pi test Django, as our test runner, which is a is a pretty good, great system. There's a lot of advantages to using pi test that come along with that of using fixtures although I've I've mixed feelings on fixtures that which we don't need to get to and using other aspects of that, but those those are that's kind of the ground floor of our testing and strategy is to have good unit test coverage to get the competence that we need. But we have a pretty rigorous release process, as is, as you said, is as a medical company. And if we make mistakes, we could really mess with people's health. So that weighs a lot on people. And we want to make sure that what we deliver is, is safe. And so our release process takes a little longer. But we we do try and have basically a release train, that is, is cutting a release every week, and we have a dedicated QA team that is really focused on making sure that the fit and finish is there for the product. And it goes every week. You know, I do have objectives to goals to move us towards continuous delivery in a safe manner, with making heavy use of feature flags and, and that kind of theology. But that's, that's a adjusting from a culture that is very cautious. And you want to keep that caution to keep that safety, but at the same time, move quickly and deliver the value of the new features is something it's a balance of balancing that we have to walk and try and walk that
Carlton Gibson 26:13
line. It's difficult with native apps as well, because you have to get them through App Store approvals, and all kinds of things, which is not an instant progress process. Right?
Matt Layman 26:21
That's true. Yeah, the client apps do have their whole their chain of stuff. And yeah, I was I was primarily referring to just the back end delivery on that weekly train. But you're right, Carlton, d. e, client apps, they, they're on their own cadence just because we are subject to the whims of Apple and Google, when it comes to delivery of apps.
Carlton Gibson 26:42
What's the one thing that sort of comes to mind is the you know, you're constantly looking at is this change compatible with the client that's available now? Or, you know, and what what scale time we're gonna roll this out. So you talked about database migration. So there's one thing you've got to keep, you know, your your Python app, your Django app compatible with your database as you migrate your database forward. But also, you've got to keep your Python app compatible with the clients that are consuming it as they're able to deploy? Yes,
Matt Layman 27:07
yeah, measure, that's a nice problem. And to deprecate things or when to, because there are, we have some big hammers that we could bring out and say, you know, what, we really need to stop working on this API. So we're going to force upgrades on if you're on this version of Android, we're gonna just flat out say, Sorry, you need to upgrade. So, but we want to do that rarely, because you lose patience, when you when you do that kind of thing. And that means that keeping around API's is is tricky, that that stuff lives around much longer than you necessarily like it to. Because there are you find better ways of designing better API's that that fit the pattern of the business better. And well, you know, you got to support the people that are there.
Carlton Gibson 27:52
That's tough. And can you can I ask about them to use like, rest framework or a side approach, use graph qL, graph qL at all that kind of we,
Matt Layman 28:02
we've decided to use rest framework. So we didn't actually start with rest framework. We started with Django JSON RPC. json RPC is a protocol that exists, you can go read the spec, it's actually not very long. And it's fine. I'll say that if I send
Will Vincent 28:19
I mentioned this as one of our mistakes, in hindsight,
Matt Layman 28:22
it was a good decent choice at the time, and just maybe a little bit of a gamble. And and, you know, had the industry adopted it more broadly. It would have worked out okay. But the reality is it kind of just as a bag of data that goes into a dictionary like object and, and when you make JSON RPC endpoints, you're sort of throwing out whatever you want in there serializes a dictionary and go, which, okay, is convenient, but it does lack some of the structure that comes along with rest framework. So we are moving slowly, in some some ways. So to rest framework we have a lot. So I say that we actually do have a lot of REST API endpoints, we've drawn a hard line in the sand says, no more JSON RPC. Everything must be rest going going forward. And we're doing that because we have a lot of partners who would love to have API's that they could consume, that gives them information. You know, and the partners that I'm talking about are like healthcare companies that that embed doctor on demand in their applications and services. And they want to be able to not just put a fancy frame around our actual app embedded in their stuff, they really want to call our REST endpoints and, and integrate deeply with our product. So we're pretty rapidly moving towards heavy rest adoption, because, you know, the last thing we want to do is say, Well, hey, here's our JSON RPC endpoint, go use that. Because that's, that's just not gonna fly for them for feature flags. Do
Will Vincent 29:54
you use something like Django waffle or did you write your own in house solution?
Matt Layman 29:58
We do. Use Django waffle. Currently, it's been it's been a good tool. It's not a perfect tool, it's it's. And I think we're going to run into some of its limitations perhaps. Because even though we have a monolith today, we're moving to a more distributed architecture. So we have services that are starting to go out and do their own thing. And things are starting to talk to each other over HTTP, which means more databases, or these different services. And, and since waffle is database backed, what does it mean, when you have more than one database? like where do you go? Yeah, to do your flags, it's like a little there's a flag over here. And there's a flag over here. And the management of that is harder, but But today, it's serving us pretty well, as a way to deflect
Carlton Gibson 30:46
it gets it away.
Will Vincent 30:49
So maybe, let's talk about your personal educational efforts. Yeah, I'm always amazed. I feel nice. Even knowing our stuff into Monday.
Carlton Gibson 30:56
I just know you from all your, you know, Django content stuff.
Will Vincent 31:00
Yeah, I know, you're putting out more stuff than me. And you have a day job. So I'm like, Oh, my God. So let's Where to start? So maybe let's start with Django rifts. So this is a podcast, you've done a number of episodes. And this, I think, so far, this is just you talking about different areas of Django. Is that right?
Matt Layman 31:16
That's right. So the idea behind it was, I love the format that you have for the show already. And so I didn't want to replicate that and have all of the same guests on and just do rehashes of the same content. Because this, this podcast already exists. But I thought like, well, well, what do I like to do? And one thing I like to do, and we haven't really talked about this is I organize Python Fredrik in my local community. And so I get I encounter a lot of people, well, pre pandemic, I'll caveat with that. But when we were able to meet in person, I would encounter a lot of people who want to get into Python and ask a beginner questions and all that sort of stuff. And, and I really enjoy teaching those folks, I enjoy just seeing that light bulb go off on folks like, Oh, I get it. So I wanted to bring some of that to Django if I could, because I've, in the last year, especially, I'm just kind of niche down to Django and say, like, this is the community that I care about, and what can I do to add, add value to that community? And so I thought, well, if I like teaching, and there's already podcasts, maybe I can teach through podcasts, for those that might be more aural learners. Because not everybody likes to read, not everybody likes to learn through video. So if there's what if there's a different format for consuming less and, and learning a little bit about Django and hearing the terms and, and can this all all this information come together in somebody's head. So that was the path that I walked down is, this year, I started this podcast and, and turns out, it's a lot of work to make podcast, as you guys know. So I am making about an episode a month, that is essentially digesting as much of the Django documentation that I can, putting my take on it, because I wanted to be a little personalized and just have an opinion. Because sometimes there are multiple ways to do things in Django. And to get an opinionated take to, to plow the pave the cow path. And, and give people a real clear idea of this is this is a flow you can do this is how you get into it. So the podcast approach is to be take that high level view of things, I start the first episodes of talking about the browser and like basics of how browsers and servers talk to talk to each other. And I go layer by layer and start getting deeper and deeper into the stack of Django. And, and you know, getting into, I'm not going to shy away from any topic, I do believe that once people learn things, I really trust people's ability to understand concepts, even if they're more difficult. And so I'm not going to shy away from the maybe scarier corners of the framework. And was, can I just stop you?
Will Vincent 34:10
What are the scary corners? Do you think?
Matt Layman 34:13
Hmm. Well, maybe, maybe I will shy away from some scary corners. I don't know. But
Will Vincent 34:19
I'm curious. I mean, there's two answers, right? There's as a, you know, at scales and expert, and then there's for beginners. I'm just curious if there what jumps out at you, because I'm always thinking about this to about how do I explain Jango to people
Matt Layman 34:32
and depth of knowledge that, like the the ORM, for example, is well, that you can go down? Yeah, just it's deeper and deeper. You get to aggregates and you get to the sub queries, and you get to the nitty gritty of the ORM. And that that is a potentially scary place for people because it also the ORM is very powerful, but it's simple level. There's a level of SQL knowledge. I think that comes along. To take advantage of the really advanced features of it. And ultimately, I want to get to those areas too. But but there's, there's so many layers to get through before you even get to that point. So that's, that's probably one of the areas that, you know, here be dragons, but it's okay, well, we're gonna get to bring our sword with us and go slay them.
Carlton Gibson 35:17
I think that's a really good point is that, you know, to really leverage the end, you've got to know how it maps down to SQL. And you've you've got to understand how the GROUP BY clause is working. And you know, why these particular columns need to be referenced. And you're Yeah, it saves you from writing these SQL by hand. But I, you got some Boy, you got to learn that you've got to know it. Yeah.
Matt Layman 35:40
All abstractions are leaky, do agree, even even really well written ones. And I do think the Django ORM is a well written abstraction, like it's a great tool. The times that I have to get to raw SQL are basically zero. So, you know, as you pointed out, Carlton, it's, it's, we do need to know some of the details of SQL, but most of the time, I can be blissfully ignorant of that stuff.
Will Vincent 36:05
What and I believe James Bennett is a colleague of yours, right? Yeah, that's right. That James James also he has a, he has a, in addition to working on it, he has a three hour talk that he's given at Django con in Python, which may be a link to which is, is quite the deep dive on the ORM.
Matt Layman 36:24
Yeah, it's a it's a great talk, he delivered it at a doctor on demand for on staff and he did a he does a good job. He knows his stuff. But when it comes to the ORM
Will Vincent 36:32
well, fantastic. Yeah, and I'm really glad you're doing the podcast, I really like your, your format. I know how much work it is, especially just to speak, you know, it's like a university lecture, imagining the audience response. And it's a lot easier to have a co host. So I want to ask you about Twitch. So you stream almost every week, right? Like, I see you tweeting out and I've watched a couple of your streams. It's like nine o'clock on Thursdays. Is that right? Are you it's I don't know, where you get the energy? Because you have you got a job. You got kids? And I'm just like, Yeah, I know, I have enough and you don't have enough children or something. Let's go screaming. Hey, so I'm curious. Like, how is that what what's twitch like, because I'm pretty ignorant about it. Other than knowing that, I get it for video games, but I haven't consumed much around, you know, programming other than I know, I would love to see how other programmers do their job.
Matt Layman 37:24
Yeah, and that was, that was what it was, for me to the, I think I got into it. So I listen to a podcast called the change log, which is an excellent open source podcast, I, if people haven't heard of it, they should go check it out. And one of the episodes they had on there was with an individual Her name is Suze Hinton into I think, but she goes by the handle of no op cat, and is a twitch streamer. And she was just describing her experience of, of streaming code, code development, specifically on Twitch. And she got into it, I don't know if she has a certain quirky charisma to her, I guess. But she just made it very sound like a fun thing to do that, hey, I can build up a community, or this is her and her words, I can build up a community, I can work on things that are fun for me, like she's a hobbyist who does hardware programming, and programs, little microcontrollers, and the sort of things and, and just enjoys programming for fun. And that's kind of where I'm coming from, like, you know, people have all sorts of hobbies. And you know, some folks say, find other hobbies that are outside of programming. And that's fine. I think that my advice is okay. But if your hobby also happens to be coding, I should think that should be fine, too. And that's where I land personally. So my goal with it was to experiment with the format and, and see, is this something that I would enjoy doing, and it kind of gets back to this theme of I like to teach. So I thought, well, what better way to teach then have an audience that can you can communicate back with me because, as you said, with the jingle riff thing, like, I'm speaking into the ether, and talking for 45 minutes straight about a particular topic, and I don't there's no feedback loop. So having Twitch and having an audience and they can communicate and say like, why did you do that? Or what do you think about this? I think is really cool. So my first twitch stream was was absolutely horrid. It was like purely an experiment. I knew nothing about recording I didn't even bother to have you know, an external mic. So I had my my mic from my MacBook like as the picking up my audio, but you know, turns out streaming also takes a lot of demand on your card. So like half the stream is just Oh, from the the my fans revved up super loud. Yeah. It's pretty terrible, but Overtime, I learned how to do some of it. And, and yeah, I stream every Wednesday night 9pm eastern time in the US and, and work on Django projects work on side projects that I have going just to it. I did it for two reasons, I guess one was to teach. And the other reason was to actually make progress on my side projects. So I have too many side projects. And everybody maybe struggles with this to some degree. And I wanted to get something done. And it was a time where I could lock myself in and say, like, Matt, for the next hour and a half, you're going to stream because you're going to make work and get work done on this project. And so that's that's largely why I did it and how I got into it, and I'm still doing it
Will Vincent 40:43
today. And I believe you you've rebuilt your startup that you've closed down, right, the college finder, one or initially, that's how you you had a, that was like, how you started? Yeah, so I saw I saw some of those because I was I was fascinated by that. Because I that's incredibly educational to see, to go through it again from scratch and talk about what you would change and just that process from prototype to, you know, something you can deploy. Mm hmm.
Matt Layman 41:07
I was perhaps guilty of following my wife's pursuits with my side project. So
Will Vincent 41:14
you did mention that
Matt Layman 41:16
my wife is a was a college guidance counselor. And so the product that I was building was wasn't primarily for her. So I figured I have have a customer in my house that I can talk to. So let me build something that she's gonna find useful. And around that time period, around six months into developing this app and doing it live on Twitch, because I've done it for years prior to that, she decided, or we decided, actually, that we're going to homeschool our children. And so she's like, and just the level of work for homeschooling our children meant that she didn't really have the time to do the the college guidance stuff as well. So she set that aside, and it's like, well, I'm not going to pursue this if, if she's not even doing it anymore. But To that end, I created a homeschool, to help with scheduling for our kids and making sure that her schedule is manageable. And and got to start from scratch. So you can go back to Episode 38, or something I've shown notes for you every episode that I produce on Twitch. And I start a project from scratch. And you can see me fumbling through things and getting it up on Heroku and integrating Django environment and all these tools that are needed to get an app going from the ground floor. So that's that's the process there.
Will Vincent 42:37
So I've been guilty of building something close to my heart. And it's it's always a little dangerous when you have one or two good customers because you get blinders on. But I think, you know, the homeschooling space is a it's a fascinating space, the whole time I was at Quizlet, we were looking at that, because that's always been the early adopters, for any sort of educational technology, because you kind of cut out the admin, you go straight to teachers, as customers, teachers of the parents. So even more. So now I think that's a great way to look for innovation and to just be able to do stuff direct without the b2b cruft of ad tech, because, as you know, people think it's b2c, and it is really, really b2b.
Matt Layman 43:18
Yep, it is. Although I would recommend people do if you're starting a new project, do market research, maybe beforehand? I did. Look, I did some market research recently, and realize there's actually like, 15 competitors out there. So it's a good base. I
Will Vincent 43:31
mean, that kind of that's good. You don't want to be the like, I mean, that's true. But also you don't want to be the only one who's doing something because that's probably telling you you're missing something.
Matt Layman 43:40
Right? Right. So I enjoy the project. And, and I want the real goal for me is, I want to make something that's useful for my spouse to make her life easier. And if the side effect is, it also happens to make other homeschooling families lives easier. That's, that's a bonus.
Will Vincent 43:56
So we're coming up a little bit on time. But I want to give you the chance, Matt to talk about. I know Dr. indemand is hiring. And you also have on your website, a whole fantastic series on Django. So what would you like to leave with our audience?
Matt Layman 44:09
Yes, Dr. And a man has a lot of stuff going on. pandemic is, unfortunately good for medical companies, I guess you can look at it that way. So we're growing rapidly, and we need more people. So if you're interested in working at a company that is doing a lot of good for patients out there and serving communities, that's definitely a good place to go. So there's, there's a careers page or you could reach out to me directly. And I'd be happy to connect folks there to get them into our engineering organization. As for my Django stuff, I have a series on my website. So I have my website is Matt layman.com. And the series is called understand Django which you can find right in the banner at the top. And I'm doing essentially to understand Django Essentially the feeder material for their generous podcast. So I do all this research on the Django documentation and distill all this stuff, I write it, write down all these notes, and kind of put together these topics and put it out there, and then speak to them later on the podcast. But if you don't have time for the audio version, and you just want the quick pay what's an opinion and take on learning Django, Doc's, or learning Django? More generally, then I think understand Django is a good, good way to go about it. And I read about other stuff periodically, too, that that come up as, as, as the as the need arises, that from things that I discover,
Will Vincent 45:40
like Hugo inside of Django, I shared that with Carlton before this, because we've had separate discussions about you know, not needing to do that. But you know, I've used Hugo, he goes great, and you had a whole, you have a whole post on putting it inside of Django.
Matt Layman 45:52
Yeah, it was a fun little experiment, just to see if I could do it, and not use a subdomain and do a different approach to it. And it worked out worked out didn't work perfectly that i and i document the some of the trade offs of things that I learned in the process, but it was a fun way to go to try and see if I could get a static blog, served by by Django and white noise, without, you know, without putting a reverse proxy in front of it and all the baggage that comes with that.
Will Vincent 46:18
Right. Fantastic. Well, Matt, I I love your content, and I just you have so much enthusiasm for coding it. It really rubs off when I read your articles when I hear your podcasts. It's it's very impressive. It makes me think, Manuel, like get it together. Like he's got a family to like I love your enthusiasm, and you're just pumping so much great content out. So I hope people get a chance to see more of it if they haven't already.
Matt Layman 46:42
Well, thank you very much. I appreciate that.
Will Vincent 46:44
Carlton, any closing thoughts?
Carlton Gibson 46:45
No. Exactly. In order of your of how prolific you managed to be like it's
Matt Layman 46:53
the secret is pomodoros. Okay, the Pomodoro commit yourself to 25 minutes. You can do it. Yeah. Do it daily. Fine. Just be chip away at it. That's all I do.
Carlton Gibson 47:04
And what about going to bed early? This kind of thing?
Matt Layman 47:08
No, I'm actually I'm actually a night owl. Right. Okay. Yeah.
Carlton Gibson 47:12
stay up late, would you pomodoro?
Matt Layman 47:15
That's right.
Carlton Gibson 47:16
Okay, super. Well, we'll
Will Vincent 47:18
have links to everything. in the show notes. We are at Jango chat.com. Chat Django on Twitter. And we'll see everyone next time. Thanks again, Matt.
Carlton Gibson 47:26
Thank you.
Matt Layman 47:27
Thank you.
Will Vincent 47:28
Bye bye.