mergeconflict356 === [00:00:00] James: All right, Frank. I did it. I put out a little newsletter this week from a blog, and this actually has nothing new in my pod or my my, my blog or my newsletter at all. But what it has to do is with services, Frank, you and I both have apps that have services and people pay for those services. And they expect a certain level of servicing for. Subscribing to said services. So let me break this down here. What happened is I went all in on a service called Review, which was a newsletter service, which I really, really liked. I liked their ui, like how it worked, and I was doing at one point almost, uh, monthly, uh, newsletters to, to people out, and then, but, [00:00:54] Frank: but I don't like how they spell their name, r e v u e, but fine. Moving on. Yeah. [00:00:59] James: Like a review. I don't know. I don't know where it came from or like what the story is behind it, but I liked it and it was one of my favorite, you know, things that I had as far as like pieces of software online, writing a newsletter for the price, it made sense for the amount of people I could send it to compared to like MailChimp or other things like that. So a little bit over two years ago, something like that, during the pandemic Twitter purchased review. And, uh, and they made it free. That was pretty cool. I was like, it's free, it's completely free, unlimited, you know, you just go to town, all this stuff. And then, uh, they decided to shut it down and that was it. So what I had to do at that point is like, export all my, you know, sub subscribers, had to reimport them into ghosts, which is another service that I used from a blog. I used Ghost. That was a kickstart backer back in the day. But I had to upgrade. They, they added like newsletters and subscribers, but I had to upgrade my plan from my legacy plan. I was on the Legacy $10 a month plan. It was amazing. I had to upgrade it to Ghost Pro, official Plan, $40 a month. Oof. I remember for all the subscribers. And then I could finally send a newsletter again. I don't want to [00:02:20] Frank: interrupt, but I just, I just wanna say, I called all of this the moment you told me you were using Ghost. I just saw 10 years into our future and them just y you having to move off of ghost basically. That's what I foretold. Anyway, continue your story please. [00:02:36] James: One, I refuse to move off a ghost ever. That is one. I mean, at some point, what every person's blog goes through. Developer blog. Is you're like, I'm gonna build my own blog engine. Okay, I'm gonna use a static site generator. Oh, I'm gonna just pay for someone. Oh, I'm gonna pay for someone. Again, we've, we've, [00:02:52] Frank: we've settled on static site generators and they're glorious James, because it's, it's way better than running a blog engine. You just generate some html, it's fine. Anyway. I know, please. [00:03:05] James: Anyways, I was please enough services because this week or this last week, whenever people were watching our viewing was, uh, Q3 reporting and Amazon, uh, reported, but then they also made an announcement that they are turning off their halo, uh, devices, which are their health tracker devices and their ending service in like August or July or something like that, which had me thinking as a software developer, Frank Krueger, what is the right way to wind down a product correctly? Like, how do you not make everyone mad when everybody's mad? [00:03:42] Frank: Every, I think every two years we do this episode every three years. It, it's, it's a ticking clock of how does one sunset. I believe that's the last term we were making fun of. We don't use sunset anymore, but, uh, yeah, we're, we're definitely winding down services. And you mentioned the big ones, Twitter. I feel like that one's winding down, but we'll see. We'll see if that one has legs and if it keeps going. Uh, you know, the, the whole time you were talking, I. I try not to use too many services, mostly because I'm gun shy. I, I hate this kind of stuff. Um, Dropbox was the last big service I used to integrate into my apps. I used to pull in their SDK into all my apps and access everything. Cause I, I love to provide that. Capability, but don't do that anymore. And then I would cheat, I would try to find like free, uh, currency, currency data for calca. Mm-hmm. You know, the number one support email I get from Kka is, Hey, your currency data is not up to date. And I'm like, girl, you have. Currency update code in there. It's supposed to always be up to date, but, um, all the free currency prices services have gone away. Those are gone. Mm. Free, free does not exist anymore. And then, um, would've become, uh, it's, it's kind of neat. There's become these like wholesale a p I. Sales people where you can go to, it's almost like a unified a p I thing. And you're like, oh, you need currency data. Go to this service, pay us through this portal. And you do that kind of stuff. But you get rate limited, and even those things will only survive three to five years or something like that. You know, they, they disappear too. So I think inevitably in the world, like. This is just a common problem that's just gonna become more and more common throughout time. But we, we can attempt to answer your question what's the right way. The, the, the right way is, it's less pain for Frank Krueger is possible. That's the right way. [00:05:44] James: I was, you know, funnily enough talking about services and APIs change because sun setting an API or a service or something is almost as bad as just changing. What that thing returns without telling anybody. I have this demo that I've done for like the last year or so, and it's air quality, I think we've talked about it. And I was doing a conference, I was doing this demo and literally I tried it on a Monday and it worked, and on a Wednesday they changed the return value of the J S O N blob. Completely, the whole structure. Completely, completely. And my entire app broke and all this other stuff, and I, I had to redeploy and do all this. It was wild. It was a wild time to be alive, but it had me thinking, which is they could just turn it off. My a p i key could expire. Like, where's the, I didn't even get notified. Like, what, what's going on here? [00:06:40] Frank: Well, okay, Le let's break that as the worst way to s sun. That's not even sun setting. That's just rude. That's like you put that under a slash v2, you don't change the return. Jason. Geez. Yeah. Hard enough. Getting these things working. Uh, I did something terrible back in the day. It wasn't okay, but you got away with it. Scraping Google. Uh, everyone did a little bit of it. No one admitted to it, but we all did a little bit of it and Google was vaguely okay with it. Cause we're like, Hey, whatever you're using our search engine, and as long as you pop up the results, that's kind of fine and all that kind of stuff. But they really started cracking down too. So I used to have a lot of cute little fun features in my apps that would use the grand intelligence of the Google search engine to accomplish their tasks. And I've. Basically had to sunset those features in my own apps because Google does not play that way anymore. You, you do not get to, I mean, you can register for their search api, but it's ugly. It's ugly. And you, yeah, we that [00:07:47] James: anymore we, so really funny, you talk about scraping stuff, so on this whole thing about services and sunsetting services and paying for service and trusting those services. So, uh, I have this, a bunch of automation and I'm always interested in my stats, my stats of what my team is working on. And you know, you and I, we built out an api, which at some point you'll send me my L c D thing that shows me my follower account on YouTube one day, right there, one day does this show my follower account on YouTube? Idiot if [00:08:20] Frank: you cut that Azure Service Up. Yes. [00:08:23] James: Pretty sure I'll double check it. Now that one was fascinating because there is a few ways of getting that data, but there is actually like a really nice goo uh, Google YouTube api and you can get, they don't, since you're not logged in as me, James, the user, I can't get the granular count, but it will give me whatever's the visible count on the website. So for example, it would return. You know, 5,700 instead of five 5,732. You know, it kind of chops it off. Okay. So, um, on TikTok, I know you heard a bit. Little, little, little, little tiny social media app called TikTok. They have an api and then we have a bunch of TikTok accounts, and I'm interested in ga. I want to get the data right. I wanna get the data of just the follower account. Give me the data. They have an api. Now there's many, many problems. I was talking to, to Heather about this. It was like, is it a [00:09:20] Frank: graph? I, I love it when you're like, oh, they have an api. I can't wait to get my follower count. And then it turns out you have to write a query to get your follower account. But okay, please continue. [00:09:32] James: It's a restful api. You can do a slash me and give the stuff, which is nice. But you can also query, it's only like two APIs. There's like video and profile or something like that, and that's all you get. It's high level data, so. The problem is, is you actually have to create an app, which has to have a reason for existence, and then you have to submit that app to TikTok, get it approved, but then to actually use the api, you have to physically log in via the browser to your TikTok account to get an off token that then, Has to be renewed every 24 hours, which every 24, which is bananas, because if it was like every year I would just log in, manually, grab the token. If I'm like, you know, this is way too much work to get a follower account. So you know what I did? Good old H T M L agility pack. And here's what I did, Frank, I, this is right, did, this is an ht so now let me tell you how things work one day and they don't. The next day I do an http get say, give me tiktok.net. Developers, pull it down. I say, give me the strong diviv where the thing is called followers. Grab the number, parse it out. Boom. I got it. I got it. Working in like 10 minutes. I was so proud of myself. It was like two lines of C sharp coat. I was like, this is beautiful. I got it. So good. So then I go and I look this morning, it doesn't work at all. It throws an exception over and over again. I'm like, what? What is happening? Here's what they did overnight. They rolled out an update that first does some loading. Please wait thing in the top left corner, like some web assembly thing, like it works yesterday and it doesn't work today. Like they changed everything. [00:11:19] Frank: Because then it becomes a, a JavaScript thing that they do, like an XHR two or something, and then that becomes two suss too, so then it becomes a web assembly thing that does the xhr, transfers it back, or a web worker, something like that. It's, it's just such an arms race. So I generally do not. I I, I've given up like I used to scrape everything. I love. I loved writing HTML and Jodi Pack stuff. I loved it, but you just can't trust HTML developers, so any scraper you write lasts a day, tops. Yeah. [00:11:54] James: Well, I wrote a, I wrote a new scraper after that. There's another website called talk count.com. Now talk count.com does something. Interesting that you can query a username and then in the H T M L, it does like a fancy like animation. So I was like, I don't know if this is gonna work. But what it's doing is in the H T M L that's there, there's a J S O blob under a random diviv tag with a crazy thing. I pulled the J S O N out. And then I parse the J S O N and I get the follower account, which again is gonna last about 24 hours. So we'll see you tomorrow when I get to the office if it works. And by office, I mean the computer that I'm currently recording these podcasts on. I [00:12:36] Frank: love how our episode on how do you Sunset and API is turning in. Here's how you scrape H T M L. Here's some other prot tips. Everyone, GitHub, uh, they really rate limit you when you're hitting their api. Even if you're logged in, even if you're fully authenticated, they really rate limit you. You know what? They don't rate limit the H T M L. So you know what? Sometimes you just write an H D M L scraper for forget. [00:13:01] James: I love it. Well, before we get any further and we get off the topic of scrapers, here's an actual product that you can use that'll make your apps absolutely stunning and beautiful. Because this week's podcast is sponsored by our good friends, it's Sync Fusion. Listen, sync Fusion has been sponsoring this podcast for about 8,000 years, and it's because they have absolutely stunning controls and components and one of the most powerful suites of these things for your web, desktop, and mobile applications. Now, I use 'em in my applications, island Tracker, my an animal crossing app, which I did sunset by the way. Um, use it as absolutely beautiful, and I use tons of their charts and their graphs and their little effect animation, their data grids. It's like, hmm, just beautiful. They're me, my look absolutely stunning. The cool part is they have demo applications that you can download on any operating system. You can get it from absolutely anywhere and it works anywhere. Blazer Flutter, a p net core, uh, nbc J uh, angular, react, view, Maui. Uh, Apps, uwp, JavaScript apps, WinForms Apps, WP Apps, win UI apps. All the apps, every single app. And one of my favorite things is they do tons of file format processing, Excel pdf, word PowerPoint. You can read them, you can create them, you can preview them, you can do all this stuff. And they even have an entire uh, uh, dashboard analytics tool too. So you can do anything with Sync Fusion. Go to sync fusion.com. Slash merch conflict to learn about all the awesome stuff that Sync Fusion has to offer. Sync fusion.com/merch conflict. You fight in the show us below and thanks to [00:14:28] Frank: bye. Find way proof that we, we get those, uh, ad reads live. Everyone. Thank you. Sync Fusion. That's absolutely wonderful. They have been with us for 8,000 years. Whew. [00:14:39] James: So long, so good. I've used 'em forever. I've tied to about it on the podcast forever, so, yes. Um, okay, so we've talked about the issues of. Actually now at this point, maybe while you shouldn't try to screen scrape and maybe while you should either create a service and or, you know, maybe pay someone that has a service out there, but then I get worried that that service is gonna go away like this. Uh, there is a TikTok, a p i, uh, website. Mm-hmm. Like that's third party that like, makes it really easy. They're like, Hey, we'll give you an off token and like, you just request it. I don't know how I feel about that, but it's $30 a month and that seems real expensive. [00:15:17] Frank: Wow. So that's actually like a real market niche, uh, a market need there. If they're able to charge $30 a month for API access to what is otherwise free, if you're willing to just log in. Yes. So that means like they have good captions too, so you can't even automate the manual login process. Yeah. Darn, darn. Wow. That's rough. Um hmm. O is a whole different thing. So that must just, that's, that sounds more like marketing and business. Why they would put such an expiration on there. I, I've never run into one that bad. I remember back in the day when everyone was doing OAuth, I th thought two weeks was terrible. It is, two weeks is terrible. Don't, don't explore tokens in two weeks. But one day that, that sounds like just a crazy business decision to prevent something from happening. Yeah, well the A API I I got burned on last was, uh, Dropbox. They did a V1 V two A P I switch, which was really rough for me because they actually changed the whole model of how the whole thing worked. They, uh, in the V1 model, they would. Just carve out a directory in your app and just kind of sync files to it. People kind of hated this. Every time you got Dropbox, there would be an applications folder, it's called like apps. And Apps would just kind of create folders into it and all that kind of stuff. And so they got tired of that and they switched to more of a REST api. So it's funny, like you think of Dropbox as a files api. But they stopped being that they became this weird REST API where it was like, oh, okay, you post something, you get something, you do that. But anytime you want data, you get from it. It's, it's a very boring FTP view of the world. So it's funny too, like these APIs can attack the same exact problem. Here's a bunch of files I need to access these files, but just present a whole different interface to them, and I get. Having multiple interfaces. I don't ever get deprecating. Like a whole different user model for those user interfaces are. Then the devs just didn't wanna support it [00:17:28] James: anymore. Yeah, and you know, I think with APIs, you know, it's really fascinating now because there are some companies that are like locking down APIs and then there's other companies that are. That are shutting down APIs, you look like we're talking about with Twitter, but then I know, um, what is it? Uh, Reddit. I think they're gonna start charging for their api. There's all these other things who, even if you rely on an api, you know, I think we are an API economy, right? Yeah. Like I think we really are. Like, we think about the A P I EF Ation. I remember Na Friedman being on Beyonce, like, everything's gonna be an app, right? I'm like, everything's gonna be an api and all those apps are gonna connect to those APIs. You gotta rely on those APIs now. Luckily, neither you or me have created an API that we shut down, but there have been some that we've worked on. But the real question that I have to get back at, there are things that we have shut down or stopped shipping to the store and shop doing, which is kind of the same as shutting down a p i If someone gives you money, Frank, yeah, someone gives you money. How long is that money good for? [00:18:31] Frank: As long as your iPad one keeps running is my answer. I, uh, you know, I've done my best to keep all my apps up and running, but yeah, I've left a few behind, uh, the one I regret most El car's reader. Did you ever, do you remember that one? Mm-hmm. Yeah. Uh, this, this was my favorite app I ever wrote. It was a glorified r s s reader, uh, web browser, podcast listener tour. Anything that had a data feed, it would just suck down anything. I, I, it had scrapers upon scrapers. Talk about scrapers, this app. Mother of all scrapers it understood every file format and would pull it down and put it into a fun Star Trek user interface because why not? And I, I, I love that app. And, um, it, it was hard to take it off of the store. I had to do it for vaguely legal reasons. Um, turns out when the store's small, you can get away with a Star Trek app, but not for very long. Uh, and I had to remove it and. I miss it. I know people that miss it. It's, it's ancient at this point. No one who's listening to this podcast has probably ever used it, or, or than you, James. But, uh, I still think about it and I, I wish I had that app still because it was Omnis like I. So many apps are siloing these days. Talk about APIs, right? Yeah. This was the open web kind of idea of like, if you have any kind of feed out there, I'm just going to eat it up and I'm gonna do my best to turn it into a Star Trek ui. Did you, [00:20:11] James: now you have other apps though, that have been on the app store that maybe. Do you think they still should be there? Like, you know, what is your, not only just dedication to the app that you can update the app, right? Like at some point you're only one person, Frank, and you do put out new apps. Yeah. Like, I think that's the other part to think about too, is have you, when do you stretch yourself too thin? Where if someone is, is paying or is doing a, you know, a sub subscription that it's like, ah, like for example, Let's say I don't update my cadence or my stream timer for a year or two years. Is that bad? Mm-hmm. [00:20:48] Frank: I don't think so. I, here's our other perennial topic. I get feedback on Twitter. Someone was just asking, is Copa dead? I'm like, oh no, it's not dead at all. I. Call it stable, like there's not any large features I care to add to it right now. Certainly there are some large features I could add to it, but it, it does the job I designed it to do. The manual is up to date. Everything's documented. Here's what it does, but people ask if it's dead because. It's capitalism. If you're not growing, you're dying, I guess. Right. And it's a little bit frustrating to me because I see it as, no, it's a good tool. It runs on all the platforms very well the way it was designed to. But, um, people see that. So I, I have, it's a, it's a whole different tricky question of when do you kill off an app? I kill off an app when I no longer have a functioning build system for it. Uh, it has no sales. I don't use it myself. Knock it off there. There's no point in the mental effort. I've made the mistake of a few times of like rejuvenating an app, I think like classical programmer mistake of thinking that like, oh, if I just add a few features, all of a sudden sales will go up on this app That is never sold before. No. Yeah. It's either a, a missed market niche or something else. So I, I think it's pretty easy for me to figure out when to drop an app. Also, when c b s sues you, that's a good time to drop an app. Um, I, I think the harder ones are when, um, I have apps that I think of that's stable and other people see them as dead, and I'm like, oh, that gets very frustrating for me. [00:22:34] James: It's really fascinating that we talk about. This in the terms of apps and APIs, but I think it also comes down to like libraries, like new get libraries like that we create, you know what I mean? I, I'm sure. How many times have people told you about SQLite dash net or like, you know, monkey Cat or some other library I created? You know, it's like, yeah, I don't know. I don't know what else I can add to it. It's like, it's good. [00:22:59] Frank: Yeah, I mean, joins, but if I haven't added joins in 12 years, what are the chances I'm ever gonna add joins? But, um, every mean, so often I think about it, but yeah, it's, it's tough. And I, I don't wanna like, give into saying like, uh, this is the right decision because it's the easy decision. I really feel this way. It's, it's stable, it's good. I, I would rather have a stable version. Um, Brian friend of the show, Brian Ding, uh, has brought up to me. He's like, have you ever thought about doing a sequel dash nut two version two? Hmm. And I'm like, well break everything. Well, yeah. What does that mean? He was like, well, it would let you free yourself up and break the api. I'm like, Brian, the thing I hate most on this planet is someone breaking an api. Yeah. I think December is. A plague upon this planet. The moment they said, you're allowed to upon developers, at least the moment they said that you're allowed to break the API if you just increase the major version number. That's all I got you. We've lost, we we've lost the path, man. We, we. We went out into the forest, then you're not ever allowed to break the a p I high. You're not ever allowed to. If you have to, you better increase that version number, but you are not allowed to break that a p i. Anyway, that's my personal feeling. [00:24:25] James: I definitely break my a, I try to make my API breaks like very minimal. [00:24:34] Frank: Justified. You have to justify this to the God Zeus like, this has to be important [00:24:41] James: because what, what ends up happening when you break the api, people will update even in a major rev bump and then they're like, Hey, this says this method doesn't exist anymore. Yeah. Cuz it doesn't, or like it doesn't with the parameters and there's new parameters. Yeah. You know, uh, it's hard to design a library in api. I think it's so funny you mentioned that. I, so I recently. I've sunset a lot of things. So this, this entire podcast is about sunsetting all the things I recently, I've, I've sunset a bunch of apps, now some apps, Google Sunsets for me. Cause uh, they did, they [00:25:15] Frank: did that to I circuit for a couple of years. Thanks Google. Google's [00:25:19] James: like, Hey, you haven't updated this in a long enough time and it's completely outta date and blah, blah, blah. That's right. You haven't signed the, you haven't done things. You're gone. Cleansed. So yeah, the only one I have Sunset is the Animal Crossing app. Uh, and that was kind of like what you were saying is I kind of felt that my users were really low. I wasn't using it anymore. Animal crossing, I've been out for three years. I felt like it was time that it was okay and I didn't really make any money off it anyway, so that was fine. Um, and it was okay and I left, I left the APIs. If you have the app, All the APIs still work. Like the app still runs. It works. I'll keep those Azure functions up as long as Azure functions running.net core two oh keep working. So. I think they're pretty old. Is [00:26:09] Frank: that a joke? Two? Oh, no. Uh, I at least said three. Oh. The, the, the ice circuit site was running net 3.0 for a while. It's up to, uh, I'm up to six or seven these days. Pretty, pretty modern. [00:26:24] James: Let me look. Okay. So, I mean, this is all, it's all public. Um, de so my functions detour. My functions are running. Net Core App 2.0. 2.1. 2.1. James. [00:26:37] Frank: James, we need to have an intervention. You need to have a Scott Hanselman talk. We didn't decide. Has it been that long? Three years ago you used.net two? It's three years ago. Yeah, feel like three years ago. Puts a smart round. Four, three. [00:26:53] James: Yeah. You know, here's the thing is, back in the day, Azure functions, Didn't update like at the same time. Now it does. It's like the preview's out, it's out, it's ready to go. So like a lot has changed in those, I guess four years since I started this. Yeah, three years. It was at the beginning of the pandemic, so like, yeah, three years. So, wow. Have they [00:27:13] Frank: sunset.net too? I, I don't think that one's, they pin it. Insecurity updates? No, you can pin it. It works. Yeah. I, I get that, but, uh, it's not getting updates. No, no, no s a certs or [00:27:25] James: anything. No, no. But it works. So I recently Sunsets said a bunch of libraries. No fun enough. You're talking about libraries. Okay. Now, a lot of my plugins, my, you have a lot [00:27:34] Frank: of these. James. Hi everyone. If this is the first time you're listening, James used to create a lot of libraries. He ran a library ecosystem for a while there, doesn't do it anymore. He's off that bandwagon, but, This man has a lot of libraries. [00:27:51] James: It was kind of my shtick, um, where I was like, how many, how many things can I abstract? In the early Amin days where I had th I have 35 packages on Newgate, unique, 70 million downloads. That was not bad. Pretty good. Um, yeah, I had like, it was a whole thing and. All these eventually got merged. Most of them got merged into, uh, Zarin Essentials, which is now part of Don Maui. It's all in there. So three years ago, uh, four years ago, I wrote, uh, an update on every readme and I said, Hey, I will continue to support maintenance on these as much as I possibly can. But the path forward is for you to migrate to Zambron Essentials. Now most of these I can kind of continue to update if necessary. If there was some breaking change, I need to recompile it, reship it. Um, and other ones are kind of like, yeah, this has been good to go. Like, you know, the settings plug in hasn't been updated in six years. Like, it's fine. It just keeps on checking, you know, like it, you know. Yeah. Uh, it's good. So eventually though, just a few weeks ago I said, I'm gonna need to. Archive. I'm gonna archive the code. Oh. [00:29:10] Frank: Oh, I guess it's not sun setting anymore. It's archiving. [00:29:14] James: So I archi, so here's the funny words. I archived it and then I forgot to update the readme, so I had to univ it. Oh geez. Update the Readme and then Reiv. That's great. [00:29:28] Frank: Uh uh Wait, was that the settings [00:29:30] James: one? Really? I, I did archive settings. It's like 15. That's alright of them. That's how we met. Okay. Now here's the question though. I didn't sunset or do anything on new Git, like, right, like I just sunsetted the GitHub. No Brio. [00:29:50] Frank: Sadly, Nuit doesn't have a great way to clear itself out. Like you just kind of have to look at the date of a package to guess, which I hate because you can't tell is this a stable thing in my parlance, or is it truly some rando project from a rando person that got uploaded once and hasn't been updated in 10 years? It, it is hard to tell the difference between those on Newgate. So Newgate airs on the side of, we just. Keep everything forever for eternity, you can de-list it. Um, I think, I think de-listing only affects searches, right? So you wouldn't break anyone's app if you de-listed it. [00:30:33] James: Uh, correct. You can still always get it. However, Frank, I just discovered in real time as we record this podcast, you can deprecate a new get package and [00:30:42] Frank: all of the version flag. Ooh, [00:30:45] James: mm-hmm. Wow. It says deprecating whole package. Well it, you have to select, it selects the current version, but you can say select all versions, which would then inherently be the entire thing. Uh, you can say, this is a packages legacy no longer maintained, and it will warn users. That sounds good. [00:31:06] Frank: There we go. But I don't think they've gone the Apple slash Google aggressive route of, if you haven't updated this thing in four years slash compiled against an old SDK will auto flag you. I don't think they've gone that far, but you know, it might be time like, I keep using the thing, the code is stable, right? Yeah. But I'm happy to bump up the Newgate version to 0.6 if that makes people happy. I'll take in two prs that does some dot comment changes, but you know. Yeah. Those kinds of things. Um, maybe I do feel like Newgate should be auto sun setting. Auto sun setting there. You gotcha. [00:31:52] James: Yeah. You probably, you know, Uh, it's hard to say. There. You can see it. I updated it on my Z dot plugins settings. There's a big package that's been deprecated [00:32:03] Frank: as legacy. It is legacy. Now, legacy. You should have updated this readme to point to what they should be using instead. [00:32:12] James: Yeah. The problem with, I guess I could, yeah. Oh, it says the package is missing or read me. I don't know. That seems like everything seems like way too much work. Mm-hmm. But again, These are the things that I complain about, Frank and I should do it. So basically, here's what we've come down to. There's no good way to deprecate, sunset, remove, do anything at all. There's you're never is. You are always gonna lose. That's what I'm hearing. Change in api. You can't do it. There's no winning solution. Is that correct, Frank? [00:32:41] Frank: Yeah, I, I would say the best choice would be to use a compiled language that's strongly typed and so, okay. And use API generation code so when the API does break, you actually get a compiler error. Other than that, like yeah, it's the future. You know, that joke about, like you can't write a JavaScript app without 300 MPM packages, packages api. It's all the same difference, right? So it's, it's, yeah, my cardinal rule, you're not allowed to break an API ever. And if you must rename the package to something else, pick a new fur. Oh [00:33:19] James: my goodness, to name it after [00:33:21] Frank: all right? You're not allowed to break APIs, [00:33:24] James: whatever you say, Frank. So what do we learn today? Nothing. Um, so besides we doing our jobs for the rest of our lives. Yeah. Uh, well, I want to thank you, Frank for discussing a topic, uh, as people may or may not know if you've just watched this for the first time or listened to this first time. Frank, I just record this podcast on the fly. Usually it's about whatever's happening in our life. And since all this TikTok craziness and API craziness has happened in my life, that's what we're talking about. And uh, I thought it was fascinating because of the Amazon stuff, but also I have really been looking at my apps and I got just a few apps in the app store and I'm like, man, how long do I have to. Keep the timer's counting forever. [00:34:05] Frank: That's what the C I C D is for you. You'll let the robots keep building those [00:34:09] James: versions. Keep it going. Now, if Apple and everyone else would just stop releasing operating system updates, then I would really never have to update anything. [00:34:19] Frank: They could just keep emulating iOS. One, it was, yeah. No, no, not one, two. Two. When we could actually write apps, that would [00:34:27] James: be fine. There you go. Uh, before we get outta here, Frank, I want to do a shout out to our YouTube listeners. Wow. I texted Frank and Frank's like, no one's gonna listen. I said, people listen. People wrote comments and I replied to them. Jimmy said, I did assume Frank had slightly, would have a slightly more mad. Scientist surroundings. I did assume Frank would have more mad scientist surroundings, and I replied, he used to, the new place is still getting set up, so just you wait. I like, I like, I like the plants. [00:35:05] Frank: Thank you. And I have a piano now. I really like my piano. I love my piano. Yeah. Um, but I did live in a Borg cube, I called it. It was all just black metal warriors computer hardware everywhere. So. Mm-hmm. I'm enjoying my cottage core change for the moment, but we'll transition cottage core to techno cottage core [00:35:25] James: eventually. Yeah. Uh, Someone else wrote in, they said it's cool to see Frank. I see. They said, for some reason I imagine him looking different, listening to just his voice for a few years. Uh, we always see James, but not Frank. He's like, cool idea to put on YouTube. Um, nice to see ya. So, well, Frank goes, Frank and I go through transitions, uh, and Frank and I are in a similar look and feel. Mode right now. I might put more conditioner on my hair, but besides that, our hair lengths are oddly very, it's weird, it's similar. I don't, [00:35:59] Frank: yeah, it turns out we're genetically similar too, so there might be something there. Uh, like Westerners, I'm about, I, I think I'm about to change things up though. I'm about towin This think [00:36:09] James: We'll, so funny. I've been talking about that as well, but I now I can't. So you go first. [00:36:14] Frank: Oh, I go first. Great. Yeah, yeah, yeah. I think it's gonna be beard and hair. So watch out. Watch out with YouTube. [00:36:20] James: Uh, David also wrote in, I wanna do now we're doing grab bag questions at the end of these podcasts goes, why not? David wrote in, he said, Hey, I heard you were talking about MD five and that new MD five hashing thing. He said, MD five isn't secure. You gotta do AEs with 2 56, blah blah. Well, I didn't give the background of what we're doing. We're just generating random file names with MD five that are obfuscated. So they don't really need to be encrypted or decrypted. We're not encrypting or decrypting the content. [00:36:47] Frank: They could still create collisions, and that collision could corrupt your database if you're relying on the uniqueness of that hash. That's the, that's the problem with it. So, yeah. Yeah. They're, they're absolutely right. We should, uh, I measure everything by how many files and bites per second. I can do, I should do some. I I like to do performance tests on my blog, so I should do some, uh, you know, MD five versus AEs versus sha. Do some, uh, perf comparisons on device and find out, because in my head I always do MD five because I think of it as the fastest one. But who knows, maybe things are so fast these days. Yeah. [00:37:26] James: Last one here from Marina, she wrote and said the main reason for adding the default optional parameters of lamb does are for when passing lamb is as handlers directly in line. For minimal APIs in P net core for the map, post map ga uh, she said instead of having to create a separate method with those default parameters, uh, she doesn't see any use case for them besides that currently. [00:37:48] Frank: No. There will be, we'll, we'll come up with some just to justify the feature, but that's hilarious. The P net team, they get all the features they want. All the power. Yeah. The power of the ASP net team, [00:38:00] James: there's a lot of developers writing those websites and web apps and web APIs that. Should never be deprecated. So [00:38:08] Frank: there you go. You can't ever change it. [00:38:10] James: Yeah. All right. Well, I think that's gonna do it, Frank, for this week's podcast. How do you feel about that? [00:38:17] Frank: I think this is a good stopping point. I, we could keep complaining about how the world keeps changing and we have to keep doing our jobs, but I think that does get tiresome after a while. [00:38:26] James: Yeah. Well, we'll be back next week with our ww d c Predict. No, I'm just kidding. Maybe Apple goggles happening. Is it? Well, you'll have to figure out next week what we're gonna talk about. Everyone's talking about these goggles. I'm excited for goggles, but I'm also not at the same time. But you're gonna have to wait. No surprises, but if you wanna check us out and go to merch conflict fm, there's a Paton where you can get bonus podcasts with our faces, um, on it. That's cool. Um, and also you just subscribe. So if you're in a podcast you can do that. It's also on YouTube, on James Amounts Magnos YouTube, that's me. Um, I'll put it there. And the little podcast thing, I'll put it in the show notes. That's gonna do it for this week's podcast still. Until next week, nah. I'm James Monte Magno. And [00:39:06] Frank: I'm Frank Krueger. Thanks for listening. Peace.