mergeconflict219 James: [00:00:00] Oh my goodness. Frank, how excited are you? Frank: [00:00:13] Um, I'm a little tempered down because it's all like cloudy outside. It's very awkward. It's actually not clouds. It's smoke. Do you have a smoke where you are James: [00:00:24] smoke everywhere. Pacific Northwest completely blanketed. Do you remember Seattle 24 months ago? Frank: [00:00:33] I don't have time. I, uh, yes. Yes, James. I do. What could you describe it for me though? James: [00:00:40] While last time we blamed. Canada for all of our smoke issues. Now we're blaming California and Oregon for all of our smoke issues, but yeah, pretty much the entire world is on fire. Everything's terrible. But you remember actually Australia, not too long ago, also terrible. Everything's terrible. But. Frank let's just take a break. Let's take a break and let's actually get into some more. It we're ignoring it. It's happening. My Dyson air purifier is on full blast is all day. It's just like literally so upset at me right now. I've been, um, Me, Frank: [00:01:16] we got one lucky devil. James: [00:01:17] Well, so funnily enough, got the Dyson air purifier two years ago when this happened and they were sold out everywhere. Right? We, we held onto it obviously cause expensive, but literally it inside the living room where it's at it, the air quality went to very poor and has not moved. And it's just on full blast. It's like the Dyson cannot filter the smoke particles. Fast enough, basically. Frank: [00:01:45] Yeah, the city rated it a hashtag unhealthy. So that's good. Um, but oddly enough, I haven't actually been minding and I'm, uh, the heat's been born knowing, so it's just a combination of heat and smoke. That's just making the world and a pandemic, very pleasant. I feel like I've totally sidetrack this podcast and the negativity though. So let's forget all of that. What are we actually talking about? James: [00:02:10] Well, actually, before we move on to the topic, now that you have sidetracked us, you have to go to this website that I tweeted out earlier, which is the most amazing website in the entire world, by the way, it's called IQ air map. And what I love about it is that not only does it tell you where all the wildfires are at, where the heat map is at where the smoke map is at, but it gives you an interactive look at all of the air flows happening at all times. So great. I love it. Frank: [00:02:35] IQ air.com. Uh, yeah. I love these wind maps. Uh, I've never seen one in this case cause that's terrifying. Um, gosh, modern world, so cool. I don't, I've always thought about these wind maps. Like how are they doing? Are they looking at pressures? Are they doing trace particles? Are they doing it more? Cleverly than that either way. It's really cool. I'm kind of mesmerized by a bunch of work to see. So I'm going to close this. Yeah. James: [00:03:05] So we are excited, not for the smoke cause nobody is a, we're excited Frank, because we are getting a brand new type in DyNet five. Frank: [00:03:14] Uh, we're getting a lot of types body. I kept we're going from good to new type. Yeah. I don't know. Um, this time I'm going to guess I'm going to guess. I, well, which platform am I on.com? James: [00:03:31] I know, listen, we're getting a new binary floating point number that occupies 16 bits. Frank Frank: [00:03:38] did, did you read my topic list? I put this down as a topic. I wanted to talk about this. I'm so excited to be talking about this. Are you talking about behalf type James? James: [00:03:48] Yeah. You know, I read the topics you put down the list every single week. I, you know, here's the funny part about this is that this came up in my newsfeed and I was like the new halfpipe. And I was like, Whoa, the dotnet things. We're getting half pipes what's going on. And then I reread it and I was like, Oh, Um, no, that's, that's, that's, that's a half type, um, Prashanth, uh, did this amazing blog post it's very short. And to the point, uh, I read it. I didn't understand any of it, except for I'm assuming a half type is smaller than a full type Frank: [00:04:21] it's, um, it's actually smaller than a single type single, you know, single, right. James: [00:04:28] I know single that's like a, a you int. Frank: [00:04:32] No. No. So the PR the problem here is that in C sharp, it's called flow, but in the BCL, it's called system dots, single, single, because you know the other one double, double James: [00:04:49] and Frank: [00:04:50] double it's easy to remember. Yeah. Well, not long. That's the 80 bit floating point. That's one from Intel. James: [00:04:57] Let's start at, let's start at the lowest point. Frank, let's see, I want to understand where these news cause honestly, I don't know how often we get new, like BCL types. So there weren't, I mean, of course we get new lines, class types, but like, I'm assuming that this is going to be blue in the IDE on like other things which are like a different shade of blue, Frank: [00:05:14] um, primitive, primitive, primitive, primitive type. Yeah. It's really interesting, especially because I'm sorry, I got a side rail us already. So this type of thing, floating point type. That's why it's going to be different from the integers. So that's what we'll get to it, but it's a floating point type. It's kind of interesting that in.net, The runtime only specifies 64 bit floating points, but as we all know, we can use other ones. So it's kind of interesting that we're able to introduce a primitive data type without, I don't think modifying the runtime at all. So that's kind of cool just in the design of the runtime kind of James: [00:05:54] stuff. That was pretty crazy. So we have float is that, is that R is the float is the smallest floating funk as long as not a floating point. Frank: [00:06:04] That's right. Yeah. Long as you're a 64 bit signed integer. Right. And, um, flow on the other hand is 32 bit. It's the one we'd like I James: [00:06:17] do like it. And then the 64, uh, would be the double. Frank: [00:06:21] Correct. Yep. You got it James: [00:06:23] twice as big. Now, where does decimal fall in Frank: [00:06:27] decimal is its own beast? Ah, yeah, I don't remember the exact encoding a decimal, but I think it's a 64 bit, not quite an integer, not quite a floating point number because what are we really talking about? Memory is memory. Um, bites or bites. So we're talking about how do you interpret the bites? When we say integer, we're saying we, we use this encoding called two's compliment in coding for integers. When we're talking about floating point numbers, we encode them according to the I triple E standard. When you're talking about decimal, that's encoded using a system called binary, coded decimal BCD. Which allows a perfect precision in base 10 math because integers allow perfect precision with, um, base to math. But that's the most, that's most work better with money because we care more about base 10 and then base two in money. Got it. James: [00:07:21] That makes sense. And yeah, you're right. The, I Tripoli 75 for specification when filling to, and the docs. If I can find it, do you specify that there are four different floating types? Floating point types, binary 16 binary 32 binary, 64 by near one 28. Now is it that decimal is not binary one 28. Frank: [00:07:40] That's right. That's right, because that's the mall is. That's small. It's it's it's base 10. It's not based too. It's encoded differently. James: [00:07:49] Uh, do we have a Frank: [00:07:50] binary coatings? No. Um, now there is a funny thing on Intel machines. Uh, Pentium processors have an 80 bit floating point number. Which is not technically standard. And yet everyone supports it because Intel, you know, but that's not going to work on our arm codes or our iOS code. So I haven't bothered with that data type at all. And I don't think, yeah. I don't know what support there is for that data type. You can barely access it from C just using it from C is a pain, but, um, Nope, no one 28 for now. 64 64 bit floating point gives you. A lot of precision, um, I don't remember, or the numbers, but people do ridiculous things. Like you can measure the width of a hair, 10 galaxies away or something. I don't know if that's accurate, but I know that a 64 bit floating point is. Really nice, really super duper nice. The 32 bit one is what we use and practicality, uh, for speed. Um, you can usually get one operation per CPU. Um, Cycle with the, um, 32 bit ones. And so that's why they're kind of prevailing everywhere. James: [00:09:09] Got it. Yeah, I do. I do, you know, floats. I always feel like are everywhere that I look, I always try to avoid doubles if I can, but if something returns a double, I'm pretty sure, never going to, um, cast that to a flow. That seems like that's a bad thing. I always kind of feel, I mean, wouldn't it be bad? No. Is it not? Frank: [00:09:28] I'm pro double. Oh, yeah. I think it's premature optimization. Yeah. That use the 32 bit one these days. We're all using beefy. 64 bit computers. Doubles are plenty fast for everything that you're going to do. And they're less likely to have annoying numerical precision problems and kind of every day. Kind of numerics. Yeah, James: [00:09:50] but Frank, what if we're squeaking out performance? Let's say we have like a web assembly application and we want to squeak out every bit of performance as much as humanly possible are these bits and bytes going to make a difference. And if not, then why are you even excited for the half type? As much as I am, because I feel like, listen, Frank 64 divided by two 30, two divided by two, again is binary 16, which means literally my application is going to run four times faster. Frank: [00:10:16] It might've been run faster than that. That's what's so crazy about the half type. Um, yeah. Yeah. If your whole application was just number crunching Allah, let's say on your network. James: [00:10:29] Yeah, Frank: [00:10:30] I got that. Okay. But let me, let me just give props one more quick time to double. So just to give a practical example. So I like to draw, I like to write three D map applications on iOS. And the simplest way to do that, which is B take all the, uh, geometry of the planet, put it on a sphere because the planet is a sphere and plot that out and meters and let the renderer do its thing. But if you try to do that, uh, everything falls apart, the render does not because, um, Uh, they're not designed for 64 bit math. They force you into 32 bit math GPS have for quite a while. Um, pushed for 32 bit math on everything. And so you have to do crazy hacky tricks to do like earth kind of rendering. Cause you have to scale things down so that they can fit into the 32 pet range, all of that. So these are real practical problems, so isn't it crazy. Yeah. Why in the world would we go from 32 to 16 minutes? James: [00:11:39] Well, and I mean, when I think about this stuff that I'm doing and a lot, some of my applications, not all my applications, but I think about like often it's not how many decimal points I need, but it's like, how big is the number that's going to be returned? And what's cool about this new, um, half, um, um, floating point number is that it actually gives you a lot. Of of, of range you get, you know, plus, or minus 65,500, which is quite large. And I have to imagine, and you could, you know, prove it be wrong here that if these types of numbers, these binary sixteens are really good for machine learning is that, that year, because you're crunching small numbers constantly, like, is there no need to crunch big numbers or is it just happened to be that small numbers are what machine learning algorithms are crunching more often? Frank: [00:12:30] Oh, that is such a great question because it's, it's, it's, it's both. Thanks, actually. Um, so yeah, uh, you, you mentioned a range of up to like 60,000. That's true, but you actually lose a lot of precision in that upper bound where these numbers are happiest is in the range. Negative one to one. That's where all their precision is, so they can give you lots of precision in that range. I don't remember how much it's decimated by, but, you know, that's your, that's your happy area? So in the case of neural networks, um, just because they have a background in logic, And then logic, we tend to use zero and one to represent true and false. Yeah. Neural networks. I have always kind of constrained themselves to these smaller numbers. It's not to say they're required to, but it gets into, um, precision problems also. Um, even the 32 bit and 64 bit numbers lose precision, the farther you get away from zero. They're almost accurate around zero. So it's this really nice confluence. And then on top of that, on top of that, yeah. The hardware can go much faster with these little numbers. James: [00:13:43] I see. Yeah. I'm looking in the blog post here and it looks like it can go out to the 14th or 15th digit, uh, place, um, high accuracy. So you're right. Like you can go out that far, the, the, the largest normal number, but then really the smallest positive non-zero. Goes out extremely Frank: [00:14:00] far. Yeah. Yeah. So it's just this nice, it's kind of a perfect little data type because, um, you know, I, I jumped straight to neural networks, but this actually came from the GPU world, uh, video games really? Uh, do you remember your depth map? Yup. James: [00:14:21] Yup. The depth maps is sort of what that thing actually in your surface book or on your iPhone is probably using, it's creating a depth map of your face. This is what you're talking about. Frank: [00:14:31] Yeah. Yep. And in renders it's so that like things in front of other things are drawn in front of them, like in a 3d renderer. So one of the first things you do is just measure the depth of everything and throw away things that are behind other things. So that requires a lot of numbers that happened to be in the range zero to one. And so it really benefited the video card people to make, um, that range zero to one, as fast as possible and what they decided to do, they invented the state of type floating point 16, this crazy floating point number. And then they realized, Hey, uh, That's going to work great for colors also, because colors tend to stay in the range zero to one. You're allowed to go outside that range, but that's where all the, you know, the really good precision. And so I've, um, Uh, internal structures that dealt with color could all use these floating point numbers. So when you were writing shaders, you were probably running into the half datatype years and years ago. James: [00:15:33] Uh, I definitely was, I did write a lot of shaders specifically for the GPO on the Xbox three 60 way back in the day, which was. It's something I never want to do again. Unfortunately, Frank, I mean, I do love shaders, but actually don't love shaders at the same time. Before we get further on the half types, let's take a quick break and thank our amazing sponsor this week, saying fusion. Listen, if you're not busy thinking about floats, doubles, and halfs. No, you should probably just be using, saying fusion to create beautiful applications. They have thousands of controls, more controls that can fit into a half. I don't know if that's true or not, but don't quote me on it, but they've got all sorts of controls, graphs, charts, pickers, logs, everything that you can possibly think for Ling about to me, your application. Absolutely stunning. And it was cool. Here is seeing fusion works on just about everything. Whether you're building Xamarin applications, like I do all the time, a web applications, blazer applications, desktop applications. They have you. Cover the beautiful, beautiful controls for your applications and data process too, because who doesn't love data processing, word, PowerPoint, Excel. They have everything you need and PDF. Give them a look at sync fusion.com/merge conflict. That's sync, fusion.com/merge conflict. Thanks to seeing fusion for sponsoring this week's pie. Frank: [00:16:45] Thanks. Sync fusion. Yeah. Don't don't ever make this choice. You're going to use double use double everywhere James: [00:16:53] you use double everywhere. So yeah. So why, but why would I want, but when and why? Frank, if you're just if, but then why are we even doing this podcast? Frank, let me just be honest, because obviously you were so excited about it. Explain why. Frank: [00:17:07] Well, the, why is programming language support? Because this has been a GPU thing. This has been I'm writing shaders and it can take advantage of this data type or the internals of a neural network can take advantage of this state of tide, but, uh, it's inputs and outputs usually don't, uh, mostly. For the part that most programming languages don't support this data type. There's just no way to communicate. So if you have an array of bytes and you're told that these are 16 bit floating point numbers, how do you read that? And C-sharp Hmm. You don't, uh, oddly enough, um, Apple has been, uh, using this a lot for their metal stuff and I've written apps that use metal I've sharp apps. So even in F sharp, I was able to. Do terrible nasty things in order to read and write a raise of these types. Basically I copy and pasted a bunch of C code and converted it over to F sharp to do like terrible, terrible Bitwise, twiddling, and whoring and anding, you know, you know, the nasty kind of stuff. And it's really nasty cause this is floating point numbers, not integers. And so I can just throw away all that code. Cause there's going to be a primitive data type. James: [00:18:31] It does it all for you. Frank: [00:18:34] It does. That's that's a big deal. Um, so it's, it's, it's definitely got its limited use cases. I promise you, you probably should not be using this data type, but if you're in the world of graphics and neuro networks, this is gonna enable you to just interface with all these libraries, um, that requires support for it. James: [00:18:54] Yeah, what's cool. Here is I'm actually reading a lot of the, not only the blog, but the comments are really good. There's a lot of people that are, you know, having some interesting comments, but I love the team behind here as someone as asking why binary 16 and not one 28. And in fact, to talk to your machine learning, the reason, at least one reason is that ml.net. Is going to take advantage of binary 16 first, so they can come out with Donna at five and have that built in, which is really cool. Cool. Um, and then of course, a binary one 28 often, you know, it's not necessarily supported on every single CPU or GPU compared to half, which most modern platforms like you were talking about can take advantage of it. Frank: [00:19:36] Yeah. The one 28 bits. I, I'm not a hundred percent sure on it myself. Like I think most of the arms 64 processors could handle it. I know that most Intel processors could handle it. So I'm curious which processors they don't want to touch it for, but honestly I'm not even sure. Um, if. Intel and arm natively support half I'm so sorry, everyone. I haven't done my research for this podcast. Um, so it, it could potentially be implemented in software. You can always do software floating point numbers. So I'm really curious, um, given that that was the reason for not doing one 28, if there actually is hardware support for 16 bit floating point everywhere. That's interesting. James: [00:20:24] Yeah. So you mean that you're going to rewrite your entire application now with this new house? Frank: [00:20:30] No, this is for talk. This is for talking to things. So there is, so I have that 3d engine that I was talking about, that kind of map renderer. So that one, yes, yes I will. Because that one is always communicating between the CPU and the GPU. You know, the CPU is doing a little bit of work and upload some texts from apps to the GPU, the GPU catch us up. And so. Yeah. And honestly, yeah, I will rewrite all of those parts, but no, don't use this data type everywhere. It's going to just call it, like, if you start doing like, Um, money math with this. You're probably gonna be hilarious actually. James: [00:21:12] Yeah, but what I think is really fascinating about this by the way, is that there are a bunch of probably game engines and, you know, rendering engines like you're doing and neural network engines and machine learning algorithms. And I think as an app developer, what sort of fancy about this and you have type is that. Um, those things will be updated most likely to take advantage and fine tune with the new half type. And then you, as a develop, we'll sort of just be able to take advantage of it, hopefully. Frank: [00:21:45] Yeah. Uh, it, it would be nice to see a lot of dotnet five, a lot of the libraries that we all use and. Upgraded for.net five, including the support. So I'm thinking of things like image sharp could really take advantage of this, my library and graphics that deals with colors all the time. In fact, we should talk about the color class. It could take great advantage of this, cause this is a. Mike has said a perfect data type for colors. It has all the precision where you want it. Um, so there's definitely a lot of places for libraries to upgrade. I'm curious, which ones will like, well, a ski, a sharp update. That'd be kind of cool. If we could get, um, an FP 16 color class there. What I think I asked this in every episode, what are you using for a color class and, um, San Myrna centrals. James: [00:22:39] System.graphics. That color, Frank: [00:22:41] right? Oh, classic. Right. Sticking with the classics. Okay. So some drawing color. Yeah. Yeah. James: [00:22:47] Some drawing color. And then what we do is we add a bunch of extension methods onto it. Um, that Xamarin Xamarin forms has its own color, but it's also. Like a sub class of system drawing color on. It's kind of weird to think. Like, I think like in, if you're using Donna standard two, then it is the same, but if it's not done at Sandra two, then it's not the same. But then, then I'll support Donna sander wanting more. I don't know. It's very confusing legacy code right before essentially. We just had say some drawing. Color, but then we added a bunch of extensions. So you can do from hacks to hacks from H a what all the other extensions are basically that that forms had in there, which was nice. So you could just use that same stuff anywhere. Yeah. Frank: [00:23:32] Yeah. There's just one design flaw with that color class. As far as I know, it's SRG B. Encoded as 32 bit as a 32 bit integer eight minutes for each channel. So something like that is limited. Um, black is always black, but unfortunately the color of a piece of paper and the brightness of the sun are represented by the color white. It's they're two totally different things, but it's stuck normalizing things into that range. That's why in modern graphics where we have, um, HDR. Hi defin. Hi. High dynamic range. That's the HDR. Yeah. Okay. And you can represent the brightness of the sun as being 10,000 times brighter than that piece of paper because of the floating point numbers support. So another win for floating point numbers over. The integers it's twice the size. We don't have an eight floating point number. That one would be a little bit crazy. James: [00:24:36] I would love to see system drawing, color, expand, um, and maybe Don at six timeframe because, um, I would really like them to see all those, those helper methods come in, but I would love to see it evolve into this new dynamic color, color scheme, or maybe dynamic color or something, something else. Right. That is, that is a lot higher, would be quite nice in my, my Frank: [00:24:57] opinion. High color, high dye color. I didn't tell her. Hi. Hello color each color, James: [00:25:04] each color, age, color. Frank: [00:25:08] Well, you can't use it. H because H is actually a, what you usually append to functions when you want to signify that they work with the half types I noticed in.net. We've always had math, math dot sign, math.co sign, all those some years ago. I don't remember when we got the math F class, you know, that one. James: [00:25:31] Yep. Frank: [00:25:32] Yeah. So the, yeah, the problem was always that the math class always inputted doubles and output and doubles 64 bit numbers. And that was kind of annoying. If you were trying to do all your bath in 32 bit, it was unnecessary conversions. And so we got the math F class. James: [00:25:49] Pretty cool. Yeah. It uses a single, rather than a double that's what the documentation says, Frank: [00:25:55] folks, James: [00:25:56] and they're just like rectangle and rectangle off. So at the same thing, Frank: [00:26:00] Yeah, exactly. Exactly. Um, except that's a different convention. Rectangle is integers. Rectangle. Lath is floating points. Whoops. Yeah, James: [00:26:09] I know rectangle rectangle D Frank: [00:26:12] yeah, I know. And then there's a library open TK that has its own set of yeah. That has its own. I F thee and H H so H is the new one. So I wonder if we'll get a math H Oh, wow. James: [00:26:27] That would be real nice. I mean, again, these would be like the, that's an opt in at that point, right? Because then you can say, Oh, you know, these functions need a single or a double, or they just need a half and then they could do their magic. Frank: [00:26:40] Perfect. Cause it means half and it means high deaths. It could be the color age or the age color, whatever one makes it through the meeting. James: [00:26:48] Now, let me ask you a quick question here, Frank, this might sound little, little, little silly, silly on my end. Now there is Frank: [00:26:56] talking about a numeric data type for 25 minutes. How much more silly could it get James? James: [00:27:00] You know, you got the singles and you got the doubles and you've got the floats and you've got the, and you've got the, the, the lower case float. And then of course you got the single cause it was at the same as the same thing, but they're not called the same, but you got a double and then a lowercase double. Now there's a. Half which is an upper cage, upper case half right. Capital H out Frank: [00:27:23] off, but there's James: [00:27:24] no lower case half. Now why are the two different things explained to me like uppercase and lowercase string. And I know people are like, wow, James, you're 30. How old am I? 34 years old. Then a developer, you know, smoke is penetrating the brain. Um, and, uh, you know, you should know this stuff and you think I would, but I've forgotten Frank. And you know, who knows? Frank Krieger knows. Frank: [00:27:54] I know, uh, the, the differences, it was merely between the CLR and the programming language. And as we remember, CLR stands for common language runtime. So they tried to go with very generic names in the CLR. Whereas the language C sharp came from a C heritage and it wanted to use names from C. So that was actually kind of a cool example of how your language doesn't have to match the CLR. Exactly. You can use your own things. So why aren't we getting a lowercase half? I have no idea. You have to talk to her old office mate to find out. Mads might know, maybe we are, maybe it just didn't make the blog. I don't know. That's a good question, but you know, uh, like F sharp that has different names for all these types, the 64 bit, uh, 64 bit. Double is actually called a float and F sharp James: [00:28:55] just to, that's not confusing at all. Frank: [00:28:58] Yeah. A float 32, I believe is the 32 bit float. I wonder if we'll get a float 16 or if we'll get a half. So I'm curious what will happen in F shop? James: [00:29:10] Yeah, because they could, they could name a completely something different. So the lowercase half doesn't have to be. Yeah, but ideally it doesn't really matter because whether you're using a single or a float or a double or a double or a string or a string is the same. Right. There's no difference. Is there a difference? There's not a difference. Is there no difference? Frank: [00:29:29] It's purely stylistic. Yeah. You can use its real name or you can use the cute key word name for it. Nice. It's sometimes funny. Like, um, I, I changed my style because I bounced between C sharp and F sharp all the time. And. This usually doesn't come up the difference between those that often, but where does his string cause do you use lower stringer capital string and it's the same, but you can use case James: [00:29:54] lower, lower case. I never use it case of the types. I use the word case ones. I always use a float, a double lowercase dobble I always use an ENT. You know, I'm not using in 30 twos over here, so Frank: [00:30:07] I'm usually with you, but there's this annoying function on string called join and annoyingly. It's not an extension method. And so you have to do string dot, join, pass all your arguments kind of thing in C sharp. You can do lowercase or capital S and F sharp. You can only do the capital one. If you do the lowercase on it gives you an error. Oh no. So I've had to retrain my brain to always use capital string. Uh, In that one case everywhere else. That's lower case. There's this exception in my poor neural network of a brain that has to deal with that James: [00:30:43] hard to break your, your brain from, from changing those types of those casings and even semantics of how you code. I remember my very first job that I ever had out of college at cannon. Uh, we used, um, what was it? They're like we never use. String dot empty. We only ever use double quotes and now you string down empty everywhere. And then they're like, we only use everything starts with M underscore. Every name am underscore member underscore, terrible. Um, and then I got rid of, then they're like, okay, maybe we'll just do underwear. I'm like, no, nothing. Right. That was my next job was only underscores and I'm like nothing. Um, and then it was. That you had to use lowercase single or string. I mean, so that was the thing. Is there, it was there, it was in the books, in our, uh, cop FX or whatever code FX cop or whatever it was CapEx, Frank: [00:31:40] FX, James: [00:31:41] FX cop. Jeez. Um, you know, I think it's still around. Frank: [00:31:46] Yeah. James: [00:31:46] We have those running and then they would, it would scan your code and then it wouldn't allow you to do that. So I got trained early on lowercase string. Frank: [00:31:54] So, yeah, James: [00:31:56] I don't know why Frank: [00:31:56] that just was it's prettier. It's better. You know, I hear that we're getting a bunch of us. Speaking of dotnet five, a bunch of new apps. So, um, some of those, if you've never heard of FX cop before, it was just a bunch of rules that would run against your code, a static analyzer and give you so many errors. I would never run it. Cause it just gave you a way to. It was just way too much. Um, but I guess, uh, and we, we even get all those Roslyn analyzers today. I guess we're getting even more in dotnet five. I'm like, Oh my God, stop analyzing my code. It's fine. Just trust me. It's fine. James: [00:32:32] No, give me all the analyzers. All the time. That's all I ever want in life. Frank, give me them all, Frank: [00:32:39] you know, uh, I was doing, I, I think I just had an updated my, uh, visual studio for Mac and a very long time. I try not to upgrade it ever once it's working. So I did an update of it. And a bunch of null reference annotations came in from Amarin libraries and started breaking all my code because I had no reference checking turned on, but the Xamarin library has never, uh, never reported anything, but all of a sudden they started reporting things and Ooh, I had a good 30, some odd, uh, errors to go fix. Where I was being very sloppy in a very bad coder around NOLs. So I guess you're right. Analyzers are good. Moral of the story. It's annoying, but it did actually help my code a lot. Yeah. James: [00:33:26] Yeah. Well soon hopefully there'll be analyzers to tell you when you can use half. That would be pretty nifty. Huh? Frank: [00:33:34] We'll call it Clippy, or we should just rename these analyzers Clippy, but yeah. Hey, you don't need all those bits here. You're wasting bits over there. James: [00:33:44] These bits don't waste them. They're precious, precious bits, just like grids. Frank: [00:33:49] Yeah. And, and, and it does come up in places if you're doing like big data queries. I wonder if any of the databases out there support the data type. James: [00:33:57] That'd be for a, for yeah. Any framework or something like that Frank: [00:34:01] could probably. Yeah. Anything that deals with a lot of numbers, uh, and aren't dollar bills. Don't do this with money please, but James: [00:34:10] like a big float or big something big, big, big, big, yeah, Frank: [00:34:17] that thing I love begin. Maybe we'll do an episode on big it because that's my next love affair. James: [00:34:24] Oh Jesus. Oh my goodness. Anything else on half? Or do we just crush this? Frank: [00:34:29] Oh, we crushed it. I mean, it's, we only needed a half an episode for it. James: [00:34:34] Well, we want to know how you are for the halftime. Maybe you don't even know about the halftime or maybe you're like me and randomly, you thought it was a half pipe, which you're like, wow, that's cool. No, season's coming up, Donna. Team's getting crazy on their blog, but yeah, I'm pretty stoked for it only because I feel like what's a nice about this as perhaps those amazing graphics. Um, engines and, you know, real time things get further great optimization. I don't have to do anything. And that's what I like about coding Frank. I like when other things update are magically and I get to take advantage of all that sweet, sweet, sweet awesomeness. That's coming Frank: [00:35:11] in. You have so turned into a manager, you just want to delegate everything. Me. I look forward to scanning buffers and reading in all these half numbers as pointers. Be crazy. James: [00:35:24] Exactly. That is. Correct. Now, one last thing before we get out of here, does this change anything about the iOS specific and floats and, and in the native floats? Are we not on it? You know? Frank: [00:35:40] Yeah. I made it floats, right? Yeah. Uh, so if you're an on iOS programmer, uh, these are magical data types that let us compile our apps for both 64 bit and 32 bit. That's just the end. There is native. So it's tracking the processors wideness. So, uh, 64 bits, our apps are 64, but, and 32 by 32 bit. That's the magic of those data types. The half is 16 bit everywhere. Guaranteed. Always 16 bit. So no, no thought involved, uh, for that kind of stuff. James: [00:36:13] Perfect. That's what I wanted you to know. And next week on the podcast, his episode, I don't know what episode it is, but it's going to be episode two and 20, which means it's a lightning topics, which means you can write into the show and you can submit a topic that we'll try to cover. In five minutes, we try to do six of them. You can go over to merge conflict, RFM. We have a discord. We have a, an email submit, or you can just tweet at us any of those things, send us your topic and let us know what you want to see. And also how excited you are for float or not float, but have a float. Well, my goodness it's called the half. Oh my gosh. Yeah, there we go. I think that's going to do it for this week's show. Podcast. So until next time I'm James bought the bag though. Frank: [00:36:54] I'm Frank. Thanks for listening.