Part Two: Interview with Kalid Azad @betterexplained
Published 3/16/2016
In today's episode, I interview Kalid Azad, writer and teacher, and creator of BetterExplained.com.
Mentioned or relevant to today's episode
- BetterExplained.com
- ADEPT method
- First part of this interview (Developer Tea)
- Imaginary Numbers (BetterExplained.com)
- Unity3d
- "I hear and I forget. I see and I remember. I do and I understand."
- "Your teacup is full." (Story about monk and full tea cup)
- @WesleyHales
- Brazilian Jiu-jitsu
- ShopTalkShow.com
- Sandi Metz
- Sandi's Talk at 2014 RailsConf
- xkcd: "tar"
Today's episode is sponsored by Digital Ocean! Use the code DeveloperTea at checkout to get one month of a 1GB droplet, completely free!
And lastly...
Please take a moment and subscribe and review the show! Click here to review Developer Tea in iTunes.
Transcript (Generated by OpenAI Whisper)
Hey, everyone, and welcome to Developer Tea. My name is Jonathan Cottrell. And in today's episode, I continue my interview with Khalid Azad. Now, if you missed out on the first part of the interview, make sure you go to spec.fm to listen to that first part. And to make sure you don't miss out on future episodes of Developer Tea, go ahead and subscribe in whatever podcasting app you use. Thank you to today's sponsor, DigitalOcean. DigitalOcean is the fastest growing cloud hosting provider. And for good reason. We will talk more about what DigitalOcean provides to you as Developer Tea listeners on top of what they normally provide, which is an incredible service. Now, I asked you guys before to tweet at Rachel Smith when she was on the show. And so many of you did that. It was such a cool thing to see so many people listening and appreciating Rachel for coming on the show. I'd like to ask you to do the same thing with Khalid. His Twitter handle is Tweet at Khalid and let him know when you have an epiphany during this episode. I had quite a few when I was listening to the show. And I'm actually looking forward to listening to it again when it airs. So go ahead and tweet at Khalid because he would definitely appreciate hearing from you. Now, let's go ahead and jump into the second part of my interview with Khalid Azad. So I want to talk about Better Explained kind of more explicitly now because, you know, we've talked about learning, kind of we jumped straight in and, you know, great discussion. I want to see how you apply this because Better Explained is a really effective platform so far. You have over 400,000 monthly readers. That's a huge number of people that are interested in what we've already described as kind of this otherwise kind of cold. Thing, right? And so I want to talk to you about a couple of different things. First, we already alluded to it previously, which is the I guess it's called the ADEPT model. The analogy, diagram, example, plain language, technical definition. You have this on Better Explained. And that to me was such an enlightening concept. I want to talk about that. I also want to talk a little bit kind of about your about your background, but how you mine out these analogies. At the same time, you may find them if I'm somebody who's coming to the to the table and I don't have a Khalid to tell me what the analogy is, how do I find it in in a in some material? What do you have a process for that and that kind of thing? Great. Yeah, no, thanks. Yeah, I've been fortunate over time the site's basically it's grown and I think one of the lucky things for me is because math is fairly static in a good way. that actually in the developer ecosystem, so I'm a web developer actually by day as well. And the issue is there's new libraries, new frameworks. So your knowledge, the general principles of programming stay, but then the specifics of a library, you have to kind of keep up to date. Luckily with math, I have articles, some of the most popular ones are like eight years old, but it's okay because the math hasn't changed in eight years. Like a number is still a number and so on, or like the theorem is still a theorem. So if you can write something that maybe has a good analogy or a good diagram for that topic, then it'll stay relevant. So I've been fortunate that math was the thing that I wrote about versus I do have some programming things, but those ones, like I have some old Rails tutorials, but of course those are five years out of date now. So the math stuff seems to be the ones that are more sticky. But yeah, in terms of learning, I think the big, I guess the largest skill is really just recognizing when something clicks or doesn't. And it's kind of comes back to that taste element, just knowing that something tastes good or not. And so for me, I realized, okay, well, something will click with me if I can see the big picture, you know, at kind of a blurry level, 50,000 feet. And then I sort of zoom in gradually and sharpen in the details. And actually this is, I call it sort of the baseline versus progressive model. And it's a nice little programming metaphor as well. I don't know if you've seen, or you probably have back in the old dial-up days, sometimes, you know, you'd be like downloading an image and it would kind of chunk in slowly. And there's sort of two ways that it could be encoded. Like one is where you just go top to bottom. And so it's kind of scanning and it kind of fills in in perfect detail from top to bottom. And the other is it's sort of sending these updates. So it's kind of a blurry version of the full size and then it gets sharper and sharper and sharper. And eventually it sort of snaps in. And you sort of see that on YouTube, you know, if the resolution is being changed. And so I realized for myself, I learned best when I had that kind of blurry version that sharpens up versus kind of that perfectly accurate version, but you're only getting the first 10%, the first, you know, the next 20% and so on. So I need to see the big picture and sort of sharpen it up. And so the adept method is basically that, where you're starting with the blurry version and then you gradually introduce more detail until you end up on the most technical version. So an analogy is like a very blurry, you know, it's inaccurate, but it's okay. It's a lossy, it's kind of a lossy version of the, you know, the most technical version. And then you have a diagram, which is a little bit more accurate, even example. Then you have plain English, which is kind of a friendly description. And then you have the technical description, which is kind of the most accurate. And so I need to be kind of walked through those steps instead of starting with a technical definition. I feel like most people or most classes, they will be friendly, quote unquote, by very slowly walking through the technical definition, you know, and that's friendly in the sense that you're at least understanding that it is complicated, but you're still sort of taking somebody. It's kind of like saying, hey, we'll go for a marathon. Like this is a marathon is like the end result of like all this training. So we'll walk slowly the 26 miles, which is, I guess, slightly more pleasant than running through the 26 miles, but it's still quite, you know, it's still pretty brutal. It's grueling, yeah. It's grueling. And my thing is like, hey, let's just have a fun run. Let's have like a, you know, a 1K or 5K, you know, and then we'll build up our kind of endurance there versus like, going slowly through something that's still very kind of technical. So that's sort of the general approach. And then for me, I basically, when I find a new topic, so imaginary numbers is one that I like just because it's really confusing. If I'm studying a topic like that, I'll basically, I'll go on Wikipedia, not actually for the technical definition, just for images. I'll say, hey, are there any diagrams here? I'll go on YouTube. I'll look Google images. And I'm purposely not trying to find super technical definitions. I'm trying to see like when people talk about this, some hopefully they've been forced to make an image or two. And so I'm trying to force myself to find those images and diagrams and maybe try to get some rough intuitions out of that. And I sort of come up with my own analogy and then I'll start reading the formal description to see how people are describing it. Yeah. I'm like purposely trying to shield myself from some of the complexity just to, you know, it's almost squinting, like squinting and looking at the page. And have you heard of it? No. I haven't heard of that. There's like a usability technique. The squint test. The squint test, exactly. It's like, you know, sort of, yeah, step back across the room and can you tell what the layout is or what's the most important thing on the page? You know, it should be colored differently or it should be, you know, called out. And that's exactly it. It's like if there's a topic, okay, can I squint at it and say what's the most important key concept here? So for me, like imaginary numbers, they're usually taught in a very confusing and unintuitive way. The technical definition, it's like the size of the square root of a negative number, which is mind blowing and people seem not to, like the teacher will kind of say that and nobody will blink or the students will blink and the teacher says, oh, it's just the definition. You have to use it. And I say, nope, that's not good enough. Like that isn't clicking. And so a better intuition is that an imaginary number, it's almost like a rotated number. So it's like a regular number line, it kind of goes east to west, let's say. So you can go east to west. And imaginary numbers go north and south. And so it's like, oh, okay. It's like a second dimension. It's like, yes, exactly. Yeah. Yeah. It's like, oh, okay. But to get there, and this is kind of the tricky thing that they don't mention, like to go, if you're going east and west and you want to go north and south, you need to rotate. You have to take a, you know, like a 90 degree turn. And so when people say that, like I squared is negative one, basically what they're saying, and see that that's such a technical definition, I squared is negative one. My analogy is that, okay, if you're going, you know, east and you take two 90 degree turns, well, now you're going west. It's like, oh, okay, yeah, boom. So I was going one direction. I turn once, I'm going north. I turn again, I'm going west. Oh, wow, okay. So you can go backwards in two steps. And that's essentially what an imaginary number does. It's like, it says you can go from, you can get to a negative number in two steps if you allow yourself to rotate. It's like, oh, wow. And it's like, oh, okay. And that's a neat analogy. And then suddenly, so then suddenly you're thinking, wait, so could I use imaginary numbers like to model rotations? Like if I'm making a video game and I want things to be rotating, isn't it nicer to use a negative number? To represent that because it's already kind of, it kind of knows about rotations. So yeah. And so there's actually people use imaginary numbers and there's actually extensions because those are only two dimensions. You want a few more. And so they have these things called quaternions, which they use in like unity. Like a lot of graphics engines will use these kind of super imaginary numbers that can track more dimensions. And that's how they do the rotations. It's like, whoa, that's amazing. And the thing is, that's like an analogy that you figured out just by playing with that exploration. It wasn't like, in the Wikipedia article down at the bottom, it'll say, oh yes. And there's these extensions that can do these other things, but they don't really call it out explicitly. They kind of like that connection isn't really made. And so I try to, I guess mine or SIFT, I feel like a, like kind of like a gold prospector, you know, hoping something sticks in the pan. And I'm just looking at images, looking at PowerPoints, PDFs, just at a high level, trying to get images. And, you know, and sometimes they make analogies that don't work, you know, I'll make an analogy and it doesn't make sense and that's okay. Okay, you know, I'll go to the next one. But I, but once you find one that does work, suddenly, you know, it's, oh, I love that feeling. Like, like the aha moment, it's so invigorating. And so for me, I know that really motivates me. So once I find it, then I get excited. I start thinking about it more and then eventually make an article and write it down. But yeah, it's the process is really trying to, at a high level, get the diagrams, the analogies, and then slowly introduce the technical pieces. Yeah, and I think our brains are already hungry for this. I think we're, you know, we naturally want that high level overview before we jump in anyway. I don't think I know anybody who doesn't want to kind of get, my dad says, get the gist. And before we watch a movie, he wants to know what the gist of the movie is. So he can decide if he wants to fall asleep during the movie or not. So, but no, I think we want that overview to kind of learn about something from that. What is the end game here? Like, what is this? How does this fit in? And I love the idea of finding these kind of modeled concepts and then realizing that you had this realization, hey, we can use imaginary numbers to model rotation. And then- Exactly. Oh, it's the best. And actually that's one of my, it makes me like beam with pleasure. So I have this imaginary number article and it basically, I just mentioned rotations. And actually I don't mention the 3D or 4D, like the quaternions, they actually have four dimensions, but you can do rotations. You can do rotations in higher dimensions. And they don't actually say, oh, and this is what you're going to do with it. A lot of people in the comments ask, hey, wait a minute, can we have more dimensions? And I'm like, yes, you can. And like, here's how they can be used. And it's sort of like purposely letting the person, you don't want to spoil the joke. Like if you're a comedian, you don't want to over-explain the joke, right? You just want to hit, add the punchline and the person gets it and they laugh. It's not, okay, and here's what's going to happen. It'll be a crazy scenario, dah, dah, dah. Like you need to have that kind of, a little bit of a fun game element. And I feel like with teaching, we sort of miss that sometimes too. Like we don't let the person make the connection. We're sort of, this is, again, I think of these aliens. I try to, when I can like look at things from like a kind of objective, like perspective, it's like if an alien came to earth. And so if an alien came to earth, it would look around and see, oh, hey, everybody's chewing their food. Like we waste, you know, an hour every day just chewing. Maybe I should, you know, I should, you know, if I'm an alien, I should just like blend people's food and inject them with it. And it's like, actually, you know, part of the fun of eating is chewing. Like that's actually, it's not work. It's actually enjoyment. And trying to quote unquote optimize that, you know, because it's an inefficiency, right? Like we could eat our meals in two minutes if you just injected it, or you had like a liquid diet or something. And it's kind of like, it doesn't, you know, part of the fun is actually in a little bit of a struggle there. And it's not even a struggle. It's just, it's effort. And I feel like with learning too, like trying to smooth everything out and trying to get everything over, trying to make it a perfect path, trying to explain every conclusion, you know, ahead of time, you're sort of removing that wonder and that joy of discovery. And, you know, like the creator or the inventor of the math, they didn't know what it was gonna be. They were just, I mean, can you imagine being the first guy to figure out counting? Like I actually know, you know, I know how many sheep I have, yay. Like, you know, whatever it is, like that was such an awesome idea. So like, don't, you know, like let people enjoy it a little bit. And I feel, you know, there's sort of, and again, that's kind of the art of it. And I feel, you know, there's sort of, and again, art, you know, entertainment and art, they sort of have figured out how to get people to want to participate in something. And I feel like science and education. That's so true. Yeah, there's a lot to learn there. That's so true. You know, I wanna go back to your ADEPT model. By the way, did you come up with this model? Yeah, well, it's a general approach, I think. I just put the acronym. I was, I'm really not a fan of, well, I don't like forced acronyms. So it actually started with like ADE. And I was like, oh, analogy, diagram, example. And then I realized, oh, but then I have the technical definition. And then the plain English is sort of a bridge. So like the one, I guess I just, I made up the acronym, but I didn't try to like, I really don't like it when they force it. You don't wanna push it too much. I don't wanna push it, exactly. Yeah. It's like in programming too, they have a lot of, you know, there's all these in jokes and things like the recursive acronyms and so on. But yeah, this, I basically, people have been doing, I think even Confucius, there's a quote about, it's like, tell me. And, you know, I'll know and it's like, show me and I'll see, and like, let me experience it and I'll understand. So it's like an ancient concept. And I just put my version of it on there, but you know, it's an old. Well, I wanna return to it because you said something that was really interesting about, you know, introducing the fun run first, and then maybe moving up to the 5k. Whereas, you know, the traditional approach is to walk somebody through this marathon, right? It's so interesting because basically what you're doing is you're flipping this on its head, where the traditional approach is to start with that technical definition and then derive from the technical definition applications, right? So you have, you know, word problems that once you've learned in class, all of these kind of formal ways to approach the word problem, then you're presented with the word problem and you're set in, you know, somebody says, okay, here, use these tools to solve that word problem. I wonder how much of a difference it would make. To that class, if we just simply switch the order and we said, okay, here's the word problem. Here is the application in its natural form. Like this is something that you could imagine happening in a real world scenario, right? And then you say, okay, now you don't know how to solve this yet. We're going to show you a pathway to figuring out how this word problem plays out, right? And typically, you know, it's a little bit more difficult to solve or to say that some of the more complicated aspects of math can be, you know, brought down into a word problem. And then that word problem makes it all the way through as the final piece, the final proving piece. But certainly this idea of coming up with a analogy or even something that directly applies, I wonder how that would change the way that people learn if they were to see the problem, the way that they learn, the problem or the application first. Exactly. And I think it's way more interesting. It actually, you know, I keep looking for all these stories and metaphors. There's some, in a similar way, there's a story about a climbing instructor. You know, you want to learn rock climbing. Most people, you know, you go to a class and you'll spend like an hour learning knots and how to tie things and ropes. And I mean, that's important, but there's actually a guy who's an instructor. He's like, okay, you know, just go on the wall and just try to climb around a little bit. Like don't go too high, just climb. And that's what I'm trying to do. And so people will do that for about 10, 15 minutes. They get tired. And then finally he says, okay, now you've tried that. Here, let's talk about a few things. Like you got to use your legs. Like, you know, most people try to use their arms and your arms are weak, your legs are strong. Okay, you don't want to be hanging off the wall. You want to be close to the wall because now you have this like lever action. So basically people tried it and they understand the problem instead of ahead of time. Okay, use your legs. Okay, be close to the wall. Okay, do that. Like basically you're kind of giving people details about a problem they don't even understand yet. And so like it's really, it's, Yeah. Yeah. Yeah. Yeah. Yeah. It's not vivid in their mind. And I think that's exactly it. Like when you have a problem, I love the idea of giving somebody, I mean, math, you know, it can be its own art form, but often, you know, from the practical point of view, there are applications. But the neat thing is to have a problem that you can't do. And then you learn a way to do it versus like being given this hammer. Like, you know, give somebody nails, give them a board and they're trying to put it in. It's like, oh, whoa, this hammer's really cool. Oh, wow. And they might even play around. They're like, wait, wait, let me get a rock. Okay, let me hit the rock. And then you say, okay, well imagine taking that rock is really hard to hold, right? Like a rock is really round. So like maybe put it at the end of a stick because the stick is easier to hold. And oh, okay. And that's basically what a hammer is. It's like a rock at the end of a stick. Oh, neat. And it's much more like natural versus like here's this perfectly, you know, pristine tool that's been machined and everything. And that's exactly it. I think for myself, I found it so much more interesting and you sort of can engage people. And also, I mean, people find different techniques. Like, I mean, this is a kind of a general thing too. As a teacher, I mean, I've been teaching and bringing these things up here. I see myself, I don't even like the word teacher so much. I'm more of like a guide, I guess. I'm like a guy, you know, I want to go up the mountain. Hey, there's a nice view up there. Like, let's go, let's go explore. But on the way, maybe you'll find a better path. Like, this is my path up there, but maybe you'll find a different path and maybe you'll notice something along the way that I missed. And so, I think there's this kind of, kind of, not paternalistic, but it's sort of like the teacher knows everything and the students don't know anything and it's time to, you know, fill up the student's mind with the teacher's knowledge versus kind of an exploration where, or more like a coach where it's like, hey, we're like doing this training session. And actually, as a teacher, it'd be nice if you're doing the exercises too, and you're sort of learning things. And, you know, a lot of people say they only learn something when they have to teach it. And oftentimes that's because, you know, it's your second or third visit. And it's really funny, most people wouldn't claim to understand, let's say Shakespeare, like, you know, let's say you read Romeo and Juliet one time when you're 14. It's like, okay, you know, oh, I know Shakespeare. It's like, no, or I even know that play. It's like, no, I, you know, I read it once when I was a kid. If I read it again, I'm sure I'd get a lot more out of it. And so I feel it's a second, third visit that, you know, if you're allowing yourself to kind of be open and, you know, you know, empty your cup and, you know, fill your, I don't know if you've used that. Do you know that about the, like the, the, the master, like the, like the professor and the Zen monk? No, I don't think so. Oh. I think it actually fits with your, with your podcast. So basically. Oh, perfect. Here we go. Exactly. So there's like a, kind of like these old Zen stories about a famous professor who knew all about different religions and things. And he came to Japan and he was going to study like the Zen, I guess like the Zen religion. And so he's explaining to all the monks about, you know, all the history of the temple and all the things he knew. And he went to go sit down with this elder monk and the monk offered him, offered him some tea and he said, oh, sure. So the, the professor put down his cup and the monk filled up the tea and it was filling, filling, filling. And then it got full and the, the, the, a monk kept pouring and the professor said, no, no, you can't. It's full. It's full. No more will fit. And essentially the monk said, well, just, you know, that's like your mind, like your mind, just like this teacup, it's already filled with what you think you have. You need to empty it in order to get some more in there. And so it's sort of that like humility, but humility makes it seem a little bit more like you have to be different than you are. It's more just, it's open exploration. So again, yeah, being a teacher and just exploring and who knows, like you will find new things. I mean, I get a lot of teachers who they say, oh, you know, I never thought of it that way or that diagram. I've never seen it. And that's great because now to me that, you know, that teacher can take it and modify it. I, I have this analogy about sort of being like a grocery store. So I'm a grocery store. I have apples, I have tomatoes, I have, you know, all these ingredients and you can eat them whole, like an apple is delicious by itself. Or if you're a teacher, you can take this apple and make a pie out of it. And I, I don't know how to make pie, but like, Hey, you made a, you know, you made a lesson for your students based on what I think is a high quality ingredient. So hopefully it tastes great and the kids like it and it's different from what I had too. So yeah, it's more of a playful thing versus this kind of, yeah, very prescribed thing that we're used to. Yeah. I love the, so the university model is very much this way. If you have, especially if you've experienced going for a post-grad degree, which, you know, most people don't these days, and there are many reasons not to, and there are some reasons to experience that post-grad degree. One of the things that I loved about my experience in university was that the, the professors, they studied with us, right? It was, they did research with us. They did research projects with the students. And it's very different from what you're saying, this idea of taking the knowledge out of my brain and transplanting it into your brain. That wasn't the goal. The goal was to say, okay, here are the methods that I use to research. And now let's find new things together. And that was an amazing experience because, you know, it didn't leave this mark of like, well, I've blazed the trail and now you can follow behind me. It was more like we're, we're blazing a new trail together. Exactly. And actually a fun example of this, basically once this happened to me, I, I threw out any notion that I knew anything. I basically, you know, I tried to empty my mind and empty the cup. So, um, you know, like if you think about the concept of, you know, a percentage, it's something that we use every day, you know, percentages, we probably see it, you know, a hundred times a day, poll numbers, you know, interest rates, everything. And so, you know, I, I'm pretty sure, or at least I thought that I knew pretty much everything there was about percentages, right? Like we, we've been using it since like, you know, elementary school, we know it pretty well, but there, there's something I think, at least for me that I missed the whole time is that you can actually swap the numbers in a percentage and you actually get the same result. So for example, if somebody asked me, Hey, what's a 16% of 25, I'd be like, Oh, 16% of 25. Oh, hold on. And if I didn't have, you know, it's like, okay, let me, let me get the math. Okay. Do you know, do my, and you know, it's a little bit cumbersome, right? 16%, 16% of 25, not fun to figure out. But if somebody said, Hey, what's 25% of 16, I would just, Oh, four. Yeah. It's easy. Right. So wait, wait, one was hard and one was easy, but it's actually the same. Problem because 16% of 25 is 16 divided by a hundred times 25 and 25% of 16 is 25 divided by a hundred times 16. So, so like either way, yeah. Isn't it crazy? So it's like a percent of B is the same as B percent of A. And I've never heard that before. Isn't it crazy? And I, I just, it was basically, I was literally doing that problem out and I was writing like 16 divided by, cause I had to do that 16 divided by a hundred times 25. I'm like, wait a minute. I can just put the divided by a hundred on the other side. Wait, that's and boom, boom. And so after that happened, I was okay. Because, and I, you know, I would have bet somebody a hundred dollars that, you know, I think I know everything about percentages, especially something that obvious. Like there's only two, it's like, actually I love it. You know what? We're programmers. There's a percentage function. Hey, it turns out the order of the parameters doesn't matter. Fancy that. You know? So if you're doing any logic to order your parameters correctly, you can just drop it all together. You just drop it all together. Exactly. Like who cares? And maybe, or if you're calculating a tip, I mean, and this is kind of the, I guess the joke, there's a 50% chance that one way will be easier than the other, you know? So maybe like you're, you're just looking at some numbers and you just want to make a quick mental estimation. We'll just flip it around. Maybe, maybe it's a little bit easier, you know, maybe one numbers and it's like, oh, okay. You're just eyeballing it. And it's like, holy, like, and a percentage is like, you know, again, it's like, oh, okay. And it's like, oh, okay. And it's like, oh, okay. And most people don't like math that much, but I think they agree that percentages are probably pretty useful. Pretty easy. Yeah. And you know, it's kind of necessary to probably survive in modern society to some extent to know what a percentage means. And it turns out we didn't actually really know what it meant. We didn't really, like we missed it. We didn't follow it through. We didn't follow all the logic. All the logic. And it's like, oh, wow, that's crazy. And so after that, I was thinking, okay, man, like what else have I missed? Like I'm willing to, I'm completely willing to, um, oh, actually this is a fun one too. Uh, again, for the, for the programming audience, um, you know, all those like off by one errors that you get in four loops, like you have like array indices and like, you're like the length of the array is like minus one. And like, there's all these little gotchas that are, that deal with counting. Sure. Because of zero index, right? Zero index. Exactly. And so as a programmer, we sort of kind of, we're kind of aware of this a little bit. Like we sort of know you have to sometimes watch out when you're counting in loops and with like, you know, memory addresses and things. We're kind of like, we kind of know there's something going on and we're suspicious of them. Like I said, we always check our bounds and things like that. But, um, there's sort of this general concept. Um, it's called like the fence post problem. And essentially if you have a fence with, let's say 10 pieces, like 10 lengths of fence, there's actually 11 posts because you, you have to kind of cap the ends. So you have the first piece and the length, and then basically like, and it's kind of cool. Like if you draw it out or, or even like a fence with one piece, right? Like a, a fence, with one piece has, has two posts. And so it's like, Oh, wait a minute. So when you're counting, sometimes you're counting the fence pieces rather than the posts and, and a good example, actually. And I love this. Like, I, it's like one of those things you tell the kids, but it actually works in adults is if I say, Hey, can you do some chores for me? It's like, okay, fine. Uh, so you're in an office building. I want you to mop floors eight to 11 from 8am to 11am. It's like, Oh, okay. And so most people say, Oh, I have like an hour per floor, right? Cause it's floors eight to 11 and it's 8am to 11am. It's like, Oh, actually floors eight to 11 is eight, nine, 10, 11. And so that's four floors, eight, nine, 10, 11, but 8am to 11am is only three hours. So it's like, Whoa. So what happens is some things in life are counted as points and some things are counted as spans. Units. Units. Exactly. And so what happens is sometimes if you're doing subtractions, you're comparing things, you're messed. You know, you're getting those off by one errors. And it's essentially because something was counted as points, something that's kind of spans and it's this fence post issue. And it's so funny because we've learned to count, you know, again, in like elementary school, but nobody told us like sometimes it's like, or, or date ranges. Like for example, if you're out of town on vacation from March 8th to March 11th, you're actually gone for four days rather than three, three. But if you just look at it, you're like, Oh, he's out for three days. He's actually out for four days. Sure. And it's like, Whoa. So like, you know, it's crazy. And so this happens all the time, all the time. And we just think we're being foolish. Like, wait, you know, you just subtract it and you get the wrong answer. And it's like, no, no, no, it's actually eight, nine, 10, 11 is four. And it's, it's crazy. Like, have you seen that? Uh, this is exactly that issue. There was a, uh, kind of a, I don't know, it was somewhat famous thread on, I want to say bodybuilding.com. Oh, I heard about that. That's right. It's like, is it like seven or eight days in a week or something? Yeah. It was on average three and a half times going, to the gym because they go, you know, Monday, Wednesday, Friday, and then I don't know, Tuesday, Thursday, Saturday, uh, or something like that. They basically, it worked out that, um, they go three and a half times per, per week because they just alternate days. Right. And so naturally, um, you're doing one at once every other day and there's seven days in a week. So you're doing on average, uh, one out of two days, which is one half of that seven days. So the average works out to three and a half. And, and the thread basically, and I'm probably not going to include this in the show notes because it's, it's just not, you can Google it if you really want to see it. But the thread basically is people going back and forth, getting really angry that you can't go to the gym one half time. It's just, it went on for probably 40, 50 pages on this forum. Oh man. It's kind of, it's, and I just imagine these guys like super like amped up and angry. Oh man, this is, it's, it's pretty common. This sounds like something out of Futurama or something. Oh yeah. It was amazing. Oh man. That's funny. I think I, um, I heard references to it, but I'll maybe I'll, uh, when I have some time to kill, I'll go check that out. It's one of the, uh, I would imagine that if you found like a Reddit thread on, you know, hall of fame of the internet that it's probably in there somewhere. Oh, that's awesome. Yeah. And, and you know, it's funny because like, and now suddenly the math is interesting to people, right? Like, wait, we wouldn't average mean and this and that. So, you know, like I think that, you know, there's definitely ways, Hey, uh, you know, I'm not too particular about the method. So if that's what it takes to get people interested, okay. Yeah, sure. You, you jump on that thread and be like, Hey, by the way, everybody, I have an answer to this. You can understand this. Yeah. The fence post problem. Yeah, exactly. So it's kind of great. Yeah. I mean, but that's it. Like you can, and a lot of things with math, it's, it's not like you're trying to force fit it into life. It's, it's a, you just sort of have that concept and then it'll just pop up. And, um, you know, a lot of people with that too, they're like, Oh, when am I going to use this? And to me, that's a little bit like saying, you know, why should I learn the word gigantic? Like, when am I going to use the word gigantic? And I'm like, I don't know. I don't know. I don't know. It's like, well, it's kind of nice to know that exists. And sometimes it might be really fitting. I mean, you can't just say really big, like you can get through your entire life saying really big and never saying gigantic, but there's sort of a, a nice appreciation for the fact that this is sort of an existent, you know, it's a concept and over time in math, we've kind of tuned it down to the things that we think are actually useful. So we're teaching algebra, geometry, like things that are, that have been useful for thousands of years. We're not the cold practical things. Yeah, exactly. You know, things that like, the math that wasn't that useful has been like, kind of, it's faded away to some extent. So yeah, this is sort of what's been distilled down. And yes, but exactly. So like, you're not like, so maybe the bodybuilding thing or like the days of the week or you're counting. And it's funny, actually, for me now, I have like a set of kind of gut checks or like heuristics. So if I'm, if I'm ever doing a subtraction in the back of my head, I just, I'm saying it's funny. It's not even that I know which one to use. I'm just like, let me just do a quick example and make sure I got it right. So somebody said, you know, 8am to 11am. And you have floors eight to 11. I wouldn't just think one hour before, you know, I would have to say, wait, wait, I think it's an hour before. Let me just double check. Oh, it's not. And then I'd have to actually, you know, like, I've learned to kind of check myself and, you know, have those little debug, kind of those assert statements, actually, like in my in my logic. And I'm like, okay, testing yourself, testing yourself. Exactly. Just because I know how easily it is to get or how easy it is to get tricked on these things. Yeah. Today's episode is proudly sponsored by Digital Ocean. You know, I was at Fluent Comp this past week, and I saw Wesley Hales actually tweeted about this. Wesley Hales did a demo. He demoed his his application. It's called Speedgun. And he he was able to deploy his application in less than about two minutes. And he used Digital Ocean to do it. That was just a little bit of a surprise. And he did it live on stage while he was giving a presentation. This is a testament to the reliability and the efficiency of Digital Ocean. Digital Ocean is the fastest growing cloud infrastructure provider because they they are laser focused on their mission to create simple and elegant solutions for developers and development teams. Now, it's incredibly easy to deploy, as I just said. It takes just a few minutes and you can deploy with pretty much any kind of platform that you're used to using. Node.js, Rails, Magento, Docker. And you have access to these things, root access, and you can spin them up and take them down through a control panel. Now, Digital Ocean is built to scale. You can you can obviously scale their scale your applications manually, or you can use their API. Now that mixed with the fact that Digital Ocean is highly reliable and available. There's data center regions around the world. And the fact that it's straightforward pricing, you only pay for resources that you actually use by the hour. There's no setup fee, no minimum spend. This is kind of a no brainer for you as a developer. Now, if that wasn't enough, Digital Ocean has been kind enough to provide developer team listeners with a special code that gives you an entire free month on a gigabyte droplet. That's a gigabyte of RAM that they're talking about there, a gigabyte droplet. And all you have to do, to get that gigabyte droplet is use the code developer T at checkout. Thank you once again to Digital Ocean for sponsoring developer T. Of course, you can find the link to Digital Ocean, as well as that special code at spec.fm. I love this concept of finding the problem first. And this is, this is really why, you know, on the show and many other programming related podcasts, when people ask, you know, how do I learn? What is the best, the best route to learn? So often you hear the answer, make something, like go and actually build something. And it's not because, first of all, we're being lazy, right? The podcast hosts that tell you to do this, another great example, Shop Talk Show, just build websites. It's not because we're being lazy. It's because this is truly the way that you, that you learn best is going and seeking out the problem, the actual problem, rather than trying to learn all of the solutions that you're trying to solve. And so, you know, it's, it's, it's, it's, it's, it's, it's, up front and then, you know, cherry picking from your list of solutions to solve the problem with, learn the solution by finding the problem, learn the solution by going out and, you know, discovering something where that solution should go. And then you can kind of, you know, find your way backwards. And it helps to have some base level knowledge and it helps to have a go-to resource, for example, a mentor, or maybe a couple of books that you can, that you can reference. But if you're going to learn, for example, JavaScript, you're going to learn much better if you go and build something with JavaScript and then refer to the reference book, you know, as you're building it, rather than trying to go through the whole reference book and then going and building something. Exactly. It's really, really hard to kind of walk through the official description without any kind of real world thing to ground it. And actually in that way, I have some side projects that basically I use. If I'm trying to learn like React, for example, it's like, hey, okay, you know, it's written, this project was written a while ago. Let me just try to refactor it into React and then I'll learn about React, you know, basically. Through that refactoring. Through that refactoring, exactly. And it's hard to say, oh, I'm just, I mean, some things maybe you're casually interested in, but it's way more fun when you can say, oh, you know, I applied this pattern or I use this library and now this, my project got way cooler or way easier than it was before. And, you know, that kind of before and after, I think is pretty powerful as well. It's the same thing with like the, like, you know, you kind of struggle and it actually, it reminds me a little bit of like jujitsu or it's, yeah, you know, like the martial art, but basically it's all about using leverage and kind of, you know, even if you're smaller, you can still use leverage to lift somebody who's bigger. And the thing is, if you just wrestle somebody without knowing anything, you're just tiring yourself out and you're basically exhausting yourself. But suddenly you learn one little thing like, oh, if I like, you know, push on their hip this way, you know, you're just like, oh, I'm just going to do this. And then the next day it's really easy to move them. Suddenly it's a lot of fun. It's like, oh, this thing, like you remember how difficult it was and now it's a lot easier. And so I think the same thing, like with your project, you know, as you get better, you remember how cumbersome it was. I think, oh man, I remember the first time I learned CSS, like, you know, like in high school, like learning HTML and, you know, you're putting like font tags, like this is way back in the day, like you're putting font tags in and like, you know, you're making things manually colored and then CSS, you're like, whoa, I can like, I can change the whole look. Like I changed this one file and I didn't touch my HTML and it looks completely different. Whoa. And it's amazing. And I think it's, you know, it's, it's a little bit hard to appreciate that sometimes unless you struggle a little bit with the old. Yeah, I agree with that. I think actually Sandy Metz does this very well in, in her book. And I've referenced it many times on the podcast before. But she introduces the concept very well upfront and often she'll, she'll end up writing, you know, refactoring code and writing it in such a way that, you know, you start feeling the pain, right? So like it starts getting a little bit out of control and, you know, but she, she kind of trudges through and then she says, now let's look at this code. Does this look great? Probably not. But here's a way that we can make it look better, you know, and just this constant refinement and introducing new concepts through, through that exploring the problem first. She does that very well. The book is called Practical Object Oriented Design in Ruby. But really, it's just Sandy, a lot of Sandy's rules and experience that she's placing into the book. Another thing she does, by the way, we mentioned a squint test for usability earlier. I feel like it's worth mentioning. Sandy also does squint tests on code to see if the code is, if there's anything that's out of shape, right? So if there's any one really long line or one really short line, or if there's, you know, a block of lines that are all the same length, some of that could cause, you know, she tells you to look at it and see if there's a better way to write it. And typically, you know, the best code basically follows a simple contour without any outliers. That's a great, I really like that. I'll have to check that out because one of my philosophies too is you can't just show somebody the right result. You need to kind of show them the thinking process that got you there. The motivation. The motivation and also like the judgment. Like she said, oh, like it sounds like, oh, hey, you know, I started with this function or this, you know, this program. And it's a little bit unwieldy. And, you know, as you can see here, we're repeating ourselves, or it's a little bit cumbersome and let's refactor that and make it better. I feel this is actually what math unfortunately suffers from is that you have this kind of golden or this like bright jewel element where, you know, from like, it's like this perfect jewel of an equation. And you don't realize that this equation was arrived at through like a process of struggle, or this is like a cumbersome way to write it. Let's simplify it. Let's smooth it out. And because really, uh, the goal isn't necessarily to get to the end point. It's to kind of experience. It's like when you do a pushup, like the goal isn't to actually move like your chest six inches, like moving your chest six inches isn't the point. It's really about your arms lifting a weight in the struggle. And so I think with math, it's like, oh, I got to the end results. Like, well, yes, but unless you understood how you got there, it doesn't matter. Like we have computers that can find the result, you know, the answer. We don't, we don't need humans to do that anymore. I want to make sure that, you know, the path that we took, is it really sinking, uh, sinking in? Uh, it's, it's, like having that apple ingredient, like you were saying earlier, uh, you have the apple and now you can mix that with other new, interesting, exciting things and make stuff that nobody's ever had before. Exactly. And really it's, you know, if you understand, this is, I guess, a little bit metaphysical, but if you understand the nature of an apple, like an apple is sweet, it's crisp, it's kind of juicy, it's, it's got these attributes. And now the reason you pick an apple in your pie is because all the pie, you know, I want something juicy and, and kind of crispy, you know, and you may want to use the apple, you may want to use the crunchy in the pie. And so that's why like, yeah, it's not, it's not it's apple-ness it's, it's crunchiness, right? It's a crunchiness, right? Cause you would never make an orange pie, but like an alien who say, why not an orange? It's like, well, an orange is like citrus. It's kind of sour. It's like squishy. Like it was just, it just doesn't work. And well, the aliens blending all of that stuff together anyway. Oh, that's right. Sorry. Yeah. They're just injecting you in the back room anyway. So, but exactly. Yeah. It's really about like being able to look at something and kind of summarize it in your own mind. And I think that's sort of like the point for me of an analogy is that it's like, it's again, you know, we, it's funny how many we use in everyday language, but we don't realize, you know, like metaphors like, uh, well now that is like the Ant and the grasshopper for saving or, you know, like eyes looking at your stomach, all these, like we use so many kind of metaphors and similes in life just because it's so easy to like, it summarizes the essence of the, of the argument. So quickly or like slippery slope or, or anything, we really can get across a huge, rich context with just a few words. And so to me, like once you have an analogy, you sort of summarize this, yeah, this, you know, this, or this, this concept is equation. You can summarize it in two words and now you can use it and you, you sort of get the apple-ness of it. Um, you kind of hold it in your hand. Yeah. The kind of these keywords that can anchor you back to that central idea, uh, of a more complex thing. Exactly. I guess that's kind of like, kind of like a heuristic, I guess. And actually this happens in programming all the time too, where you end up chunking concepts and then you can use those chunks. And I mean, that's kind of programming, right? Like you, you have a lot of statements, you put them into a function and then you have a few functions. You might put them into a module and then you have some modules and you're sort of building up something. So, you know, we might use an acronym like MVC and it's, you know, three letters, but now you understand, oh, okay. You know, this program is broken into tiers and there's like a model. And maybe, you know, there's a view and things like that, but you've basically summarized something that could be pretty complicated into a few letters. And now you can say, oh, we have MVC and we have a rest space API. And suddenly like, it's a lot of, you know, it's a lot of tons of things. Yeah. You've chunked it up. And my thing is like with math, like, you know, when we have an equation, yeah, the equation is like this giant super, like the equation is literally the source code of, of like a library, but you, you don't want to think of a source code level. You want to think of like the, the function or like the behavior level. So it's like, okay, you know, don't label it. Even something like the Pythagorean theorem, you know, that's like kind of a, a bad name in a, in a way, because that's, that's like saying the, the module that was written by Pythagoras, you know, it doesn't, it doesn't really tell what it does. It's like, oh, the Pythagorean theorem, how about like the distance theorem? Oh, that, that, that might be. So like, let's use the distance theorem here. Oh, okay. Like that, that's a lot more kind of useful than this kind of name. So there's actually another- Less memorable, but much more useful and descriptive. Exactly. And now you can sort of take that concept and like, you can almost pseudocode. Actually, I kind of do pseudocode math where if I'm trying to think about, like, I have this sort of analogy that math is, it's kind of like software for your brain. It's like software that your brain is running. Yeah. It was the first time I learned the word function. Yeah, exactly. Yep. Function, algorithm, all these words, they're sort of like from the math world where there's like, Hey, yeah. And, and actually, if you look at like F of X, like it looks, it's just like a, it's like JavaScript. It's like you take a parameter- Or Lisp or something. Lisp, exactly. And it's super terse. And it's not like, it's actually not well documented. It's not typed very well. There's a lot of overloading. Like it's, it's not as clean. There's no, like, it's not as clean as a language, but the concepts are there. But yeah, you can really like, you can take those concepts, you can chunk them, you can think at a higher level of abstraction, and you're not stuck in the source code. And I think a lot of people with math are used to having to memorize. It's literally like- Yeah. You know, memorizing every feature of the API instead of knowing, okay, I can, I can, you know, put data there. I'm sure there's a parameter to control the sort order. Like you don't have to memorize every little detail. You just know that you can look it up when you need to, but you need to be familiar and comfortable with it. Yeah. And really everything we've talked about today has been enlightening. I'm sure there are, there have been quite a few of those of your trademarked aha moments there. Yeah. And, and, you know, for me too, that's the thing. It's like I, my general approach, I guess, you know, for people that are, trying to learn or anything, it's really just find what lights you up. So for me, that aha moment, it gets me going. For someone else, it might be something different, but I think part of education, which I think is missing, unfortunately, in school is teaching you to like, the point of gym class in school should be to find a sport that you like, that you can play for the rest of your life and enjoy. That should be the point. If gym classes to teach you about physical education, that the number one goal should be when you graduate from high school. You've at least found two or three sports that you think, Hey, you know, in my forties and fifties, I want to play tennis or basketball or something because, you know, it doesn't, like running around exhausting yourself for a few months when you're 18, doesn't really help your long-term goals, you know, right. Yeah. And same thing for math, like cramming, algebra, intrigue for a couple of years when you're 18, or, or, you know, a couple of semesters when you're 18, it doesn't really help your long term outlook on things. And so it's, it's kind of like the, the newspaper thing, it's like the The point of the gym class is to find something that you care about. And the point of math should be to find a way to unlock that excitement in yourself. That way, if you need to, you can always learn something and you know how to engage yourself. Yeah, that's incredible. Hopefully, I have a few teachers listening to this episode. That'd be awesome. Yeah, and actually, I'll send it around to somebody I know too. So hopefully, they'll make their own apple pie there. Yeah. Well, this has been great, Colin. I do have two questions that I like to ask every guest who comes on Developer Tea. And these are just kind of the Developer Tea branded questions at this point. The first one is, if you could spend 30 seconds with every developer, what advice would you give them? Oh, big question. In your readme files, start off with examples. So whatever modules, please just give me some really simple examples. Like whatever you're doing, just get to the point. Like don't use jargon. Just like whatever modules you're making for people. Like man pages and things are okay, but they tend to be pretty verbose. Like just make it usable for somebody who doesn't know the details of your code. That's really interesting. I actually just did an interview with Kenneth Reitz. And he actually is the Python lead at Heroku. And he wrote requests and records. And requests is at HTTP library for Python. And records is a SQL library. And his whole kind of pitch is writing code that humans can understand a little bit better. And I love that idea of maybe there's a man page. Here's a pitch for someone out there who wants to start a open source thing. Write human instead of man. And hopefully somebody will take that and do something better with it. Than what I just did. But the idea of having a more approachable introduction to whatever the thing is that you've built. Is such an important piece of this puzzle. I end up Googling the thing when I don't understand the man page. Exactly. And I think there's a famous XKCD joke. Which is someone puts you down in front of a terminal. And they say the world's going to explode unless you can untar this file without any errors. On your first try. It's like I'm sorry. I'm so sorry. XCV, FZ, R. Oh is it going to be in the current directory? Yeah exactly. And it's like the fact that. And I probably use it every other week. And I still have to Google. I have little snippets. Because I have to remember. Oh here's all the parameters. Exactly. So making that easy for people I think is the. I mean the thing is the code is written once. But it's used a million times. So it's really the usage use case that we need to worry about. Yeah. I totally agree with that. The second question. If you could choose a topic for people to talk to you more about. What topic do you wish more people would ask you about? Good question. Probably. The. Maybe the connection between math and programming. In terms of. The things that programming does right. That math can do right as well. So I feel like math. It's evolved with a lot of kludges. And the notation of things. There's a lot of old school. Like it hasn't really been refactored. And so there's a lot of. It would basically. Imagine if COBOL never went away. And we've just been like. Add it. You know. Just staying with COBOL this whole time. And there's more libraries. And more COBOL. And we've got like COBOL 95. And COBOL 2015. Like we've got like new features. But we haven't really. Necessarily like really. Had like a new language and things. And I feel like in math. Like in calculus. A lot of these subjects. You know there are hundreds of years old. And the notation has evolved a little bit. But it's still fundamentally. Using these older systems. And it would be really neat to say. Hey programming. You know it's a new field. But we've kind of really made things a lot better. And so how can we. Take those lessons. And bring them into the math world as well. I've always wanted to see. Equations kind of notated. As pseudocode. Exactly. Exactly. You said that earlier. And it struck a chord with me. Because I really do want to get. More into. Kind of a better. Basis of mathematics. For my job. Right. I would love to understand more of this. My biggest hurdle is. How do I understand. What this function. What this notation is saying. And I'm having to. Try to climb back into my brain. Back from when I was in high school. To remember what all these notation. Things are. And it's not descriptive. And often even in the plain language. Description beneath. The notation. Where they tell me what all those different pieces are. You know I had to go. And figure out. Okay is this a special value. Like E for example. Which I know is a special value. But maybe there's like three or four others in there. That I'm just not aware of. Exactly. Oh yeah. Even conventions. Like is this a constant. Or is this a variable. Is this a function. And like there's little hints. Like is it a capital letter. Or a lowercase letter. Or is it an italics. But there's all these like. It's kind of really clued. It's not like a strict. Definition. Or there's no compiler really. Like you know. That can give you the rules. And things. And so yeah. It's really. It's really kind of contextual. In some ways. And it's. It makes it more difficult. Than it has to be. Yeah. I think one of the most. Effective things. That's like. Kind of stuck with me. Throughout all these years. Is Sokotoa. Exactly. Yeah. And there's ways to. Kind of. We've developed shortcuts. And little. Mnemonics and things. And I think we need more of that. We need to kind of. Embrace. Kind of. The ways that actually work. And you know. My general approach is. If it works. Do more of it. If it doesn't work. Try something else. Just kind of keep. This A-B test. Math teaching. A-B test. Yeah. Sure. What works. You know. What's actually sticking. And just keep going with it. Yeah. I love that. Well Khaled. Thank you so much for joining me. On Developer Tea. I'm sure there are many people. Who are listening. Who have been appreciative of your time. And I certainly am. As well. Thanks so much. This is great. Thank you so much. For listening to today's episode. Of Developer Tea. My interview with Khaled Azad. Of course. If you missed out. On the first part. Go back. And listen to that. At spec.fm. Every episode. Of Developer Tea. Is available. At spec.fm. If you never want to miss out. On another episode. Of Developer Tea. Go ahead and subscribe. In whatever podcasting app. You use. That ensures. That you are notified. Whenever a new episode. Comes out. And that happens pretty often. On the show. Three times. Per week. So go ahead and subscribe. So you don't miss out. On future episodes. If you're enjoying. Developer Tea. Make sure you leave. A review. In iTunes. That way. This is the. Most important way. To help other developers. Find Developer Tea. Thanks again. To today's sponsor. Digital Ocean. They are the fastest growing. Cloud infrastructure provider. And for good reason. Go and check out. Digital Ocean. Of course. You can use the code. Developer Tea. To get a gigabyte droplet. For free. For an entire month. Just for Developer Tea listeners. So go. And check out. Digital Ocean. Especially. If you're looking for a cloud. Infrastructure provider. But even. Any developer. Really. Can get a good use. Out of. Out of Digital Ocean. And keep it in mind. For the future. It's a great platform. To keep in mind. For the future. Of your. Development projects. Thanks so much. For listening to. Developer Tea. Again. Remember. You can always reach out. To me. Directly. At developer tea. At gmail.com. Or you can join. The spec slack community. By going to spec. Dot. FM. Slash. Slack. I'm in there. And every other. Host. For. From a spec show. Is in that spec. Slack. Community. And we'd love to hear from you. Thanks so much for listening. And until next time. Enjoy your tea.