Programming Throwdown - 160: Position Localization

Episode Date: June 26, 2023

Where are you now? It’s a question that may seem easy to answer on the surface, but in truth hides more complexity than people expect. In today’s episode, we tackle the latest on AI, crea...tive endeavors, and more before diving into the meaty discussion of position localization. 00:01:13 Steam Deck00:11:22 Summoning Salt on Mario00:16:49 100k stars00:24:26 ChatGPT spam call00:25:31 Build Your Own DB (from scratch)00:29:50 DuckDB00:35:07 Jason has an idea00:37:58 Fighting Fantasy Classics00:41:52 Patrick’s bread00:47:52 Support the show00:53:54 Awkward CRM emails00:56:07 Rill01:00:29 Position localization in detail01:17:15 Common filter01:25:22 Simultaneous localization01:28:59 FarewellsResources mentioned in this episode:Join the Programming Throwdown Patreon community today: https://www.patreon.com/programmingthrowdown?ty=h Subscribe to the podcast on Youtube: https://www.youtube.com/@programmingthrowdown4793News/Links:The History of Super Mario Bros 3 100% World Records (Summoning Salt)https://www.youtube.com/watch?v=_EsFyogVvkwAutoGPT hits 100k starshttps://twitter.com/AlphaSignalAI/status/1649524105647906819Build Your Own Database from Scratchhttps://build-your-own.org/database/Asking generative art AI to render mathematical theoremshttps://twitter.com/TivadarDanka/status/1649721970886594561DuckDB:https://duckdb.org/Book of the Show:Jason: Fighting Fantasy Classicshttps://play.google.com/store/apps/details?id=com.tinmangames.ffhub&hl=en_US&gl=UShttps://apps.apple.com/us/app/fighting-fantasy-classics/id1261201650Patrick: Evolutions in Bread: Artisan Pan Breads and Dutch-Oven Loaves at Homehttps://amzn.to/44kW4iETool of the Show:Jason: Jinja https://jinja.palletsprojects.com/en/3.1.x/Patrick: Rill https://www.rilldata.com/If you’ve enjoyed this episode, you can listen to more on Programming Throwdown’s website: https://www.programmingthrowdown.com/ Reach out to us via email: programmingthrowdown@gmail.com You can also follow Programming Throwdown on Facebook | Apple Podcasts | Spotify | Player.FM | Youtube Join the discussion on our DiscordHelp support Programming Throwdown through our Patreon ★ Support this podcast on Patreon ★

