00:00.00 jamesmontemagno Frank all of my life I always thought that there was 1 type of Json which was Json you know like the Json that we use every single day. You know that Json right? frank. 00:09.20 Frank You mean the one that if you put the Comma in the wrong place. Nothing works that one. 00:15.40 jamesmontemagno That's correct. That's the Json that we all know and love. It's like it's kind of like yaml but more squiggles in there chatter us. 00:21.10 Frank Dear, okay, okay, this is dumb but we have to do it yaml or Jason configuring something because all we do as programmers is configure something. 00:28.24 jamesmontemagno Um, oh well, what am I doing. 00:34.94 jamesmontemagno You know we were talking about bicep files the other day which is kind of more Json e type of feel and I felt as infrastructure for code that made a little bit more sense because I'm a curly braces type of developer I like clear indications of when things are starting and stopping and. 00:38.44 Frank Yeah. 00:54.43 jamesmontemagno Sort of fill it with yaml I mean and this could be different for you because you're an f sharp developer and your indentation is important to you. So for me yaml is like going back in time because these indentations make sense and there's like I don't know just why do I have this arbitrary requirement. 01:07.53 Frank Yeah. 01:12.62 jamesmontemagno Of parsing this data that feels gross to me but that that's my opinion. 01:17.97 Frank I only don't like yaml because there's usually like 2 different ways to do the same thing and I can never remember either of them and so I just make a mess of it anyway, as sidetraed you ah there is a Jason yeah well I mean everyone's got their subformat at Jason like Jason's just the. 01:19.31 jamesmontemagno Who. 01:34.54 Frank Flexible bag of stuff and data. That's just a big data blob. 01:38.30 jamesmontemagno Yeah, it's just a big blob of data but did I a little did I know that there is very specific formatted types of Json including 1 called Geo Json 01:51.98 Frank Ooh Geo Jason I know that one you know I love maps right? You know that about me. 01:57.99 jamesmontemagno Well 1 holiday hack that I've been doing is doing some maps and it harkens back to the original mapping days where you were creating um maps for buses I think and in Seattle if I remember correct. 02:11.61 Frank Yeah, that was my first big mapping app where I did a vector drawn streets and vector drawn buses with a real opengl 3 d renderer that kind of stuff. Ah that one did not use Geo Chase and though but I've since written. Just. Toy mapping apps that absolutely do use geojson that are still vector drawing apps but you know what happened is ah Apple released their newest version of maps and it's ridiculously good. The 3 d view and everything so I've just kind of. 02:41.90 jamesmontemagno Oh. 02:44.82 Frank Given up writing my own maps at least for a little while until I come up with something better. 02:49.86 jamesmontemagno Well I stumbled upon geo json because again I'm not really in this realm of of Geo right? GGeographicJson is what it stands for. But I recently was out skiing doing cross country skiing and I have an app which we've talked about um which was last year's holiday hack and um, i. Now people have it and they're skiing with me and they're giving me all the feedback under the sun and they really were complaining about not having interactive maps because I didn't have time to do it last year because that's a pretty big commitment mapping is not easy necessarily unless you know what you're doing but I never played with maps I'm like that's a big. 03:16.16 Frank Okay. 03:27.73 jamesmontemagno Commitment so I will just do with what I know and I I was very happy with the outcome and doing stuff but even myself I'm like I really need maps I need my geolo location I need this stuff I can I can do it and there is a interactive map that they have on the website but it's really terrible on mobile and it's just. Doesn't work offline and all these other things. So I started diving through and the first thing I did is I said well instead of using maps. You know what? if I just took this website saved offline and embedded it into the into the into the app and did I tried everything and and I was. Came up and like I just need to do native maps but through that experiment I found a Json file and that Json file had a bunch of Json in it of all of the points in features and information and at this point in my development ah landscape here. This is a long story franks sorry during de. 04:22.90 Frank I see. 04:25.83 jamesmontemagno Yeah, during this I was like oh here's some cool Json this is exciting because I see that there's some points and these things called line strings. There's just's a bunch of coordinates which have the coordinates backwards for some reason I don't know what's up with that. Um I'm a latitude longitude type of guy. Not a longitude latitude type of individual. 04:38.98 Frank Oh God I hate it I hate trying to remember which one goes in which order and I'm looking at this doj I'm sorry I'm just interrupting you know and the coordinates I don't even I don't know what what? what is the order again. Okay. 04:54.34 jamesmontemagno X y it's longitude, Longitude Latitude not latitude longitude so it's the it. Yeah, so it's the reverse of which you would type into Google which is it's highly upsetting in every regard. Ah, and. 04:57.56 Frank Longitude Latitude okay long lap got it? Okay sorry keep please continue. 05:11.92 jamesmontemagno But it's very fascinating to me. So my oh well this is jasonson so I am pretty excited about this and I get everything. Um you know going and I start to go to you know Json to Csharp.com and I like type it in and it gives me some objects back but they are. Like not correct at all. Yeah and and and it's because I'm looking at it and it's like very, it's like it doesn't know right? It's just like kind of guessing at stuff. There's like geometry but there's like a list of objects and this other stuff and. It's because there's these things that are called types and there's like this is a line string. This is a polygon this is a point and then there's a set of coordinates and those coordinates can be ah, a array. Ah multiple arrays of of things inside of them. So it's almost impossible to. Deserialize this just by taking the geojson and shoving it into so Json to see sharp because that's a special type of Json. It's Geo Json and this is an open standard. So if people already know this I'm so sorry but this was out there. It's been other since 17016 it's a standard. Ah out there. It's a geo json format I guess it was it from 2008 and there's newer versions of it I should say so I apologize. But basically it's really cool. It's nice because there's like types and everything's a feature. There's a type of geometry and then there's properties and my favorite part is like it's a property bucket. It's just you'd put anything in there's like just there's names. There's this There's whatever you want. 06:48.56 jamesmontemagno Ah, you just put whatever you want in there. But it's really nice because it says well you're going to be doing very specific things like a point a line string which is like drawing lines polygons multipoints multiline strings or multipolygons and it basically defines. In this format a way of drawing them and the the Wikipedia page is fantastic because it gives you the type and example and what it looks like so this is really cool because you start to realize that you're seeing a bunch of points on a map but you can have like all these multipoints that. All sort of are multiple of arrays of arrays of points on a map and it is mind-boggling and super super cool. So the ski maps for example, use multi-line strings and multi-line strings are multiple lines of a string. So if you were you were stringing together lines. Connecting them up like if you're going on a run. Um, there's multiple of those though because um, specifically on the ski area. There's let's say a loop and one part of the array of the string defines. Ah, one part of the circle. Ah let's say if it's a it's a kind of ah a circular shape for the the trail but there's multiple of them because for a section of them for a section of it. It might have different properties because different difficulty so like ah, for example, there's a six mile trail for cross country skiing. 08:21.21 jamesmontemagno And two miles of it is easy and the rest is is ah ah, intermediate. So there's multiple you know things in here defining the difficulty of it. So I'm just like mind blown on this and I'm learning all of this this whole week. All I did was learn about geo json learned all about maps I learned about drawing maps I learned about features I learned about feature property buckets. Um, and then I learned about tap events and getting features and I learned about you know, just all this crazy things and I at the end of the day. Have a full-blown interactive interactive map with all of these points like it has like 30 different trails on it different colors different schemes. You can tap on them. They're color coded. There's points and there's all these really cool things and I feel like it has barely tapped the surface and. Don't know if anyone's ever doing mappings I like this thing is like it's just mind boggling I like it's so cool and then there's my end of my rant frank yeah. 09:20.91 Frank Wow. Okay I will cover everything that you covered I have a counterpoint to all of it I'm just kidding. Ah I do like the ah yeah, the difficulty with parsing it have you ever used. Ah. Newtonsoft json they do actually have ways to key off of properties and to inflate different data types. So like you said there's a a type like a feature and a geometry has a type like a poygon or a line string and things like that. Ah some of the Json. Ah. 09:52.18 jamesmontemagno A. 09:57.33 Frank Serializers can handle that stuff actually so you have a fighting chance at making all this actually work. But yeah, it's a complicated format. Ah, it's been a while since I looked at it all I kept thinking while you were talking I'm like oh this is the svg of drawing on the planet because. 10:13.11 jamesmontemagno It is. 10:15.60 Frank It's It's the same thing you're just yeah, you're saying like here's here's some coordinates fill a polygon here. Do do this do that where I first encountered it was open street maps. Do you know that one? ah huh? Yeah, so they can export. 10:28.00 jamesmontemagno Yes, and that's what I'm using inside of my um application. 10:33.70 Frank I don't know if they natively support geojson but there's certainly a million converters out there to take their data and convert it to geojson and it was funny. The problem that I was having openstreet maps is wonderful. There's an api you can query it for all sorts of details. The 1 thing. It's not good at is. Water I don't know if you're doing water in your map. But ah if if you have like let's say a giant lake with a canal connected to it that cuts through a geographic area ah getting that polygon of the water to be a renderable. Powygon is actually kind of difficult so I was actually paying for a service that was issuing geojson just for water because they had gone through and actually cleaned up all their data and things like that I just thought that was a little bit funny. So yep, big format buddy. Ah. 11:18.58 jamesmontemagno Oh wow. 11:30.62 Frank Okay, what are all the things. What are you drawing and specifically. 11:32.55 jamesmontemagno So I have it pretty lucky like I have the geo json like embedded in this web app for the ski area that someone made a while ago is all the Geo Json data now it's. 11:44.33 Frank Ah. 11:45.59 jamesmontemagno The coordinates are cleaned but the descriptions the labels. The information is not clean so I had to clean that up manually and I think I don't even think it was in Json I think it was in um. 11:50.51 Frank Who. 12:01.78 jamesmontemagno Like Xml or no is this. It was something weird and I like use an online converter to convert it into Geo Json so it was some weird format in in general it was oh is the gpx. It was a Gpx file. So that's standard. That's just a Gpx file. So I took the gpsx file and then I transformed it. 12:07.19 Frank Ah, yeah. 12:15.17 Frank Yeah. 12:20.87 jamesmontemagno Into a Geo Json file in general and I then try to you know deserialize and like you said you can totally do it. But there's a lot of objects and it can't necessarily know those objects because some of these things are just strings. So um because the format and. 12:29.69 Frank Yeah, yeah. 12:38.63 jamesmontemagno Unlike a normal thing where it's like this is clearly a monkey and there's like a you know monkey thing. It's sort of generic in a way so there are these helper libraries and there's 2 there's a geojson.net and which which I use which is cool and then there's another one called net topologys suitet dot io dot geo json. And what this does is what you would just said is it uses Newtonsoft ah json in this case I'm sure you can use other dser analyzers. But in this case, that's what it's using to ah preefine all of the objects that you need so you can think of it as you know. Already generated classics that know the standardization of the format so you take a geo json file you shovenous dserializer that's made for this file type. Um, what's that thing in f sharp called that that that does it. The. 13:25.80 Frank That would be a discriminated union If you're using like the different types like you know points versus powy lines versus powygons things like that. 13:36.60 jamesmontemagno Yep, and it figures it out all for you automatically and it dumps out a whole thing called a feature collection and you have a whole bunch of features which are all these different things and you can then start mapping them on and I am using open open maps but via. Map Sui Map Sui which is maps ui I like to call it. You know about maps ui map sui okay map sui and that's what I'm pretty sure it's supposed to be called I'm now a financial backer on on gi on github of this I donate. 13:53.82 Frank Maps We no I don't know that one. What do you tell me? what is it. 14:05.23 Frank Okay, I'm scared. Okay. 14:11.40 jamesmontemagno A few bucks a month because it's amazing and what's really cool is that the one of the most popular apps built with xamarin that um was really really popular when ah zelda breath of the wild came out which is the breath companion. Ah, that developer was using my in-app billing library and we're going back and forth and I didn't know that they were using map map sui or maps ui is like to call it and Map Sui you can also do custom maps and all these other stuff you can define these tiles. And do all the drawing and so there's cool examples of like Strava and like this breath of the wild one but ah Map Sui is awesome. However, there is no really documentation. Documentation is samples um and asking questions on github but this is think of it as. 14:55.30 Frank Um. 15:00.90 jamesmontemagno The the dot net maui of maps because it supports everything it supports xamarin forms wpf uwp ios android avalonia eto forms uno winui everything you can load up openstreet maps wmts tms wms and custom. And tiles which are like offline formats like in a sql like database like it supports everything under the sun in a standard cross-platform ah Api that works on anything so any of the code that I this app is still is xarinforms app I could. Migrate to Don M Alli and everything will be one hundred a percent because it's an abstraction on top of it which is really cool and um if my app was done in Maui don maui supports geometries and all this drawing too. But you know I just haven't updated my app yet. Um. Because I just haven't at the time it was holiday hack. Update my app or release a really cool new feature and life decisions frank you know I was out there. What do I do. 16:04.54 Frank Ah, this is impressive. It's I Love to write cross-platform but I don't often achieve the level of platforminess that maps. Okay, so on on the website. It's on the read me I should say it says pronounced Map Sue we were You were you putting the. 16:21.10 jamesmontemagno Maps su we oh wow it's like it's like we your your your your library like we maps maps. Where do you see is that map sue we oh yeah map sue we like in the Nintendo we. 16:22.42 Frank We with a w anyway. Exactly very good for them sue we yeah anyway got Mac got uno w pf got all the platforms it goes on and I was curious how they did their maui. 16:37.76 jamesmontemagno Ah, love it. 16:47.12 Frank And what it they are just including their Xamarin forms. So I guess that's a plus for being able to port a forms component over to Maui pretty easily. They're using literally the same code good. 16:58.81 jamesmontemagno Yeah, is and there's amarin forms um is like their number one packet is like you know 60000 some odd downloads. It's like you know, pretty impressive and I'm I'm using the 4.0 beta I would recommend that but it is super duper neat. Ah, and what I've loved about it so far is that all the the development team has been really responsive all my questions and and doing stuff but you know I just literally open it up and you know I followed the read me and I was like boom done. Ah and you have the option. Um. To also use cia sharp sharp to buy power some of the drawing stuff that they're doing so that's also kind of cool too that they have that all built in so it uses skia sharp and all the drawing stuff and everything like that under the hood. So really really cross platform so anything that's going to support skiia sharp can potentially support. Um, this but has all the touch events all the things inside of it but it it is a learning ad venture. Their samples are super great, but nothing is 100% complete which you know maps are complicated so I totally understand and luckily like you can pull down their samples and they have samples for. Everything so they have samples for xamarin forms for for maui for uno for ever like the wpf like just io like standalone like if you wanted the platforms like they have a sample for it and all the code is shared between all of the platforms. So there's a common you know a common base and and you can do. 18:26.00 jamesmontemagno Any sorts of things. It's really neat and this have me down this path now. 1 thing it doesn't do is it doesn't take a geo json file and display it which would have been cool. You have to I had to convert the the features from the converter into their type. So it's kind of like a lot of duplication of code. 18:33.56 Frank Says is a sister. 18:45.00 jamesmontemagno But at the same time I'm actually doing a lot of customization for certain things in the application for different touch events and different highlighting when I tap on different elements. So it's not a lot of code but I would say Overall let me look at my my code I can send you my. 18:50.00 Frank Um, well. 19:03.85 Frank Well I was going to say um they do have arcgis support which is a classic format for doing all this kind of stuff you should contribute your Geo Json parser back to the library I'm sure they would appreciate it. 19:04.31 jamesmontemagno Secret guest. 19:08.95 jamesmontemagno Are. 19:17.29 jamesmontemagno Yeah, it wouldn't it wouldn't be so bad to do I don't think and actually there's some comments on github about that and like supporting that in because it would be really nice. But honestly I have for the entire map application. All the business logic everything. It's. Under I'm going to remove all I have a lot of usings up there. But if I remove that 400 lines of code the using scounts and where is that Frank Ah where's that code frank. 19:38.12 Frank No, it counts 400 lines we're going to call it the the usings count. 19:52.51 Frank Ah, what? what do you mean? where's that code. It's all in the zaml code behind. 19:58.41 jamesmontemagno Oh yeah, it is because you know why because that's where it belongs. Um, and it's so funny because so funnily enough I do have a view model for like is busy and is not busy and things like that but be on that. Um, everything is in it because everything's you I. 20:03.16 Frank Couldn't make a view model you just refuse to make a view model. 20:16.27 jamesmontemagno Everything is 100% ui it and it doesn't make any sense to put in a view model and everything's in on up peering I love it. Um. 20:23.92 Frank Oh My goodness. Ah yeah, okay, ah I mean we've said on this podcast before if you don't have to overengineer don't hit Overengineer So I'll go with you but it is a fair amount of code I probably would have extracted it into at least something called Like. Map loader or something anyway. Ah I'm just sad because it's harder to share this now with that other library with the library but maybe someday we'll get you to refactor it. But overall I don't I don't mind it being in the at least it's not like in these Aml itself like you're doing like weird bindings and. 20:43.95 jamesmontemagno Yes. 20:59.40 Frank Yeah, it's fine. It's fine James Good job. 21:00.40 jamesmontemagno Yeah, my my xaml is very short. It's very to the point's like a map and has like a few overlays on it and I've tweeted out a few photos of it and I'm like I've gotten it really far in a very short amount of time and this also includes all my geo location code too. So actually. Getting and tapping into geolocation and doing geoloccation updates all that code is in here too. So actually if you look at this code the on appearing starts at one thirty six and it ends at 2 65 and that is. Pretty much all of the drawing code. It's like 120 lines of code and that's about it and it's not pretty code either. 21:40.15 Frank Ah, no error handling but I'm assuming this ah Geo you're you're you're in control to geoj so file so you don't have any error handling because you know the files correct. 21:45.80 jamesmontemagno It isn't yes it is embedded into the application. So it loads up from it and that was kind of debatable because ideally I have to de serialize as Json like. I could just hardcode the values into here and put it into a blob and do something or spin it all up, but it's going to enable me to iterate on that. Um, iterate on that. Ah you know later on if I want to change colors or do so I just change the file and the application like responds to it. 22:17.42 Frank I see you only handle points and multilineed strings I believe that's 2 out of 8 different geometries that they support I wanted to give a shout out because when we were talking about this I just ran into geojsonio 22:23.45 jamesmontemagno Yeah. 22:35.90 Frank Have you tried that 1 22:36.74 jamesmontemagno I did that was the very first one I did and um, that was the first that was the first one that I used the nuga package right? Or no, oh oh no, oh. 22:44.90 Frank Oh no, I'm sorry this is actually a website http ask con wckwack and Geojson Io Ah, just for doing quick previews so you could just paste in your thing and just get a quick preview to make sure that you're actually rendering it correctly. 22:59.19 jamesmontemagno Oh my cash that is so cool. What I'll do is I'm gonna give you this like Frank and I do stuff in real time people if you don't know this this is how Frank and I roll I'm gonna give you a that really is I'm gonna give you a secret gift of the. 22:59.64 Frank Just a little validation thing. 23:10.50 Frank This is how the sausage is made. Oh Oh I Like how much you do with just files you just post it all you know. 23:17.56 jamesmontemagno But Json it's all in one minified json so you could take that in raw and paste it in there s slow and file. Oh wow oh my gosh this is like so neat now. 23:30.10 Frank Yeah, just. 23:33.24 jamesmontemagno This is cool because what I just did this uses mapbox and openstreet maps and this is pretty cool because if you if you look at what this this geojsonio does it get it. You click on stuff and it'll show you like the features and it'll show you different points on a map and what's neat about this. Is I've embedded into some of the the different geometries like lines the name the color of the line the subtitle in the description. So I can add these rows and these properties ah inside of it which is nice because there's different difficulties on Route. So This is just taking it. 23:57.40 Frank A. 24:11.11 jamesmontemagno And that's a cool part about Geo Json is the property bucket I think that the geojson property bucket which I know that's what Json is but it's a magical bucket that you can just like throw and there can be optionals like there's literally a method called like low or like try get optional property because like who knows if it'll be in there. Um. 24:26.90 Frank Yeah. 24:28.86 jamesmontemagno Ah, which is neat and they'll just return that and like you cast it to whatever you want and it's to me. It feels like just old school coding for fun just like going for it. So there is there is a point in time where there is these multilines. Um, multi line strings. So I added color one. And color 2 and then based on those because it's it's in 1 feature and I need to know what color to put in there. So there's 2 different colors and I load it. Yeah. 24:54.64 Frank Can I can I do a feature request if you if you use a more standard name for the color element turns out the standard name is not color. The standard name is stroke. So if you use stroke instead of color in your crazy property. 25:04.45 jamesmontemagno Are are. 25:12.98 Frank That's the problem with property bags. You don't know if you're using the correct name or not Ah, but if you use stroke instead of color. It'll actually render automatically in the Geo Json io. 25:21.30 jamesmontemagno Oh my gosh I see that now. Oh and there's stroke Width and Stroke capacity. Wow. 25:30.97 Frank Yep it. So that's the pros and cons of property bags. But I mean there are schemas for Jason right? like I see vs code somehow figures out schemas for different Json files based on file name and things like that. So i. 25:45.59 jamesmontemagno Are. 25:48.63 Frank Feel a little bit ignorant right now because there's probably a bunch of people shouting into the podcast stating all the ways you can define Jason's schemas and there probably is a schema for this Geo Jason too but it's a good thing you you found that library that handles all that for you but you stroke. 26:03.40 jamesmontemagno Yes, yeah, there's like geojson.org and then there is a there's like a geo json like official thing so I bet it's actually there's a if I read the standard we we were talking about bluetooth so long ago and. 26:06.98 Frank Instead of color. 26:21.82 jamesmontemagno It was like this is a standard and you like if you code to the standard you know then that's a thing but who does that. 26:27.46 Frank Yeah I know I mean I do try to read the manual, but it's more like I read the introduction and then I get coding so but ah, this is fun I'm actually looking at your map. These are all Ski trails. This is all. 26:37.28 jamesmontemagno Yep. 26:44.53 Frank Ah, going to be in an update to your app or something. 26:47.66 jamesmontemagno Yep, it's going to be in an update to my Ski app. Um, and I've been testing it I went out skiing this weekend and it totally worked as expected. Um, mostly just had to do a small few small tweaks here and there. But yeah, this is where I Ski at all those trails are different skiing paths. And all the points are either like markers or you'll see like a name is like 60 a trail marker. Sometimes there's shelters or things like that. But yeah, they're all, they're all on there and this is yeah, go ahead. 27:09.81 Frank Here. 27:16.60 Frank Can I put another feature request in I was doing this I like making driving apps too. That's that's what my mapping addiction has turned into I like to write driving assistance apps and 1 thing I I really wanted and got into one of my apps was I colored. Turns based on how ah how how steep a turn is and so you could like draw your thing where you'd start doing a hard curve or something as red and then the straight areas is green things like that so people can get a rough idea of how Twisty and turnny all the slopes are. 27:39.33 jamesmontemagno A. 27:55.46 Frank Anyway, aren't maps fun I could style maps all day long. 27:57.49 jamesmontemagno I honestly, that's been my week mostly I've been styling little markers like how thick do I want the lines like what's the you know how do I you know tap on something and display information. It's all of the thing visible. You know. Do I want them to be able to you know you can like limit where you know, um, you know how far off you want the map to be zoom outable or Zoom inable. There's um I have like a little. 28:32.22 jamesmontemagno So that the trails there's 4 different difficulties. There's easiest more difficult most and then ungroomed and I was going back and forth and even with Heather I said well how do we want to display this information as I do I you know there's 2 ways to display it one is you can you can display them based on. 28:35.40 Frank The. 28:51.96 jamesmontemagno The trail name so you could say hey every trail is different and which means every trail gets a different color or you can have them displayed ah based on the difficulty right? So basically every line will be 1 of 4 colors. 29:03.42 Frank Yeah, yeah. 29:09.51 jamesmontemagno And we were playing it out in our mind and saying okay well how would we use this in person and for a new person Xyz what's the most beneficial. So my map is is only 4 colors because we believe that if you're out skiing and you're at an intersection if you're a beginner. You want to stay towards the green because that's the easiest so you're most you don't necessarily care about the name of the trail because it's not like it's posted every it is posted usually but not always, you're more interested in I want to go to the thing that I'm not going to fall on right. 29:35.76 Frank Yeah. 29:46.98 jamesmontemagno But I do like your thing which is like there are some curves that are thicker and it'd be cool to like color those in a specific area or what the thing that I'm really missing of that I'd really love to put on here and this might be my thing is putting on um elevations just in general. 30:03.35 Frank Yeah, because then not only can you Mark curves you can Mark ah speedways fast downhill parts things like that. Ah, but I agree. Ah so just to be quick you you ended up coloring home based on difficulty. Yeah, that's smart. 30:08.96 jamesmontemagno Um, oh yeah. 30:16.13 jamesmontemagno Difficulty. Yep. 30:20.19 Frank I think that's smart because I I know the first day I learned to ski I started on the bunny hill I thought that was fine then I did the green hills I thought those were fine and then my friends got me on the blue hills and I think I was going eighty miles an hour straight down that hill so I would have appreciated a. 30:33.80 jamesmontemagno Um, si. 30:37.53 Frank Knowing blue versus green and all that kind of stuff. So I I dig it I dig it. Do they have ah lifts I'm noticing I can't tell if there are any lifts on here like do I know how to get back to the lift. Oh. 30:47.50 jamesmontemagno So it's all cross country skiing. So no lift so cross country nordic style skiing and so no, no lifts here which is which is nice so this is so we do nordic cross countryry ski and there's 2 different was there's. 2 different types of that. There's skate ski and then there's Nordic which is Nordic is like in the grooves. So it's grooming so they're groomed trails then you stay in the lanes. That's what I like and then some people skate which is on the same track but not in the tracks on the side of the tracks and they skate down skate across. But. Usually there's some hills that are going and there is some downhill but it's not about downhill. It's more of I like to call it running in place. But you're moving and gliding. You know you're gliding on these skates compared to normal down hereking skiing which is up the mountain so that's further up the mountain. We're not quite on mountain esque. 31:26.34 Frank Yeah, yeah, yeah. 31:40.66 jamesmontemagno Region yet. 31:42.95 Frank I've never done the one with grooves when we were kids in high school they would force us to do all that kind of stuff but we we always felt like we were cutting through fresh snow or at least that's why it felt but it sounds delightful if there's cut out grooves in the ground for me. Way better on my knees and my ankles. 32:02.70 jamesmontemagno That's right, yeah, it's much more chill. So yeah, is kind of like the final piece to the puzzle. So I'm really excited about it and I don't know just sort of a weird journey to go on like learning about this Json and learning about like parsing of it and then you know a lot of it is. You're right like maps. 32:13.27 Frank Yeah. 32:18.21 jamesmontemagno There's a few things that are fun. We've talked about the podcast and flying drones That's fun. Ah I That's what was the last thing that we said was was super fun. Um I. 32:27.60 Frank Um I can't argue with you. Oh that was your list I can't remember your list I will say I I want to help you get? ah ah elevations for all this kind of stuff. 32:36.20 jamesmontemagno I think. 32:41.82 Frank Because I think that would be fun data and the Us government provides a ah, pretty pretty detailed elevation data. So it's really easy to get at anyway offering my services I want you to have elevation data. 32:51.33 jamesmontemagno Yeah, and the nice thing is that that's just like another point that I can display on the map Boom you know, which kind of wild. Ah and then drawing on maps is super fun because you know when I thought about doing maps. 32:56.88 Frank Hector. Yeah. Yeah, yeah. 33:06.25 jamesmontemagno A lot of people always come like oh how do I create like an uber clone I'm like drawing on a map and I'm doing this thing and ah we had ah a map app myself Mike James Pierce all worked on this like my driving app where we actually did that in ah in a xamarin app and that was the last I m mess around with with maps but it was just kind of. Drawing just simple. You know we have the geooccations and you could you could connect them together in the and the api but I wasn't you know, drawing points and I wasn't drawing. You know these leading from a Json file. And you start tweaking it and then you start using it and you're like okay well I'm out and about I'm doing this and like you're you know you're starting to come up with ideas what about the difficulty and about this and there's all these cool representations on a map and maps are just really cool visual data. Just an interesting thing like I never thought that I'd be doing maps in my life. 33:47.59 Frank Who. 33:57.60 jamesmontemagno And yet here I am and I'm like well this is really cool. 33:59.75 Frank Yeah, totes can I can I break about the last map I wrote it was actually on Twitch. Ah Seattle has lots of traffic cameras that are publicly available and I was reverse projecting the cameras onto a three d map. 34:02.14 jamesmontemagno Sure yeah. 34:16.28 jamesmontemagno Ooh. 34:17.26 Frank Which gave you a live rendering of the world. You know like I remember when Google earth first came out. It was incredibly impressive. No no doubt there. But you're always wondering like how old is this photo. How old is this or that. But if you're doing live traffic camera data then you know exactly how old it is a few seconds. And so I thought those were super cool. Maps. It ended up like all things I attempt to be a little bit harder than I thought so I didn't quite finish. It. But I do want to get back to it because I thought it was some pretty cool tech. Anyway I just I could talk about maps all day. 34:54.62 jamesmontemagno Yeah, all day maps I think is neat and then it is funny because I had done some kind of to your point earlier about um the different platforms I was ah doing some demos of done at 7 with don@maui and a few people had asked me about drawing on maps and doing all this other stuff and I was like. To be honest, like I don't know like I know that there's an api to do it because I saw some blog post when I was like I don't I don't know and the reason I don't know is because you kind of have to know the world of mapping formats. With these features and these geometries that they have because that's how maps are drawn and it's really funny because when I was looking at the apis for Don and maui they had geometries and I was like I don't know what that means. And now I understand what it means because I took a look and understood geojson so is my tip my key takeaway go to the Geo Json Wikipedia page I think it's a great page. It's better than a lot of the other geo json stuff out there but has great examples of exactly what the different types of things are what you would draw. Ah. And if you're looking to get started. This would be like the the best point to get started with because a lot of this data formats of what you would be representing is going to be these types of geometries and that's what the Api and down m ma is or map sui at the same time. Yeah. 36:18.82 Frank Cool, cool and thanks for introducing me to map Sui That's a super cool library. Can I Just just because you bragged about this awesome format and I tell you the worst ah geometry format for doing Earth stuff. There's a format called geo. 36:25.38 jamesmontemagno Um, yeah. 36:32.00 jamesmontemagno Yes. 36:35.80 Frank Tiff and do you know tiff Files they're usually image files. Do you remember those? Yep yep. Okay, so you know then that you can pretty much put any data into them. 36:38.37 jamesmontemagno I do and they're one of the most hacked file formats in the world because I worked at Canon and I know all about the good old tiffs. Yes. 36:51.40 Frank And for some reason the US government likes to serve out geot tis and so I go gosh why? Why don't they adopt? Ah Geo Geo Json but that's the world file formats at least I think there's new gis out there to help you out. 37:08.47 jamesmontemagno Yeah, there is um, there's a file format that um, similar to geotifs they are geo pdfs and there's an app called ah a Venza app venza maps in which. 37:16.30 Frank Oh boy, oh. 37:25.81 jamesmontemagno It's offline maps but you you load up Pdfs basically into the in this, you're going to love this it supports geo geospatial pdfs geo pdfs and Geo Tiffs this is your app. It's like this is made for you. 37:30.37 Frank Fun. 37:40.40 Frank Ah, this is now what is it is it a library. No, it's an app. Okay, so you can just load up this data and view it great. It's a viewer. 37:46.94 jamesmontemagno It's an app. Yes, load it up? Yeah,, but it's again mapping is wild because there's all these different crazy formats of think because ah you know maps have been around for a while and not everything was Digital. So I could understand where like these. Things started like I want to load more data right? It's like oh we have a pdf formula. Let's put this thing in here and then yeah, there's all these legacy maps of days of yore. 38:06.65 Frank 1 Yeah I'm trying to buy this app. How much do you think it costs. Let's find out ooh. It's free with in-app purchases aggressive. 38:16.79 jamesmontemagno $20 like we can see the internet purchases whoo $30 well there's Avin's up maps plus $30 38:28.89 Frank Ouch. 38:32.78 jamesmontemagno Ah, venza maps pro one ah hundred and forty five dollars maps I don't know what the pro is oh I'm gonna go pro. Oh my oh my goodness there is a pro mu compare subscription tiers whoa I'll tell you. 38:35.71 Frank Wow. Okay, going for the going for the Pro market here. 38:50.92 jamesmontemagno They have an enterprise pricing for again. Maps who would a thunk amazing. 38:56.67 Frank Making some money on those maps. Not only are they fun but you can make some money. 39:04.20 jamesmontemagno You give a tons of money off of it. That's really cool. Um, anyways, maps. That's what I know about maps that's as far as I've gone 40 minutes of maps of where I'm at today and I'm going to be getting this app out this app. Update out I'm very excited and it just kind of worked and. 39:06.00 Frank Yeah. 39:18.26 Frank Well I'm I'm I'm just happy that you fell down a rabbit hole and we talked about it because next time I fall down a rabbit hole. We can just talk about that too. 39:21.30 jamesmontemagno Maps. 39:30.76 jamesmontemagno Yeah, how do you feel that 1 question I have for you is how do you feel about not using Google and Apple maps because like this is using openstreet maps. Um, and I thought. 39:41.15 Frank I. 39:44.90 jamesmontemagno About like oh I should really use the Native Native maps at the end of the day. How do you feel about this. 39:47.39 Frank I you know I was just saying Apple maps is amazing, but that's only in the Apple maps app when you host Apple apps in your app. Sorry funny words there when you host Apple maps in your app then they give you kind of a. 39:54.92 jamesmontemagno And. 40:06.40 Frank Dumb down version of the renderer and so I don't appreciate that like they still limit you to 2 d geometry and not three d geometry I would love to be able to put 3 d geometry into their 3 d maps and things like that. So to that end I prefer to write my own three d maps. 40:08.26 jamesmontemagno And. 40:23.96 Frank And do it myself because that's what it takes and I really don't mind doing that I think it's ah fun and maybe maybe that's why I never actually released those apps though because it is still a lot of work. So hey, if you're trying to get it done use the built-in one if you're trying to have fun write your own map. 40:42.33 jamesmontemagno There you go? Yeah okay good i' about it I do think in this context where it's a Ski map. It makes a lot of sense because there's a bunch of the topography. We didn't even talk about Toppo Json By the way I don't know if you know about that Topography Json Do you know about that. 40:43.25 Frank It's great. 40:56.96 Frank Yeah, well I mean so that's what I for topography files that's where I use the geo tips so it doesn't surprise me that there's a toppo Jason too. 41:08.76 jamesmontemagno Yeah typography then this stuff it's ah it's a rabbit hole is what I'm saying at the end of the day and it's neat. You know you know we could honestly get Morton on from ezri. Are you know our rgis. 41:12.40 Frank And yeah. 41:19.61 Frank Yeah. 41:23.44 jamesmontemagno And talk about that I had him on one of those xinches a long time ago I don't think I understood any any of the stuff that he was talking about now I do I'm starting to get into it and you know maps are very very very fascinating. 41:37.18 Frank Yep, Well, that's fun I'm I'm glad you fell down that rabbit hole. 41:41.27 jamesmontemagno Yes, and my holiday hack is over Frank the holiday just began but it is finished I did it 10 I'm done how did it well I could keep I can keep doing stuff like adding you know elevations another I could do it for days I think I think it did it. 41:50.66 Frank It's finished. You're done I've okay ship. It. 41:59.51 Frank Um, toggle switches. Ah yeah, I'll be happy to see when that 400 line file turns into a thousand lines and you start considering refactoring it. 42:00.83 jamesmontemagno Think I did it Frank I'm very proud of myself. 42:12.39 jamesmontemagno Yes, yes, that's true. Yeah more yeah like it's crazy I did use. There is a lot of usage in my in my source code I'll put a link to my source code because it's not like it's private Repo but this is like just bub like you get to put it in here. Um, Mapsaml Cs. Ah. The cool part about this is that they do add a bunch of stuff for you like scale bars and the zooming in and zooming out. It's all handled for you automatically? Um, but inside of this I I do have some nice unit Converters. So I have like use metric. 42:33.14 Frank Yeah. 42:44.67 Frank You nice why would anyone in Oregon use metric. 42:44.92 jamesmontemagno And use imperial. So it's pretty cool I'm doing a pretty good job now I do have some Maybe you're visiting from out of town Frank downloading the maps. 42:56.14 Frank Okay, okay, fair fair. You got me. Okay, fine. 43:01.45 jamesmontemagno Maybe you're a runner and you only like kilometers for some reason I don't know. Ah so well surprising. There wasn't a lot of standardization. A lot of the maps and a lot of some some things were in imperial metric I said I'm going to do this correct I'm going to have flip flip and flop around but you can see I actually have a pretty good usage of local functions in this code I'm a big fan of. Local functions. They're super cool I even have a local function in the constructor like local functions four days I don't know just is super helpful so all day local functions. Um, good stuff. Oh and I will say this final note here. Um've been using github copilot and we talked about this before it's too good is's just too good. The whole thing too. Good. It's too. Good. 43:41.22 Frank See that. That's why all the codes in one file it just kept generating code for. You didn't you and you're just like tab tab tab. Yes, keep Parson buddy. 43:51.25 jamesmontemagno There was there was it wrote it wrote like ah the entirety of my geo location code. It just is like here you're done and I was like shut up stop it and I'm not saying like 2 or 3 lines of code the biggest block. 43:59.14 Frank See ah. 44:06.85 jamesmontemagno At 1 point it wrote 15 lines of code and it was perfect and I was just like I hate you. It was just amazing and then I was like I love you that was the thing that was also so much fun is like this it just it's so good I'm just like stop being so good I can't what. 44:10.52 Frank Perfect. 44:24.23 jamesmontemagno I Know you said once you have it, You can't unha it. You know you can't live without it and it's going to be really hard for me like it's like really good. 44:25.49 Frank Yeah. 44:32.51 Frank Yep yep, that's why every project I open in like any ide I also have open Mvs code just so copilot can help me out when I need it. Okay, well maybe maybe copiot will help you refactor sometime. 44:41.33 jamesmontemagno Nice, Ah, um, all right? Let's wrap it up man out of what you know I Yeah probably your. 44:50.87 Frank Okay, and I'll stop making 5 you great job. It's fine. It's perfect. 44:55.35 jamesmontemagno I'm in this this code is gonna be 3 now I'm just gonna leave it as it. That's fine. There's nothing wrong with this code Frank. It's great. It is perfect. Yeah, you know I do I do personally believe that if you are really really you know. Manipulating the code you I it's okay, it's okay to put it in there's none wrong with that sounds. Okay, all right, let me know what you think are you drawn maps are you doing fun stuff. Let me know what you've been built I'm sure Frank and I would love it. We love maps and if you're building maps let us know. 45:19.77 Frank Ah, sounds great. 45:33.53 jamesmontemagno Um, go over to merge conflict fm there's a bunch of stuff over there all the past podcasts. Um, what are you hacking on the holidays I know what Frank is you can follow him minute at twitch.tvforward slash Frank Kruger I watch him today work on a bunch of iot cool thermostat stuff and I'm intrigued because him and I were drinking some delectable Oregon wine. 45:50.82 Frank Nothing both. 45:52.65 jamesmontemagno Washington wine pacific northwest wine with heat and we talked about the thing that you're building and is so unbelievably cool. We will have to get into that next week but when until then this has been another merge conflict I'm James Mont to Mag Now pace 46:04.52 Frank And I'm Frank Kruger thanks for listening.