Developer Tea

The Bucket Model

Episode Summary

Discrete and continuous data are all around us. In today's episode, we talk about a specific model of thinking that combines discrete and continuous. We'll also talk a little bit about non-linear curves and how they fit into this model.

Episode Notes

Discrete and continuous data are all around us. In today's episode, we talk about a specific model of thinking that combines discrete and continuous. We'll also talk a little bit about non-linear curves and how they fit into this model.

✨ Sponsor: ListenNotes.com

With over 91 million episodes, Listen Notes is my new favorite way to find podcasts. Whether I'm researching an author or trying to find something in a niche topic, Listen Notes has the search engine to make it happen.  Search for almost anything, for free, right now! Head over to ListenNotes.com

📮 Ask a Question

If you enjoyed this episode and would like me to discuss a question that you have on the show, drop it over at: developertea.com/contact.

If you would like to join the new experimental DIscord group, reach out at developertea.com/contact, developertea@gmail.com, or @developertea on Twitter.

🧡 Leave a Review

If you're enjoying the show and want to support the content head over to iTunes and leave a review! It helps other developers discover the show and keep us focused on what matters to you.

Episode Transcription

In today's episode, we're going to talk about the things that you don't realize you already know. And compare them to the things that you believe you know but you actually don't. My name is Jonathan Cutrell, you're listening to Developer Tea, my goal on this show. Instead of driven developers like you find clarity, perspective, and purpose in their careers. And in today's episode, I want to focus on this idea. It's a system or maybe a model of thinking that you're going to see, once you, if you listen to this episode all the way through, you're going to see this model popping up everywhere. All right, because this model is so common, it's such a common occurrence that this model shows up and variations of this model. And you're going to start seeing it everywhere. And here's the basis of the model. All right. So first we need to establish a couple of baseline concepts. The first concept is the idea of continuous information. All right, this is what I was saying in the intro. Things that you don't realize that you know, but you do know. All right, and I'll prove it to you. Do you know about the number, 438,976? It's very likely that you've never seen this number or if you have seen it, you've only seen it once, maybe twice. And we can make it much more interesting if we were to add a bunch of decimal points onto that number. Or if we were to talk about a number that only exists in theory, like one third. We know that one third of three pieces of something is actually one third, but if you were to try to split the number one mathematically speaking into thirds, you can only conceptually do that. You can't do it on paper. But you know that. You know that number. You know that ratio because you understand the system that generates that information. All right. I want you to dwell on this for just a second here. Think about this really deeply for a moment. There are systems that you understand. And because you understand those systems by extension, you have knowledge that you haven't considered. You have implicit knowledge that you can derive from systems that you understand. All right. Now, sometimes these systems are incomplete. Sometimes these systems are implicit. Sometimes the systems only work in certain contexts. But nevertheless, there's a lot of information that we have as a result of these continuous systems that we can express and understand the outcomes without them ever having been kind of stored in our brains explicitly on the flip side. There are those explicit pieces of data, what we call discrete information, where the value is a specific thing and it can only be that thing. Or a better way of expressing this is the value can only be one of a selection or a set of values. And the way that discrete and continuous information is expressed, discrete information is often expressed as a list while continuous information might be expressed as a function. These are kind of the models of thinking. You have inputs to understand the signature of a continuous data point. We can take the inputs and come out with something. Even if we don't really necessarily know what that output is going to be, we can understand it through the lens of the function. But we can only understand discrete information in those specific values. We can't create a function or the functions that we create would essentially be picking functions. We would have to have the discrete values available from somewhere in order to assign them. Even if that information is expressive or can be expressed as a function, we can still identify the full and total set of optional values. Now, here's what's interesting. You could have a full and total set of discrete values that is generated from a continuous concept, but we're not going to get into that. Instead, I want to talk about how these things can combine. And in fact, how so often we actually have a model of thinking that does combine these two ideas that continue this model with this discrete data model. But first, I want to talk about today's sponsor. Listen notes. We've talked about a lot of cool things that listen notes is doing. First of all, of course, they're an incredible search engine. Over 91 million episodes that you can search. The second thing that we talked about in the last episode was the ability to listen later. This is as you're going throughout your day, you can add episodes that you want to listen to your listen later list, and then you can subscribe to that list in your podcast player overcast or pocketcast or whatever you use. Today, I want to talk to you about the API. They have an API for podcast app builders. If you have ever wanted to create a podcast application, and you didn't want to deal with the pain of having to integrate with Apple or something like that, what you can do is use the listen notes API. Here's what I want to encourage you to do. If you're even remotely interested in this, I want you to go and check it out. I hope you're to listen notes.com slash API. They have fantastic documentation and they have tutorials. They have an API reference. This is a very well done API reference with RunKit is integrated so you can actually run code that is documented and they have code snippets from Node, curl code snippets, Python, Ruby Objective-C, etc. Of course, Objective-C is going to be really important. Java is going to be really important if you're doing native applications. They have tutorials. They have FAQs. They actually have a lot of documentation here that will help you get started with this API. It's a very mature API and here's some of the kinds of things that you can find in this. You can have a best podcast. You can fetch a list of the best podcasts and you can do it by the genre. You can actually get the best podcast by genre. You can get a list of genres or, and here's a cool one, you can do curated podcasts. Fetch a list of curated, a curated list of podcasts by ID. I'm reading this directly from the documentation. Go and check it out. Heller2ListenNotes.com slash API and check out the API today. Thanks to listen notes for sponsoring today's episode of Developer Tea. So we're talking about this idea of discrete and continuous data, discrete and continuous information. Of course, you've probably seen this come into play. You've probably had to deal with this with your computing processes, whether you recognize it at the moment or not. We have, for example, a list of categories that would be discrete information, but we might also have some kind of calculation, score calculation. That would be continuous information. But I want you to take a moment and apply this model at a higher level. And the model that I want you to think about is continuous in the middle and discrete on the ends. We can call this a bucket model or you can call it a container model, whatever you want to call it. But essentially, we're talking about having a continuous middle. There's a bunch of values. In fact, an endless number of values in the middle. And then there's a discrete endpoints on either side of that. So if we're imagining this on a graph, for example, which is a good way to visualize mental models that are input, output, focused. The graph that you would think about is we have maybe a zero point on this graph. And then we have a top level, maybe a hundred on this graph. But then all of the points in between, we could have any number of values in between. And in fact, that's exactly that container model is parts of a hole in that particular scenario, right? If you're talking about percentage parts of a hole would be zero to one or zero to a hundred if you're using percentage points. And you can have any number of divisions of parts of a hole. But at the ends, there is a binary cutoff, which is a discrete expression that you've gone beyond. So you can only have a top level of one or one hundred percent. And you can only have a bottom level of zero or zero percent or whatever is zero plus the smallest unit of value, right? Which is a theoretical number. You can't go below zero because that's an expression of a different idea. You can't go above one because that's also an expression of a different idea. If you go below zero, that's an expression of maybe a debt, for example, right? If you have a negative value for parts of a hole, then you're missing something or something has been taken from you. And then if you have more than one, anything greater than one or greater than a hundred percent, then you have more than one part, right? Or more than one hole rather. And there are other variations of this model of thinking, right? The continuous model, but then things break down at the edges. The edge cases actually change. A good example of this, which I am wholly unqualified to talk about, is physics. We have a lot of rules of physics that work in our normal everyday contexts, but once you go to the edges of physics, for example, if you are going the speed of light, then physics changes. Right? If you're in a different part of the universe, at the edge of the universe, then physics are different than they are where we are here. And so we have contextual, continuous information that has its discrete or at least different continuous functions at the edges. Now why is this important? Because we can talk about the variations of this for a long time. But this is important because we very often believe that when the primary parts or the most used parts are continuous, that all of it is continuous. Another good example of this is the economy. The economy has a continuous upward trajectory that there is a never-ending limit to the amount of money we can make, for example. And that there is also a never-ending limit to the amount of debt that we could incur. But this is not actually true, that there are ceilings and there are floors to these numbers. And this is important because the assumptions that we make about the continuous parts very often could be made better if we understood the whole picture. Another good example of this. The amount of time that a person spends on your website, we generally consider increasing that time to be a good thing. This is a very common metric that you might use. Attention on your website. Let's say you have a marketing site and you're trying to sell a product. Attention on your product site is considered a good thing. You're capturing the attention of your customers. And the more attention that you grab, the more likely they are to buy your product. And so you try to increase the amount of time, the session time that people have on your website. But there is a point where that session time increasing is no longer providing additional value. So this idea that the amount of time is directly quantifiably a good thing. Well this breaks down at the edges. And it breaks down at the edges. And here's where this becomes really important. And there's a couple of things that really stand out with this. First, we might be tempted to create discrete information out of continuous situations. In other words, we might say, okay, we want to target a two minute session time. This is a discrete value. And if you don't make it to that two minute session time, then there's some level of devaluing, right? We're basically quantizing, if you're familiar with that term, you're increasing the value of things that make it to two to two minutes. And then you're decreasing the value of things that don't make it to two minutes. Even though a minute and 58 seconds is probably virtually the same as two minutes and two seconds. So this is something that we often do. We try to create discrete categorizations, especially with numbers because numbers are hard to understand. If you've ever set a goal, whether it was a weight loss goal or maybe a weight lifting goal, right, or a calorie goal, and you're off, right? But only by a small percentage. It's easy to believe that that is a complete failure. That you're off by three pounds means that the entire process was in vain. And this isn't because we actually believe it, but because we've created these discrete values in our minds and because we can't necessarily put ourselves into those categorizations, we have not actually accomplished what we set out to accomplish. Another thing that's tempting to do, and this is less to do with discrete values and more to do with how we deal with continuous values, is to believe that everything is linear. This is a natural and easy thing to accept, right? If I save one dollar, then I'll have one dollar later. If I save two dollars, then I'll have two dollars later. But what's hard to understand is that not everything works linearly. For example, I can save a dollar, but that dollar is going to be worth less later because of inflation. If I save more money in an interest-bearing account that I might overcome inflation, none of these things are linear. We have to think in percentages rather than in increments. These are continuous concerns. And because we process things more naturally in linear, we very often will discount the importance of non-linear thinking. And we're not talking about jumping from one topic to another, talking about literally from a mathematical perspective, being able to think logarithmically or exponentially. For example, you can imagine our previous discussion about time on your session time on your webpage. We could see a graph in our minds of value on the y-axis and time on the x-axis. So how valuable do you think one second is? Well, it's probably not very valuable. Two seconds probably isn't very valuable. But then we see a sharp increase in value. Let's say from five seconds up to about a minute. We can see a sharp increase in value. And then we'll see it roll back off. There's not an extremely higher amount of value from one minute to, let's say, one minute and thirty seconds. There's a virtually very similar session times. This is all theoretical. I don't know what your session times are or what the kind of sweet spot is for your particular website. What we can almost certainly say is that this is not linear data. It's almost definitely an S-shape, right? For in other words, it starts out slow. It's almost like an easing curve, right? It starts out slow, increases pretty rapidly, and then ends slow. And so when we can't imagine this curve, it's very hard to imagine it naturally. When we can't imagine it, then we treat everything as if it's linear. So the result of this is that we're going to overweight the short session times, which we might as well throw out, right? It's very likely that those short session times are worthless. It's likely that somewhere we're going to correctly weight the importance of a given session. Then we're going to underweight some of the higher session times, and then eventually we're going to overweight those session times again, right? This is pretty clear that as we see that value curve change in that S-fashion, and as we imagine that the actual value is linear, we can make some errors with this thinking. The same is true in our code, the same is true in our personal lives, as you... This is where we get the term diminishing returns, right? So we need to think about things and question whether our thinking is falsely linear. Maybe it is falsely discrete, or maybe it's falsely continuous. Maybe we imagine that there are more possible outcomes than there really are. Thank you so much for listening to today's episode of Developer Tea. I hope this is a thought-provoking episode for you. This is a little bit more mathy than we tend to go, but hopefully this kind of philosophy of thinking is helpful for you, merging these mental models with more practical applications in your life. Thank you so much for listening. Thank you to Listen Notes for sponsoring today's episode. Head over to ListenNotes.com to get started. Of course, we talked about the API today. That's just ListenNotes.com slash API. You can get an API key. You can get started for free, and you can build an incredible podcasting app. Maybe Developer Teawon't be featured on it, who knows. Speaking of featuring Developer Tea, if you want the show to continue doing what we do, the most important thing you can do to help us reach new listeners is to leave a review in iTunes or in Google Play or in whatever platform you can find to leave a review in iTunes. Of course, it's the biggest one. Being a review helps other developers find and decide to listen to this show, so it's absolutely critical. Thanks so much for listening, and until next time, enjoy your tea.