Transcript
Discussion (0)
Starting point is 00:00:00 programming throwdown episode 160 position localization take it away patrick welcome to a nice uh ending in zero episodes it's like a yeah 10th thing 160 16 10s we've had it's our sweet 16 sweet deca 16 i guess oh i was trying to come up thank you that was better so i want to talk about something that i feel was always loitered around i remember it going back a little bit of a nostalgia trip, and then we're going to take it forward. So I'm going to give why I'm bringing it up, and then I'll sort of get into my monologue here. But I remember going back to,
Starting point is 00:00:53 okay, not all the way when I was a kid, that's too far. But I remember going back to like the early 2000s, and there being portable PCs. So not like a laptop. I mean, that's kind of been a thing. Like it's kind of obvious, but I'm talking about something in sort of like, okay, like a Game Boy Advance, Nintendo DS, that form factor. And the reason I'm bringing this up is the Steam Deck. So the Steam Deck is
Starting point is 00:01:16 now sort of generally available. Just recently, it's been like, I think they're going to be in retail shops in Japan, I saw some cool pictures. And so instead of this hyped up, you know, hard to get big waiting lists, you have to pay over asking the Steam Deck has come out. And I want to talk about so I have one, I hadn't played it a lot. But now I've been playing it more and more. And I'm going to sort of talk about like my journey, but also this nostalgia trip of I remember there used to be Sony stores, Sony retail stores, and there was a specific mall, you know, I was older, but you know, we were in this must have i didn't look at my show looked it up like 2001 2002 2003 that time frame and you would go to the sony store and they would have you know the digital cameras
Starting point is 00:01:53 they would have these little like bio computers that had like little tiny keyboards and like a screen and i never knew that you know before the iphone right before sort of on-screen capacitive sensing this is like resistive touch they didn't have a long life there wasn't you know data oversell networks wasn't like an everyday person thing and so they just weren't all that compelling maybe if you had like a very specific use case you know you would have done it but for most folks it wasn't super compelling and i feel like you know they've kind of ran windows maybe you could get one that run linux if you were an elite hacker or had some specific thing but you like they kind of ran Windows. Maybe you could get one that ran Linux if you were an elite hacker or had some specific thing. But they kind of languished around.
Starting point is 00:02:28 And then the Steam Deck, for some reason, captured my excitement. Maybe in part, it's just I have this belief that I'm going to be a video gamer, even though I'm not really a video gamer. I'm just a casual gamer. I play just iOS games or whatever. I'm not big on PC games. I hardly ever sit at my computer and play them. I do have one. It is not technically a gaming PC pc but i just have a gpu it is capable i just don't sit there and play it very often but i got the steam deck and i already had a bunch of games
Starting point is 00:02:53 huge appeal to me that you know you can have lots of concerns about drm or whatever i'm just going to leave that aside for this conversation but through various humble bundles and other things i picked up lots of you know five to ten year old video games, which was like perfect for the Steam Deck. So can the Steam Deck play anything? Like what's the connection between Steam and the Steam Deck? So this is the part that's really cool. So first, it already comes built in with access to your Steam library. Okay.
Starting point is 00:03:19 The second thing is the way they've made it is, you know, to a lot of cell phones it's it's very commodity parts so it's a x86 processor from amd with an integrated gpu and by default it runs on steam os which is built on top of linux but it very easily will let you drop back into linux you can attach a keyboard and mouse and like install your own packages wow but you could also install windows you can dual boot i haven't that. It's a little off the beaten path, because they're still working BIOS changes and stuff to build it. One day, I think I'll do that. For now, I'm not. So what they've done is they have this library called Proton. And Proton, I'm pretty sure this is great. Proton is sort of like what Wine did, right? Like providing the Windows API calls and doing a translation under the hood. So all of
Starting point is 00:04:05 these developers have built all of these games, but most of them don't run on Linux sort of natively. They run on x86, but they make Windows or DirectX calls or whatever, and it can cause issues. And so there's this interface wrapper that they will run and detect it. And they also provide this mapping from the keys and they have trackpads. They've done some cool stuff on the hardware but on the software side yeah it's super compelling and so all these games just sort of like they have ones that they verified work which is a huge lift on their part that they're like trying to go through and figure out ones that work and there are quite a surprising number that work fully like they understand the steam deck they don't pop up an on-screen keyboard that
Starting point is 00:04:45 you need to type like they recognize like you can use your game pad to sort of enter audit and because now there's a lot of cross play with playstation and you know xbox and pc a lot of developers have these kinds of things in mind when they're building the games but it's just really coming to its own and for me what what i was trying initially was a few games like dice and sphere program i was really into that a few games like dice and sphere program i was really into that at the time like i'm gonna play this on my steam it was terrible i hated it it was not good i just needed a mouse and keyboard people use the trackpad they have actually a community that owns like all these different customizations so you can just go to
Starting point is 00:05:19 the library and people have like reviewed key mappings where like different spots on the like little touch pads on the side correspond to different things. And hardcore users are probably hating me because there's an amazing in-depth like customization group who probably spend as much time like optimizing settings and like running plugins to sort of manipulate like under the hood things. I'm not that person. They're just like install a game and try it. That's very satisfying for those people, you but it's it's a whole like dedicated hobby to do yeah yeah like it becomes as much of a hobby as playing the game right and some newer games like elden ring and stuff supposedly run really well i'm too cheap to buy it so like i
Starting point is 00:05:57 don't actually own it's too new but it's like but it's like 10 bucks i'll buy it and i've got a big backlog but what i realized was embracing sort of more casual games that I had just never played before so like everyone raves about Hades I'd had it on oh it's a great one my Xbox but like on the Steam it just works great because you it's it's sort of like a short run time sit and play but it's not something I have some of those on my phone that or my iPad that I'll try to play like dead cells but. But just like for me, having the game pad and like, it was just a much better experience. How do you carry the Steam Deck? Like it doesn't fit in your pocket, right?
Starting point is 00:06:31 So this is the kind of thing you need like a backpack. You have very big pockets. You have those old JNCO jeans from like the 90s. Cargo pants. So one of the things, they have a really nice carrying case that comes with it, but you're right, it's sort of bulky. So now though that,
Starting point is 00:06:48 because there's enough of them have been moved and the community is sort of building up around it you can actually get a variety of companies are making at different price points sort of silicone like wrapper things that go around the outside like rubberized uh stuff that have like hatches over the top to protect your screen so it won't survive like a drop in your backpack but if you want to just slide it in and not have your screen get scratched you can put a scratch protector they also have little domes that cover the control sticks so they don't get you know knocked um so i recently go and they have like little kickstand on the back so you can have a controller and like kickstand it up like on an airplane or something so there's a lot of these things building up and then i recently there's you know been a lot of hype so the switch is kind of nintendo switch is like in a similar form factor i think that's been a great you know
Starting point is 00:07:29 kind of cool thing that it's both the like successor to the game boy and nintendo ds kind of lines but also with the console from nintendo that's pretty cool in the same vein in my opinion it's almost similar hardware but and now there's some new ones coming out as well from other companies and what i just wanted to shout out is like, I think it's kind of here, like the sort of miniaturized computer, it can't have a web browser, plays all these games and is much more just yours than sort of the phone ecosystem. And they're going to kind of shrink. And then coming from the other end, there's a bunch of big phones put into the same sort
Starting point is 00:08:03 of form factor, but a little bit smaller where they look like Game Boy Advances or whatever. And they're really just running Android emulators and you can play retro games, but also Android games. So dead cells and things work great. And so they're sort of converging into this like middle ground of sizing that you can just play really, really powerful
Starting point is 00:08:22 sort of like games and have this sort of on the go experience. I just think it's really cool. Yeah, I used to have back when slider phones were a big deal where you'd slide the keyboard, you know, from under the phone. I used to have a phone. I don't remember what it's called. It's called a I don't remember, but it was from Sony.
Starting point is 00:08:37 And when you slid it, it was a gamepad. And so you had like a full gamepad. It was a, you know, Android, you know, one or something very old, but that was amazing. I mean, I beat Final Fantasy seven on that. I mean, put like a ton of hours into it. Eventually, like all the slider phones, the ribbon connecting the two halves like fault, you know, fails. But yeah, that was that was phenomenal. The other thing that I was following for a long time, which sounds like the steam deck finally sort of cracked this walnut but i was following open pandora which was a uh uh basically it sounds exactly like the steam deck it ran linux you know it just the thing is it was expensive and there were just always issues with
Starting point is 00:09:16 it and it just didn't have the level of polish for me to to dive in it sounds like the steam decks really got it i think for me like in part it's not trying to be everything to everyone is not trying to say oh this is going to be your laptop on the go because people just have their phones like yeah that wasn't that's not a need anymore but some people just don't want to have a gaming pc and i know folks that are like yeah i have a video game but like i i don't like what would i might spend that amount of money on a pc now go to the pc master race subreddit if you want and like you know you know indulge in your superiority but there's a lot of folks who just aren't going to do that and this is sort of like uh i think a good
Starting point is 00:09:54 middle ground right like you don't necessarily take it on the go like you know if you're just going to have a few minutes but you could take it on a trip with you um but you could also just play it on the couch or whatever i know i think it think it's, it's a pretty cool middle ground. And the sort of software stack that they're figuring out is really cool. Like all these Windows games being able to run on Linux. I think that's, that's really awesome. Yeah, that is super, super cool. I'll have to check this out. It looks like it's around 600 bucks, five to 700, depending on the amount of storage you want. And the great thing is like, it has really good support for the micro sd card so i bought the smallest one and i i i isn't it isn't a problem for me i just put a really big
Starting point is 00:10:32 micro sd card oh that is cool although not cheap is also like i could take it to something else if i needed to or i stopped using it it's a less of a commitment so yep that makes sense all right very cool time for the news well i did not prepare the ordering very well so i'm the first up no go for it all right so i know jason is somewhat of a retro video game enthusiast so i'm sure he's seen this person before there's a youtuber called summoning salt who just makes the most like straightforward if i tell tell you what it's about you're gonna be like whatever i'm not that like this sounds so boring which is just like in-depth exploration like an hour-long video of how the timed speed running records of various video
Starting point is 00:11:17 games fall over time yep this guy's amazing so he gives her a narrative history he does all this work i was watching the one about super mario brothers 300 so there's like all these different categories i know nothing about this i don't have any desire to do this speed running i'll cover this okay so go for it go for it in speed running there's any percent there's 100 and then there's another one i forgot the name of it it's effectively zero percent so so any percent means you just have to get to the title, the ending screen, right? Um, a hundred percent means there's a list of things you have to do, which, which they can constitute a hundred percent of the game and it's defined in advance and you have to get to the
Starting point is 00:11:56 title screen. And then I think it's called mini percent, but basically it's a list of things that you're not allowed to do. Like for example, there's actually in Zelda two, I think it's a list of things that you're not allowed to do like for example there's actually in zelda 2 i think it's zelda 2 or one of the zelda maybe all the zeldas you can actually beat the game without getting the sword it's really hard but it's doable and so there's like a speed run of i think zelda 1 and zelda 2 where you have to beat the game without getting the sword that's called mini percent so there this guy has a variety some of the ones about like mario kart very interesting games you've played sometimes you watch a run and it looks like 75 of it just looks like very precise like very like cool stuff and then something will happen where he'll just walk
Starting point is 00:12:41 through a wall he'll be like wait a minute like what happened there and so there are i guess like there's rules about what's considered like a glitch and what's like an acceptable glitch and so like oh if you bypass the whole game you know like to jason saying that doesn't really count but if you're just like clipping through a wall then that's okay but what ends up happening is inadvertently they talk a lot about video game programming like oh you know mario runs at this speed in pixels which is a fractional amount because that's what they decided so there's this like sub pixel counter and so what someone's doing is they're trying to control this hidden variable get it into a certain spot and then go do something so that they get the highest probability of like this thing which is supposed to be random like
Starting point is 00:13:25 reliably occurring and you just get into this very intertwined combination of like how and the 100 one this one that i i'll have in the show notes or if you just you know you can kind of look up it's brutal because it's many hours long because you have to play every level every mini boss every everything and sometimes you get to the very last level and there's something that's out of your control. It's just randomly the movement of this thing and you can get a really bad random number generator, RNG, and ruin a world record run, get to three hours in about perfect frame inputs.
Starting point is 00:13:57 And then all of a sudden it's just trashed because you drew bad. Yeah, it's unfreaking believable. My favorite of all of this is um i was watching so you know i'm a big fan of the final fantasy games you know i love the story and i was you know when i was younger and i had the time i would read a ton of fiction books and it really like kind of uh they touch that chord it's kind of you know what it did it connected the fiction books i was reading to video games.
Starting point is 00:14:27 Because up until then, there was Pac-Man, and then there were fiction books, which had this really deep plot and story, but were totally non-interactive. And they occupied two different worlds. And Final Fantasy, as primitive as it was, like the Super Nintendo or whatever, or the Nintendo, it connected those two worlds, which was really powerful for me. So I wanted to watch the
Starting point is 00:14:45 final fantasy 4 which is in the u.s is called final fantasy 2 that speed run and uh i watched the any percent which means you just have to get to the ending screen however you can and so i'm watching this person's like yeah playing this like perfect game and doing things like you'd only do if you do what was coming ahead and everything right but then he gets to you know this um tower where this ruby gets stolen which is about like a fifth of the way through the game and the video is almost over and i'm just scratching my head here and basically what he found is there's a spell called warp and warp takes you up a level in a dungeon so if you're you know on like two levels down in a in in a dungeon. So if you're, you know, on like two levels down in an underground dungeon, it'll take you to one level. It doesn't take you out completely.
Starting point is 00:15:30 That's the exit spell. It'll take you like a little bit closer to the exit. And if you're going up a tower, you know, it takes you down. It takes you a little bit closer to the nearest town, right? But there's this one part of the game where the developers kind of forgot that they had to think about this warp spell and when you cast warp it just takes you into like random memory where you don't belong and he's walking around and as he's walking around like every tile is just random like and none of it is coherent and then he walks forward walks around and then all of a sudden
Starting point is 00:16:03 he gets the ending credits i was like i was like okay all right i guess that happened if you're ever looking for though like i don't know it's like a very nerdy kind of documentary thing but it's just for me it's very easy to just like sit there and watch i don't know what about like the way these particular ones are done is just it's so easy to just tune out and just like yeah almost like in the background like it's not that i'm doing something else i'm just literally watching it but just like it's relaxing it's just yeah it's very like yeah i don't know meditative encourage you if you've never done it before i was gonna say that feels a little wrong but uh yeah if you've never watched one of these something so there's a few other individuals who also do uh descriptions
Starting point is 00:16:43 of these time time runs which are also really good. There's, I guess, a community of them and they're all very good. Very cool. My first show topic is really wild. It's auto GPT reaches 100,000 stars. So, you know, it took PyTorch like multiple years to reach 100,000 stars. There's only two, as far as I know, there's only, well, now three GitHub projects have 100,000 stars. One is TensorFlow, one is PyTorch, and now we have AutoGPT.
Starting point is 00:17:14 You know, to be honest, I've heard like the most insane stuff about AutoGPT. What I think it does is I think you go in and kind of like connect this to a bunch of other projects. But what I've heard are things like people have got auto GPT to like reduce their monthly payments. So this one guy said, you know, auto GPT, you know, here's all my tax forms. Here's all my banking statements, you know, reduce my monthly bill. And apparently auto GPT and this almost sounds fake, but I had to read it this multiple times to convince myself it's real. Auto GPT
Starting point is 00:17:57 found this like Wi-Fi airplane charge and said, hey, you can actually send an email to the airline company to cancel your Wi-Fi airplane charge because they don't do it anymore and they'll retroactively give you your money back. And it even drafted the email. And so he copied the email from AutoGPT, sent it to Verizon, and they credited him $30. And it also canceled some other things.
Starting point is 00:18:28 I don't know. I've just heard absolutely insane stories about this AutoGPT. I have a friend who is in finance and was using it to take care of some things, like with taxes and all of that. I have to really, you know, we should maybe do a whole show on this. I have to really wrap my head around what this is and like how it's different than just GPT-4 or, you know, chat GPT,
Starting point is 00:18:51 but it's just blowing up in popularity. Yeah, there's a few of these self-pumping GPTs. So I watched a video on one because I was curious as well. And they are mashing together a bunch of tools. So there's a couple of like infrastructure plays. So there's like vector databases and there's a few paid and unpaid. And you can sort of connect them up to one of those.
Starting point is 00:19:11 You can also just tell it to like do its work locally. There's various trade-offs depending on what computer you're on, like how much, you know, memory you can use. And we talked about like locally running some of these as well. And it'll use the like tokenizer from OpenAI. So you can kind of plug that in and just configure it on your computer. And it's not hosted.
Starting point is 00:19:30 So different than going to like OpenAI and going into chat GPD and typing something, you're like connecting it or hosting your own sort of infrastructure. And the one that I watch is more or less, and you see this like, oh, it built me a website or whatever. And you sort of give it a task list, like something it's trying to accomplish. So when I watch was like, build me a
Starting point is 00:19:49 healthy meal plan for this week. And so it tries to figure out, okay, what do I need to ask you to do that? And then I'll ask you some questions like, you know, hey, what kind of food allergies do you have or whatever, and you're kind of giving it answers. So rather than, you know, asking it questions, you're sort of saying, I want you to do these things and it's figuring out what order to tackle them in okay i'm going to build you thai food on monday and you can tell it to either go ahead and just do whatever it wants or the mode i was watching it was like prompting hey i want to issue a google search for like best thai dishes that are high in protein or something and it'll sort of figures out that query.
Starting point is 00:20:26 It'll issue it off to Google if you tell it to. And then it sort of scrapes and parses the feedback and decides what to do next. So rather than you saying, Hey, next I want you to do Tuesday. It knows, okay,
Starting point is 00:20:36 I'm done with Monday. I'm going to go to Tuesday. Like now I'm building Tuesdays, Tuesday, I'm going to give you a, you know, burger and fries. And so like,
Starting point is 00:20:44 you know, I'm going to ask for something and it could burger and fries. And so like, you know, I'm going to ask for something and it could suggest for stuff it knows about, hey, I want to, you know, schedule an air schedule a door dash for you on Tuesday to like, get I know McDonald's burger size is terrible. But like, you know, and this is where those sort of kind of what I call like magical moments come in where it's like, oh, like, oh, that's really cool. I wouldn't have thought about that. Right.
Starting point is 00:21:07 And it's this sort of like more of an assistant thing rather than, you know, chatty agent on the other end. And I think that reformulation is pretty interesting. Yeah. It's tapping into all the state. Right. you had a plugin that like kept now this is itself an open ai problem but if you had like the state of your refrigerator somehow you know it could tap into that you could say you know make me thai food and it would say oh based on what you have in your pantry and your fridge like here's something you can make right now or like here's like the bare minimum you need to get from the
Starting point is 00:21:42 store but it's like yeah adding that state think, is just like taking something that's already a breakthrough. And I think it's just making like breaking through another barrier. I think we'll see some really cool stuff. But I think we're also going to bump into some limitations where like, it's when it's sort of like initial and even today, if you try to ask the Google Assistant on Android, or you try to ask Siri on iOS, like or you try to ask siri on ios like or alexa when you ask it something it knows about it will give you like very incredible results and
Starting point is 00:22:09 you'll think like it's really smart but then occasionally ask something like just off the beaten path or path or give it a phrasing that's equivalent but it doesn't understand that phrasing and it just it keels over and just gives you something like horrible and it's just like when you stay in the lane it's super cool but as soon as you get off the edge the like it's a very steep cliff and it just degrades there's no like graceful fallback and it often misunderstands you right like it thinks you're asking one thing you're asking actually something very different and so i think we're gonna run into the same one here i think there's this initial excitement and i think a lot of folks coming out and saying this is not something
Starting point is 00:22:44 that ai researchers sort of predicted but like the practical application sort of like got there a initial excitement. And I think a lot of folks coming out and saying, this is not something that AI researchers sort of predicted, but like the practical application sort of like got there a lot faster. And sort of like, the question is, where does it tap out? Like, do we hit a, you know, asymptotic slowdown and sort of like need the next unlocking and there was some, you know, open AI stuff saying they're not going to just grow the network again, they need to go think about architecture and, you know and how to be more efficient. They can't just keep adding more parameters. Yeah.
Starting point is 00:23:10 I mean, actually, a lot of different ways to take that. But one thing I wanted to say really quick, because I've seen this come up a lot. I've actually had people ask me this. So people working in AI research for like, you know, FANG companies or Open AI, like we're not all part of a CIA operation. Let me just get this out there. I've had people like tell me like, oh, this is all like run by the government or everyone's like a state actor or whatever.
Starting point is 00:23:34 And no, it's not. I've not heard this. This is news to me. I didn't know you worked for the CIA. I don't know why I keep getting this. But like, no, like, like, and so like, you know, I think you're right that people in AI are just as surprised as anybody else that it took off. I mean, you know, it's actually been incremental, you know, on the research side, but it just
Starting point is 00:23:56 the way the commercial applicability, like the way that that just took off really surprised everyone. I know people at OpenAI and they're surprised. And so there is no like conspiracy here uh everyone this is just like one of those like uh you know when you're playing civilization and you just get a breakthrough or something randomly like it's just one of those things there's no there's no secret that i do feel like, you know, it's going to have a big impact, even as is I think copywriters, I actually got a spam call, which was I'm pretty sure a GPT based spam call. Because, you know, it had like my name, and it was like, it felt like a real person, but it was, it was like in the uncanny valley. So I knew it was a recording, but it was so contextual that I thought, well, let me just see where this goes. So I said, yeah, this is me. This is Jason.
Starting point is 00:24:51 And then it like went off and like said this whole monologue and I couldn't interrupt it and I hung up. But like, you know, that first part, I think, was actually done by like that's more text to speech, I guess, than GPT. But I guess we're just getting to the point where like I think it's more text to speech i guess than gpt but um i guess we're just getting to the point where like i think it's really gonna have like all this research you've been doing is really gonna have some effect on the world which is kind of wild and like anything it's going to have you know a thousand positive effects 999 negative effects and hopefully it will be slightly
Starting point is 00:25:20 better at the end okay we can dwell on this but'm going to keep us moving because I have a lot of thoughts here. So my next is, I guess I could have made a book a show, but whatever here it's here in the news links, which is build your own database from scratch. And this is free online, but they also have a print version that you can purchase by James Smith, who actually has a couple other similar style books of build something from scratch. I will disclaim I have it is why it's in the new section of the book section. I haven't actually read this book yet. But I did skim through the topics. I have it as like my perpetually growing list of bookmarks, which is my steam backlog. But you know, I'm trying I want to kind of go through this about, you know, how do you start with key value store, B trees, that kind of stuff, move to relational queries,
Starting point is 00:26:06 query planning, query execution. What I will say is, I took a database course in college. They were, I feel like it missed a lot because it kind of went into the, what is that called? Sort of relational algebra stuff, whatever that, I just really,
Starting point is 00:26:19 I wasn't going to be an academic researcher. It wasn't interesting to me. Yeah, this is a total blind spot for me. I mean, I use databases, but I have no idea how. Oh, I'm about to talk about you. Hold tight one second. But I was forced to learn SQL as well as part of that, like the practical portion of the course. And then I kind of forgot about it. I did a bunch of embedded work and it was no nothing. Then when I moved to Silicon Valley, one of my early jobs required me to write a lot of SQL and really learn sort of joints. And I'm by no means an expert. But what I realized after
Starting point is 00:26:49 learning it is, even if you're not going to use SQL day to day, and people who don't, I've begun to realize there's people who are very scared of it, or slash don't know it. And so they'll do anything they can to not have to write a SQL query. And then people who know it are just like, oh yeah, I'll turn one of those out for you, no problem. And there's this wrap. And we've had a series of interviews, really great interviews with people trying to kind of say, stop worrying how this like 10 year ago mentality
Starting point is 00:27:16 that if you have a relational database in your stack, you're doomed to not scale. Like this is not a problem that it used to be. It's still something to consider, but there's a lot of workarounds for it. There's a problem that it used to be it's still something to consider but there's a lot of workarounds for there's a lot better tech stack now around it but we sort of a lot of people not that you've sort of self-incriminated but kind of like fell into this like i'm not going to write sql queries and i'm going to use this crutch excuse that like well wait wait i'm not that but no i use the sql query i just don't actually know
Starting point is 00:27:45 a lot about how databases work under the hood oh okay all right well then you're not the one i'm talking about we'll get to you in a second i also don't know how it runs and i'm not a great sql query writer but i know enough to like get it done and i think there's a lot of unlock there that happens when you sort of know how to do joins you know how to do do where clauses, and just, yes, you could do it in Python. That's why everyone said, oh, I could just do it in Python. I could just open this and open that. But if you're going to do a bunch of ad hoc queries, like many of them,
Starting point is 00:28:14 and each of them are sort of ephemeral, you just want to do them once, get your answer and be done. And you're never going to run it again. You don't really care about it. There is a value to having a bunch of data crammed into a database. I'm going to refer to this in my tool of the show. But is a value to having a bunch of data crammed into a database. I'm going to refer to this in my tool to show, but just, you know, that style of data available,
Starting point is 00:28:29 so you can run your analysis and get out. Not everyone has to do that, but it occasionally comes up. And sort of just writing a Python script takes a lot longer, because you can do more, it can, it's more flexible, it's more powerful, yes, but that's not what you're looking for. And so a lot of people are really hesitant. I found, for whatever reason, from traditional CS backgrounds, it's like a stigma, I think, from database administrators from a while ago. No one wanted to get into that job. They didn't appreciate that job.
Starting point is 00:28:57 I have a ton of respect for those people, but I think it was a thankless job for a long time. I think that's changed. And anyways, there's a real off topic. I think I'm really excited to check this book out. Like you said, Jason, I also, I know what B-trees are. I know that they're used in databases. I get sort of the vague thing, but how is indexing done?
Starting point is 00:29:14 How are relational queries like optimized? This is super fascinating to me. I would love to learn more. And it feeds into my like general diatribe about like, hey, embrace SQL, stop hating it. Yeah, I actually, I've been in exactly the same position where so many people do Python or even C or C++ to analyze some data files. And there's actually an amazing tool called DuckDB. Oh, almost had that as my tool of the show.
Starting point is 00:29:44 Oh, that's literally your tool of the show? No, no, no, no, no, no. I almost did. Oh, almost did DuckDB. Oh, almost had that as my tool of the show. Oh, that's literally your tool of the show? No, no, no, no, no, no. I almost did. Oh, almost did DuckDB. Okay. TLDR, DuckDB is a way where you can take files on your computer, like CSVs, your column separated files and all of that, and you can write SQL queries against them. And yeah, I mean, the thing about SQL is nothing beats it as well, except maybe Perl, but nothing beats SQL in terms of being short and, you know, doing what you want. Yeah, I think SQL is much more readable than Perl. So I would say SQL is really the best if performance isn't, you know, super critical and you want to, you know, synthesize some data. SQL is just absolutely amazing another rant
Starting point is 00:30:26 we could get on we will have to come back to this later yeah totally yeah um man yeah i mean we're uh some of these things like we're recursively generating more episode we are rgpt yeah we have we have ptgpt so cool my my second one is asking generative art AI to render mathematical theorems. And so what this person did is they, as it suggests, they took a bunch of mathematical theorems and they put it into mid journey, which if you don't know, mid journey is similar to DALI or one of these other ones where you just type in a text prompt and they generate a picture. And so this person put in these math theorems as text prompts and the pictures they generate are awesome. I mean, they're not, you know, you can't recover the theorem or anything like that, but it's just like these crazy kind of like repeating structures. So like, for example he has um the uh the bear category theorem which states in a complete metric space the intersection of countably many dense sets remains dense and so he puts that into
Starting point is 00:31:37 mid journey and what you get out of it is this like fractal of of like new age architecture it's like these buildings that are kind of embedded inside of a a very sort of like 3d cubist kind of environment and they're just fractally you know going off into into this like fixed point in the distance now let's just say like another one i thought was really cool was uh every vector space has a hamil basis that would be really hard right because you know even a gpt system probably isn't you know like it's seen hamil basis so rarely that it's probably not in there but what it generated was like a bunch of planets in this like uh space uh you know universe and the planets are like some of them are just floating but then some of the planets are trapped inside this cube that it
Starting point is 00:32:34 looks like it's being assembled in real time and you know there's this is all just a static image but you kind of get this feeling of time and And then underneath the universe, there's like an aurora. And standing on the aurora is like a family, like looking at the whole thing. It's just amazing. I mean, any of these would be just phenomenal portraits to have in your house or at your dorm room or something. So, yeah, check these out. It's definitely pretty cool. I candy. Yeah. I feel like I'm not, I will admit, like I'm not a sort of art appreciator historian.
Starting point is 00:33:10 Like I go to museums and I enjoy looking at them, but I don't, I don't know, get into sort of the background explanation, like the cause or the feeling of it, but just like going and appreciating like the craft or the novelness of doing these remind me of these procedural gener generative art stuff which is which is pretty cool because they're not generating code to generate the thing they're just generating it directly right but it definitely picks up that style there are some weird nuances like this one about every prime number greater than one or every number greater than one can be represented as a product
Starting point is 00:33:43 of prime numbers and it has a bunch of numbers on the globe but the numbers are really distorted it's kind of interesting like it's an interesting piece to look at but yeah it's kind of funny how it kind of knows what numbers look like but it doesn't actually know what are valid numbers so you get kind of like a rune set it's kind of yeah this one is wild this a bit a bit weird but yeah definitely cool to look at i i mean if nothing else i could totally see me as not a art background person doing something like this and then like using as inspiration to like clean it up and do my own thing it's sort of the you know yeah growing up i had that or whatever, like, or when I was a younger programmer, like someone just give me an interesting problem.
Starting point is 00:34:27 Like, I feel like I have tools, but I don't know what problem to solve. They're like, you could go here, type one of these, get like inspiration and then just go make the art you want to see. Like, oh, this is really cool. I'm going to go do that.
Starting point is 00:34:37 And it's sort of akin, but like an on-demand search of a lot of folks start their art by copying existing art and sort of learning what makes it that and so i feel like this could be the same thing except like you're not copying someone so you don't run into the same like what's derivative versus like plagiarism i got i have a mind-blowing idea okay okay all right let's go so if anyone does this you know i don't have to be
Starting point is 00:35:02 like get shares of your company but i at least want to get added on at it on twitter so here's my idea okay it's a little bit creepy it's one of these things it's like you can't tell if this is creepy or cool um you tell me patrick creepy or cool so you get a digital picture frame like a digital portrait right so so like imagine like a large canvas portrait but it's it's a big screen, right? And so you hang that up on your wall and it's got a microphone. And so it listens to your conversations, right? And then in some privacy preserving way,
Starting point is 00:35:36 Hand wave. Sends a, maybe it's running Dolly locally. I don't know yet, but let's say it takes you know the conversations you're having in your house and it creates art based on the things you're saying in your own house and it displays the art so if you're if you start i know this this is gonna go sideways really fast so if you have an argument you know even the pictures start getting angry i think this would be wild i mean i think it would take a lot of tuning to know like what's appropriate what's not appropriate that's what i was gonna say also like you're having a conversation about someone who's not in the room and then they come into the room and like yeah like you have a conversation like you know so and so is so rude and then like well unless
Starting point is 00:36:27 they're famous you know it's not going to show them but it's going to show just like a rude person on the wall or oh so you have privacy preserving microphones but the cameras that's too creepy like you it's never going to learn who people are that crosses the line oh yeah so you can listen to what you are but right right so it's okay oh that's an interesting idea i hadn't even thought about the camera angle like maybe maybe, oh, what about this? I got it. I got it. Okay.
Starting point is 00:36:47 So this might be more practical. It has a camera and it draws like a caricature of whoever's sitting on the couch. That could be cool. Like a court portrait kind of thing. Yeah. Like, you know, when you go to... Someone's getting offended really fast. You go to like a tourist destination and they will draw like your caricature, you know when you go to someone's getting offended really fast you go to like a tourist destination
Starting point is 00:37:05 and they will draw like your caricature you know and it's basically the same three the same theme everyone kind of looks more or less the same like giant i don't know why body when i tried this mine just keeps drawing me as a professional bodybuilder so i i mean i i think oh man this would be uh really well i wonder if i have a you know i actually have a spare monitor i wonder if i could mount a spare monitor on the wall in the living room actually make this uh this i mean i guess you have to add us on twitter if you do or add us on twitter is like you add all of twitter oh man yeah that's that's awesome all right we'll go to book of the show add us on Twitter is like you add all of Twitter. Oh man.
Starting point is 00:37:45 Yeah, that's awesome. All right, we'll go to book of the show. Book of the show. My book of the show, actually speaking about retro is an app. I think it's on iPhone,
Starting point is 00:37:57 but it's definitely on Android called fighting fantasy classics. So for people who don't know, there were a bunch of books called Fighting Fantasy Books made by Steve Jackson and Ian Livingstone. And they're basically choose your own adventure books, but you need dice, so you have to bring your own dice. And along the way, you occasionally have to roll dice and certain things happen. And you can actually get to a point where, you know, you just roll badly and you lose. But there's also an adventure sheet. So the idea is you would Xerox the adventure sheet to make copy of it. And you would keep track in the adventure
Starting point is 00:38:37 sheet of your equipment and your health and all of that. And so based on the choices you make, you might make a choice that says, you know, lose one stamina or roll the that. And so based on the choices you make, like you might make a choice that says, you know, lose one stamina or roll the dice. And if it's, you know, 10 or less, you lose a stamina. And if you lose, if any of your attributes go to zero, that's it. So if your skill goes to zero, you're kind of just like incapacitated, your stamina goes to zero, you're dead. I think your luck could go to zero and then you just lose every luck roll after that. And so, you know, the books were amazing, really great stories. There are about 400 sections. There'd be multiple sections in a page. So, you know, at the top right, there's sort of the page count, but instead of going one, two, three, four, you know, like one
Starting point is 00:39:19 page might be, you know, one through seven or something, because it's seven short things telling you to like go to the next section. I love these as a kid, I thought the stories were great, a lot of really interesting themes that I think they're really exploring, you know, nowadays, everything is either, you know, zombies or World War Two, or, you know, space Marines. But, you know, in a lot of these fighting fantasy books are some really exotic, you you know worlds that they were putting together here you know some became tropes like space assassin but then other ones i'm trying to remember one of the more esoteric ones there was oh there was um one i think it was called uh battle with evil but evil was an acronym e-v-i-l or it was like date with evil. And it was basically this like technocratic future where
Starting point is 00:40:06 everyone has crazy augmentations and stuff. I loved it. And anyways, with this app, you can go and buy all these old books. And so I think it's like a dollar or two bucks a book. The app comes with one for free. And I've been really getting into it. It's been a blast. I've been getting my kids into it. You know, depending on the Depending on the book, some of them might be more like you might need to have older kids. There's one that was something from hell, creature from hell or something like that. It's pretty demonic. I think it would give one of my kids nightmares. You have to judge whether you want to be up all night with your kid the night after.
Starting point is 00:40:44 I've been a big fan. I been really you know geeking out on that very cool i've never gotten into these i always wanted to but i always feel like a unresistable urge to just cheat my stats or like to get a role that i wanted and and then just i don't know well this kind of fixes it by adding achievements so you can they actually have three ways of playing first way you could just cheat so basically uh you can go to any page you want you can make every roll to be whatever you want it to be there's a second mode where you basically have a rewind button and um you have x number of rewinds and you can get achievements in that mode and then there's the hardcore mode the thing about the thing about these books is i do feel like you don't want to get you know three hours in the book and that's
Starting point is 00:41:30 like do you go right or left i go right you die you know or something like that like you need a rewind button otherwise it's just hard to use your time efficiently right and you can play with rewind and get uh achievements and that kind of keeps you motivated to play honestly, semi honestly. Or exploratorily, I guess. Yeah. Yeah, right. Very cool.
Starting point is 00:41:52 My book of the show is not related. It is Evolutions in Bread, Artisan Panbread and Dutch Oven Loaves at Home. Nice. Which is a mouthful by Ken Forkish. I've talked about his, well, I don't know if it's his first book, but another book he has,
Starting point is 00:42:07 which is flour, water, salt, yeast. I don't know, for whatever reason, I got it in my head that like, I wanted to do like cook some bread, pastry, something like once a week. Just to like develop improvement at it. Cause I was always like kind of messing around with it and it just never kind of went anywhere cause I didn't do it often enough so i always forgot what i knew
Starting point is 00:42:28 before and people like i'll keep a journal i'm terrible at doing that like i don't know so my solution was i just keep doing it and you know making sure that you know i do it often enough that i sort of keep it in my i was gonna say how often do you do this like now i try to do i've been trying to do some sort of like low yeast risen thing. So either a bread or like a pastry or something once a week. So nice. Just probably very terrible for my like, you know,
Starting point is 00:42:56 distribution of nutritional value, eating a lot of carbohydrates. But, but it is what it is. But I attempt various things. The original flour, water, salt, yeast, and like this sort of movement and sourdough had always been to do these um but but it is what it is um but i attempt various things the original flower water salt yeast and like the sort of movement in sourdough had always been to do these like free form i guess they call i don't know how to say that we're bulls b-o-u-l-e like these oh yeah where
Starting point is 00:43:15 it's like just like a dome circle right or maybe uh um like slightly an oval and this was like you know you you kind of put them in the pan, but you don't give them any support. They just sit on like a hot stone or in a Dutch oven, which is like basically like a cast iron pot with a lid to kind of keep in the steam. But this is actually very difficult because it just, if you don't do a good job,
Starting point is 00:43:39 it just like spreads out and becomes more like a pancake than a beautiful, like tall loaf of bread. And so anyways, this new book, Evolution of Bread is sort of talking about Ken sort of points out he's sort of like evolving his how he's thinking about this easiness. And who does he need to prove this to? Like, what is what is the point of doing that? It is like a pinnacle if you're trying to show your like artisanal abilities and that you are very competent and able to handle everything that's needed to go exactly right to generate one of these loaves
Starting point is 00:44:09 it is an achievement but if you're ultimately just trying to like have a tasty loaf of bread if you put it in a pan you get support so the window of like technique that allows you to get into a nice edible loaf of bread when you're sticking it in a loaf pan is actually like it's a much bigger target that you're aiming for than what's required to do one of these sort of like free form unbounded loaves so long-winded way to say like if you're at all like thinking about making bread and you sort of the whole pandemic thing was like everyone make a sourdough starter because you couldn't buy yeast and like make these beautiful loaves and people boasting this is my first time i ever made bread and it's just yeah that wasn't me and i actually
Starting point is 00:44:52 even though i was doing it routinely i still failed quite often and it was somewhat frustrating wait so when you fail is it like you said like a pancake is that the most common way that it fails so i mean it can fail for a lot of reasons um if you're trying to do like a self-cultured sourdough there's a lot more ways for it to fail because you don't know i wasn't getting familiar with my sourdough culture you don't add commercial yeast commercial yeast is very standardized so if you know the temperature of your house you pretty much know like when to expect like the bread to be ready to bake and how much gas the yeast has made is a very important factor to success there's a very narrow window from under proofed to over proof if you miss the window entirely you end up
Starting point is 00:45:39 with like something that doesn't really look very good and if you end up on either range it's just not perfect and getting it exactly right is how you sort of get the perfect one but with the sourdough culture depending on when you most recently fed it what the distribution of like bacteria to yeast is in the culture like exactly how you did it there's like many more variables and so yeah when it fails you typically in my experience you either end up with like a sloppy mess that just like doesn't really rise and isn't really bread-like. Or you end up, it's sort of ripe, but it expands. And so instead of staying tight and getting tall, where you get like a fluffy loaf, it sort of collapses down and you get a denser, like, you know, very flat loaf. What do you do when you mess up?
Starting point is 00:46:22 Do you feed that to the ducks? Like, is it safe? Do you still eat it? No, it's totally safe to to eat there's nothing wrong in it okay it's completely edible and in fact actually like right out of the oven if you've never had it before even like the mistakes are still very good oh okay they're warm and it has the beautiful bread smell i mean if you burn it it's kind of ruined but if you just like i still cook them even when i know that they've gone wrong and i still eat them um and my family will eat them as well uh but after sort of the couple hour window after making it they typically it's not something you would sort of
Starting point is 00:46:57 want to eat anymore so like you said we get we'll toast it up for croutons or you know you can kind of do like you said you can feed it to the ducks. You don't need to throw it away. Um, yeah, that is, that is awesome. The book, book, book advises potentially considering what I have tried as well. If I know it's a failure now, I'll sort of scrape it and put it in a pan and bake it. And the chances when it goes into a loaf pan, it's got support. So it'll rise and it's, uh, tends to be closer or more useful than not as good as like a properly done one into a pan, but like a lot better than the alternative. Yeah, makes sense. So like if you were to go to the grocery store and get a loaf of bread where they all kind of look the same, they definitely use pans, right? Because they look so uniform.
Starting point is 00:47:39 They sometimes will sell like these sort of round ones. But yeah, if you get like the go to the bread aisle not to a bakery yeah those are all in pans yeah got it okay that makes sense cool man um so if you are interested in making bread uh check out our link on the show notes if you use our link to buy any of these books on any of the episodes you know that helps out the show allows us to reach more people um if you whether you do that or not if you also want to support the show you can follow us on patreon so that's patreon.com programming throwdown uh we really appreciate all the patrons out there who uh you know kind of continue to support the show help out with all the hosting costs help us
Starting point is 00:48:21 reach new people and all that good stuff and And with that, it is time for tool of the show. My tool of the show is Jinja. Have you ever used Jinja, Patrick? Once. Once, okay. Enough to know what it is. Cool, yeah, Jinja is really interesting. So the way that a lot of people know about, you know, templating is through
Starting point is 00:48:45 PHP. So, you know, people have done PHP where you're writing some HTML and then you maybe want a button that is red if the person's credit card is expired and it's gray if the credit card isn't expired. And so you're going through writing and then all of a sudden you do like, I forgot what is in PHP. I think it's like open bracket question mark PHP. And you can write some if statements and then you can emit different colors depending on some logic in your program. But then all of that is in your HTML file or maybe your.php file, you know, has like a bunch of things you want to output, a bunch of text or content you want to output. But then also has some logic.
Starting point is 00:49:37 And that logic is sort of describing a whole bunch of different outcomes. Like a choose your own adventure book. And so then what happens is you pass it through some type of templating engine. And so it will replace all of that logic with whatever answer it comes to. And so you end up with just a pure HTML file at the end. There's no reason why this only has to be a PHP thing or HTML thing. You can just, anytime you're emitting any text, you can emit, like you could create something that has, you know, logic built into the actual text. And then you just have to wrap it in this sort of templating command, which will, you know, you give that command the text, which has the logic in it. And then you give it the context so you know the variables that you know you expect it to be using and then what it will return is you know the final text with all the templates resolved and so there's actually a lot of places where um you know either you're sending text to somebody you're rendering rendering text on a website, even if you're building a command line app at the moment. And so the command line app is writing a lot of text to
Starting point is 00:50:52 the console. You could put all of this logic in Python or C++ or whatever language, but it starts to become really cumbersome because now you have sort of this disconnect where you have, you know, a lot of your content sitting in one file, but then you have all these, you know, rules to manipulate it in the other in somewhere else. And, you know, templating and I found Jinja to be really quite nice. I used a combination of Jinja and afterwards I did a Regex, kind of a post-processing step. And between the two of them, it actually produced a pretty beautiful kind of environment to make content. So yeah, if you've never used a templating engineer, if you don't know what that is, take some time to go through the Jinja docs, understand what it does. There's a really great documentation that has a lot of examples. And it might be sort of like a whole aircraft.
Starting point is 00:51:55 There's actually, I think, a place for these kind of things in most apps. I think, as you mentioned, it can be really useful to separate out. People have that, hey, I want to make a report. Maybe it's as an HTML page or a LaTeX and you're going to make, you know, compile it to something else or whatever that, you know, hey, I'm going to just emit the like markdown from my, you know, all the outputters standard to the file stream, you know, the stream out, stream operator out. But then you end up with this like nasty coupling, like your code doesn't really want the data to live in it like that. It's just it's sort of ugly. It doesn't it doesn't work that well. So what I've been able to do, yeah, like, like you're mentioning is sort of say, hey, I want to make a weekly report. And I keep just writing the same thing over and over again. So I want something that says, you know, put the date here, and I'm going to make an image. And I just want the file path where I make the image to go here. And then you run it through. And it's a time saving, it separates it out. And depending on how much of that style task you do, it could be a huge game changer. Yeah, totally. I wonder if there's some type of plugin for Google Docs, where you can write kind of like macros that you know have jinja templates in them there's got to be something like that i'm sure i feel like i've never used customer relationship management crm tooling but i feel like a lot of crm tooling
Starting point is 00:53:17 also supports these kinds of templating because that's how you get those like personalized spam emails right like yeah hey it's been 73 days since you know we last contacted you and you bought this thing and your name is this and like it's like i this is that's how those are all done i assume yep yep that makes sense have you ever gotten uh have you ever seen something where there is an error in the crm tool and you got someone else's stuff no i've seen ones where they didn't like replace out whatever macro. Oh yeah, that's a good one too. You bought on date and it's like, oh, oops.
Starting point is 00:53:51 You bought on bracket, bracket date. No, there was an issue where Uber was trying to solicit like former Googlers and they were sending kind of blanket emails to basically anybody they knew who worked at Google in the past, but there was an off by one error. And so I got an email and it was like, hello, like Jonah Grossberg, uh, you know, uh, like, well, you should come to Uber. Like we 4X last year or whatever. I was part of this like ex Googlers kind of like LinkedIn group, or I think I'm'm still in there somewhere.
Starting point is 00:54:25 And yeah, someone posted and they're like, hey, you know, I got an email from Uber for someone else's name. And yeah, it turns out they sent like thousands of those. Yeah, I don't know what the line is between the like mass marketing emails, the like CRM individuals and like these kind of middle ground,
Starting point is 00:54:41 like blanket things. I don't, that ecosystem, I understand what the tools are and where they live kind of thing, like blanket things i don't that ecosystem i understand what the tools are and where they live kind of thing but i don't actually know i'm not very familiar with the space i think that there's a huge opportunity here for i mean think about like all the communication that you do that is very regular i think that you know i almost wonder if we need like a crm for you know normal people like like something that doesn't require so much ramp up they have one i think it's called julia crm oh yeah no that's not it there is one that's like a
Starting point is 00:55:14 crm for for like your home life right right i always like intrigued i have it on my list somewhere oh no this okay we'll have to look at it but yeah i think that there is an opportunity there but yeah that's my tool of the show if you don't if you've never used templating in your in your stuff definitely check this out learn about it it's a good skill to have oh monica ah that's it oh all right good i found it i don't feel so bad monica open source personal crm helps organize your social interactions with your loved ones. Wow. Interesting. So I think, yeah, you give it your contacts. You sort of say when you've talked to people how often you'd want to talk to them, that kind of stuff. Wow. This is fascinating. Okay. All right. I don't have a review for it. So maybe next time we can make it our tool of the
Starting point is 00:56:01 show. Yeah. We'll have to do a bit of research on this. All right. My tool of the show yeah we'll have to we'll have to do a bit of research on this all right my tool of the show is real r-i-l-l which is a little difficult to google so it's real data.com r-i-l-l data.com and it's sort of tagline is radically simple metrics dashboards but it feeds right into what we were talking about. I believe actually a default like backend it wants to use is DuckDB, which is why I was like laughing. It is a local dashboard you can run. You can sort of start it up. You can Jupyter Notebook. You run the tool, it opens a website, and then you can sort of add in a CSV file. You can point it at a SQLite database. You can point it out a Postgres database if you have one. And what it does is it kind of does those things you automatically want to do. Like if you had a CSV file that was like, for me, it's always like, oh, how many of this type of thing?
Starting point is 00:56:53 How many of that type of thing where I have some string that is an enum or whatever? And it'll give you the sort of like breakdown, like this percentage, that percentage. It lets you sort of explore your data. If you have timestamps, it sort of understands timestamps and can show you things over time and bucketed. You can also give it models, which is like how to extract the kind of thing in a SQL query for what you want. You can have dashboards where you sort of write SQL queries against it. And it's just a really quick way to like point it out a CSV and sort of have it pretend or set of CSVs and how to sort of join across them and have it it's more on this sort of like streaming log of data, just dumping out and you're sort of aggregating and doing analysis.
Starting point is 00:57:49 And there's sort of this distinction arriving between the two approaches. And there's a lot of trade-offs here. I think DuckDB is read only. And so because of that, they could do a whole bunch of optimizations. Okay. Yeah. So it's sort of like, you're not meant to be doing the like CRUD stuff, right? And just sort of like going in and manipulating single, it's just sort of like, you just keep appending to it and it's keeping in log. But I think that's an entirely sort of
Starting point is 00:58:17 like powerful thing to do. And like we were mentioning, not being afraid of SQL, I think putting a bunch of stuff in a SQL dashboard and allowing you to write queries on it rather than... I find myself often trying to do things in Excel with CSVs and not very powerful Excel either. And it's not really the right tool for the job. So there's like a set of tools in the tool belt that exists in this space that I know I'm personally weak on. This is amazing. What is the dashboarding like? You can create like time series and pie charts and all of that is it pretty good yeah i mean if you sort of look it's going to be hard to do over an audio podcast right if you sort of look at their in the documents and sort of look at the developer
Starting point is 00:58:56 documents they have some pictures of the kinds of uh dashboards they do i don't think it's as big as you might get from something like a, you know, production dashboarding company, right? Like Tableau or something. But I think it's in the same, but yeah, exactly. Yeah.
Starting point is 00:59:11 This is really, really cool. Yeah. Folks should definitely check this out. This is awesome. Oh yeah. I see that backed by duck DB and Druid. Yeah.
Starting point is 00:59:19 Very cool. Yeah. This is a winner for sure. I'm actually going to try this today. All right. I scored one. Yes yes one jason hasn't tried yet and it wasn't a video game i wonder like how yeah gosh so many tools of the show have become just permanent parts of my workflow now i think i feel like that's uh for us uh you know for us i think that's the uh personally like the part of the content of the show that i gets that I get the most out of. You have some amazing tools over the past like 10 years or so.
Starting point is 00:59:50 That's what you got to get auto GPT to do is like get a task list, which is like go through and extract just the tools of the show, just the book of the show, just whatever into like mini podcast channels. Yeah, that's so true. Yeah, we should have or just I thought you were going to say a Google sheet. It'd be awesome if GPT could scrape programmingthrowdown.com and put all the tools. If you do this. No, no, but people want to listen to our rendition about why it's such an amazing. Oh yeah. Even better would be if it put the MP3 timestamp or something, like some deep link into the MP3.
Starting point is 01:00:23 I don't know if that's even a thing. Okay. All right. timestamp or something like some some deep link into the mp3 i don't know if that's even a thing okay all right let's jump into position localization yeah take it away yeah so you know i'll kick this off by saying that i neither jason or i as a disclaimer we always give or or mostly give neither of us are experts in this but i think we've both been around it a little bit and familiar so So just want to a bit like set up the problem, and then introduce some of the kind of like terms and kind of things you'll hear. I apologize in advance, you may want to tune out if this is like the thing you do all the time. You may find some of this offensive, the same thing we give for some of our more impassioned Lisp programming languages that we talk about but
Starting point is 01:01:06 one of the things that isn't always obvious to people is uh how do you just like figure out where you are like we have this you know as humans i guess kind of understanding of where you are when we start talking about a phone let's just talk about a phone like how does the phone know where it is and i think people probably mostly but we'll go over it say oh it's just using gps right so we have these satellites up in orbit um roughly the satellites know where they are very precisely because it turns out like orbits are something that math can predict really well when there's not you know air friction and we sort of know how they change over time and where they are so you can kind of
Starting point is 01:01:45 download basically a description of all the gps satellites and like what their orbital parameters are and sort of understand kind of what you would expect these things are are somewhat knowable and without getting into the details of how a gps receiver works it basically listens to the radio signals coming down from all the gps and by knowing the figuring out the exact time it is with atomic clocks and knowing this orbital data, correcting for some things and listening to a bunch. You have an understanding of how far your phone is from each of the satellites. And knowing how far your phone is, the GPS receiver is, the antenna is from each of the satellites. You can run this solution to figure out where you think you are and the more satellites you have the more refined you can get and this normally gets you you know and if you're in the middle of a you know
Starting point is 01:02:34 open prairie uh yes is going to get you down to a pretty good like couple meters you know a few yards uh kind of thing without a lot of a lot of things and there's a lot of improvements you do on getting that refined and fancier and fancier gps there's noise in the upper atmosphere and you know you can use base stations known positions to offset this is a whole thing we're not going to get into how like gps position position works those positions only really come in sort of like you know normally kind of get only once a second or maybe 10 times a second uh which you say oh it's pretty fast and you're right for like a human walking around like you know that's probably you know generally knowing where you are if you have you know if you had lost your phone and you knew where your phone was within a couple meters and you know it only updated every second you'd be able to find it yeah and so this is the most common
Starting point is 01:03:23 common one you do the first problem you run into with that is okay but what if i'm inside turns out like the things that make our shelters our you know buildings our houses our malls or even like downtown and the city you start to run into a lot of complications either the gps signal is bouncing around and it's it's called multipath. It's very confusing. Or if you're inside a bomb shelter, let's say, your phone can't hear the radio signals. It can't receive.
Starting point is 01:03:56 There's not enough radio energy making it through. And so, Ben, what do you do? I have kind of maybe a dumb question on the part you already talked about. So GPS, so there's satellites that are going in orbit around the earth or maybe they're not they're in some kind of stationary no they're they're actually very low orbit so they're actually going pretty fast across the sky okay so there's there's gps satellites going fast across the sky what does your phone do to talk to like are these satellites just constantly just sending out like spheres of energy and your phone's picking up on them is that how it works yes yeah okay so they're all broadcasting uh a set message basically at a specific rate and as you pointed out from
Starting point is 01:04:36 radiating out from the antenna an antenna has like a specific kind of pattern for strength but basically it travels at roughly the speed of light in a bubble got it so if you're and there's no two-way communication i guess that isn't obvious but your phone doesn't talk to the gps satellites gps's are broadcast only or at least for for the intensive purposes of this conversation right only broadcasting out and they're just broadcasting out there basically it's like their metadata with the time code and this kind of stuff and they're just broad broadcasting out this kind of thing it's a very very specific pattern with some specific nuance in it that allows you to do a precise timing of understanding the two things when the satellite believes it sent the message and when you heard the message
Starting point is 01:05:21 got it so if you know that then you know the distance to the satellite and if you heard the message. Got it. So if you know that, then you know the distance to the satellite. And if you know the satellite's orbit, then you know sort of where in the Earth frame, like the satellite was at that time. And you're trying to work backwards to where you are based on it. But giving you one, if you know, let's just say you assume you're on the ground, which isn't a good assumption. And that the Earth is the complex thing to describe but basically the earth is roughly a ball i'll just say that uh the earth is a ball and you assume you're on the surface you kind of
Starting point is 01:05:54 project out that sphere so then you would kind of know where you are in a roughly circular shape right because a circle is the shape that you get when you intersect the radiating ball of a GPS satellite and the ball of the earth. I'm hand-waving a bunch there. If you had another one and you knew another distance and you intersected all three, the ball of the earth, the ball of satellite one, the ball of satellite two, you would sort of know where you are instead of on a circle, the sort of two points on the circle, where is the intersection of all three so if you imagine taking a circle and intersecting it with a sphere right because you know the distance you know sort of like what those two points could be yeah so i think it's like every time you intersect you
Starting point is 01:06:37 eliminate a dimension right so if you have two three-dimensional things you intersect you get a two-dimensional object in this case a circle and then when you intersect the circle with something else you get a one-dimensional object which is these two points on a line and then if you could do a third one i guess at that point you would get a single point or a fourth one whatever it is yeah yeah no no you're right except that we have to work backwards a little because that first assumption that you're on the ground and that the earth like that and that the earth's sort of surface is flat uh is actually uh horribly untrue right and so like it could be in a plane you could be on a mountain right like any of these things and so uh you actually want one additional one and so to eliminate so that you don't have to start with
Starting point is 01:07:20 the assumption of that you're on the center on the surface of a you know ball and so oh i see i see yeah you're right so if you don't if you don't have the earth if you didn't make a ball out of the earth like if you left that one out then then you could you make up for it just by having more satellites you could do the same thing so you start with one satellite you know you're on a sphere you know then you say the second one now you know you're on yeah so it's just you start one back. Got it. Right. Cool. And so this works incredibly well.
Starting point is 01:07:49 There's a ton of nuance about refining. So you're eliminating the dimensions as sort of first step. And as you get more and more satellites, you sort of reduce your ambiguity, but only to a point because then there's sort of issues with listening to these signals and understanding like how precise
Starting point is 01:08:02 can you measure that distance? So you're not actually getting a point, you're getting sort of an uncertainty. And the uncertainty is depending on, like, for instance, if the satellite is down on the horizon, it's traveling through more atmosphere and it's more ambiguous versus if it's straight overhead, that's really good for you. And it's just like a variety of other factors that give you a sort of blob of uncertainty that's shaped in a certain way and you can do various techniques to kind of like squish it tighter and tighter so that you know
Starting point is 01:08:30 better where you are and none of that works as soon as you can't see the satellites so before we go into size i guess while we're on that topic we should go to one other thing people kind of know about um which works roughly in the same same way but it'll also work for indoors which is what i described works great except if you've ever used an old satellite receiver or today if um you know you use like something that doesn't have a cell phone antenna or wi-fi antenna in it for this purpose um so like i have a a little drone like a dji drone you take it outside and it takes a while to acquire satellites it sort of says acquiring satellites acquiring satellites right right i had this old garmin that did that yeah exactly and the reason why is it has to
Starting point is 01:09:09 kind of receive these messages do a bunch of disambiguation and it takes a while to sort of update itself to learn the new corrections to all the orbital mechanics to kind of all this stuff has to take place and it takes a while and as And as you said earlier, if you're inside, there's... Yep. It will just never finish because it doesn't ever get a radio signal that it's just sitting there listening for. And so there's all these techniques for helping figure out where you are a lot quicker. And then you know what to listen for, you're resolving ambiguity. So one is if you have a cell phone antenna, you can do the same thing with cell phone towers. So cell phone towers are very precisely location known. They don't move around a lot, right? Because installed in a giant tower, right?
Starting point is 01:09:49 And so you can use cell phone antenna location and relative strengths to do effectively the same thing, right? Very similar, but you're using instead of just the message and the timing, you're using signal strength to estimate how far away you are. Because the signal attenuates much quicker, it doesn't, it's not broadcasting from space, right. And then when you move inside, it turns out you can also do the same thing. But cell phone towers a little harder, they're not really inside a lot more noise. But it turns out we installed a lot of mini cell phone tower equivalents, which are Wi Fi routers. And so a long time ago, people learned, oh, okay, we can go around and most people don't move their Wi-Fi antennas around. So if you sort of understand where all the Wi-Fi, so you've, there was, I'm not going to sort of name companies,
Starting point is 01:10:34 but several, some court cases and other stuff where it turned out people were recording what network name and router Mac address and stuff were coming because they were trying to understand they were taking this survey, they knew where they were, they could sort of estimate where the Wi Fi router was by looking at it over time. And then if someone else saw it later, you would basically have some database which shows you this special number router with this name is at this location. And sometimes it would be wrong because a person could have moved it in their house or turned it off. But if you have enough of them all over the place, this becomes helpful. So this along with some other stuff allows you to more or less do the same kind of thing, but inside as well, outside, and sort of an additional input.
Starting point is 01:11:20 Oh, that makes sense. So it's kind of like almost like a Google Maps type thing where somebody walks through a mall. And while they're walking through a mall, they're recording the signal strengths. And because they're walking like a certain pattern, they know exactly where they are. So they're like, they're giving ground truth. They're saying like, okay, these signal strengths mean I'm in Macy's. And so then when you go to Macy's, you know, you're not telling Google you're at Macy's or whoever, like you're not telling that company you're at Macy's, but because you have the same signal strength as this other person, you know, more or less, that's how it's working. Yep. And I mean, just in general to naive way, would you be like, if you know where a Wi-Fi router vaguely is, and you can see the Wi-Fi router, you kind of know where you are in sort of absolute terms, you know, approximately, right? Not close within a few hundred meters, you know, sort of where you are, because if you weren't there, you couldn't have heard that, that, you know,
Starting point is 01:12:16 Wi-Fi router if you assume Wi-Fi router doesn't move hand wave that a bit. So these work generally pretty good for what I would say is sort of like for these slow update rates but now if we start talking about hey you're going for a run or you're you know in a vehicle an airplane or in a car or on your scooter or your personal transit of choice uh rollerblades um and you're trying to do more than just understand where you are but you want to know how you're positioned so like if you're on a watch and you're trying to measure like someone's steps, you're trying to say like, how is the arm position, you know, changing over time? And then this is where you start to add other sensors, sensors that don't give you your absolute position. They give you a relative position.
Starting point is 01:13:00 And the relative position is just at each timestamp, how you've moved basically, how you're oriented or how you're accelerating. And the things that do that, we call those inertial measurement units, IMUs, and you have little gyroscopes and magnetometers and accelerometers and these tiny, tiny little chips that fascinating video, actually, you can go look it up, I think it's by if i recall breaking taps i've not talked about this before he does this whole thing about mems these micro electronic machines oh yeah i've seen i don't know if i've seen that one but it's amazing yeah it's like how they move relative to each other they're actually these tiny vibrating pieces of metal inside of these that are etched
Starting point is 01:13:40 out or silicon i guess they're etched out and doped in a certain way and how they move relative to each other allows you to take these measurements with, it's not no moving parts, but not moving parts as we traditionally think about them, like things sliding over each other. There's just these little tuning forks, basically, that are vibrating around in your watch. And so those can run much faster,
Starting point is 01:14:01 hundreds of Hertz, 100 Hertz, this is really easy. So you get a faster update rate. Now you can kind of see where we might be going. If you want a very precise positioning, you're mixing the two, right? So you know where you are kind of globally, you know how you're oriented, also now know how you're changing over time. So you can say between two positions from GPS, how did I move? How did my, you know, these recordings, how did they move? And if you do integration, but integration here just means adding up the sort of how much acceleration you had over how much time tells you, you know, you kind of double interpolate it, you add it twice, you accumulate these, and what you're getting is, you sort of take one position, and then you add it up. And then as you get the next one, you sort of know it again. And what you get is in between how you were moving. So instead of just interpolating between the two and saying, I went on a straight line, you can actually say, No, I went on a bit of an arc, or I went on a bit of a swerve, or a dip, or I went really fast, and then I'm starting to slow
Starting point is 01:14:58 down. And these other things begin to combine. And this is where you start to get into needing a little bit of mathematical help. So I'd hand-waved over the math of getting all of those. But now we can sort of set up the problem where you end up working a lot of these kind of positioning problems that, one, these all have noise. So it's not that GPS gives you a position with some error, this uncertainty. It also moves around over time. So if you sat in one position, you'll sort of notice your dot kind of wiggles and a lot of stuff tries to combat it now but like your actual position being reported is not stationary even though you might be stationary so let's say you have an imu and you're standing still waiting you know for whatever outside you're
Starting point is 01:15:38 just standing still as a test um your imu says hey i'm he's not moving she's not moving like we're just still. But the GPS is moving us like one meter right and one meter left. You can go, well, that's not really true. Like, I have counter evidence to this. And so you need a mathematical framework that's going to let you handle the fact that some of this stuff is a little contradictory, as well as we talked about doing this integration. But if I integrate my Accelerometer, my IMU readings over time to understand my position, and then I get a new GPS reading that's different from that,
Starting point is 01:16:11 how do I handle, I clearly didn't instantaneously move from the result of my estimating using my accelerometer to the new GPS position, which we know has noise. So how do I smooth all of these together and benefit from the sort of pros and cons of each of these. And that's where you start to enter a lot of the mathematical framework of this part of the problem. Yeah, that makes sense. I mean, you're getting samples over time. And so the error is going to be different each time, right? Because there's it's drawn from some distribution. And then you you're right you have all this sort of contradictory things going on where nothing nothing's going to be exactly true hopefully that they line up but but yeah you have to have some way of resolving there isn't like a
Starting point is 01:16:55 it's not like you just overwrite one with the other they're both sort of contributing like uh some amount of evidence that's right and so the one and i'll just there's there's several here in variations but the one that is like the topic everyone has probably heard is common filter so when you hear common filter most people have heard of this it's useful for a variety of other things as well i won't get into because mainly because i'll say it wrong uh like what exactly is trying to do but this is where that tool comes into play. And the tool comes into play in understanding, I'm going to not use the mathematical words,
Starting point is 01:17:34 because I am groaning already at people I know who will be upset. So if you sort of say, hey, I have a certain kind of distribution that my GPS error gives me, the variance of that signal, if you have an understanding of that, and you have an understanding of the kind of noise in your IMU readings, the common filter is a structure, a framework to allow you to take those known things in advance, add them to the construction of the filter. And then you have a sort of, I got a new measurement, I have an update, I'm making a prediction about where I'll be next time based on that, I get a new update, my have an update. I'm making a prediction about where I'll be next time based on that. I get a new update. My prediction was wrong. How do I update my internal state so
Starting point is 01:18:11 that I'm combining between the two? So I have an error number coming in, which is a number coming in, which is noisy. I trusted a little. Okay, how do I update where I think my position is using that, you know, that number? And how much is that I update where I think my position is using that number? And how much is that different from where I thought I was going to be? Refine my internal state a bit so that over time, I'm sort of adapting to this. And you mentioned earlier sort of ground truth. The reality is you don't actually ever know the right answer. Unless you sort of after the fact, take a survey or do some very complicated something,
Starting point is 01:18:44 you're not really going to know. And it's also not really that important exactly where you were. So your goal isn't to get better. Your goal is to say, hey, I'm going to try to do the best I can with the information I have. And common filter and its various forms allow you to sort of do that, allow you to say, how do I do this? Predict, update, update measure understand the various
Starting point is 01:19:06 performance of my sensors put them all in together and sort of not just do a hacky which is what i would probably have done which is like take my gps number do something take my imu number do something it's just one sort of call into a class that handles all of it right you know you're telling it in advance what it is and it's able to to kind of take care of this yeah totally i mean i think the the thing that's nice about common filters as opposed to us trying to like hand code something or using a neural network or something like that although there are now like deep ekfs and there is that's a whole separate topic but yeah um but you know common filters are you, they work off of the covariance. So if two approaches are always wrong in the same way,
Starting point is 01:19:54 then you won't end up sort of overcompensating. Let's say your GPS and your accelerometer, they're always, I'm making this up, but they're always sort of biased to the east. Like when one has an error that's too far to the east, the other one also has an error that's too far to the east. So like you have to think about all the pairwise or co-variances. So you have to think about, you know, if you have 10 different sensors, you have, well, like 10 times nine different, you know, kind of relations there that you have to,
Starting point is 01:20:25 like, keep track of, you know, the common filter, you know, works off of those, you know, covariances that it accumulates over getting a lot of samples. And so it's going to take care of that for you. And so it's extremely powerful tool. Do we ever do a show on KF? I don't think we did. I don't know. I don't feel like it. It's always one of those things that it's always like just past my like feeling confident to talk about or use. You know what we should do? I know we both know who I'm talking about. There is a person who we should try and get on the show who we know who is amazing at this stuff. I'll give the really TLDR, but we should do a show on this. But there's something called a Gaussian process. And the idea is you have a bunch of inputs and you assume that
Starting point is 01:21:15 they're normally distributed or Gaussian distributed. And so that just means if there's going to be an error, it could just as easily be smaller or larger. That's the real hand wavy way of saying normally distributed. And so, you know, if all of your inputs are normally distributed and you have a process and the outputs of those process are like more linear distributed numbers, normally distributed numbers, then a Gaussian process will go through and like layer a bunch of functions to figure out like what composition of functions will get you from the inputs to the outputs. And so a common filter is like a specific type of Gaussian process where I believe the function is quadratic. I think you're making some assumptions there. It's basically, it makes some assumptions that take a really, really computationally difficult thing and make it
Starting point is 01:22:11 so that you could run it on a watch. That's basically, they figured out like, what are the assumptions that I need to make to run this thing, you know, in reasonable time. So like, if you have a ton of compute and not a lot of data, you know, a generic Gaussian process is really the best thing you can do, because it will like, it will explore all the possible functions and compositions of functions. But that's just not practical to do on, you know, on a reasonable device. And also like it, it, you can get really odd things that you're not expecting. And so a Kalman filter allows you to set really level expectations and on good compute. Well, we should do a whole show on it. But, but it's, it's an amazing achievement. So basically have one more
Starting point is 01:22:57 sort of like category of things to talk about just in this introduction, sort of like drop a bunch of terms and then and then run out the door. And that is like, when we talk about these things as well, we've been talking about right now, I'll describe as, and this means a lot of different things to a lot of different people, but real time, right? Like, I'm trying to decide right now, where I am. And as Jason mentioned, using computationally efficient mechanisms, because you want to do this, potentially on something that doesn't have infinite power. And so you're trying to figure out where you are right now you don't know where you're going to be a minute from now or a second from now you don't know any of that information and that's pretty
Starting point is 01:23:35 different from if you say hey i have a recording of all this stuff like i went for a run and i get back this is not how they do it i'm just saying they could but if you go out for a run you collected all your sensor information and for instance you know you started and ended at your house well then I know for instance I can put a constraint that at the beginning and the end the two positions must be equal to each other because I went through my front door and so if you snap those two together then you can backwards like make offsets along the whole thing so that you sort of get a reasonable answer out. And you kind of call this like a batch, batch process. You batch up all the data and you process it at once. And at any point in time,
Starting point is 01:24:15 you can look ahead and you can look back for certain milestones or things you're looking for. But what if you need to do something similar? Like what if you wanted to impose constraints, but while you're going in real time, like, hey, I'm running past a fountain and I ran past the fountain again. Like I knew that at the time, like I didn't need to wait till later to know that. And there are some techniques that use that because one thing we've not talked about is if you sort of watch any of the companies trying to do sort of robotic vehicles, if you look at little robots that move around interior spaces, they have need to kind of do do something. In addition to just figuring out where they are, they also need to figure out how to move around the space and how to understand that there's, you know, hey, I'm a little tank treaded robot that's going to serve Jason a very refreshing milkshake when he starts to get hungry because his auto GPT asked it to. And so the tank is in the other room, but it needs to know he left his sweater in a pile on the ground to avoid it, right? So it needs to understand where
Starting point is 01:25:16 it is, understand the world around it, how to maneuver. And it does this via a process called simultaneous localization and mapping, SLAM. You'll hear this referred to. And it uses some other things, but they all kind of fall in line with what we've already been talking about. So it can shoot beams of light out and measure distance using beam pulses of light to a wall or to the ground. It could use the same thing with ultrasonic sensors like a bat chirp. It chirps and then hears the response back. And it's getting all of these distances to objects, to the wall. It can use its camera to understand things.
Starting point is 01:25:52 And all of these become, what I said, these sort of constraints. So for instance, if it goes in a circle and comes back and sees the same spot it's been before, it knows those two things must be equal to each other in space, even if there had been some drift and it didn't initially think they were um and so you get these events that occur you input all these different measurements and you're at the same time building an understanding of the space where you are and where you are in that space there's some udacity courses that go over this and like some of their autonomous driving they have like a class about it
Starting point is 01:26:25 i'm pretty sure they are free or at least were free at some time because i watched them i think they're free yeah okay cool uh they have a whole discussion about a lot of these topics so if you want to go like next level deep they have stuff where they talk about common filters they talk about slam they have actually um i've seen it some data where they give you input and tell you you're a little robot and they talk about things we didn't talk about here, like particle filters, how to sort of understand multiple hypotheses about where you are. And as you're getting new input, how do you build a framework where you're incorporating it definitely would recommend checking that out. And it's pretty cool, because they have some data, you actually can
Starting point is 01:26:59 try to do this for yourself. And it's a simplistic thing without having to integrate a radar onto your milkshake delivering auto GPT. Yeah, no, slam is amazing. Again, it could be a whole show. But But, uh, you know, it's just fascinating. I think the way to think about it is, you sent out a little ray out of your camera, or it's passive. So it doesn't literally this way. But you've collected a ray of data, and it's red. And so you know that, like like if I was to shoot out a little ray that there would be a red thing there. But you don't know the depth, right? And so you say to yourself, well, somewhere on this ray is some red pigment. And then you turn a little bit and you look and you say, OK, now I have another ray.
Starting point is 01:27:41 And if you have a lot of rays of red that all intersect, they say, oh, like this area in 3D, this is red. Maybe it's a part of a wall, a red wall or something. And so, yeah, all that stuff is just really fascinating and it runs at scale. It's just like a really, yeah, I would highly recommend checking out that. I've also checked out that Udacity course. I think you can basically take the course,
Starting point is 01:28:02 but then if you want the certificate, then that costs a little extra, but you can audit the entire course. Really amazing stuff. I think, so now, you know, if you pull out your phone, if you go to, you know, Google Maps, Apple Maps, here, any of these map apps, you know, and you see the blue dot there, now you have an idea of all the work that's being done on your phone to put that dot in the right spot. It's really remarkable. And you also know, just one last recap, because a lot of people have asked me this, if you're downtown and the dot's bouncing all over the place, you also know why that is, because
Starting point is 01:28:35 the satellite energy is reflecting off those high-rise buildings. And now it says, it thinks you're further than you are. And so that it accidentally draws that sphere larger. And now it says it thinks you're, you know, further than you are. And so that it accidentally draws that sphere larger. And so now it's trying to reconcile that with all this other data. And so you kind of find yourself either bouncing around or it says you're going east, you're going north, like that's all because of that. This is a fun topic. This has been a good show. Yeah, this is great. you know send us uh some feedback if you do want to folks out there in the audience if you want us to cover slam or kfs or stuff you could definitely do that just let us know what y'all think it's great to get the feedback there
Starting point is 01:29:14 was somebody who posted on patreon i don't know if patreon feeds are public or how this works but somebody posted saying you know they watched our show it uh gave them the tools they needed to get into some coding bootcamp. And now they're a C++ developer, which is amazing. Again, I don't know if the Patreon stuff is public, so I don't want to say your name, but that is amazing. If you're hearing this episode,
Starting point is 01:29:36 major props to you. It definitely makes us feel good that we're able to help you out there, which is really cool. And yeah, definitely send us emails, post on Patreon. And it's always great hearing what folks have to say. Thank you, everyone.
Starting point is 01:29:50 Yep, see you later. Music by Eric Farndaler.ollar programming throwdown is distributed under a creative commons attribution share alike 2.0 license you're free to share copy distribute transmit the work to remix adapt the work but you must provide attribution to patrick and i and share alike in kind

There aren't comments yet for this episode. Click on any sentence in the transcript to leave a comment.