mergeconflict243 James: [00:00:00] Frank something in you, you know, you were just getting all the promotion all the time. Frank, how did this Andrew? Frank: [00:00:15] Uh, I had a crazy beginning of the year and I'm kind of scared. I try not to be a superstitious person, but a lot of good things happened in quick succession and I'm a little bit freaked out to be thoroughly honest. So I need to find several charities to donate to, and to make good with whatever camera's spirits are out there. But yeah, it's been a good beginning of the year. James: [00:00:39] We talked last week about a little Apple per possible promotion. I've been waking up every morning at 6:30 AM checking the app store and nothing yet. So we will, we will see what happens, but also, you know, Apple is fascinating because they could be promoting your app in like, uh, in like Italy or something like that. You know what I mean? Who knows? Um, but you Frank have had many a projects. I think when you create good software and you create good things that are helpful for people that they want to have. Promote promotion naturally comes. Right. And you, how many years ago is this? Three years ago? Two years ago. One year ago. Frank: [00:01:15] Oh gosh. Well, time doesn't exist. Let's be clear, James. Um, but let's go with three years ago because if you asked me for real, I'd say like about a year ago, but that's totally not true, but yeah, about three years ago, I decided to write Fu get, or as Miguel would say, Fusha James: [00:01:33] Fuji, the pro nougat package browsing. Frank: [00:01:38] God, I haven't updated that copy in three years. That homepage is exactly what I wrote at 2:00 AM. No, I cleaned it up because it was really snarky at one point, but I eventually cleaned it up. This is a hacker tool. It was always meant to be a hacker tool for hackers and, uh, I don't know what the definition of hacker we're using these days, but I just mean, um, people who want to know the details of how systems work. So it's a new get package browser that, uh, shows you all the API. So if there's a DLL in there, it cracks it open and shows you all the classes and methods inside of it. And ports, XML documentation for all those API APIs, it has diffing capabilities with different versions of new gets. And if it's an open source project, it has a code tab where it D compiles code and displays it in a browser cross-linking between all sorts of different packages and even Microsoft's own documentation. I don't know how I wrote this thing. It's just, it was produced one day and I was happy. James: [00:02:43] Yeah. I mean, it is, it is lovely. So when you go to nuke, so nougat is the it package managers similar to NPM, if you're coming from a new JS world. So I don't want to assume that everybody that is listening to our podcast is a dotnet developer, but I imagine that many are because that's our background, but I don't wanna, I don't wanna make assumptions because that's no good, but, um, NPM. As a package manager, new gets a package manager, CocoaPods package manager over in the Swift Coco world Frank: [00:03:12] PI over in Python. What is it? It's P Y P I PI. Um, and it's, uh, not pronounced any other way. And it's, uh, the tools called PIP. So it usually people just call James: [00:03:26] it PIP. I recently did some Python development and I was pipping. Yes, maybe that's for another podcast. So. New gate is more of an Explorer is the package repository. But when you go to the new gate website or you're in visual studio, RVs go and you're exploring, it's pretty. Um, lightweight, you know what I mean? It, it will show you some, a little bit of documentation from a read me. It will show you what dependencies the new gift package takes on. And it will show you some versions and download numbers and, and some get hub projects, things like that. But you said, Frank, not good enough. I need, I need more. Frank: [00:04:08] Yeah, I need more. Um, so new, get the perspective. I think they have is that they're showing you the package, not what's inside the package. I want to show you what's inside there. Yeah. And give that a nice browsable UI and there are tools out there to do it. Um, am I, yeah, sorry. I'm totally forgetting. But, um, there are other nougat package, browser things out there, like visual studio addons, that kind of stuff. Yeah. W what I thought though, was I kind of wanted a website. You know, I wanted something that I could hit very easily, not make sure it's installed on my computer and not have to worry about updates. You know, I love apps. Apps are great. You can take full advantage of the computer and everything, but when it comes to. Documents and documentation. Guess what the web is really good at. So, um, I wanted the convenience of a website and I just thought, um, the way to make it most convenient would be just copy everything about. Nougat like their URL scheme and everything. I got a name as close to theirs as I could get. And then, um, so it it's down to whatever you're on new get, you could go up to the menu up to your address bar and switch the end to an F and it would give you my version of, uh, what's inside the package, not just that package. James: [00:05:34] Yeah. It's super cool. So you can go and you can say Xamarin forms, you can serve for packages. Here, for example, I am literally inside of the button class. I can see the source code without having to go to the source code in the browser. Like you said, um, I can see the documentation that came on in and Frank: [00:05:51] when I I'm just so proud of the reference, the reference linking, I'm sorry, I just have to keep bringing it up. It was hard and it's a big reason why the server keeps crashing, but it's worth it. Well, James: [00:06:02] you know, that really brings us to today's point, which is. You know, food, it was always this thing that was out into the world. And some people knew about it. Some people didn't and there's advantages when you're, when you're deep in the code and you're like, Oh, I'm updating this package. What's in it. What are all the classes? Um, there wasn't anything that helps in UGA camp or food that came in to sort of help that. However, unless you knew about it, you know, if a tree falls in the woods, you know, where's it at. So now though there is. A button. There's a link on every single nugget page that says open in the Phuket package Explorer. That's your website, Frank. And when you tap on it, it goes from a Microsoft property to your website. Frank: [00:06:47] It freaks me out every time. I really can't even look at it to be thoroughly honest. Whenever I see it out of the corner of my eye, I'm like, is there a bunk? Is there like some script running or something? Um, it's awesome. Uh, the Microsoft people are pretty awesome. I remember in the early days for every package, there's a little bar up there that tells you how to install it. Into your project and that kind of stuff. And they used the dish show. One bar, there are one way to do it. And the packet people are like, Hey, we got this huge open source project. A lot of people are using it. It'd be great to get the packet thing in. And Microsoft was a little pushing back or like, eh, we're trying to keep this experience refined and clear, but I think they finally came around to the idea of, Oh gosh, darn. This is a really community driven thing here. Um, and. They've almost taken a complete U-turn to the point where I'm just freaking out a little at how much they've integrated with the community. I totally considered food get like a little weird one-off for people who kind of are lucky enough to find it, but, um, they just put a link to it. James it's just blowing my mind, honestly. And it was neat because. Uh, I was actually emailed about this. I can't think of time, time, time has gone, but let's say some Microsoft people emailed me. They said, what do you think about this link? And this I think was in response to Chris from the F sharp community had done a poll request. Against the site or something. I don't know how any of this open stuff source works. James, I'm just realizing this. Now the community works at scale that I don't comprehend. It's James: [00:08:32] true. It's true. I do remember that. And I remember someone coming to me. This was, we were in the office still, so this was pre pandemic and. They're like, you know, Frank, I know, I know a character named Frank. That is correct. I've heard of this Frank Krueger before. Uh, and Frank: [00:08:51] I think that I can't imagine any conversation going well, this starts with, you know, Frank Wright was there, like, just while they were, were they shaking their head while they said that? No, James: [00:09:01] no, no. I think I, it was all positive. You know, Microsoft, we we're, we run on trust and we're super happy people and, uh, we love everybody and. That's pretty much it it's like, Whoa, Frank made this awesome thing. Like how do we make it? So people that are using the website can, you know, find really cool things. I think when you talk about, Oh, there's packet stuff, there's package manager done SEO there's I have sharp, interactive, like there's different documentation there. Like. I think they we're thinking about like, how do they open it up even more? I like meet developers where they're at and what they need and not everyone needs food yet. Right. But there's definitely people as we will talk about later, a growing population of people that want to know more, right. Even if you install the package, it's just fun to browse around and see softens, see how it's built and see what's in it and navigate around. So you think is, I guess it happened this year. There was a button that showed up and. It's there. Like the button is there. Frank, it's a button. It's a button to Frank's website. Frank: [00:10:00] It is. And, um, I'll be honest. I didn't quite take them seriously at first because they emailed me and they're like, Hey, Frank, uh, we're thinking about linking to you. And I'm like, ha ha good joke. And it said, uh, do you think your server could handle it? I'm like probably not. Um, but I'll babysit it if you link to me and they're like, cool, cool. And then didn't hear from them for a couple months. And then they emailed me and they're like, Hey, so, uh, what's your icon? And James talk about lessons learned lesson one. I should have paid for a graphic designer to make me a nice icon when they emailed me just then, but instead I'm like, no, no, that, that box I drew at 3:00 AM while completely sleep deprived is totally what I want you to post. And so the official icon became this gray box that I drew probably. Half delirious. James: [00:10:53] Yes, it is a, it's a box Frank. It's definitely, Frank: [00:10:58] it's like a box. Do you get the metaphor? It's a little deep. Should I explain it some more? No, James: [00:11:05] you do not need to explain it anymore. Frank: [00:11:07] So the first, first lesson learned when Microsoft emails, you. They're probably not joking. Second lesson learned is, um, if they want an icon, say, it'll take me an hour and quickly hire someone to draw you an icon. James: [00:11:23] Um, and we, we do move fast on some things and, and in this case, you know, Where you have your website, they don't need to know right away. They can add it at any time. You know what I mean? That's the cool part is it's, it's a website that's going to integrate to another website. That's a very simple link and how you made it is very, very easy, but you know, you went with the box, um, you know, and, and it's three shades of gray. So Frank: [00:11:49] it's like the Nintendo logo. I thought you would appreciate that. I just took her away. All right. All right. Okay. I was great at drawing the GameCube logo. I James: [00:11:59] mean, it's a great cube, Frank. It is three sides, three sides, visible, six sides, total. Frank: [00:12:05] So is this when I announced the graphic design contest for Phuket to give it a better icon? Now I'll just, I'll pay someone either one. If you want to donate some art. Feel free. It is open James: [00:12:16] source on get-ups. So I want to talk about though today, because this happened at the beginning of the, of the, of the year and, you know, you built this website it's built completely with asp.net core. Is, is that correct? Frank: [00:12:29] Yeah, yeah, yeah, for sure. Um, what it's actually running on the server. I find a little bit confusing. I'm not actually very good at Azure James. I think that's very clear in this podcast. Um, so it's running either.net core. Two three or five. It's one of those aren't I being specific. I'm going to guess three though, James: [00:12:52] specifically running two.one, which, Oh, I will tell you time to update Frank. Cause you're going to run out of LTS at some point. Um, Frank: [00:13:01] Oh, I think it's out already. Isn't it to, James: [00:13:03] uh, no, to now one great question. And I'm glad that you Frank: [00:13:07] asked they were doing like a three year James: [00:13:11] three. One is the LTS. This is a good, um, There's Frank: [00:13:15] a.dot. Remind me, James, you just claim to work for this company. You better get this right? James: [00:13:21] Okay. Here we go. don.net. Um, it is supported end of life, August 21st, 2021. Frank: [00:13:28] Wow. I got til August. James: [00:13:30] Um, and then you can move to Donna core three.one, which would be December 3rd of 2022. So you probably want to, I will say this though. I think that you would just want to skip to done at five or even done at six preview because, um, from my understanding, the performance gains that you will get will be astronomical, especially between two and three, but especially between three and five. Yes. Frank: [00:13:55] I've heard that too. Um, net five, they just keep bragging about how fast it is and making me feel bad about me not being able to click a box in Azure, just keep rubbing it in. Um, and it's fine too, because I made a lot of, uh, conscientious decisions about maintainability on this app, in that. I didn't use any fancy fame frameworks. It's ASP dot MVC, razor pages, just because it's basically writing PHP. It's fantastic. It's a wonderful dev experience. Uh there's, there's absolutely nothing fancy in the website. So it'll actually pour over just fine, you know, like no big deal. James: [00:14:36] There's like not a lot to this website, by the way. There's like two controllers. Frank: [00:14:42] What I pride myself on that, you know what the deal is, let's go less bugs. That's just how it is. You know, there's so little, there's so little code. Why doesn't every site do this? You know, that's what kind of drives me nuts. It's like, look, I wrote this at 2:00 AM while delirious, everyone else just do it anyway. Side tangent. Um, it's, it's um, very clean code. Uh, so I don't think it'll have any trouble porting over. Now. They do sometimes change that startup dot CS on you, those asp.net people. They like to change that startups. Yes, but everything else will probably James: [00:15:21] work just fine. They have, I've recently done some to doubt one to three.one migrations. And here's the pro tip. Before we get into what I want to talk about today, I wanna talk about all this, but there's a specific topic I want to talk about. The, what I like to do is always do file new project. And then I just like to bring up to ITE side by side with my old project, I'm on a new project. I'm like, Hmm. Okay. What change? And just copy and paste things over. That's kind of what I do Frank: [00:15:47] because I do that all the time. I do that. All, I create a temporary directory, then I create a directory. That's the exact name of mine.net new. And then I drag the CS project back to wherever I need it to be because like the cool thing about the modern CS proj format is most stuff is implied. So I think it's. Easier to do that quick merge. Cause I have very few changes to it. So yeah, that'll definitely be the way I do it. In fact, this is kind of hilarious and, uh, shows how great of a open source maintainer I am. Um, there are two open PRS, one targeting it to dotnet core 3.1. Very, very helpful. Thank you. Another one, targeting it to.net 5.0, posted a year later. So, you know, we got options here. I James: [00:16:34] liked that. It did. And, and the fun part here is that it is very. Minimal by the way, like the, the changes to the code. And it's the same person that made the same PR is by the way. Um, which I love. Yeah. Radley Frank: [00:16:47] shout out from Bellingham. Hey James: [00:16:49] Bradley. Wow. Very cool. Nice local. I like that. That's that's awesome. Yeah. Frank, you need to, you need to, you, you know, you could do is you could do like a beta dot dot org, which has like, is the site, but running on Dominic or five. Frank: [00:17:06] Uh, I, I, I hate complexity, James, like, so, you know, if I was like, if this was my business, I would totally be a little more serious about it. That's what the Microsoft. It's like kind of freaky freaked me out about a little bit. Cause I was like, if the psychos down, I don't care, you know, it'll, it'll come back up. But with Microsoft, I feel a little sense of responsibility or at least I don't want to make a fool of myself in front of the Microsoft people, you know? So, uh, I care a bit more about that kind of stuff now. Because it all just got so serious all of a sudden, but ever since the beginning, it's had gray open source contributions from people and I've really appreciated it. You know, it's one thing to open source a project and no one ever looks at it. It's just you devving on it. And I have lots of projects like that. The majority of my open source projects are like that. But, um, this one was. Popular kind of from the beginning with hackers and hackers, like to do code changes. So I've gotten a lot of contributions out there. This is all my way of saying, although I have seven open PRS, I have 42 closed, so I don't feel too bad as a maintainer. But I do have 59 open issues. So I am a terrible maintainer. Sorry, everyone. James: [00:18:28] It's good. It's good. Well, let's take a quick break and thank our amazing sponsor this week. Webb Adams, cause we're talking about web development and you know, maybe you want to, I don't know, use some TypeScript, some JavaScript. In your Xamarin forms app. Isn't that crazy? And wouldn't that be awesome? Well, you can, with web Adams, it is a JavaScript to bridge for Xamarin forms. Not only can you use normal JavaScripts and JSX, but you can use TypeScript too for Xamarin forms, which means you can build out your entire mobile app and your website and everything like that in TypeScript, or just straight JavaScript. You can have your C-sharp talk to your JavaScript or your TypeScript back and forth. You can even do hot reloading of your application in. Production, because it's all JavaScript. The it's interpreted. It's just like, um, that really core Kodova stuff and react native stuff that you have, but you can do that inside of your Xamarin forms app. It has all the things that, you know, in love from normal Xamarin forms, development, such as one way and two way data binding dependency, injection internationalization at unit testing, it is absolutely. Awesome. So if you're a web developer know, like, Hey, I'm looking to build a mobile app or you're a mobile app developer looking to infuse a little JavaScript or TypeScript in to your application, checkout web Adams, they have a full playground, so you can play around on their website and just try it out. Nope, that's cool. And let's try stuff right in the browser. Go to web Adams. W E B a T O M s.in dot I N. And you can find that link down in our show notes. Definitely check it out. I've been checking it out, playing around in their playground. It's fun to just see the capabilities of leveraging all sorts of fun code everywhere, where you want to be. So check them out. A web Adams, Diane, and thanks to web Adams for sponsoring this week's pod. Thanks. Bye Frank: [00:20:19] bye Adams and Kasha. Aren't like JavaScript, Java script playgrounds. The best. That's one thing where web tech is James: [00:20:26] awesome. Press a button and boom. You're doing stuff. It's yeah, it's pretty cool. I mean, try it on that. I mean, cool stuff too. There's lots of cool stuff. I'd love to just learn in the browser and you know, that's why code spaces. I think really just entices me to, you know, when you see that stuff, one day, it's all gonna be. There's going to be a whole moment for a whole hybrid type of thing. I can work online, offline, just leverage the cloud. Anyways, Frankie, your stuff is in the cloud. What I wanted to talk about for the other half of this is sort of lessons learned because you were sort of talking to me before the pod, which is, Hey, everything's sort of 10 X when Microsoft put a link on new good.org, and that has some serious. Implications. I mean, I remember when my website and one of my blog posts got featured on hacker news and I was like, I'm not even hosting the website myself. And I'm like, I hope that ghost doesn't go down my blog. It gets, you know, 20,000 views a month. You know what I mean? Oh, no. Like this is getting 5,000 views. I hope the internet doesn't crash, but it, you know, freaks you out when all of a sudden you're like, Whoa, where did those. Where did those views come from? And I hope that I can scale appropriately. So I wanted to kind of know where you were at, you know, you're not, you said you weren't like an Azure deployment expert, but I was kind of wondering any lessons learned, like, did you have to scale up, did it happen? Did you have to make changes to the website? Did the thing go down? Like what's the, what's the, um, lessons learned here on Phuket and, and, um, you know, this has happened by the way, this is for any per random promotion, right? Because. If Apple, like we talked about last week, promotes ICER, surrogate, 3d. You're going to see an influx of everything, right? So this is the lessons learned, but it's been a few months. So where are we at Frank? Frank: [00:22:08] In my day, they called a BN slash dot, uh, yeah, the internet, huh? Uh, so while I am not great at Azure, I am really good at writing websites. And just to my own, I don't know I've been doing it since like the nineties. We were running websites on 166 megahertz machines. Like over bad connections. It's easy to make a fast website, as long as you like pay attention to a few things, but I cheated. That's the way you make something fast. You cheat James. So, um, So, let's see, we'll start with lessons learned, I guess, but I'm going to break it up a bit because I was telling you before the show that I don't, I don't really think of it that way, but I I'm sure they'll come to me. But one lesson that I've had throughout the server was this is an intractable problem. It is impossible to do what I am trying to do. I am trying to interlink a million packages that are. Potentially, you know, I don't know how big nougat is, but it feels like there are 8 billion packages on it and it feels like each one of them is a hundred megabytes. Um, I don't know why they're all huge. Um, so one machine has to create a network, deep download all of that, decompress them, interlink them track versions. It is an insane amount of memory. It isn't in, you would build up data center. To solve this problem correctly, to be thoroughly honest or I guess today a Kubernetes, whatever the heck. Um, but instead I'm using a minimum tier server on Azure, so, okay. Well it's not the minimum tier. The, the super minimum tier on Azure is like, they call it the. Dev tier are they it's like the gray tier. They're like, don't, don't, don't use this. Please don't use this, but it's the one that includes like the free one and also like the $20 one or something like that. I'm on the like 40 or $50 a month. Okay. But that's a good machine. It is honey hundreds. If not thousands of times faster than the machines, I first wrote websites on and. So a lesson learned one, I guess is good. Web tech is always good web tech. Um, keep the sites simple. Don't do anything complicated. I'm not hitting a database. I'm doing everything in memory less than two is if the problem is impossible to solve. Try to do it anyway. And if you crash, just make sure the server restarts who cares. So yes, Phuket attempts to download the entire internet and interlink everything. But I designed it to be simple enough to just constantly crash and be able to pick itself back up, because I knew that the problem it was solving was far too big for the kind of hardware I was going to run it on. So instead I said, who cares? Azure is really good at restarting instances. So I'm just going to run this machine until it dies and then let it restart itself and move on with life simple. James: [00:25:24] Gotcha. So you're not, you know, creating a table storage or storing data or doing, you know, if someone types in Xamarin forms, you're not just randomly storing all this metadata for. Forever basically, and running up a bill that will exponentially get larger over time. You're just saying, Hey, if James and Frank go and type on Xamarin forms and it happens to be in the memory cache, then use that. Frank: [00:25:52] Yeah, exactly. Um, I severely abused the built-in asp.net memory cache to the point where I was talking to one of the asp.net architects. And I was like, Hey, this is how I'm using the cash. And they're like, don't do that. And I'm like, Oh, interesting. So, but you know what? It works and it works the way I kind of want it to, but every so often when you're running the website, you'll see an out of memory error and. That is up for approximately the five minutes. It takes for Azure to realize that the computer has turned into a zombie for, to kill it and then bring it back up. If I was to do this a little more at web-scale, I would do probably the chaos monkey approach have. Just two computers up, but have, um, another process just randomly killing one all the time. And that would just kind of solve the problem that way. So that would be my scale up solution. I, like I said, I can't properly scale this up. This is a huge problem. Nougat is huge servers at Microsoft run by professionals. I can't compete with that. What I can do instead is just be tricky with software, I guess. That's my James: [00:27:02] next question is. You know, you had obviously an influx of people, you know, using the website and still continuously do and will for the foreseeable future, you know, in Azure, there's the ability. I'm not gonna say only in Asher, but in, in many things on, on the, on the interwebs of these amazing clouds that are up there, you can, you can scale so you could have multi-instance right. So you could say, Hey. Scale up, or you could even say scale up on demand, right? Just auto-scale um, as needed. Have you, have you looked into that in your app service? Because there's a, there's two things. Okay. There's scale up and scale out. So those are two different things, obviously. Um, and so you're on an S one bucket. That's what we're going to say right now, which is $43 and 80 cents a month, which is. I don't know what even ACU is 100 total ACU 1.7, five gigs of memory bag. Yeah. It's a thing. And that's the cheapest of the production by the way. So the last one that's pretty cheap to be running this thing on. And with that, you do get auto scale. You get backups, so you get staging slots, you get SSL and you could, you could scale up, right? You could scale up to multiple instances of this thing. Frank: [00:28:25] Yes. Uh, right. So I'm sorry if, if no, one's familiar with th the easier way to think of this as scale up is a more powerful machine scale out is more machines that is easier, easiest way to think of it. So, um, given that it's design, given the fact that food is basically a stateless web server, aside from its memory cache, it would benefit hugely from more Ram. Hmm, it really doesn't need anything else. It's not, it's not really doing something we're crunching. It is technically opening net files and scanning through like the metadata and all that. But that's mostly it's string manipulations, just shuffling stuff around and memory again, memory. So it's just, how much can it get into memory and the swap, I should say, obviously there's a swap on these machines. Uh, how much can it flood those before the machine just dies? So there would be a huge benefit to me getting a machine with more Ram. The trick with the clued is it's not always easy to say. I only want to upgrade this one metric because when you scale up a machine, they tend to try to give you one or hard drive space, or I don't know, more whatever processors or something like that stuff. That's kind of irrelevant to, um, I wanted to say a proper website, but that's sounding terrible. I'm not going to say that on our podcast, that's terrible to a website that doesn't need to talk to other machines that often it's not synchronizing with a database or anything like that. Anyway. So yes. Um, I can definitely scale up, but I would never, ever, ever auto-scale. Can you guess why James? James: [00:30:07] Um, I don't know why. I mean, it seems like you would want it to automatically. Well, cause in your instance, it's in memory. So it would continuously scale up forever. Yeah, that's the Frank: [00:30:19] problem James: [00:30:20] because you can scale out then, right? You could have two machines. Frank: [00:30:24] No. Oh, I'm sorry. I was talking about with auto-scale usually when you do auto-scale that is auto scale out. Okay. I don't know of anyone that does auto scale up, but that might be a thing. Uh, so it's always, usually more machines, but again, it comes down to the problem is much bigger than even just. Five machines it's bigger than 10 machines. So if you had a system that actually expanded to the problem size, it would be huge. And I'm not going to pay for that. The alternative is you have one that brings up a machine when there's heavy traffic, like a spike in traffic, but that's not the kind of website that says this is a. Date people using it during the work week, not on the weekends and you know, the dotnet community, but a large, and we're strong and people click on that new get link, but we're not the size of like Tik TOK or anything like that. So it's fine. Um, there there's no need for that. The way I would scale out is what I was saying before is have. Two machines only so that I can kill one and keep servicing requests while that one is rebooting. And that's the only rule I would have two machines. James: [00:31:38] So you really need that scale out feature. So when one dies the other ones around happy dealing with traffic, and then the other one comes back up and bingo Bango. And you can say only give me the max of two instances and you're good to go. I mean, by the way, The whole fact that we're talking about auto scaling and upgrading things like with a click of a button is also magical. Like that's just a magical thing that happens, right. It's crazy. Frank: [00:32:02] Uh, yeah, especially since I spent a good part of my early career building. Infrastructure to run large networks to build like this kind of scale-out stuff. So it's funny. I used to write this kind of infrastructure stuff, and now I'm quite bad at using it cause I'm bad at web view eyes, but I'm like, you know, if you let me just code it, I could figure this out. Uh, but, uh, it's, it's been great because, uh, traffic was pretty low before Microsoft link to me. So everything I just said was perfectly fine. Um, but then it's like 10, 15 X now. And I know like people are sending me bug reports and even someone on the asp.net team said, Hey, I might have a couple PRS to, uh, speed some things up and forget for you. And I'm like, I am here for this, please. asp.net programmer, fix my website, but, uh, I haven't seen their PR yet, so we'll see. That's pretty neat. James: [00:33:03] I mean, I think that's a really cool sort of, um, you know, part of it being open source and being collaborative. And when other people find a nifty, they actively want to, you know, work on it and promote it and help out a little bit. Frank: [00:33:17] Yeah. Like I said, even from day one, I had that community engagement, which was so surprising because who wants to work on a website, but it turns out lots of people want to work on a website. Uh, the other benefit that I had, this is always a pro tip and open source. I made sure that you could run the website by running. By typing.net run, but nothing else, you don't have to install anything. Do any weird configurations. It's always best. If you just make it easy to run on people's local machines and then you get contributions because he can't contribute. If it's not easy to build and run it, thankfully we've kind of nailed that in dotnet lately. Like. Unless you're doing something super crazy.net build and.net run just tend to work these days and costs were down at six. If that stuff works. Oh, James: [00:34:08] that'd be great. Yeah. I'm really excited about the potential of just being able to simplify the, getting started process or being able to pull down something, or even like, you know, opening code spaces. I've said it before and, you know, imagine. You don't even have to hit down at run. You just like click a button and it's like running in the browser and like some machine is handling something magically for you. And, uh, that to me is. Is a magical moment, I would say. Frank: [00:34:34] Yeah. And, uh, I should just take this moment to yell at all the programmers for not programming enough on the weekends. I need to get my view counts up because James is making me monetize the website. I'm just kidding. Uh, I, I've actually always planned to put ads on Phuket for the longest time, but you know, me, I have lots of plans and I never get to them, but you've been encouraging me to get some nice quality subtle. Developer focused ads up on the website. So you might see that coming, James: [00:35:04] the servers do not pay for themselves. Frank. Frank: [00:35:07] They don't, they don't. And with the extra money, I might actually be able to pay for the two servers and get that dream of not getting that out of memory error anymore. James: [00:35:18] That's kinda a good lesson learned, right? I mean, when, when you end up putting on any piece of software, whether it's a website, a mobile app, and it uses a backend of any sort, right. Um, there are costs associated with that. And. Monetizing is not a bad thing. You know, it's not, uh, it's sometimes it's a necessary evil in some cases. And in this case it could make the entire thing better because Frank, your. Bank account is not endless. I assume. I mean, maybe it is, I don't know. Uh, but, but, uh, in this case you could actually be reinvesting the money and that could be part of it as I go, people go, why did you put ads on it? You it's like, well, cause I wanted to make the website faster. Oh, okay. That makes sense. Like that's, that makes a lot of sense to me. And I think that's, that's a neat thing that could really come from this and you can be really tasteful about it because you know, your audience of this website, which is also ideal. Frank: [00:36:13] It's true. We are such a community. It's great. I love seeing, uh, when, especially when, uh, people I know on Twitter show up, they're like, Hey, I have a PR you haven't accepted it. Go get my PR. I'm like, sorry, it's already, sorry. We'll get to it. I get to it. I love the community aspect of all that. And, um, Honestly, it is a little bit fun. Maintaining a website. I've been bragging a lot about all my website experience in the past and everything, but I don't run websites for a reason. I find them very stressful. You know, it's, it's a lot maintaining this stuff, but, um, having the community so excited about it, having it be an actual, like useful tool, I get emails from people a lot saying, Hey, it's just useful. Thank you for that. And that. Just makes it worth working on and then recognition from Microsoft. Um, pretty great. James: [00:37:04] Pretty great. I like it Frank: [00:37:08] just got to keep that server up, got to, got to put a pager on. So it texts me anytime the server crashes, which is roughly every Wednesday around noon. I wish I, I should track that actually the crash count. James: [00:37:24] That will definitely be a lesson learned when we come back maybe a year from now to understand what else has gone awry. Frank: [00:37:33] Sorry. I know we're, we're trying to wrap up, but I just want to throw in one other little factoid, because this is important to the website staying up, um, for those out there. Um, I also put CloudFlare in front of it, which in no part, uh, which in every part helps this website, um, because it drastically decreases the load that the server server has to do. There is a in between server, that's doing a lot of caching. What do you call that? The caching server? I don't know what they call it. Caching. Sorry. Yeah. Yeah. Caching server. And I eat it. I, I heard like, even in the early stack overflow days, they said going from zero cash to even like three seconds cash drastically decreased their server load. And so I have something like, um, I have like a 24 hour cash to like, even like a couple of days cash because packages don't change. So I'm, I can cash this stuff a lot. So I guess that's a pro tip. If you're building a website, make sure it caches easily so that you don't have to take all the server load. You can let another service, another clued James: [00:38:45] handle it. Yeah. I get some of the updated. Um, stuff from CloudFlare. Cause I also have collapsed around all my sites and they're like, the caching analytics are just like, we've saved you 8.5, two gigabytes of data. You're like, Oh my goodness. Like, okay, cool. Thanks. Thanks. Frank: [00:39:03] Thanks that. Yeah, I don't care about the data. I care about this, the CPU I, uh, you know, uh, my memory, you know, what that's taking. And so this benefits, like if everyone goes to the website to look at new and soft dot Jason, then. My server barely notices because it's only thing that request a couple of times. It's really hard, James: [00:39:24] was super nice. Oh, Frank, Frank, Frank, how are I buddy? Well, I think that's going to do it. I want to know more later on once you've monetized it, upscale done a bunch of stuff, you know, I think there's a lot of good opportunities here to talk more about web. We don't talk about web all that often and you know, we can give it a little love. I'm excited for the down at five migration. I think it's going to be like a. Donna, if I've done it at six migration, like how did that go? What were their server costs? Like what were the implications? That's the next episode? I think Frank. Frank: [00:39:55] Yeah, we can totally do that. It'll be called Frank clicks around randomly and Azure and tries not to break the server. I should probably like spin up a second machine and just do it that way. Huh? I don't know. Or doing it midnight. I don't know which one. James: [00:40:10] Oh my goodness. All right. Well, I want to thank everyone for tuning in check out food. Good. I'll put all the links down there and of course you can just go to nougat. Click on anything. And there's a big button there. Go give that a, give it a look and also check it out on, get hub. If you want to follow along on the dentist six migration, that Frank is going to go through and don't forget that we have a updated Patrion at patrion.com/merge conflict FM. Um, you can go to merge conflict, FM, click a button or a sound in the show notes too, but we put out bonus episodes every single week. We just had a super fun one about Mars. You definitely don't want to miss that at any tier. You get that. And of course it supports the show to pay for our server costs, Frank, by the way, it does what it does. Um, and also we will be having you swag soon, which is super cool. And you get every single podcast early. So as soon as I'm done editing, I upload it and you're good to go. So you definitely want to check that out. Go to patrion.com/merge conflict at F. Slash merge conflict, FM, whatever it is, it's a good sound in the show notes, click on the thing. We appreciate everyone for listening and for being with us. If you have any questions, definitely feel free to reach out at merge conflict. NFM hit us up on Twitter, you know what to do. So until next time, this has been another merged complex. I'm James Matsunaga Frank: [00:41:23] and I'm Frank. Thanks for listening.