mergeconflict248 James: [00:00:00] Frank, there is nothing more than I enjoy giving people advice on topics that I, I really have no business giving advice on. Frank: [00:00:16] Yeah. Yeah, but you probably have an opinion. So that matters, right? James: [00:00:20] Yes. I do have an opinion. Well, I have a educate. I have more questions, you know, I like to come at a question with more questions. Frank: [00:00:31] Yeah, that's a way to cover the fact that you probably don't know the answer, but yes. James: [00:00:36] Well, I want to get the full context. Okay. And you were actually pinged on this question as well as many of our friends, uh, and it's kind of, it's kind of topic because in the last year or so I've built, uh, many applications on the desktop with different UI technology. So I have used. Um, WPF with Donna Corp and Donna five. I've done WinForms with NFI F I've done Xamarin forms on top of UWP. I've done some UWP stuff by itself. I've done a lot of different desktop graphical user interface things. Frank: [00:01:11] Yeah. Preach it, brother. It's yeah, it feels like there's a new one every year. You know, as much as I like to think, like I think I'm always on the show saying like, I wish I could just use one UI framework for the rest of my life. James. The fact of the matter is. That's just not how the world works and you have to keep learning them and they keep changing, et cetera, et cetera. Although I always look for stability. I also have learned many a framework over the years. James: [00:01:42] Yeah. I think it's, it's healthy to, you know, pick a UI framework that works well for you. I mean, for me, I try to stick in the realm of Xamarin forms as much as I can, but as we've talked about, um, past episodes, sometimes that works great. Sometimes it doesn't work great because of not necessarily Xamarin forms, but some of the sandboxing that occurs, we've done entire episodes on this. And there's different requirements for applications. I think we've talked about this quite often on the podcast is every application is a unique. You know, um, butterfly and snowflake and they deserve their own attention. I, I would like to say, and I would like to think that in the future that like, hopefully like Donna and Maui is like a distinguished. You know, UI framework that covers even more, you know, platforms and more use cases than anything else, but there are lovely, lovely, lovely, lovely UI frameworks just for windows that are not even just by Microsoft, but you have things like UNO and Avalonia and a bunch of other amazing UI frameworks from the community and from companies that are great. So here's where this topic came up. Uh, Frank is our good friend, Danny Ackerman, uh, front of the show. Fan of the show. Frank: [00:02:53] Does he get a ding? I think Danny gets a Dean James: [00:02:56] that everyone gets a dang thing. Uh, when he paints Alan Ritchie, me, Andrew, Hoffling the patchy. And you on this thread, he said for a new desktop app, no special cross-platform or, or web you web UI requirements and no web, no special. Cross-platform just a windows, desktop app. Nothing not graphic intense at all. Boy, just a lot of data collection. Would you use when you WPF or when forms and I'm not gonna, you know, everyone else kind of had some topics. Some people are like, you should just use, you know, or project reunion. And when you three and that too, and I go, um, you know, I came at it a little bit different and I said, Well, what are your business requirements? What OSS do it needs? Does it support? Like what upgrade do you need to support? Do you need to talk to a database? Like, you know, do you need to run long running background processes? Like is, does it need to be online, offline? What are your sources? Um, I don't know. Did I approach that the right way or the wrong way? I don't know. Frank: [00:03:56] Oh, no, a hundred percent the right way. Um, I remember I completely failed a programming interview once and it wasn't explained to me in the end, because throughout the entire interview, I thought I was rocking it. James. I thought I was the man. Uh, so the interview began something like, right me, uh, gosh, what did he want? He wanted a stack. Uh, stack implementation, you know, like a, push something onto a pop, something off of it on a stack thing. And I sat down, I'm like, I've been programming for years. I'll write you a stack, blah, blah, blah. Look at this. Yeah, but I just wrote, and by the end of it, he's like, you didn't ask me. Anything about my requirements, like what kind of data I was going to put in, uh, how often I was going to answer how often I was going to remove you just like wrote some code and I'm like, yeah, it's good code. And it took a while for that lesson to kind of bake in that you absolutely do first have to cover required. James: [00:04:54] Yeah, I agree. Cause sometimes you get a such a high level. Question. And of course, you know, I don't want to blame Danny here. He only had 280 characters on Twitter too, plus all the tagging to, to put it in there. But that has happened to me on interviews as well. Someone gave me an interview question of, we need to roll out this type of laptop to the entire company across the entire globe. How would you do that? Hmm. Frank: [00:05:20] Hmm. I've done that in a job actually. No one ever interviewed me for it, but I was forced to do that, but yeah, that is an interesting question. Hmm. How would you move Mount Fuji? James: [00:05:30] How would you move Mount Fuji? You know, I, that's a great question. Uh, uh, and I came back with a bunch of, with, with that I think as I struggled through it, then I started to ask questions and I realized that I should have asked questions from the beginning because yeah. You know, one thing that I think as a software engineer in my mind is I'm like a problem solver. Right. And I think you're a problem solver and we see a problem and we want to solve it. And we're like, Oh, let me, I can go do that. Like, let me just go do it. And. Sometimes it's good to take a step back because often when we're given requirements and it's narrowed down, you can come up with an even better solution within those confinements. Like now that you have confinements or you're confined a little bit more, you have to think even deeper and harder about the problem. So it even makes it better to have these types of requirements. Frank: [00:06:24] Yeah, absolutely. Um, especially cause you started with them windows, right? Like what does windows even mean these days? There are still enterprises that run windows XP. There are people who run windows eight, God bless her soul, but, and you hope everyone's running? Yeah. Windows 10, but even windows 10 has some really interesting, um, Plateaus fractures, schisms and them were like, you want to be using that magical? What was it called? Like the October update? 1602, like windows 10 isn't windows, 10 windows 10 is. Windows 10 plus these four digits and you really got to memorize what those four digits are to know your compatibility layers and all that stuff. I think that is one place where we're all kind of excited about when you Y where they're trying to decouple the user interface from the exact platform version, but. If you go look at when you, why they're like, Hey, we're only supported on these magical four numbers. So there's still a schism there. You know, you, if you want to support magical for numbers below that number, you still can't use when UI in the future. The, the world is bright and shiny. We're we're good. But, um, supporting the past is James: [00:07:38] always, the trick in the past is always a trick. And that often becomes a question that I do have to ask. A lot of people is like, well, how far back do you need to go? And that's one of the very first things I needed to know because I've worked in so many and you've worked in so many different places over the years that these questions matter. You know, when I worked at Canon, we had a. Um, um, monolithic WinForms application that took hours to compile, you know, on our build machines and it bundled in all this CQL server stuff into it, or ran custom scripts and did all this crazy stuff. My buddy, Jesse did the, the, um, the bill, not the bill scripts, what the. Installation scripts and the whole thing, right. As a whole, that's a, you know, that's part of it too, is like, what Ellen, what do you need to support? But then what are your scenarios for this application? Because you know, the type of applications that we build in mobile are often relatively different than some enterprise desktop applications. Like the ones I built at Canon because when we are deploying to the app store, you just give it a bundle and you go, Hey, here you go. Have fun with that. Let Frank: [00:08:43] me, let me interrupt you right there. I mean, that was one of the things that drew me to the app store because I was a windows developer and I constantly had these concerns back then. It was like, do I support windows NT 4.1 or whatever, but you know, it was still the same concerns. And, um, I loved a new platform because there's no. Backwards compatibility on a new platform. Isn't that the wonderful thing about new platforms, but eventually I remember thinking like, well, never hit iOS 10 and what are we up to James? Like I was 14 or something. So there's tons of backwards compatibility that you have to deal with an iOS. Although Apple has been, uh, good about keeping the. Framework itself pretty consistent over the years. It's not backwards compatible in any stretch of the imagination. We all have to update our apps over time. Um, but, uh, you know, pros and cons on every platform, I guess that's all. James: [00:09:42] Oh, I agree. And when Danny comes back and he says, Oh, I have to support windows, 10 desktops and windows XP and windows seven and windows eight on Toughbooks. Okay. That's a little bit different, you know, that we're in a different ball game, all of a sudden, like you just added on a bunch of operating systems, you know, and that you're on a desktop machine and a talk Frank: [00:10:03] book. Well, let's just be clear. XP is like a special checkbox in the visual studio installed. Like it's a miracle it's still there. Is it even still. They're on the newest visual studio. Like I remember visual studio, 2015 being like that, being a magical checkbox, supporting windows XP. So, uh, I don't even know. So can you build a XP Apolis 2019? James: [00:10:27] I wouldn't see why not, right. I mean, you one-click deploy a self, self included ECC with dotnet five, and I think that puppy runs everywhere. Frank: [00:10:37] Well that's fair. Right? I always forget, um, do the dotnet five actually run on X feet. I'm sorry. These are like basic questions, but I'm just like, I never even considered it. Does, does it. Hides. James: [00:10:51] I assume I, I Frank: [00:10:53] hashtag I assume I, James: [00:10:55] you know, I work at the company and I'm Dom Googling rapidly here. Frank: [00:11:00] Uh, I'm only not Googling because I have it a kokanee clock keyboard. So I let you do that. I, you James: [00:11:06] know, Well, let's just assume it does. And I'm Frank: [00:11:10] fine. Okay. XP is the stretch, though. It really is tricky to support XP. I remember when I was writing Calca I specifically chose to use when 32 forms specifically, because I wanted to support windows XP. This was pre.net core days, by the way, everyone. So don't, don't take my judgment as how you would do it today. James: [00:11:30] Yeah, I'm Googling frantically and trying to, I don't know, that's a tough question. I don't know, IP framework in that, in that instance. So, I mean, that would really go, I need to ask the team necessarily like what's going on here if that's the case, but you know, I mean, that is a good question. Then I came back and I said, well, You know, we'll get now, what kind of upgrade scenario do you want? Right. Because, you know, are you going to put it in, obviously you're not going to put in some apps or on windows XP, but like, are you going to do custom scripts? Like, you're going to try, like how, how are you going to install this thing? Like, that's my other question, because building it and trying to get it run on a machine is different than, Oh, I need to make sure that this thing is updating and working and doing all these things. And, um, You know, uh, Danny said, I don't need anything complicated. It will be installed on like, you know, 10 workstations total, but here's what he said. He said, I'm very all caps. Frank all caps. I'm very used to when forms is that. And that would be the absolute easiest for me. But, but from Xamarin, I love data binding dependency, injection. I would love to have that. And additionally, he's never done WPF before, or when you, I, and, um, you know, That also alters, you know, now, but then I ask more questions like, well, what's your timeline? Like, what's your, do you want to learn new things? How, you know, how much time do you have a year? Do you have five years? You have 20 years, what's your timeline for this? And it gets very fascinating, a real quick when you just dive in three questions, Frank: [00:13:06] but you also stepped on my choke. I was about to offer like, Have you considered visual basic for it's a wonderful programming environment. You drag and drop the CUI, you build your thing up. So I really appreciate that Danny came back and said that, um, is very comfortable with windows forms. Because windows forms is basically what visual basic became. It's visual basic 6.0 using the language C sharp. So it's a wonderful development experience. And I've literally given talks at conferences complaining that, um, our tools aren't as good as what we kind of APEC staff where the visual basic form visual basic six. Okay. They're different because the runtimes change, whatever it doesn't matter. Um, they're interesting frameworks and the trick is they're old. They're definitely old. And you, you brought up data binding and it's a really interesting problem because that is the one gift we've been given in user interface development over the years, I would say the big. Uh, the, the big changes that we've had are data binding and then more recently functional reactive programming. But both of those are this let's understand that data is harder than we were giving it credit for earlier. And let's come up with solutions to that problem, which by the way, I'm sorry, I just have to give a quick shout out to D do you remember my old, um, bind library? James: [00:14:37] Oh, I'm very familiar. I've used it many times. I've presented on it. Ooh, Frank: [00:14:41] thank you. Thank you. It's a hard library to explain to people, but the elevator pitch, I try to give it's generic data binding for libraries that don't necessarily have data binding. So when forms, it actually has some forms of data binding, but it's not the most convenient thing in the world. Um, but more specifically, in my case, like UI kit. Uh, it does not have data binding really. So I want a binding libraries. So I wrote a binding library that worked generically across platforms. I just wanted to give a shout out that, uh, I haven't been updating my library many, many years, but someone released an E bind. Library out there. So go on, get hub and search for E bind. It is like a enhanced new version of a data binding library out there. And the neat thing is you can get these kind of fancy, more comfortable programming interfaces, where you can use MVVM and frameworks that weren't necessarily designed for that. So just sorry, I just had to do a plug for myself and, uh, this new library out there E bind. James: [00:15:47] Well, funnily enough, you mentioned it. I already had that tab open. It was literally my next topic because, you know, that was one of those things that Danny was saying is like, Hey, I don't want to write a bunch of this code. I'm so used to these new things, but I need to support these old things. You know, sometimes you can't, you can't have the new, when you need to go back into the past in general. I mean, we've all seen back to the future. You know, we know what happens when you bring things from the future into the past and things from the past into the future, things can go awry, however, you're right. I think that there's some amazing libraries out there today that with the power of.net, and if you could run down at five on these different OSS that you need, then like that would be magical. And the EBI library is something that's really great, no matter what you're building it with. And, and ideally, you know, It's a UI. So I, if you can build your controllers or your view models or your business logic of your application, completely separate from your UI, your UI could be swappable over time at the, at the same time. And if you're using something like EBI and you'd name some things correct, then it's not that bad, really? At the end of the day, the binding part of it, it could just magically work. Frank: [00:16:58] Yeah, it's just like, I tried to identify like, what kind of app am I writing? Am I running a forums app? And I'm using lowercase F they're not Samarin forms, but like, is it a bunch of text boxes and an okay, cancel button, like realistically, is that what the app is? And in that case, I use a library. That's really good at that. You know, that's where data binding really shines in those forms. And I guess I'm using forms and like the web case, you know, that's kind of form, uh, whereas, you know, 3d circuits, simulators, necessitate, different architectures and binding becomes a more complex issue. Um, and you have to come up more, more customized solutions. So it's always identifying exactly what you want out of your user interface too. So that would have been inappropriate question for you to ask Danny. James: [00:17:52] Yeah. Th that's a good point too. I mean, and, and this literally happened 30 minutes before we started recording. So we're in the last update about data binding was four minutes ago. So as we were recording, these questions are coming in, live with Annie here, uh, which is, which is fun, um, to how, but. I think it really comes back down to that windows XP requirement. If that's a real requirement, you're going to have to live in this company. Yeah. And, and, you know, that's like, when someone's like, Hey, can you go support iOS nine? And I'm like, Oh, Frank: [00:18:22] maybe 10, at least please. I mean 10, like they changed so much in 10. Oh my gosh. James: [00:18:28] I was on the high I've had to, you can't get away from it, Frank. Frank: [00:18:32] Oh, gosh. Is that at nine? James: [00:18:34] The two? I bet too. Yeah, it's stuck. That's the one in a lot of schools bought the iPad too, and they're stuck with them forever. Frank: [00:18:42] Okay. Users I'd love you all. You're you're all wonderful, but please buy new devices. I really want it. I really want to make 11, my minimum version number. James: [00:18:51] Yeah, it's, that's the that's the kicker is when you're in government, when you're in education, when you're in enterprise, there's a lot of different scenarios to incorporate into your, your UI framework decision. And the same has been true for the web. If we think about the transition that, you know, transitioned through there's I was on some calls recently where. Um, people were using the ILM and backwards compatible thing because they had some internal application that only worked there, something like that, even though I'm pretty sure that works in edge now and just fine, but there's muscle memory. That's the other thing is, uh, uh, it's so hard for sometimes companies to switch away from an OSTP or upgrade because of the muscle memory. They don't want to lose productivity. So you'll see these, uh, companies big and small of all sorts that are just. Don't move forward because like all of this stuff works and all this stuff is here and it's fine, but how can you use the latest react or blazer, you know, all this new hotness in that scenario. And sometimes Frank, you don't get to, I mean, you just don't get too. I mean, not unless there's a cool library, like Ebeid, I guess. Frank: [00:20:03] It's not so bad, James, like, I'm sorry, I'm going to go back to, I started 3d again. Um, I kept getting writer's block with that thing because I had explored so many architectures. We've talked about so many architectures on this show. I keep going programming language, programming, language, UI framework, UI framework. And the one thing that finally kind of released a bit of writer's block in me was going back to. Visual basic for style programming, object oriented. These are objects, they have properties, they have events. They're going to do their thing. I didn't actually use any advanced binding library or anything. You know, I subscribed to events. I unsubscribed from Rome, you know, kind of code I was writing in the 1990s and it was fine. I got the app done. It's a big, complicated app that does very big, complicated things. And it's fine. So the one lesson I think I've really learned in my career is all these different styles work, all these different frameworks, even if they existed in the 1990s, some good things came out of the 1990s and they're okay to use, especially because I don't think. Windows is ever going to drop support from windows forms. I mean maybe in 2080 or something, but not in 2025, not in 2030. I think you're James: [00:21:30] fine. Yeah. And Danny just asked me as goes, is it still acceptable, right? To your question, like, is it acceptable and okay. I think there's multiple X acceptance. Part of that, like, is it accessible as a, you know, a developer to be like, Oh, I don't want to use it. I'm going to use this, this thing right here. That trust me, there's a lot of people using wind farms. There's a reason that it went to Don at five and that the designer was upgraded to work to Don. You know what I mean? Like, yeah. Like I'm pretty sure Microsoft wa and the Donna team and the wind farms, he wouldn't invest it. In doing all that, if it, if there wasn't a real use case for it right now, Microsoft is very data-driven and very customer driven, but there's also the, is it acceptable longterm to use this? And I think what you just said is a great point is like, I don't think WinForms is going anywhere. Frank: [00:22:17] Yeah. I th the sad part is we're not getting people advancing WinForms. Yeah. And I think that that's where some people start to feel like, is it a dead platform? But look, listen. There's button there's list view. Yeah. That's every UI there is there's custom drawn view. You can write pretty much any app in that. You're fine. Um, so if it does what you want, look, uh, so the PPF UWP they're much better at high media, they have 3d engines built into them. They have much better rendering engines. And then, then GDI. Plus I specifically worked on a team that replaced GDI. Plus we were trying to improve upon WinForms. We were trying to beat it. And what I can say is we did create a better rendering engine. We did create a more sophisticated rendering engine. Did we create a better app development platform? I don't know. It's really hard to beat visual basic for James. James: [00:23:18] I agree. Uh, VB is V before I apparently. That's your favorite number? Frank? A VB is V before it Frank: [00:23:25] was the first one. I, uh, it was the first one I could afford. So VB three, I think has actually the high watermark, VB four is where they switched to 32 bit VB six was the last version before.net. So it's considered the last version of VB, I think. James: [00:23:42] Oh, okay. Uh, interesting. Interesting. Sorry. I'm very old James. Yeah. Oh, you're not. You're like my age. Right? Are you? I don't know how old you are, but we're basically the same age. And, uh, now I think it, you just happened to get into programming maybe before me. So you knew some of those. I, you know, I got into development in my teens, so like 20 years ago, but I was mostly doing just simple websites and blogging stuff. I didn't get into. Uh, I didn't get into anything beyond C plus plus and high school. And so until college and that's when I was like introduced like Java. I never did any VB. I skipped over VB. Like somehow I got, I don't know if I got lucky or I didn't get lucky because one, there's nothing wrong with VB. UVB is great as we're talking about it here. Um, but I also skipped over basic by the way, like, so, wow. Yeah. I, my, all my friends are, here's how this went is in, is in high school. There was four classes, four classes. Yeah. Four classes, one was basic intro to programming. And then there was basically three levels of C, C plus plus programming in high school for me. And. So this would be your, a sophomore, sophomore the year before junior, uh, Frank: [00:24:58] uh, senior junior, sophomore, freshmen. James: [00:25:03] Freshmen. So June the year before senior, whatever that year is, that's when you would take your basic course and then senior year, you would take ball. I don't understand. I'd spent, I'm getting old. I don't even know. I don't know, high school. Uh, so anyways, anyways, I would, uh, all my friends, they took basic and they were making. A bunch of sweet games on there. Tia 83. Yeah. Yeah. Everyone to adventures. Yo. Exactly. So I got jealous and I was like, I want to do that. But at this point you couldn't just jump in. You needed to get like a special permit because you'd have to like take the prerequisite. I wanted to be with all my friends, you know, I didn't want to be went back on. So I, uh, I was able to skip. Skip over basic. Now I don't, I'm not happy though. I skipped over basic cause I think I met, missed out on something fun, but it was the same in college. I went straight to, uh, object oriented programming. Like I just went straight to, um, to Java and then I found C-sharp and I never looked back. So I didn't even get, I didn't get, I didn't do any VB at all. No, I haven't. I didn't get to dim anything. Frank: [00:26:07] Can I be blunt? I, I think you skipped over the fun parts. That's what I'm saying. Yeah. You went straight to the hard ones. Like, um, yeah, I didn't learn object orientation until later in my career. You know, what do you need that for? You got functions and loops and data. It seems like all you really need James. Um, I think the, when I say VB, I don't even really care that much about the language the language is. So, so what I care about was the, uh, IDE the app development environment, especially in regards to building user interfaces, we have the, what has become the wind forms. Designer was the old visual basic designer. And it's just a very high quality piece of software. It's it's taken years. Uh, the XAML editors out there are fantastic, but I think what we all found was like, XAML is a hard language to write. Uh, user interface editor for what we found is it's better to have hot rate load, and just to show it running and I'll modify it and that's good enough. But, um, the WinForms and that user interface model actually did lend itself very nicely because it was more restraint. It wasn't as sophisticated as AML is. XAML is very configurable. It's very advanced. It was less advanced, but constraints, breed, uh, creative solutions. And we got good designers out of it. And so when I keep reflecting, so fondly back on Phoebe for, it's not because of the language I promise you the language was so, so it's because of the visual editor. James: [00:27:49] I think we've joked before on this podcast is the easiest way to get a button on the screen is. This file new wind farms and you got to, there it is. And there, there it goes. I mean, not to say that in those animals, you can do that. You can do the same in SAML, or you can put a button down it's this, but if you, the, the difference is like to do it. Proper in quotes, right. You're going to do like a command. You're going to do this thing you can do is data binding, but like, and wind farms. You're like, no, no, no, you just, you, you button click handler. You know what I mean? Like, yeah, there it is. Uh, so there's, there's those constraints of that. And in general, which I think is. Based on what you need. Like, and that's what I'm, that's what this is all about. What are your needs? This is, I go back to the beginning of time, you know, when I started my career evangelizing Xamarin, I was like, well, what do you need? Right. What is your back? Or you're a C sharp developer. Oh, that's cool. Right? Oh, you've done some XAML development that that's cool. You know what I mean? Like, you know, this stuff, this should. Fit in your West? Well, what are you building? Okay, well, this is, this is the UI piece, you know, and things have adjusted over time where, you know, more and more I can adjust, I can adjust and recommend less things. It's like, Oh, this this thing does a lot more. So it can handle a lot, lot more for you. So that's. Where you need to go is you need to say, well, what are my requirements? So write them down on a piece of paper, gave me the checkboxes and what UI framework, what runtime supports those requirements. And that's even more important than, than what we're saying. You know, what is the deployment that fits my requirements and what is the, the runtime itself that, that is going to run here because the you'll have the same problems. If you were to go a web route, right? Like, you know, what's the latest and greatest for web UI technology. And that may. Adjust based on your business requirements, what you can actually use. There's there's that, there's that? What can I actually use versus what would I like to use then? That's a conundrum that sometimes it's hard to get over. Cause I always want to use the latest hotness, Frank: [00:29:54] you know, we're, we're almost at 30 minutes. I'm still not quite sure what our topic is here, but, um, yeah. I will say that your level of comfort with the user interface framework kind of matters a lot, especially in writing. What is oftentimes a one-off app? You know, you never know which app is actually important. People will have meetings and apples seem important, but then you'll work on it for a month and it opens. Become unimportant. And then one day you'll whip together an app or in three days with together an app and they're using it 15 years later. It's hard to predict these things sometimes. Uh, you know, something funny, I've just noticed in myself ever since dotnet standard, I can't help, but to create light. A core project in my apps. And even if I'm just targeting one platform, I tend to take this very cross-platform me kind of approach where I try to put almost all of the app into the core, and I try to keep the UI layer as minimal as possible. And that's even when I'm sticking to one platform, just because it's greener, you know, it's layers, it's good. Kind of coding. And what I love is I, so let's talk about Kalka my app. That's really just a glorified text editor that advanced a calculation engine in the backend. And, um, that whole backend is a nice, easy, portable library, but I wrote it's front end. In wind farms. Why did I do wind over WPF while I said earlier, because of windows XP, it was an exact requirement like that. But James, honest to goodness, I can write WinForms code with my, with a blindfold on, I can name you every API. I can name you every method, every property of every class. I know that API that well, and like I said earlier, it's not going anywhere. So why in the world? Would I not use that knowledge James: [00:32:00] that I have, unless your business requirements are to do something different. Right? If you, if your business requirements like, Oh, I want the latest and greatest when UI was fluent design and this and that. Oh, okay, well, I'm going to choose this thing that does that thing. That that's the difference. Right? And again, those are business requirements as like, what do you want? Your, can you even accomplish the UI that you want? And it sounds like with Danny it's forms over data, so this thing's going to work great for him, but you know, that that's where you get down to is like, Oh, okay. Like what do I want to build? Because there's now we're talking about the other side of requirements is like, what I want it to look like. Can I, can I achieve that thing in this? And if the answer is yes, one I'm super productive in this framework. Yes, I can. I can achieve the UI want and yes, I can architect my code that I could throw away this UI and swap it out with something else. Like that seems to make a lot of sense to me. Frank: [00:32:55] Yeah. Yeah. Um, and I also will say, because I've been giving so much credit to inform somebody before in this podcast, I want to give a shout out right back to XAML and say, I create better looking UIs in SAML. Yes. Because as much as I love the wind forms designer, it really is good. It's wonderful. Um, it's not as graphically, as sophisticated as that SAML. And you can do much better layouts with SAML and especially sure without reload. Another shout out to hot reload life is pretty good in that sweet spot. So even though I do have that real comfort spot, I still have this debate with myself constantly of whether I should go kind of the newish and XAML MVVM route or old fashioned James: [00:33:42] Frank route. Yeah. And it depends on what you're building, I guess. There you go. But, uh, yeah, I mean, I, I agree with you. I, I believe, yeah, family that for me as a UI developer, as of today, I'm extremely productive. Building my IUI in Zambia because I've been doing it for so long at this point. And I liked the flexibility and I like the layout system that comes with the framework, whether it's a WPF or a UWP or a Xamarin forms, like there's flexibility in there. And I really enjoy it. Um, and I do enjoy the data binding aspects of it to be very productive and the tooling is great as well. And this would be very similar to. Uh, you know, other people that may be very, um, productive with react or with blazer or with, you know, just razor syntax or flood or whatever it is. Right. There's that aspect of it is like, what do you like, what are you productive with and what are you going to feel good about? Because that at the end of the day is what's really important because especially if Danny's like making this for work, like, you know, to me, it's like, I have to make something that's usable. I probably have to hit some sort of delivery date. I have to maintain it for the next 20 years. Like, okay, well maybe I want to pick something that I'm super comfortable with and I can. Yeah, busted it out a lot faster. That's what I'm, that's what I'm thinking, but I don't know. Frank: [00:35:09] Uh, yeah, in a corporate environment, I tend to take the safe, safe, safe approach. So when, whenever people complain about corporate programmers, always being safe programmers, I'm like, yeah. For a reason, it's a tough job. So yeah. Um, I just might say file new WinForms in that case. I don't know. I don't want to make this, uh, you know, modern UI versus wind farms debate or anything like that. I think we've given fair arguments to both. Right. James: [00:35:41] Yeah. Danny go off, be successful with any of the things that we recommended today. They're all great. But again, I can only ask you so many questions on Twitter and you now have the additional questions and knowledge from Frank and James to go off and ask yourself deep from within what do I really want to build and what do I really need to deploy that thing I built on? And then from there, go forth and venture onto your next wonderful C-sharp or vb.net or F sharp adventure because you're using the power of.net and it's going to be great. Frank: [00:36:15] Yes. And try to convince your bosses that XP is outdated and it's time to move on, James: [00:36:21] please upgrade. And with that, that's going to do it for this week's merge conflict. So until next time, I'm James Montoya mag now, Frank: [00:36:27] and I've breakthrough here. Thanks for listening. James: [00:36:43] All right now, Frank, let me tell you, uh, after hours MacBook pro M one in my hands, Frank it's happened. Frank: [00:36:51] Is it, uh, the glimmering gold of the gods. James: [00:36:55] It is, there's a big debate on Twitter, whether it is more Rose gold or not Rose gold. And our good friend JB is going to be shipping me, my Mac book, adorable. So we can do a side-by-side comparison. Frank: [00:37:06] I saw this. I'm very excited about this. I don't know if people have been keeping up, but your Mac book has been stuck in the office for the entire pandemic. So, uh, this is really exciting because I have to admit it does photograph a bit pinkish. I'm not against the pinkish. I just want to know. Or is James: [00:37:25] it Rose gold? It's definitely gold. It's less Rose gold, but it's definitely Frank: [00:37:28] blue or is it whatever it's, James: [00:37:31] it is definitely. Hints of Rose gold, but definitely gold. That is for sure. Um, a hundred percent I can guarantee you this, but, uh, it's, it's, it's a, it's a good device. My new favorite feature is the touch ID on it because you can lock your device with a press. That's great. And it's funny Frank: [00:37:50] what a silly feature, but I agree with you. And I, I think it just shows that I haven't bought up laptop in a long time and I've just never had that feature. Um, did you know that it's also a button James? It's your power. James: [00:38:01] Yeah. Yeah. That's what I'm saying. Like you press it and it lights your computer. Frank: [00:38:05] I didn't want to break the button so I didn't press it. I just lightly press my fingertip against it. And then I found out it's actually a button. It's James: [00:38:13] a button. It's a button that you can long press short, press. And just hover over it. It's, uh, it's my favorite button on a keyboard in a long time. Frank: [00:38:23] Um, I just actually liked the keyboard. I had a fun experience the other day where, um, I, I, uh, plans got canceled. So I had just had time and I sat down and just started typing a blog entry. And I realized that I just liked the keyboard so much that I just kept typing and I ended up writing an entire. Log entry just because I think I was enjoying the tactile feel that game board. It's a James: [00:38:50] nice keyboard. It's nice to have a little M T T arrows back, um, in my life and, uh, track pad, great track pad. I'm, you know, I texted you early on in the experience and I was very disheartened. I was like, I'm returning this. That's what I said. And, uh, I Frank: [00:39:06] didn't catch the return part. Yeah. I knew you were disheartened. I was, I realized that James: [00:39:11] I was not overly impressed. I was like, all right, it's fine. Um, but then I went back to my old Mac book 2013 and I was like, okay, no, this is actually, and here was the problem is that I was comparing it with my desktop machine. Where I feel like my desktop machine, everything is butter, uh, because I have 30, you know, 64 gigs of Ram. I have this crazy process or I have this crazy graphics card. Uh, but at the same time, the M one processor, the more I use it, the more I seem to enjoy it. And it's very delightful to run iOS applications directly on your Mac. That is really, really nice. It's very nice. Frank: [00:39:56] Yeah. As a iOS app developer, I feel a little bit bad that I still haven't updated all my iOS apps to be good on the Mac. So I'm really pushing to update continuous myself because it really is a big feature. There are so many iOS apps out there that you just get access to. And personally, I found the M one processor to be pretty much snappy for everything. Right. So I think you were running into mostly development kind of problems, which is definitely where this computer fails the most. If you're just running software off the app store, you are good to go. It's great. Computer doing development. Um, I think Apple caught us off a little bit by surprise and all the development environments are taking a while to update. Yup. James: [00:40:44] Uh, I, you know, it took me a little bit to get VSR Mac and iOS, Android set up correctly. There's a lot of changes in X code and Android emulators and things. I wrote a blog on it. Um, and I was trying to figure things out, get things tweaking and working correctly. I figured it out and I was a little bit happier then. And, uh, but I think a lot of people and like, they have some problems with Docker and they have some problems with Python stuff or what not like, so you got some quirks in that development. If you're in excode all day, you're probably going to be very happy. That's what I'm thinking in general, but not all of us are. And you know, I just launched. Here's the thing. I am disheartened here. Here's the thing. I haven't even stepped back. I'm not even I'm disheartened because I think that people gave me too high of expectations because. The recompiled applications. Okay. Load so fast. Like they're, they're faster than my windows machine that are like crazy, right. Like when I click on visual studio button, it loads pretty fast. Frank: [00:41:56] I think most things are instant. Like the joke is you can go along the dock and click, click, click, click, click, and they will open as fast as you can James: [00:42:03] click. It's very, very impressive. And even, you know, I installed edge cause I'm an edge user on the browser. When you go to install edge, it says, Oh, do you, do you have an M one processor? Let me install that for you. And even that is very, very quick and snappy to like to load up and I'm like, Oh wait, this, this is, this is great. And then you get into things. That aren't compiled and people are like, Oh, they runs great. It's it takes a little bit, uh, it takes a little bit longer to load up. And then I say define a little bit because I'm sitting here waiting five to 10 to 15 seconds with a little, little bump, bump, bump, bump, bump, bump. And I go, is that the app? Is that Rosetta? Like, why is it taking so long? For some of these applications open up and it's a little bit disheartening in that regard. And that was the thing that was really frustrating me because a lot of the development tools, not just visual studio for Mac, but other things that I use are I've not been recompiled yet in my whole tool chain. I have a lot of tools that are, that are up in, you know, in there. Right? So not even Microsoft tools, I'm talking across the spectrum here. And if you're a developer, you're going to be installing a lot of different things and you you're gonna run into this. And you're like, Oh, That loaded fast and then, Oh, that did not load fast at all. And you're like, uh, I don't, I don't know. And then it'll be inconsistent cause I'll, I'll launch like a get client and the first time it'll take 15 seconds and the second time, five seconds. And then the third time, 15 seconds, you're like, all right, now, come on. What's going on? That. That's why I was disheartened Frank. Sorry. Frank: [00:43:39] Yeah. Uh, I was going to agree with the inconsistent part. Uh, my understanding was that Rosetta does very heavy caching. So it's that first one is definitely going to be the slowest. So the first time you open any of the Intel apps, that is them at their worst, basically. So run the app, load a project. Kill the app. Run it again. Uh, what was sad was hearing that it went back to 15, cause hopefully the goal is obviously for it to stay at the five seconds. Yeah. Uh, there is definitely a schism between as good as Rosetta is. I just want to keep giving her props because. As a programmer. I just still can't believe it works, but great job Rosetta, but it does have these, um, slower edge cases. And we are noticing that I think I was complaining to you. I had to compile lib JPEG, like of all things like who has to compile stupid JPEG loading, like that should be baked into the operating system. But, um, just to make, I w what I was trying to do was get an arm 64 Python set up working. And they're just as far behind as everyone else. And it's not so much, like you can get the arm 64 Python, but it's all the libraries, you know, it's all the new guts that have to be updated to include all these kinds of new libraries.net six, coming out, et cetera, et cetera, et cetera times are changing. So, um, I was disheartened that you were disheartened me because we are going to go through this one terrible year that we're all going through. But what I see is what you saw too, was the F1 versions. Aren't just so fast that we're just going through this annoying transition period. So I'm sorry that you're disheartened, but at the same time, buck up, it's only going to get better. James: [00:45:33] I agree. No, I agree. I'm I'm. I'm not too disheartened. I, I immediately set up time machine day one and I plugged in a two terabyte hard drive. I can always go back in time and wipe all my development stuff away. But one thing that you convince me on over the time was that it will only continuously get better over the year. We talked about this and that does brighten up my day and the more I use it, right? Because once the apps launch, they're usually pretty solid because there was, that is pretty solid there's edge cases, of course. But, you know, once I get my development, And I'm debugging and I'm doing stuff I'm pretty happy. You know what I mean? And actually it's faster than my old 2013 MacBook pro is it should be in general. Yeah. And it's, and it's better going through emulation layers on the air version of this thing, which is, is very happy for me and I, and I like the foreign factor. I still got to say. I still really like the size of my adorable. I think that that was just what a, what a Frank: [00:46:33] great form you can't compete. Right? Like, um, I've been using the iPad throughout this whole pandemic. And so when I got the air, I was like, this thing's pretty heavy. It is, this is not a light laptop. Um, I mean, it is relatively, I guess, but not compared to like an iPad or something. So. Yeah, the adorable will remain the adorable. It will hold its crown for now. James: [00:47:01] Fine. I highly recommend it for everybody. Can't get any more, but if you could, it's it's great. I'm excited to get it back in my life and, uh, and see how it goes. I'm going to wipe it clean, I think, and give it a fresh start with big Sur I think also big serve. My 2013 has big Sur on it. Yeah. I think that also some of these applications and some of the quirks and I'm feeling with our big Sur, I think that it's a quirky O us for a little bit here. That's what I think. Frank: [00:47:29] Yeah. It's a quirky OSTP and somehow they've turned every one-click action into two clicks. I don't know how they managed it, but it just feels like you have to put a little more effort into everything. So yay. Times change. James: [00:47:46] How's it changed. All right. Well, that's going to do it. That's our bonus. Extended podcast edition in here. Hope everyone enjoyed this and we'll see you next week. Frank: [00:47:55] Hopefully talking about more Mac book purchases. Thanks for listening.