Coding Blocks - Multi-Value, Spatial, and Event Store Databases

Episode Date: March 4, 2024

We are mixing it up on you again, no Outlaw this week, but we can offer you some talk of exotic databases. Also, Joe pronounces everything correctly and Allen leaves you with a riddle. The full show n...otes are available on the website at https://www.codingblocks.net/episode229 News Multivalue DBMS Spatial DBMS Event Stores Resources we like […]

Transcript
Discussion (0)
Starting point is 00:00:00 you're listening to coding blocks episode 229 maybe subscribe to us and listen on itunes sputify and more using your favorite podcast app and leave a review if you can and check out the website codingbox.net where you can find show notes discussion examples and more how about that leave your feedback questions at comments at code or your whatever at comments or whatever at comments at codingblocks.net and uh yeah follow us on x at coding blocks and with that i'm alan underwood i'm jerzak and outlaw will be back probably next episode so again we're having to go back and forth everybody's running through things right now so so yeah in and out in and out but we're trying to keep it coming. So we are continuing. This is our third episode on different types of database storage. And again, this is thanks to Brantley asking the question in Slack
Starting point is 00:00:57 to talk about the various different types and why you'd use them and why you'd use one over another or whatever. So with that, before we jump into into it we always like to mess up some review names so and before before we go too far i i'm going to do the first one only because we've said it like this is the third time now ivan kuchin he has now left us three consecutive reviews so he currently is at the top of the leaderboard so with that jay-z you want to do the rest of these all right we got thanks to yoon doggie uh also we got psycho duck and uh oh uh nihira gold i apologize that is surely not correct. In fairness, they said they were looking forward to however this was pronounced. Pronounced. Wow.
Starting point is 00:01:50 Golly, this is going to be a rough episode here. Pronounced. Yeah. I hope it lived up to your expectations. That's beautiful. And I assume Orlando Code Camp's already gone down now. Yep. Did you hear anything about it?
Starting point is 00:02:03 Did it end up being a massive success? Yep. I heard it was fantastic, and I'm not surprised. All right. Excellent. Well, Jay-Z is now fully moved into Georgia again. He is now right down the road from us other guys. So, yeah.
Starting point is 00:02:20 Welcome back. Yep. I had to figure out how to uh turn off the water outside it's like it was instantly it was just hot weather getting down to 20s we're like what do you what do you do googling like what do you do in cold yeah that's good times man yeah you know it got up to 70 something and now we're back down into the 30s and i think it's supposed to happen again here in a week so yeah i didn't even get that cold like i was being uh we were being overly prepared yeah florida people scared the cold yeah yeah although i will say it's so much less humid here that like a
Starting point is 00:02:57 georgia 40 is like a florida 50 i don't know why that yeah i don't know why the cold the what the what makes such a difference but it's ridiculous i'll't know why the cold the what the wet makes such a difference but it's ridiculous i'll go outside i'll take the weather be like oh it's 50 outside let me get a jacket i'll go outside i'm like nope throw the jacket back in like yeah totally fine here now when you dip down into the 40s it's a little bit rougher especially when the sun goes down it's crisp but yeah oh one other thing so i mentioned it's funny i mentioned that i was planning on redoing my wi-fi and i had mentioned like a few different companies like there was unify omada which is tp links
Starting point is 00:03:31 business one and then also a company called alta labs and it just just to give a quick update on this i started looking into alta labs and it was really promising like their performance was up there tied with the omada stuff and quite a bit better than at least some of the unify equipment but reading through their forums like they seem to have lots of firmware problems like when they update their firmware they end up you know causing iphones not to connect or andro's not to connect or whatever. And I, and that's not unique to a newer company. Like I had the same issue with Orbeez over time, uh, the Netgear Orbeez. But, you know, when you see that many, that many complaints about, you know, Hey, the firmware update screwed up my wifi. Now my whole family's mad at me. I ended up going with the more stable route of the TP link of modest because
Starting point is 00:04:26 it's like, man, they're probably going to put a lot more resources into making sure that my family isn't mad at me all the time. So, yeah. So I haven't installed it all yet because I have lots of walls to go through. Um,
Starting point is 00:04:41 but it's, uh, it's happening. I've bought two of the access points i got the long range access points and and i got a poe switch so we'll see we'll see what happens hopefully that'll be coming up here in the next couple weeks i got some new uh networking hardware too i'll tell you about in the tip of the week section oh nice excellent all right well i guess let's uh well wait what were you about to say something it's not that good don't get too excited we'll do it yeah it's mid
Starting point is 00:05:11 it's mid mid mid tier like medium oh okay okay all right all right let's uh let's do it so the first the first database type we're going to talk about, we only have three left. So this is this is the last episode in this whole database exploration thing. And by the way, one of the reviews said they were surprised that we didn't mention acid compliance type stuff with the relational database things. I guess we could have dove into that a little bit. I mean, I don't know. I guess that like one of the things that we didn't mention is like when you get into, uh, like Cassandra and those types of things or distributed databases, a lot of times you don't have that asset compliance to the guarantee your rights and all that kind of stuff. And that's one of the big selling points of relational databases. But that's ironic too, because like my SQL has options that aren't asset compliant, right? And, and it's one of the reasons why a lot of people have gone with like Postgres in the open source realm. Um, but like SQL server, Oracle, those types of things, those are asset compliant. And it is one of the reasons why a lot of folks will, will lean that way is because they want those guaranteed rights.
Starting point is 00:06:29 So. And as that is kind of a loaded term now too, because the databases are so complicated and configurable and tweakable that you can take a database that's acid compliant and say, allow dirty reads or something. And it's like, now it's not. And so,
Starting point is 00:06:42 and there's other databases that are a little bit more looser, you can tell them to be strict and so the whole like every database now basically has asked every database that claims to be acid compliant has an asterisk by it anyway yeah and we talked about this in one of our designing data intensive applications things where it really was like the industry has hijacked that term over time that made it less clear as to what they're actually trying to portray with it. Right. It was more of a marketing term at some point is I think basically what we ended up saying.
Starting point is 00:07:17 Yeah, totally. Yeah. I remember there was a time when we had to do some compliance at a job site and it was my first experience with like kind of doing one of the heavier duty or heavier duty levels of compliance and i was like okay cool let's get the rules we're gonna make this you know perfect we're gonna get it all checked off it's great and uh what it was at the end of it was basically like here's a list of things you have to do great
Starting point is 00:07:38 it's ambiguous and at the end what we really need to do is sign this so we know who to sue if there's a problem and we inspect and we don't agree with your assessment of yourself. They don't send out special investigators unless you go hire a third-party company. For the most part, it's kind of an honor system, which is really scary. But there's an honor system with liability there. So if something goes wrong, you know, that stinks. So, you know, if a database says we are asked compliant and people find it to be the opposite, it's going to, there's going to be a stink. Yeah. MySQL. Right. And, and not, and that's not to completely dig on MySQL. The thing is they allow you to choose different database engines backing it. Some are asset compliant, you know, quote unquote, some aren't.
Starting point is 00:08:25 Yeah. So, yeah, I mean, it's, it's not a super easy thing to talk about with actually diving deep into each particular database system. So,
Starting point is 00:08:34 you know, um, a good call out in the review, just, uh, wanted to at least share our thoughts on that a little bit. So by the way is a default now to nodb so it defaults to the more
Starting point is 00:08:47 compliant engine oh okay it used to not right like that's been a while back i mean i don't really look at it that much anymore so um yeah all right so first up for this episode is the multi-value database management system so i i thought i'm I think I mixed all this up in my head when I first started looking at it because I was thinking the multi-purpose one like Azure Cosmos DB, right? Like where it does everything. That's not what this is. So the ones that we can call out that they say are the most popular ones are Atibus, which is number 86 on the list. Unidata slash Universe. I guess I could say Universe and Unidata instead of Uni.
Starting point is 00:09:35 That's number 87. And then JBase is number 147 on the list. So this one's interesting. They say it's similar to a relational database system which means that they store data in tables so that's important right which i looked and i could not find anything that says that it was like loose schemas like schema on reads versus schema on writes but the fact that they say that it's in tables makes me believe that this is some sort of schema on right type thing. Yeah. Makes sense.
Starting point is 00:10:07 So here's, here's the big divergence from a relational database. They can store multiple values in a particular records attribute. And to me, all that means is basically they can store like arrays, right? So if you have an address column in your table, then you could store an array of addresses, right? So if you have an address column in your table, then you could store an array of addresses, right? Like that's basically what they're saying with the multi-value thing.
Starting point is 00:10:33 And they also comment on this, and I'm curious what your thoughts are on this, Jay-Z. So there's several databases out there that could do this type of thing, like Postgres. You can do all kinds of crazy things with Postgres, right?'ve they've extended that thing to do whatever you want and they say that there are relational databases that could do the same thing by storing these multiple records or multi multiple values in a single record but they say that's more of an exception to the rule like you wouldn't typically store an array in some sort of attribute like what are your thoughts on that? Yeah, I definitely agree with that.
Starting point is 00:11:07 And I was just reading a little bit about the, like the wiki page and kind of the history of how these things came to be. And it's got an interesting kind of tie in with some medical records. And it's basically deals with, or kind of came out in part related to just having incomplete data and just wanting to capture whatever you've got, whenever you've got it. Imagine when you go to a doctor's appointment or you get some blood tests, like sometimes you run this test, sometimes you run that one. Sometimes the tests that you do for certain things might change over the time. So the,
Starting point is 00:11:38 the, you know, the values and the meanings of the, those numbers might change. And so, uh, you just want to be able to kind of collect the the made it in the metadata as you need it and then um you're like it doesn't really make sense in like an olap type situation where you really want to do like hard introspection and counting of numbers and aggregations but it's really nice for like pulling up information on like a person a patient you know that's pretty interesting So with what you're reading there, I mean, it sounds like, and that makes sense for the medical industry. It sounds like their whole purpose was, Hey, we know we're going to have some data in here and we, we want to just
Starting point is 00:12:16 make sure we cram everything into the single record so that, so that it's all in one place. I guess my question is being that it seems or appears to be like a schema i'm right type thing are they saying that the schema for these multi-valued attributes are more loosey-goosey like you can sort of cram in there what you want or or i don't know if it's it like like i said i couldn't find anything that like really defined it super well they say it aligns well with jason xml so i'm guessing that it's kind of a little bit more loosey-goosey about what you can put in there. Okay. That makes sense.
Starting point is 00:12:49 That's what I was assuming. But when I looked at the code examples that they had for some of this stuff, it was not clear exactly how it was going down. I got something good here. So in the Wikipedia page, and remember, this is generalized, but just kind of talking about multi-value databases. We'll have a link in here they say generally speaking in a multi-value multi-value database system a database or schema would be called an account a table or collection would be called a file so one account could have multiple files a column or field is then called an attribute, which can have multiple value attributes or sub value attributes. And then a row or document is called a record or an item.
Starting point is 00:13:34 Yeah, I did notice that in the code, like everything was referred to as files and stuff. And it was like, OK, that's a little interesting. But but being that you said that it sort of came out of the medical industry, that sort of makes sense, right? They keep a file on, on a particular customer or patient. Yeah, this is pretty interesting. Yeah. All right. So, so here's what's interesting is they say, you know, you typically wouldn't do this in a relational database system unless you just needed to right like you had some sort of reason to divert from
Starting point is 00:14:08 the the table column type thing in a multi-value database system that's how you should do it they say that you know that's the whole point of it is you have that one thing you can create multiple multiple values into those and that's that's how it's expected to be done. And they said the primary reason for this, and this is coming from the db engines.com summary. The primary reason they do it this way is because these multi-value databases are not optimized for joins. Unlike a relational database where you keep things in normalized form and then you join to get that data. They expect that data to be on that record, that file, that whatever it is, right? Yeah, it's really interesting. I'm kind of comparing this to like a Mongo type situation where, you know, you've got these documents.
Starting point is 00:14:56 And so you can imagine having a situation where you've got documents that models model files and each file can be radically different from another. But in this case, it's it makes sense where you're like really dealing with like one person at a time so you're like you're seeing a patient you say let me pull up your account okay here's all your info let me look at your lab results from yesterday and compare to lab results from a year ago and even though you know they're we're comparing these two things like one has different tests that were on the others but some there are some things in common you can do all that stuff in other databases but it just kind of seems to really fit really well with this kind of notion of you're kind of taking on one big subject or one account at a time and then spidering off to there and and really kind of working with like unstructured data with a kind of a person there
Starting point is 00:15:39 it's cool so it's interesting because you mentioned mongo and that's sort of where my head floats to with this is it seems like a mixture of hard schemas but then the new the loosey-goosey uh embedded nature of a mongo right like because in mongo it's the same type thing like that you're not really supposed to go do joins on object-oriented databases type or that's not what they're called what were they called object oriented databases were different whatever mongo fit into yeah whatever that one was it reminds me of that except with mongo like you can create a collection you put whatever you want in it right like there's there's you could put a car in there and then you could put a person in that same collection. In this, it sounds like more of, hey, this is what a patient is. And then any of the details you want to fill in on that, just drop it in that same, in one of the attributes, right? So
Starting point is 00:16:35 that seems to be sort of the defining difference between those types of databases. You know, it kind of reminds me of like a old school filing cabinet where you might like have a file for your tax return and you put all the papers that you got in for that year's tax stuff and you might have another one for appliance warranties where you put expensive appliance warranty
Starting point is 00:16:56 information all in one folder or you might have something else and the data in there is mixed but a human can go in there and kind of quickly figure out which folder to pull and then kind of manually sift through the documents to find the thing that you need. That's a good example. And one of the other things that they said on the site is they said the primary reason that these or the primary selling points of these things like the Atabas and the Unidata is the rapid application development and the ease of learning. They said
Starting point is 00:17:26 that it's really quick to get up to speed on these things. So it's weird, like over time, I'd never really heard of these nor considered using any one of these because there's just so many, I guess, standard choices out there, at least in the business world of going like, relational database or Mongo or something like that. So it's interesting. I still don't know that, you know, if I would pick it up to use it because it's, it's very niche looking, especially when their highest ranked one is number 86 on the list, you know? So I don't know, it's probably worth looking at. Um, and i'm sure there are like the the medical thing there probably are very good reasons to use this but i i personally have a
Starting point is 00:18:13 hard time seeing that this wouldn't fit into something like a mongo if you wanted to go that route yeah so anyways they do say it's very performant because the data is the way you expect it and it's easy to maintain which is a positive because not necessarily are you going to get that with some of the other larger database systems right like yeah for sure if if you're a dba or something you've you've seen that sometimes these things are a pain in the butt to keep alive and working perfectly yeah yeah for sure it looks like Adabas is actually developed primarily for using on mainframes. Like it's old. It's real old. So yeah, you definitely don't want anything complicated when you're doing mainframes. Next up, this one, this is what I thought the vector database stuff was going to be like, and I was totally wrong. We went over that in depth last episode, spatial, excuse me, Edward didn't want to come out spatial database management systems.
Starting point is 00:19:16 This one's kind of interesting. So first let's start with the popular ones. So number 29 on the list is post-g gist which i think is funny because it's actually not a standalone thing it's a plug-in for postgres and then the next one is number 59 it's aerospike and number 136 is spatial light and i'll let you start a little bit on this one sure uh so i think it's gis by the way it is yeah post gis not post gs yeah yeah i was like sometimes like i know a guy who worked in the industry that's the only reason i would even uh think that but uh he worked for basically a company that uh tracked like um cargo uh like across those moved across uh you know states and countries and uh deal with these kind of databases
Starting point is 00:20:04 is that they provide the ability to efficiently store modify and query spatial data so it's data that appears in geometrical space so like a map or a polygon or something and they generally have custom types data types for storing spatial spatial data i was just doing a little bit of googling on this um i used to work way back in the day in uh mortgage research and a big part of that was finding if there were any liens or any lawsuits or just any sort of problems with the property that someone was going to buy because a mortgage lender didn't want to lend you money to buy a house that you didn't own or had some sort of big problem with it or was, you know know had a lien on the property meaning someone
Starting point is 00:20:45 owed money on it and so what i would do is like go through these maps and figure out like where the properties were based on legal descriptions and then actually like do searches for these legal documents based on the property location so what that meant is we would have these big county maps and i would figure out the plot if it was like in a neighborhood or if it was attractive land, it would kind of run out the little legal description like 29 degrees west, whatever. And we'd figure out what we called ARBs, which were arbitrary grids. So it would be like, imagine like a big piece of paper and you divide it up into fourths. And you have one, two, three, four. You take each of those fours, do it again.
Starting point is 00:21:24 Do it again, do it again and you do it again do it again and then you can get to a really small tract of land by saying uh this is in uh arb four four three four of similar county and that meant like the southwest corner of the southwest corner southeast corner i forget what numbers i said now but you know what i mean so uh you can get really precise with that and that's kind of similar to like the the underlying data structure that's used for a lot of these uh with the quad trees except that this also supports 3d space which is like a whole nother kind of twist on that so much more complicated and i wouldn't have been wanting to do that stuff by hand and y'all talked last time about how three like 3d from 2d is a big jump up and then going to 4d and beyond is just forget
Starting point is 00:22:04 about it but But these databases are basically built around the ideas that power that stuff. So it makes it easier to find things that are physically or spatially related to each other. So mapping data
Starting point is 00:22:20 and stuff like that. And you can imagine topography matters in there. Even as I'm talking about, it makes it sound like you might think, data and stuff like that and you can imagine like topography matters in there like um even like as i'm talking about like it makes it sound like you might think like oh this city in that city or this coordinate in the back order but we're talking about like mapping data and like directions and roads and stuff like that you're talking about a whole many many many more points of data and so if you want to be able to find the fastest route between two places, or if you want to find the most efficient route between 40 different places and, you know, adding fuel and maintenance and all sorts of other kind of considerations that you need to have in there to make sure that your logistics network is going to be able to kind of function. And you can imagine how that gets really complicated.
Starting point is 00:23:00 And that's something where you'd probably want to get one of these heavier databases in here so that's all super cool and you actually hit on a few points that that talking about the technical aspects of it is they talk about the fact that when you're storing things they typically store them in rectangles just like what you said right like you would subdivide your piece of paper into quadrants and then subdivide those into quadrants or whatever. And that's how they do it so that they can find overlapping points within it. So what you were doing manually back in the day, like creating that stuff in software, that's exactly what this stuff is doing. And then we mentioned that they have their own data types for storing this stuff. Really all it is is just shapes. So the data types that they store are points, lines, polygons, basically just any type of shape. Because when you plot those things, you can,
Starting point is 00:23:58 you can plot them inside those rectangles, right? Like you could say, Hey, this particular point falls within these two bounding boxes that I'm looking at. And that's how you can do the important part of this is that's how they can do quick finds on where these things exist. So instead of doing like and they actually talk about this in depth instead of doing a B-tree index, like what most relational database systems do. These are using what they called archery and quad tree implementations so that they can quickly locate points and the sectors or, or rectangles that they fall into. So it's, it's, I would imagine you have more experience with this. I would imagine it's complicated in terms of how it's implemented, implemented, but the use of it's probably not that bad, right? Like as long as you have a grid and these things are plotted in the right places,
Starting point is 00:24:50 it's fairly easy to use, right? Oh yeah. And anytime you do a Google map search and get directions from somewhere, you're basically using a database. It's something like this, is organized like this. And as a user, it's fantastic. I just type in two addresses and then I rely on the heavy work of the mapping structure behind. But just like when you do a direction search on your phone or whatever, it's not doing that ASTAR algorithm, you know, looking at every possible path between two things, including walking, bicycling, public transportation, buses, all that stuff. No, it's already figured out. The software, the service that you're using has already roughly figured out the most efficient paths for just about everywhere to just about everywhere. I say just about. It's like there's some rounding and some stuff. They take all sorts of little shortcuts.
Starting point is 00:25:40 So what that means is they basically have stored information about efficient routes already. And so that when you say I need to go from point A to point B, it can leverage what it already knows about how things connect in order to figure that out much quicker. And then it just kind of sprinkles on. I say sprinkle as if it's easy, but like traffic data and stuff like that in order to say like, oh, this one's not as great. So we're going to update those weights and kind of recalculate. But I think the whole subject is just fascinating. It's really cool it's a really cool space uh the whole mapping thing is really cool if you even just google maps and google earth in general uh and i know there's other services now but i mean it's just such a technical marvel on so many different levels and
Starting point is 00:26:18 it's so usable and so helpful and just the technology behind it and the user experience that everything about it is just like a masterwork yeah it's it's incredible and it's funny like when you said it's sort of easy to just break along some other things like i think about that it's crazy right like there's the way that the crow flies like you know for the software to be able to point the the quickest the quickest route between point a and point b in terms of distance. But then when you start factoring in, if you're, if you're looking at an application like Waze, that's factoring in traffic patterns and then speed limits along those routes and all, like it's insane, the amount of calculations and whatnot. So that goes above and beyond just the 2D space that's there, you know,
Starting point is 00:27:02 going along these roads and then having to add in all kinds of other stuff like it's it's insanely cool what they've done with all this stuff and this is all possible because of these these geospatial databases which are basically just a subset of these these spatial database systems so um really really neat things oh look at what database uh google uses for maps oh that would be cool so there's there's another type so i just mentioned the geospatial that's like you know places on earth or whatever there's another one called spatio temporal data this one's kind of interesting this is spatial data that has timestamps. Now I'm not exactly sure what that would be used for, but that sounds pretty cool. So that's, that's one that exists out
Starting point is 00:27:50 there. And then the other thing that Jay-Z mentioned is, you know, we were just talking about 2d space a second ago, right? Like you look on Google maps and you know, Hey, I want to go here to here. Okay, cool. Awesome. Well, if you're in Colorado, you might be going up and down mountains, right? And that's, that's a little bit different and they support that kind of stuff. here to here okay cool awesome well if you're in colorado you might be going up and down mountains right and that's that's a little bit different and they support that kind of stuff like they have support for weather and elevation and and all this so like post gis has all kinds of stuff built on top of it and i'm sure these other systems like aerospike and spatial light also do but you know it's it's super powerful with these
Starting point is 00:28:25 things present and give you the ability to do if you're working with spatial data yeah it's interesting uh it looks like aerospike i thought i'd heard of it before but and i would have been surprised if uh you know if it was just for gis stuff because because I just don't mess with that stuff. But it's actually used for other different type things too, like real-time database, kind of NoSQL type stuff. So I'm interested to see what kind of features they have in here specifically for this space. So that's pretty cool. They compared themselves to Redis.
Starting point is 00:29:01 Interesting. So an in-memory type thing. Yeah, that's interesting. Yeah, I want to i want to know more about aerospike that's that's why we do this stuff so a couple other things to hit on real quick like if you want to learn about this like if this is neat to you or if you have a need for it as a matter of fact somebody in our slack channel i don't remember who it was mentioned that they use postgres or they use a relational database when we were talking about the first set of things because it could do so much and that's that's one of the reasons why postgres is so popular is like this plug-in for it gives it spatial data right and you can do most
Starting point is 00:29:36 of the things that you need with your data using postgres even though things like search like an elastic search might be better for but you can fit most of those things into your Postgres. So that might be a reason to lean that way, right? But what I was going to say is they have a workshop page for PostGIS. We'll have a link in the show notes for it. But if you're interested, it's a massive workshop. It walks you through a ton of steps. So they've got, uh, the workshop modules is split up into 41.
Starting point is 00:30:11 Now the last three or four are appendixes, but if you really want to learn this and you really want to go through some stuff, like there's a great resource here. If you want to step through that. Yeah. So it's a super cool space. And I don't even really know what companies kind of hire and do stuff in this space but it's just cool yeah i agree it's really neat oh and it was also worth noting you've i'm sure you've probably heard of redfin seeing as how you've been going through you know looking for a house and all that kind of stuff so redfin was
Starting point is 00:30:39 sort of a a competitor to realtor.com and they used postgres and post gis for their stuff at least that's they have it listed on the post gis page so you know kind of cool like one of the major you know real estate companies out there doing things is using open source post g technology. So pretty neat. I see OpenGIS, you got a link here, which looks like it's got a lot of information that's available to you. Because you kind of imagine like if you're starting a business and you need to do GIS type stuff,
Starting point is 00:31:17 you pick your database. You also need a lot of data. This is kind of like an interesting situation where it's like you really expect your database to come either with a lot of data this is kind of a like an interesting situation where it's like you really expect your database uh to come either with a lot of data populated or you expect to buy a lot of data and kind of shove it in there to use it that's interesting i didn't even think about that when i worked at ups back in the day they bought data to fill in the systems right so when they were trying to map out routes for for their drivers
Starting point is 00:31:46 or whatever yeah when you think of a spatial database it's like oh yeah it should have everything about the u.s in here or whatever right no it doesn't you gotta you gotta get that somehow yeah you think about like redfin what they're doing it's like they you pull up a house on there of course you're gonna be able to want to see it on the map and stuff but then also like what schools are nearby what's your closest hospital uh who's your utility companies you know just like little dumb stuff like that it's all based on like physical location what counter you and what are the tax rates like and how you get to that the meta data all that stuff is really important when you're considering buying a house yeah and it's really cool too like
Starting point is 00:32:22 if you go into realtor.com like the app and you search for that stuff like what you just said hey show me the schools nearby schools or whatever it'll it'll draw them out on the map right like it'll draw the bounding lines and everything around it like it's it's amazing what they can do with these database systems so you know again if you're in that space like you should be looking at this type of thing and if you are in that space you probably already have looked at this so yeah you know walkability score have you seen that i have yeah yeah i think it's a zero where we look yeah i was gonna say like pretty like 75 of the u.s is just a zero so yeah it's not that impressive i guess yeah unless you live in a downtown area you're basically you got a less
Starting point is 00:33:00 than three probably everywhere all right so uh we we do this every time and and we want to ask again like hey we don't ask for much but if you wouldn't mind and you find yourself with a few minutes leave us a review say hi say thanks and you know leave a smile on our face and help other people decide whether or not they want to spend their time listening to one and two hour episodes of software talk so you know we we really do appreciate it ivan thank you for leading the leaderboard there that's that's awesome and thank you everybody that has taken the time over the years to to drop a line and say hi and say thank you we we really appreciate it love it thank you yes uh i guess we're not gonna do mental blocks it's hard to do with two
Starting point is 00:33:46 people yeah yeah stuff we gotta skip it um i think somebody given a suggestion for something else but i forgot it already because it's been a busy couple of weeks so um yeah we'll be back to our regularly scheduled um interruption in a future episode. So, all right. So I think you're probably pretty familiar with this one too, right? Yeah, a little bit. You know, like I'm definitely familiar with the space of, of, oh my gosh, I can't remember the word. It's like event stores is what we have in the, in the notes,
Starting point is 00:34:18 but I'm thinking event sourcing is like where my mind instantly jumps to. And that's a big use case for these kinds of databases. And you've got the most popular databases in here. We've got event store DB at, is that one 78? Yeah. One 78. It's not high up on the list.
Starting point is 00:34:35 We'll talk about why that's so far down, even though it's something that a lot of people have heard about three 36 for a DB two event store and three 38 for an event store. And remember, remember there's only like 400 total. about $336 for DB2 event store and $338 for an event store. And remember, there's only like 400 total. So these things are like bottom third of the list. Yep. And the idea here is that these are used for implementing the concept of event sourcing,
Starting point is 00:34:58 which we've talked about before. It's kind of like in your bank account where you have a list of transactions and you can total them up to see how much you currently have in the database but it's really important to have those transactions too so you can explain to a customer or if you're the customer you can see like where did my money go what happened here and you know that nobody's like robbing you or kind of sneaking anything anything bad is happening and yeah it's kind of we we talk about the notion of like replaying these transactions in time in order to see how you got to where you're at now. And when we talk about where you're at now, we often refer to that as materializing and saying, we because the data is immutable, right? Like once it's written, you can't change it. It's written in stone, right?
Starting point is 00:35:49 Like that's what it is. Yeah. So if I had to make a database, it might be this type just because I'm lazy and I don't want to deal with updates. And even querying is kind of limited because in a lot of ways, it only really makes sense to just kind of loop through from the beginning to the end of these things yeah it's it's pretty interesting i mean they they call out the main contrast like most people think in terms of relational databases like that's you know that's probably the standard that most everybody starts with and the big difference is a relational database stores the current state of a record right like that's the whole purpose of it if you know if jz has a record and i have a record it's going to
Starting point is 00:36:30 tell our latest address in there because that's what it is right and if you want to store historical data you can and there's all kinds of ways to do it like for instance like sql server has temporal tables right where you can basically do a few commands and you can hook up this, this sort of historical tracking behind the scenes. So every time you update a record, it throws a history record into this temporal table. You can do it manually, right? Database systems that don't technically support, you just create a history table or an audit table. That's basically a complete mirror of the main table. And then you could do it, but that's you sort of creating your own solution. You're having to maintain your own inserts, updates, triggers, all kinds of things, right? Like that's what you're doing. This,
Starting point is 00:37:15 this is how it works out of the box, right? Like you, like Jay-Z said, if you have a bank account and you deposit something and then somehow money leaves your bank account and you didn't do it, nobody's going to be able to go back in and update that and say, no, that didn't happen. What they'd have to do is they'd have to add another record to move the thing back in. So you'd actually see the flow of exactly how everything happened, right? So it is truly just a living audit history of every change that happens to an entity in your system you imagine like uh you've probably like you can either imagine or you worked at a place where you had a relational database and someone said they needed history so
Starting point is 00:37:57 you made an underscore history table or you turned that feature on the database and then someone said oh we also need this table now you've got two tables like underscore history you've got those features turned on too and next thing you know it's like you're up to five or six tables and then somebody says like hey what did this person do around this time and you're doing this weird query where you're unioning stuff and doing aware on this and unioning the results of this and like looking at all these tables like that's the kind of stuff that's like really just natural to these kind of databases and you can imagine for like a security perspective on how that's really important to say like hey um are was there an abnormal amount of withdrawals within the last 24 hours like that's something that's you know kind of easy to do here like is
Starting point is 00:38:35 this person having a flurry of activity more than usual you know like fraud type situations or accounting uh so it just it just works well it seems really great. But why don't we see, well, I guess we'll get into, but why don't we see more databases that are kind of designed around this notion? I think it goes back to what we said. I think it's the reason why everybody sort of falls back to relational databases because it's not a join system right yeah it's it's here's here's my thing and then follow this thing throughout time not hey i need this thing to join to a person into a location into a whatever like it's just it's not made for that right it's made for tracking the state of objects over time yeah so it's like by definition you need another database next to it and you can
Starting point is 00:39:22 also just do this in that database too you just have to be a little bit more careful about your use cases but for the most part it's kind of defined by what you can't do like you can't you know you can't query it uh it doesn't make sense to really query it too much independently and you can't change stuff like i can i can implement that done right right yeah i just have to not do stuff that That's great. It's super important. Like what, what are you saying? You can't change stuff. You technically, you are not allowed to update an event that was there and you cannot delete an event that was there. So it's, it's sort of simple in terms of what it provides you, right? It inserts new events and it allows you to query those events over time. That's, that's kind of the whole gist of this. Now this, this is where we've always had conversations, like, especially with the
Starting point is 00:40:11 designing data intensive applications is, you know, when do you decide that you're going to add another piece of tech to the stack? Right? Yeah. I can, I can add a bunch of underscore history tables to my Postgres or my SQL server or whatever, but that gets nasty over time. Just like Jay-Z said, right? Like now you're going to union your main table with the other table and you're going to have all these things, all these query criteria on these joins of these unions to make things work. And it's like, well, if you just had this thing over here, that's just purpose built for exactly what you're trying to do, then that's cool. But I'm going to save some of that
Starting point is 00:40:45 because there are some really cool reasons why you would use this over something other than a relational just as a as an augmenting type technology yeah totally um now one one thing that's super cool here is in your mind i don't know if your mind goes here. Mine definitely did. If you have, if you have a bank account that has just, you know, tens of thousands of transactions over time, it seems like it's horribly inefficient, right? Like, Hey, I'm going to look at Jay-Z's bank account, but I've got to replay these, these 10,000 events to get to what the current statement or the balance is. Right. Like that seems wrong. Yeah, totally. Like 10 years, like if you if you maybe bank for 10 years imagining like running through every little transaction every little time you gained one penny in interest like all that stuff like no that's ridiculous so if we
Starting point is 00:41:33 could have this database kind of maintain the current total and be able to like truly rely on it so we can do an instant check at any point in time like what is my score what is my number now and that's great and they have that they they have this thing where they can't not all of them but i'd say probably a vast majority of the popular ones have this ability to store these snapshots over over time that materializes events up to a certain point in time right so so i don't know maybe say it's daily they do it um you know if you go to look at yesterday's thing it's got this materialized state so it doesn't know maybe say it's daily they do it um you know if you go to look at yesterday's thing it's got this materialized state so it doesn't have to replay all 10 000
Starting point is 00:42:09 events to get there so so it's been thought about right like it's not like everybody's like oh i'm going to take this hit every single time so that's good yep i see you got the event store db uh linked here you take a look at that i did take a little bit of that and they were talking about some of the information in there so like i did on on several of these databases when i was taking notes i would find usually i would go for the most popular one and if their documentation was good then i go with it and in some cases the most popular one had horrible documentation and i would find the one that had better documentation in this case event store db we did a pretty good job and so i grabbed some notes off their stuff right like one of the things that they mentioned is they sort of define theirs
Starting point is 00:42:56 as an immutable log which is perfect right like it and it's funny because it reminds me of kafka when i hear that but this is a lot more purpose built and i want golly i think it was jim hummelson had mentioned that kafka is not the same thing as an event log right like it's yeah and he had an entire write-up in our slack channel that was absolutely fantastic so don't mix two, but it is an immutable log. Yeah, there's a lot of stuff you can do with Kafka, but you are kind of swimming upstream. You're going to have to do a lot of configurations. It's easy to get wrong.
Starting point is 00:43:32 And then there's just some kind of weird stuff. It's just not a database ultimately at the end of it. But looking at EventStore right here, I checked out their API documentation, like right in the notes and documentation, like these are pretty much the three calls that you're're the only three calls you're ever going to have to make with this database one is appending the second one is reading which is reading the stream and you retrieve all recorded events and then the third one is subscribe so you can get like
Starting point is 00:44:01 new events coming in and you know everything else is kind of like you can but that's not really what we're here for it's pretty cool isn't it like it's it's the the definition of simplicity right like you get what you need and that's it now the the subscribe thing is actually pretty cool because they took it a step further right so the other ones are what we talked about you get your audit log you add an event and you can query the event. That's, that's, that's basically it. But this subscribe thing means that you can now have reactive applications, right? You have applications that respond to, Hey, there was an, there was an update event or a new event added to, to Jay-Z's bank account. I i can have this my application respond to that like does it
Starting point is 00:44:47 need to go do something because this event happened and we call the hollywood pattern something don't call us we'll call you oh yeah yeah golly that's been a while yeah it seems to be what we do in streaming technology nowadays like that's really what it is yeah polling stinks like let someone else lower level deal with that yeah for sure um let's see so yeah on the event store db like some of the other things that they call out is they have these guaranteed rights they have a concurrency model and they have these stream apis like what jay-z just said which are fantastic like give you tons of ability within your applications it's it's hard not to compare it to kafka because that's what kafka gives you right like kafka gives you the ability to write
Starting point is 00:45:31 these streaming applications that just respond to events that come in yeah totally and it's just uh it could be so many other more things like you're gonna you have no matter what you're doing with kafka you are gonna be tweaking configs and they're really confusing and weird, and they all matter, and you're probably going to get them wrong for a while. There's so many. There's so many. You can't get it all right the first time or the 20th. Yeah.
Starting point is 00:45:55 So the EventStoreDB, another couple things they call out. So it's available for.NET, Java, Go, Node, Rust, Python. I'm sure they have more. And they say it runs on all OSs, which is beautiful. Windows, Mac, Linux. Not everybody runs on Windows. It's funny. I started out as a Windows developer, and everything was Windows.
Starting point is 00:46:18 And then as you get especially more into the open source world, nothing runs on Windows. Or it's jumping through hoops to or it's or it's jumping through hoops to do it so it's nice to see that they actually do it for all yeah and it's open source too oh right yeah uh this runs on a cluster so it can be highly available which is beautiful they have these optimistic concurrency checks beautiful this all, so this is the part that to me is so super cool. So we've talked about the audit history. Beautiful.
Starting point is 00:46:51 We've talked about the fact that it's simple. Beautiful. This is what takes it to another level for me. And this, this right here, if you were deciding whether or not you wanted to write some, some audit temporal tables in your relational database versus using something like event store DB, this would be the defining factor in my mind, whether or not it was worth adding this to your, to your tech stack. So they allow projections based off new events that come through. So they call it interesting occurrences in your data right and i'm just going to read this example verbatim because it will explain it better than i can and
Starting point is 00:47:31 then we can talk about it afterwards so uh let's say that as a medical research doctor you want to find people diagnosed with pancreatic cancer within the last year during the treatment a patient should not have had any proxies for a heart condition such as taking aspirin every morning within three weeks of their diagnosis they should have been put on treatment x within one month after starting the treatment they should have failed with a lab result that looked like lab one within another six weeks, they should have been put on treatment. Why? And when, within four weeks failed that treatment with a lab result, that looks like lab two, that's a crazy amount of criteria that just happened right there. But what they're saying is with event store DB, it allows you to look at the events that happen over time
Starting point is 00:48:29 and use these kinds of criteria to come up with new things that you maybe want to publish to another event somewhere. Um, another simpler example they had is you're looking for how many Twitter users said happy within five minutes of the word food, coffee shop, and within two minutes of saying London. So you can sort of stitch together these complex streams of looking at data and saying, hey, if I see these things happen, then that means that this needs to happen and it can fire off an event and add, add something to another, um, uh,
Starting point is 00:49:10 object. I don't know, event stream, whatever, but that's amazing. Like you're talking about analytical type stuff that's built in just based off the event streams that are coming through. Yeah,
Starting point is 00:49:21 that's really cool. I was like, when I first read that, I was thinking much more simply. It's just like, if there's transactions greater than a thousand dollars and send it to you know potential fraud whatever or uh if there's more transactions and you know x amount of seconds or like if the account goes negative send it to the billing department or whatever
Starting point is 00:49:38 but yeah these are much more complicated and interesting yeah it's i mean i was thinking so we do work like this right like we do work where where you're investigating and trying to tie together events that happen over time and across systems and and all kinds of things and we use different technologies for it right like we use apache flank and kafka and we're doing streaming stuff. And it's really incredible what you can do with it. But it's also not super easy. When I say it's not super easy, you're having to store a ton of state. So, for instance, if we back up here. In order to do this, the reason this can do it is because it's storing those incremental
Starting point is 00:50:27 pieces of state over time, right? Like, Hey, this person, you know, got treated for, for this. And then they took this medicine and their lab looked like this, right? That can all happen because it's storing each piece of that. And so it can look at it and say, Oh yeah, I saw this, this pattern happen. And it's all in the data. say, Oh yeah, I saw this, this pattern happen. And it's all in the data. It's in that, that history data, when you're doing this, something, this type thing with Apache flank and Kafka and all that, you got to store that data somewhere. Right. And by its nature, Apache Kafka is a, it's also an immutable transaction log. But the thing is usually the way that you're using Kafka is you're sending so much data to it. You can't keep that data for a long period of time, right? Like you might keep it for a week, maybe a month, but you're,
Starting point is 00:51:16 you're going to eat it and storage costs because you got a lot coming in there and a lot of people are using it. So you're having to store that state now, not in Kafka, because it's going to go away at some point. So you're having to store that in state within the Flink application, right? And I think behind the scenes, it uses like RocksDB or something. Another thing that we've talked about over time, but now you've got to start caring about each piece of state that's going to matter to you, right? So if you are trying to do something like this lab, this doctor thing where they're trying to find cancer, you have to know all those data points that you actually want to store in state.
Starting point is 00:51:56 And that's going to change over time, right? Like at some point, you're going to be like, oh, man, I needed to store this lab type result. And so now you have to modify your application and store that state. So you're not going to have any history for that, right? Whereas if you're using something like this event store DB, it's all there because it's all been there. So now you can just say, hey, you know, I found this new string of events or this pattern of events. You have all the data. And so you could probably add these projections in there and, and start looking at it as opposed to always constantly having to build new state and something like a flank application. And there's,
Starting point is 00:52:34 there's other streaming apps out there. But this seems like it's purpose built for that, that type of scenario that we're looking at. Yeah, it's good stuff. And it's highly performant. They mentioned here on the page, 15,000 writes and 50,000 reads per second, which is really, really big. It's not quite like New York Stock Exchange numbers, but I mean, it's up there.
Starting point is 00:52:58 Yeah. I mean, that's quite a bit. Yeah, it's pretty good. 15K writes per second. And I think they also also this is pretty simple to maintain as well so you know you're getting a lot of bang for your buck for it so to me again the the immutable log all that kind of stuff is really cool if you need if you need like audit history on a lot of things that you do this seems seems like a no brainer. But if you,
Starting point is 00:53:25 if there's that thing, that's the tipping point and this ability to analyze data as it comes in with these fairly complex or even simple type patterns that you want to see, man, that seems like a no brainer to me. Um, especially if it's really not that difficult to maintain. Now I've never run it, so I don't know. I think that's marketing speak, right? Oh, yeah, you can just set it up and it runs. Okay. Maybe it's like Kafka where, yeah, sure, it runs,
Starting point is 00:53:57 but you got to configure it 25,000 times to get it to be perfect. Who knows? Yeah. I just Googled what databases the stock market uses. Of of course the question is like kind of nonsensical, but I saw quite a few people mentioning KDBX or KDB, which you talked about last episode. It's interesting, but they, they, they mentioned it specifically for using for event sourcing. And that's kind of like kind of what I said before too, is like, you can implement this in other databases if it makes more sense for you.
Starting point is 00:54:23 Oh, that's interesting it's i mean is there anything we found that you cannot do in a relational database well uh the graph stuff is the only thing i can really think of you know and keep in mind but i don't i don't really think so but you know the funny part thing about the graph thing is like sql server bolted on graph database stuff in that by setting up unique, interesting type relationships. It's still not great, but, but yeah, I think wrapping up the, the three episodes that we said, and this is, this is what we've been, I guess, sort of preaching for a couple of years now, since we started the designing database intensive applications or data intensive applications is you can make a particular database your hammer. You can, you absolutely can. Every problem that comes in just looks like a nail that needs to get pounded down. There are going to be times that you look at it and you say,
Starting point is 00:55:23 wow, this event sourcing thing really seems like that makes a lot of sense for these use cases or this graph database, right? I need to see 20 levels separated of relationships. Man, you can't do that easy in a relational database. You could do it, but it's not going to be easy. So keep in mind that, that if you find yourself really struggling with keeping something performant or, or trying to do things and it's way harder than it seems, you might be trying to push the wrong thing and with your hammer. And that's, it's really hard. It's really hard to make that decision before you get into something right like i mean we've talked about trying to make a database a search
Starting point is 00:56:11 engine in the past and man you find out relatively quick once you get in there that it sucks yeah this is tough yeah so there's it's not an easy answer of, well, should I use this or should I use that or whatever? Right. Like, do you have a team that can support it? Like, do you have an SRE group that can, that can keep the thing running? Like there's, there's a lot of questions to be asked, but just know that there are just about now for any type of data that you're planning on using, even the vector database type stuff, right? Machine learning. I would have never considered it. I had never even thought about it
Starting point is 00:56:48 because I don't live in that space, but they have databases for storing that stuff, right? So you need to be aware of your use cases and whether or not you think that the added complexity is worth it, I guess. And you know what you always try out. We live in the future. You can spin up new databases now with Docker or
Starting point is 00:57:10 Kubernetes and give it a shot. It's so much easier than it used to be. Just installing SQL Server, you remember how many disks that used to come on? CD-ROMs. That's not something you would normally be doing. Just installing the tools to work with it was such a pain. Now you can just download all that stuff and run a container and then ditch it and it's just gone off your
Starting point is 00:57:29 system without changing anything messing with anything it's great oh that's so beautiful docker run it all right docker run it and if you like it use it make it part of your stack if you don't docker rm you're done it's beautiful that pretty cool. You can put a crappy movie on or a movie you've seen before and mess around with any database pretty much almost any database in the world at this point. That's pretty cool. And I think that's what you do most of the time, right?
Starting point is 00:57:56 You're kind of sitting there watching TV doing this stuff most of the time. Oh yeah, I've kind of taken a little break from that because it's not very family friendly. But I do enjoy it anyway. taking a little break from that because uh it's not very family friendly friendly but uh i do enjoy it anyway when she wants to talk about what she just watched and you're like oh uh yeah i didn't yeah catch it i'm like leave me alone i'm working uh hey never mind what my bad that's amazing yeah i've been there a few times so all right now we get on to my favorite
Starting point is 00:58:30 portion of the show seeing as though we missed outlaws it is the tip of the week yep so here's uh what i promised earlier uh i just got a little piece of heart uh networking hardware but it's uh it's not super fun so uh i am my new house i have a great internet connection but really bad cell phone service and i've looked at where the towers are and all this stuff and i just can't do anything about it like it sucks like the your phones drop data and it just doesn't work very well so we uh did a little bit of googling and found this device that uh plugs into your network or you can do it white like wi-fi too and uh you get yourself a phone number uh you can browse by area and so we did that and then we just plugged our old like landline phones uh into it we had like a wireless
Starting point is 00:59:18 set and uh it's like 90 the i think the most we got was like 120 or something, $110. And that's it. There's no monthly fee or anything that unless you want to go, you know, get fancy features that I don't care about. And so it was just kind of like a one and done. And it lets us use old school landline home phones just like, you know, you used to without paying any sort of like crazy fee to AT&T or whatever. It's basically an IP phone. You can do that kind of stuff on your cell phone too. But talking on your cell phone kind of stinks.
Starting point is 00:59:51 Cell phones are really not designed for talking on. And so they're not very comfortable even to hold to your ear at this point. They're designed for your pocket or your purse because that's where they stay most of the time. And so it's kind of this funny case where like cell phones really aren't designed for talking anymore. And it's so nice to like deal with the customer service issue for example like by talking on the landline and looking at my phone for whatever information they need like receipts or warranty info or whatever uh it's so it's been really nice and this device was just perfect i set it up in like
Starting point is 01:00:18 you know 15 minutes or something most of which was waiting for it to update and then i just plugged the phone in and it's just worked great. That's amazing. So fun fact for you. Anytime that my phone has rang at the house, an outlaw would be like, hey, the 80s called. They want the phone back. That's what I have.
Starting point is 01:00:37 I have an UMA device that sits here, does the same thing. And I was able to port my phone number from whenever I had a landline back in the day like years and years and years ago you're able to port it over to uma so if you don't have a landline then you just get a new number but if you did have one you know then i think it costs nothing per month like what jay-z said except you have to pay the the federal regulation garbage fee that's like four bucks a month so that's that's that's what it ends up costing but yeah it's a fantastic device yeah yeah let's say we got a little ask to start this got a little asterisk on there because like they don't charge anything they still have to pay somebody yeah it's really good and i think also another another benefit of at least the new uma
Starting point is 01:01:19 devices i think you can bluetooth um headsets and stuff to it so if you don't want to carry around the headset hand phone or the the phone like what you have in the past i think you can bluetooth connect something so you can have headsets like if you just have a bluetooth thing like i don't know if the apple um earbuds or something work i'm not sure but i believe they have that feature yeah they have like three tiers of the actual hardware device. And I think the third tier is the one that supports that. I got the middle one. So it does wifi. So I didn't have to plug in anything.
Starting point is 01:01:50 Okay. Yeah. Mine's mine's laying connected. I didn't have the wifi at the time. One other thing worth noting though, and I brought the, and so your use case is what reminded me of this. So my sister lives out in the middle of nowhere down in florida like nowhere and they had a similar problem where they one bar on their cell phone which is horrible
Starting point is 01:02:14 right like you you can't carry on a conversation because it breaks up all the time they actually have a booster that's installed in their house and i I can't remember exactly which one I went, I went to Best Buy and looked at it. And I want to say it's something like this. We boost and, and I'll put a link to it here in the show notes, but it actually works pretty well. Like I can talk to her, she's at home and it never cuts out. Everything works well. Now these things are not cheap. I want to say that they're, they're like anywhere between 500 and like $800 depending on, on the boost thing you get, but it absolutely does work. It takes that one bar cell phone signal at their house and turns it
Starting point is 01:02:58 into, you know, four in the house. So, you know, if, if you happen to live out in the middle of nowhere and you need something like that, which the irony is Jay-Z does not live in the house so you know if you happen to live out in the middle of nowhere and you need something like that which the irony is jay-z does not live in the middle of nowhere but there are for whatever weird reason where we live like it's a fairly populated area there are several dead spots on popular services which makes no sense i have a verizon tower one mile from me and a T-Mobile tower 0.4 miles. And I have T-Mobile and it's awful. It's awful. People at AT&T have been over here and they say it's awful too.
Starting point is 01:03:32 I have yet to find anybody running Verizon, which I thought was the most popular one, but who knows? Yeah, man, it's absolutely insane. And I don't know if it's because of the trees, because it's not all that hilly, I don't think, where you live. Yeah, a little bit. know if it's because of the trees because it's not all that hilly i don't think where you live yeah a little bit yeah it's it's it's insane i mean there's there's dead spots in my neighborhood like as you're driving through it's like really yeah so yeah all right so mine and this is i guess in the spirit of outlaw, I saw this on, on Twitter or X or whatever the other day, and it was pretty interesting. I, Oh, did I not? I will paste the link to the, to the Twitter thing,
Starting point is 01:04:16 which apparently I left out, but here's the gist of it. They said, don't use get reset dash dash hard. Now I found this interesting because we've definitely said use get reset dash dash hard in the past, right? Like if you have changes that you've made and you just want to undo them, do this, it wipes it out, takes you back to the previous state, the previous commit that you were working on, right? They said instead use get stash dash you. And the reason they say that is because and we talked about this in
Starting point is 01:04:48 our git episodes where we were going over in depth the git stuff git stash adds the objects to the git history right so if for some reason you did a git stash or git reset dash dash hard and you were like oh man I just messed up. I need that back. You're not getting it back. There's no history. It didn't write any objects. There's nothing in that, in that get tree there. It's gone. If you do a get stash dash you, it actually writes it to history and then cleans you back up just like the git reset would but if for some reason you're like oh man i forgot that i had those three files that i did there you can now get back to it because git has the history in there it built the tree it built the objects so found this really interesting hopefully that helps
Starting point is 01:05:39 somebody out and uh i will have a link to the twitter thing where the guy mentioned it but yeah i thought that was a fantastic thing yeah it's like we talked about get reset hard is like the one i think maybe was even like the one thing that destructively affects your files yes yeah it's like the only thing you can't recover from like git is really good about giving you guardrails but that one's like you're just like no i don't care i don't want guardrails yeah bye yeah so yeah i think uh i think that's it all right yeah i think we're good you're gonna do the real outro or yeah why not i mean we started with sort of the the real one so let's let's end with the sort of real one all right well subscribe to us on itunes spotify and more using your favorite podcast app and be sure to give us reviews by
Starting point is 01:06:29 visiting www.codingblocks.net slash review hey and while you're up there at codingblocks.net make sure you check out the show notes which will be a lot on this one uh examples discussions and more and send your feedback questions and rants to our Slack channel. If you have not been to codingblocks.net slash Slack, you should join because there's a lot of amazing people out there. And we still, in my opinion, have one of the greatest tech communities out there because people are just
Starting point is 01:06:56 generally nice to each other, which is refreshing in this day and age. Yeah. And also, check us out on Twitter, even though we don't post that much up there. But we do read and find some things. X. Yeah, yeah. And also check us out on Twitter, even though we don't post that much up there, but we do read and find some things like X. Yeah. X.
Starting point is 01:07:10 They're not tweets. They renamed them. What are they now?

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