Become a Creator today!Start creating today - Share your story with the world!
Start for free
00:00:00
00:00:01
Avatar
14 Plays1 year ago
In this episode I chat with Brandon Minnick about his history as a .NET developer advocate focusing on Mobile Technologies. Brandon talks about his history with Xamarin and the evolution to the new MAUI frameworks that allow developers to develop cross platform applications. We also talk about the benefits that cloud brings to mobile application developers. You can find Brandon on Twitter at: @TheCodeTraveler On the web at: http://www.codetraveler.io
Recommended
Transcript

Introduction and Feedback Invitation

00:00:11
Speaker
Hello Basement Programmers and welcome. This is the Basement Programmer Podcast. I'm your host, Tom Moore. The opinions expressed in the Basement Programmer Podcast are those of myself and any guests that I may have, and are not necessarily those of our employers or organizations we may be associated with.
00:00:28
Speaker
Feedback on the Basement Programmer podcast, including suggestions on things you'd like to hear about, can be emailed to me at tom at basementprogrammer.com. And I'm always on the lookout for people who would like to come on the podcast and talk about anything technology related. So drop me a line. And now for this episode.

May Episode Introduction

00:00:47
Speaker
Hello, basement programmers, and welcome to the May episode of the Basement Programmer Podcast. In this episode, my guest is Brandon Middick, and we're going to talk about .NET and mobile computing.

Brandon's Career Journey

00:00:59
Speaker
Now, Brandon and I have both spent a good deal of time in the mobile computing over the last few years, so spending an episode of the podcast talking about the evolution of mobile sounded like a lot of fun. Brandon, welcome.
00:01:11
Speaker
Hey, Tom. Thanks so much for having me on the show. Happy to be here. It's a pleasure. So, Brandon, tell us a little bit about your background. Yeah, yeah. So, let's see, about, gosh, eight years ago now, 2015, I
00:01:29
Speaker
changed my career entirely and moved out west of San Francisco, where I joined a company called Xamarin that was doing really cool stuff at the time where they basically let you make mobile apps in C sharp for iOS and Android. Uh, the apps were totally native, uh, because all Xamarin both.
00:01:48
Speaker
Say, all they really did, I mean, obviously it takes a lot of engineering effort to do it. But yeah, I mean, under underneath the hood, it wasn't super complicated in design. It was just they wrapped every single iOS API and every single Android API. So all. Watch, I think there are over hundreds of thousands of APIs. They basically just wrap those APIs, bring them to us and see sharp.
00:02:13
Speaker
And then we can write our iOS and Android apps using all the same design paradigms, the same APIs. And when you compile it down, it still compiles down to the native app. So yeah, I had been working on my MBA at the time. I went back to school while I was working full time, living in Florida, and really got excited about joining a startup.
00:02:39
Speaker
And that's when I found out about Xamarin. And this was 2015.

Xamarin's Journey with Microsoft

00:02:44
Speaker
Mobile phones weren't super new, but I wanted to still try and catch that wave. You know, I remember the.
00:02:52
Speaker
like the internet wave of the late nineties where, you know, very much boom and bust. But, um, I figured if I can get in on this mobile wave, um, like I love my, my iPhone and I love apps. So it'd be really cool to make them. And even if this thing goes belly up, well, it would have been a fun ride. So yeah, it joins them. Um, shortly afterwards they got acquired by Microsoft.

Cross-Platform Development with Xamarin

00:03:17
Speaker
Um, so I ended up becoming a Microsoft employee for the next seven years and
00:03:23
Speaker
A few months ago, September 2022, I joined you here at AWS as a .NET developer advocate. Awesome. What was it? Actually, I remember Xamarin because I was actually a customer back in 2015, building some prototype apps. What was it that was really great for developers about the product?
00:03:52
Speaker
Yeah. My favorite thing was I didn't have to learn new languages. I had familiarity with C-sharp. I'm definitely more of a C-sharp expert now after spending the last seven to eight years of my life using it exclusively. But I knew C-sharp. I didn't want to learn Objective-C. Swift wasn't a thing yet. Kotlin wasn't a thing yet.
00:04:17
Speaker
And what really excited me was, well, now I can make mobile apps, which I think sounds really cool. And I don't have to learn a new language, let alone two new languages. And nowadays it's, well, you kind of got to know a little objective C, you got to know a little Swift for iOS, well, a lot of Swift. And then Android, you still got to know a little bit of Java, even if you're writing your app in Kotlin. So really it was avoiding four languages.
00:04:46
Speaker
And yeah, the fact that there's a lot of secret sauce in the compiler where it would still compile down to the native app. So you would have all the native UIs, like native performance. The only difference is you got to write your code in C sharp. You got to share code between your iOS and Android app because it's all same language, same code base, just like we might share code between our backend and our front end. And heck, actually you could share code between your
00:05:14
Speaker
backend and your mobile app if you're doing your backend in C sharp. So, um, yeah, it ended up being this really cool opportunity where, um, I got to become a mobile developer. I didn't have to learn, uh, all these new languages and, and then seeing the C sharp language and.net grow and, um, evolve into where it is today too.
00:05:37
Speaker
Now, if I'm being honest, I don't see a reason to leave C sharp or.net. I can, I can make websites. I can make mobile apps. I can do IOT. I can do AIML. Uh, you can kind of do it all in C sharp. Absolutely. And I, like you, I love C sharp. It's sort of been my, uh, well, since about 2000, it's been my language of choice. So, um,
00:06:05
Speaker
Back in 2002, we had the .NET Compact Framework, and that allowed us to write some mobile apps, but Xamarin really opened that up pretty broad, didn't it? Yes, this is funny. We had chatted a little bit before the show and I told you, I'd never even heard of this. I'm

Transition to .NET MAUI

00:06:27
Speaker
curious if you don't mind going into a little bit of the background of what
00:06:32
Speaker
This was what it is. Is it still around? Sure. Well, is it still around? Not really, because it was developed specifically for... Do you remember the Windows mobile phones?
00:06:45
Speaker
So, pre-Windows Mobile 8, you had Mobile 5, well, this was a version of .NET, obviously, specifically created to run on those low-powered ARM devices. So, we could make mobile apps, we could use C-sharp or VB, if that was your poison of choice.
00:07:11
Speaker
kind of share code, although there were some really hidden gotchas, like you'd have enums that had different values based on which platform you were running. So it was a... What? Yeah. Yeah. That came as a surprise if you tried to share things that were compiled. The values weren't quite what you were expecting.
00:07:36
Speaker
That, that seems wrong. That seems like antithetical to everything that stands for the whole idea of an enum, right? Yeah. Right. And like a typed language, uh, with a compiler that'll give you errors at compile time. Um, no, that's cool. Yeah. I remember, um, cause yeah, you mentioned sharing code was tough. And I remember even when I first joined Xamarin.
00:08:01
Speaker
We shared code between our iOS and Android, because if you can picture it, you got Visual Studio open, and you have a CS Proj for iOS that contains the iOS SDK with all the iOS APIs. And you have a CS Proj for Android that contains all the Android SDK with all the Android APIs. And then the way we were sharing code between them originally was with, well, originally, originally, you were just doing DLL linking. So you had to precompile a different library.
00:08:30
Speaker
when you compile a CS Proj that spits out a DLL, and then you would just kind of point to that spot on your hard drive. Then eventually along came shared projects, which were a little better. They're not exactly CS Proj's. They're SH Proj's. SH Proj. And they certainly had their own limitations, but I still use them in certain cases because they're good for certain things. But then really what it was when I joined Xamarin was PCLs.
00:09:00
Speaker
And those were a pain because there was no standardization across .NET at the time. And it kind of what you're saying about like enums being different values.
00:09:15
Speaker
talking about this out loud, yeah, like that makes sense because like with PCLs, they were portable class libraries and they would have to target those specific platforms. So to share code between iOS and Android projects, there was a couple like PCL 111 and seven and they had these random numbers too that also didn't make any sense. But yeah, you just had to know like PCL,
00:09:46
Speaker
111s will support, and I'm making this up because I don't remember, it's been too long and you don't have to use them anymore. But yeah, you just had to know like PCL 111 would support iOS and Android and Windows Phone and WPF. And then if you wanted to do something with WinForms, you had to find a different PCL that also supported WinForms. And fortunately, all of that went away when .NET Standard came.
00:10:14
Speaker
And then all that standard stuff went away when we'll say .NET evolved back to being called .NET. So .NET core became just .NET 5. Especially with .NET 6 was a big standardization because .NET 6 folded in the mono runtime, which is the C-sharp runtime that Xamarin used under the hood. So everything's kind of unified nowadays and everything's
00:10:44
Speaker
We'll say, I want to say it's easier because nothing's easy, but you know, it's a lot more simple. You don't have to learn all these other things on top of learning C-sharp and on top of learning mobile or ASP.net core or whatever you're working on. So,

Data Sync Complexities in Mobile Apps

00:11:00
Speaker
man. Yeah. I can only imagine back in the early 2000s, were you just doing DLL linking to share code? Yeah. You'd, you'd compile the library. Well.
00:11:12
Speaker
We thought we'd just compile a library and then we'd import that library into both the desktop and the mobile application. But then it ended up being that you couldn't quite do that, like I said, because there was enums that weren't the same. There were API calls that weren't the same. And so, yeah, it didn't go as smoothly as we had hoped.
00:11:41
Speaker
It's like the vision's there, the dream is there. Execution falls a little bit short. Those quarter cases, they can kill you. Absolutely. When I started in mobile, Microsoft, they gave you the IDE, they gave you the framework and that was pretty much it. You had to create everything from scratch. How has that changed over the years?
00:12:07
Speaker
Well, now it is, um, you can, so I should mention, um, so Microsoft acquired Xamarin and then it took a couple of years, but we finally folded, um, the Xamarin technologies into.net. So what we used to call Xamarin iOS, which was the zip, the iOS SDK that wrapped all the APIs from iOS that was called Xamarin iOS. Now it's called just.net iOS.
00:12:34
Speaker
Um, so like, if you ever go into your CS Proj and you change your target framework to, let's say net seven.0, so.net seven, you say net seven.0 dash or hyphen iOS. And then now you're targeting the iOS SDK that is just included in.net. So that's really cool. Um, and.
00:12:58
Speaker
Along with that, when we folded that in, we created this new technology called .NET MAUI. And .NET MAUI is essentially a cross-platform UI framework.
00:13:12
Speaker
way back in the day, you would still create your iOS and Android apps and C sharp just exactly how you would without C sharp. Like in iOS, you would use storyboards or nib or zip files. Any of my iOS devs out there know about everybody else thinks I'm having a stroke. Android, you would use Android XML files and
00:13:35
Speaker
You could share kind of what we call the business logic behind the scenes. But because on iOS, they call a button or the API for a button is a UI button. Whereas on Android, it's an Android widget button. You couldn't share those codes. You couldn't share those codes because they were using different APIs. What .NET MAUI does, which was previously, it evolved from Xamarin.Forms.
00:14:02
Speaker
abstracts those into one API. So I can say and done at Maui, put a button on the screen. And then when I click compile and it compiles for iOS.
00:14:12
Speaker
it'll compile down to a UI button. And likewise, when I compile that to Android, it'll compile down to an Android widget button. So that's not it, Maui. It allows us to essentially write our UI code once and compile natively to both platforms. And yeah, you still have to tweak it a little bit, like iOS and Android. You get the native UI from that, and the native UI will look a little different. So if you want your rounded corners to be exactly the same, you'll probably have to change that on Android, but not iOS kind of thing.
00:14:42
Speaker
But yeah, so that's not at Maui. And so really, as C-sharp mobile developers nowadays, if we just install Visual Studio, and in the little installer guide, it asks you what you're working on. So maybe you're doing web stuff, so you'll check the web components box to bring in ASP.Core libraries. And there's another one for mobile. So you just have to check the box when you're installing Visual Studio. And that's basically it.
00:15:11
Speaker
There's a couple caveats, like right now, if you have an ARM-based PC, like, for example, I use, I have the M2 MacBook Pro that's based on an ARM architecture, and I run Windows on it using Parallels and a virtual machine.
00:15:29
Speaker
and only recently did Visual Studio on ARM add support for Maui. So if you're listening to this today in early 2023, you can still do .NET Maui on Visual Studio with an ARM PC, but you have to be on the preview version of Visual Studio. But I assume by the time, and this is just a guess, but I assume by the time .NET 8 comes out that the ARM support will be just folded in
00:15:58
Speaker
Um, but yeah, it's gotten a lot easier nowadays. Um, there's definitely still some oddities, uh, I'll say like, cause I do all my coding on a Mac. Uh, cause I, I don't know, old habits die hard. And back at Xamarin, we had this IDE called Xamarin Studio and
00:16:22
Speaker
when Microsoft acquired Xamarin, and I wish they didn't do this, but they just took Xamarin Studio and rebranded it as Visual Studio for Mac. And I'm sure some corporate executive, probably somebody in marketing who doesn't understand how the ID Xamarin Studio works was like, this is a great idea. What a no brainer. But in reality, it was called Xamarin Studio because it
00:16:48
Speaker
only supported Xamarin. Now, if you're calling it Visual Studio for Mac, everybody's going to assume, hey, this is the same Visual Studio, but now it's on the Mac, so I can make websites and do anything I could do in Visual Studio in the PC. It's like, oh, well, actually, no, we're working on that. It's gotten a lot closer to feature parity now with Visual Studio for Mac.
00:17:16
Speaker
Yeah, it's kind of still the redhead stepchild. Visual Studio gets all the fun updates before Visual Studio for Mac gets them, for example. But I will say it's been a slog as a developer, kind of learning these workarounds that sometimes you have to do. I've definitely gotten deeper into how .NET works under the hood than I'd like to, just to keep working on my Mac.
00:17:45
Speaker
But the teams have done a really good job where they've combined the code bases a lot. For example, Roslyn compilers come out since then, and that's cross-platform. So both are using the same Roslyn compiler. So anytime Roslyn gets an update, it updates to both platforms simultaneously. A lot of the business logic behind the scenes of Visual Studio has been combined. So it's come a long way, but a lot of folks
00:18:16
Speaker
won't use it on a Mac, they'll use another ID called Rider, which is made by JetBrains. If I'm being honest, I probably should use it, but I've been using Visual Studio for Mac since it was Xamarin Studio, and it's been seven years now, and I don't know. I guess part of me likes the pain because of the familiarity. I always say, you know, old dog's new tricks, right?
00:18:47
Speaker
Yeah, it's little things like the keyboard shortcuts are different, obviously. And Visual Studio for Mac has this syntax highlighting called Monokai, which Monokai is a popular syntax highlighting system. Like you can install Monokai plugins for Visual Studio code, for example. But Visual Studio for Mac is a really unique implementation of Monokai.
00:19:17
Speaker
I don't know. I really like it. If I'm being honest, that's probably the biggest thing keeping me on it. But no, it's good. So yeah, if you want to do mobile development in C Sharp on a PC, just install Visual Studio. You might need to install Visual Studio preview if you're on ARM today. And then on the Mac, same idea, just download Visual Studio for Mac.
00:19:39
Speaker
And the installer will install all that stuff for you. And if you stick to, um, just using the built-in installers to stay up to date with all the latest updates, you'll be good. Um, where I hit these weird cases where I was talking earlier about like, okay, now I got to figure out how.net workloads work. It's because I will jump ahead of the installer. Like I like to download the latest bits right away.
00:20:08
Speaker
I manage a couple of open source libraries. And so I always want to make sure I have support for my users and make sure that my libraries work with the latest versions, yada, yada, yada. And that's where I'll get into trouble. But if you're just a good developer and you just wait till it shows up in the installer, you'll be fine.
00:20:30
Speaker
So, yeah, I started, as I mentioned, I started in mobile development back in 2000. And back then it was all, you're going to synchronize your data, go. And you didn't have to worry about, well, okay, you did probably have to worry a lot about stuff because synchronizing at the end of the day always got you into problems. How is this idea of, you know, the mobile device being a first-class citizen really evolved over the years?

Cloud Services in Mobile Development

00:20:58
Speaker
Yeah. I mean, the synchronizing problem, that'll, that'll never go away. I mean, I funny story. I missed my dentist appointment today because I put it on my calendar, but my calendar didn't sync. Uh, so when I looked at my phone last night before going to bed to see like, okay, what time's my first meeting? There was nothing there. And then I got frantic phone calls from the dentist, but I was in the shower. So long story short, synchronizing data is hard. Um, but.
00:21:28
Speaker
Yeah, I mean, with mobile, you've got some built-in options, like Android has its own backup in cloud storage. iOS has their own backup in cloud storage with iCloud. And those work. Those are great. But they're very siloed. And so if you ever have a user, because most people make apps for both platforms nowadays. And I think most users are, I know most users, all users expect that.
00:21:57
Speaker
If I go to Tom and I don't know, do you use Android or iOS, Tom? I use iOS. Ah, dick. OK. So we're both iOS users. But let's say we both go to an Android user and go, check out this awesome app. This app is my favorite. They're immediately going to look on the app store for the same app, the same name. And I think what most people don't realize is as developers, you basically have to rewrite that app that you made for iOS for Android.
00:22:27
Speaker
unless you're using something like .NET MAUI with C sharp that can compile that to both. And so, so yeah, then things start to get tricky because if you want to support users across devices, because let's say tomorrow I go buy the latest Pixel phone,
00:22:47
Speaker
And I still have the accounts with the previous apps I try to log in, but none of my data is there because it was all just backed up in iCloud. Well, that's a problem. So yeah, that's kind of where you get into kind of doing it yourself. And so you've got to have some cloud service, highly recommend AWS. A little biased, but
00:23:16
Speaker
But yeah, pretty much every mobile app needs some sort of cloud backend. Something where it could be as simple as just retrieving a environment variable or a secret. Like when the apps I have in the app store, when they first launch, they'll first ping a couple APIs to pull down the latest
00:23:41
Speaker
Well, stored secrets. So yeah, you don't want to have public APIs, but how do you avoid that when you have a new user? So and then on top of that, the other challenge with mobile is if you ever want to change anything in your app,
00:24:02
Speaker
You have to completely rebuild the app. You have to submit those new files to the iOS and Android app store. You have to wait for iOS and Android to approve it. Sometimes they do. Sometimes they don't. If they don't approve it, then you have to go through this appeals process. It's a huge pain to push out an app update. And so if you, for example, just wanted to. Update your API. Well, that API URL is probably hard coded into your app.
00:24:32
Speaker
And so you can do all this work to update your APIs, but eventually you have to push out a new app update. Um, and then what ends up happening is not everybody updates their apps and listeners, please, as a mobile app developer, I'm begging you just leave automatic updates on one of the hardest things is maintaining older versions of your app. And eventually you just have to break it because, uh, for example,
00:25:00
Speaker
The first app I ever pushed to the App Store, it's called Punde. If you're into puns, we used to push out a new pun every Monday for you to guess. And they're all fun drawings of something's going on, but the images and the actions are a pun they have to guess. And yeah, I had people still using Punde version 2.2, which I pushed out in probably 2016.
00:25:28
Speaker
five years later. And eventually it got to the point where it was just one person left. And it's like, all right, well, sorry, friend, but I've got to do this breaking change. But yeah, so as you update things on your back end, you have to be cognizant of how many users are still on older versions. And so my lesson learned is you store those in the cloud. So when the app initializes, have it
00:25:58
Speaker
pull down some information. So like, what's the latest API URL? And what's the API key for it? And things like that where if you need to change something, like maybe your API key got exposed and you got to rotate your secrets. Well, if it's stored in the cloud, you can easily rotate it. The app will automatically grab it and you don't have to break anybody.
00:26:21
Speaker
Whereas if you don't, then you have to re-hardcode it with the new secret in your mobile app, and then redeploy to the app stores, and then cross your fingers and hope that your users update before they leave a one-star review saying, wow, this app doesn't work anymore. It sucks. Nobody should use it. So it's weird. It's weird out there, man, especially when I talk to friends who just do web development. When you push an update to a website,
00:26:50
Speaker
And nobody gets it. Yeah. As soon as the next user goes to that website, they got it. So there's all these like, yeah, these little pain points in mobile that. I mean, now the industry has all this knowledge from the experience, but you know, if you're going through it for the first time, especially as an independent developer, like the apps I have in the app store, they're free, they're open source. I don't make any money off them. Um, you know,
00:27:17
Speaker
I had to learn all these lessons the hard way. But yeah, long story short, so to answer your question, yeah, every mobile app needs a cloud backend. And what you're going to have to do is make sure you store users' data in
00:27:35
Speaker
your cloud. So if they ever switch devices and they log in, say on Android when they were an iOS user, all that information is still there, especially if they purchase anything, like you can have in-app purchase or subscription and Apple will remember that and Google will remember that on your behalf.
00:27:58
Speaker
which makes it easy to like restore subscriptions. And I'm sure everybody's seen that in their apps where you get the latest iPhone and then you open the app for the first time. You have to click the restore purchases button. Um, that all goes through, goes through Apple. But if you switch devices, well, you should, well, I feel like you should honor that. And the user who paid you $20 for your subscriptions should still be able to use that. And so you'll have to store that information as well. But then.
00:28:27
Speaker
Yeah, when it comes to sinking data, that gets tough too, because mobile apps are go offline all the time. Like you're riding on a bus, there's no cell phone signal, or you go into the subway, you're on an airplane, anywhere, even just switching between wifi and cellular, you're going to drop packets. And there could be a case where.
00:28:47
Speaker
Let's say I'm on a plane. Like I, I just flew back from Sydney last week and that's a, that was a 14 hour flight. Got to enjoy middle seat and coach. Thanks, Amazon. Not a lot of this class. Um, but, uh, but yeah, you know, I'm on the phone, I'm doing work and I'm saving things, but my phone is not connected to the internet. So what I assume as a user is going to happen is next time the app has connectivity, it'll update.
00:29:16
Speaker
But maybe I also did a little bit of work on my computer and now we're touching the same file in two different locations. Both are offline and they'll try to sync when we get back online. So it can get really hard. There's a lot of libraries that help you with that. But yeah, man, the syncing problem, that'll never go away.
00:29:41
Speaker
Right. So these days you work in the sort of developer advocacy group and you're one of my colleagues. So how, how has cloud given really helped mobile deliver mobile application developers to deliver solutions? Oh yeah, it's been huge. I mean, you know, I think back to when I started as a, as an engineer, I, I graduated college in 2009, started my first job.
00:30:11
Speaker
2010. And, you know, if we were making an app, and we needed a server for its backend, well, I literally had to purchase that server, which in reality, because it's a big company meant I had to go to procurement, say like, I want this server from Dell, this like 16 CPUs, this much RAM,
00:30:36
Speaker
They would place an order, and I would get it six to eight weeks later. It would literally show up on my desk. I would get this giant box from Dell. I'd go walk that down to the data center. I'd have to find an empty rack where I could slide in the server. I'd rack and stack it, connect all the cables. You still have to install the operating system. You have to have a whole security team that makes sure that there's no security vulnerabilities, especially if you're going to make it a public API.
00:31:06
Speaker
The, just all of that overhead was literally just so I could have an API for the app we were working on. And nowadays, if I want to do that, a couple of clicks of the mouse, I can have an API up and running in the cloud in seconds. Um, so that, that velocity has been huge. Um, it's lowered the bear. Excuse me. It's lowered the barrier of entry so that like,
00:31:34
Speaker
individual developers like myself, I can now create mobile apps and I don't have to have, um, a server running 24 seven in my house. Um, I don't have to worry about, uh, like disaster recovery, right? So like, let's say, yeah, I live in, well, I live in California and our power company PG&E likes to turn off the power all the time.
00:31:57
Speaker
Um, which is, that's a whole different story, but yeah, let's say the power goes off and I have this server running in my house. Well, now my app doesn't work cause it can't talk to that server. Um, or, you know, let's say like flooding comes through, whatever natural disaster, you know, the clouds got you covered. Like AWS has disaster recovery. They've got multiple data centers where you can sync your data back and forth. You know, you can automatically sync like your.
00:32:25
Speaker
uh, databases, for example, and have them automatically fail over. But yeah, for me, I think the biggest benefit is just anybody can do it. Um, you don't have to have thousands, millions of dollars to stand up a data center and buy servers. Um, you don't have to have this overhead of like security vulnerabilities. Cause if you, if you use services like, you know, Lambda,
00:32:53
Speaker
Lambda allows me just to write the code I need to write, publish it to the cloud, and it just kind of works. And I can rely on the engineers at AWS to keep the operating system up to date, the security, vulnerabilities patched. I can rely on the uptime. I don't have to manage any of that. And because they do it at such a big scale, an insanely large scale,
00:33:21
Speaker
rule large numbers means it's cheaper for us. So like the apps I have in the app store, I still pay about a hundred bucks a month to keep them up and running. But just buying a server would be thousands of dollars and then maintaining that and all the time that would take. I don't got any of that. So yeah, it's kind of democratized the ability to
00:33:47
Speaker
write software, create apps, and now everybody can do it.

Brandon's Role at AWS

00:33:51
Speaker
And we saw that. A lot of startups came around after, we'll say, the cloud was invented. Once you could just spit up a virtual machine in the cloud instead of having to have this huge investment, well, now I don't need any money to get off the ground, and I can start my business. So yeah, hugely, hugely beneficial. And it goes both ways because, you know,
00:34:15
Speaker
AWS isn't doing this out of the kindness of their heart. They've got to buy the servers and stuff, but they can cover their costs and it's cheaper for us as independent developers or startups and everybody wins. That's one of the reasons why I love or have been a developer advocate for mobile developers, but focusing on the cloud for so long because every app is going to need a cloud backend and
00:34:46
Speaker
And as mobile developers, we need those resources to learn how to do it. And I try to provide examples and give talks and host workshops. Here's how to do it. Here's some best practices. Here's the mistakes I made so you don't have to make them and try to get those things written down, get them into open source libraries, get them into blog posts, get them into videos, just so that the information's out there because we all
00:35:14
Speaker
We all benefit from the more we can share because if I spend three hours trying to figure something out and I can write a blog post on it, well now you don't have to waste three hours of your life. You can essentially copy paste my code or read my implementation. Sure. And hey, you don't have to worry about the scale if your app blows up either, right? Oh, like scaling a mobile app. Yeah. Yeah. I mean,
00:35:45
Speaker
Certainly, you know, be aware of it. Cause you know, cloud charges you based off of usage. So yeah, if all of a sudden you get a million users, that's going to be a lot more API calls. Uh, and you might see a bigger bill, but, um, but I will say, uh, you know, AWS is pretty forgiving on the first time. Yeah. There's a lot of people who try out cloud for the first time, forget that you leave a virtual machine running.
00:36:12
Speaker
and all of a sudden you get a bill for a thousand bucks at the end of the month and you're like, oh, whoops, I forgot to hit the stop button. You can always call support and if it's your first time and you explain it to them, they're pretty forgiving. But yeah, in terms of scale, they'll scale for you. They'll scale infinitely. Maybe you want that, maybe you don't. You can always toggle that to like say, only scale this much.
00:36:39
Speaker
But yeah, that was the other big thing, right? Like back in the day before the cloud, if your app went viral, you know, websites being down, mobile apps being down was a real thing because in the background, you've got engineers scrambling to literally install more servers and increase that capacity. Whereas, you know,
00:37:00
Speaker
Not that AWS has infinite capacity, but for all intents and purposes, it's pretty infinite. There's finite amount of people in the world. They've got enough servers there to cover most of them. So you've been with us now for about six months. How do you like it? I'm really enjoying it.
00:37:29
Speaker
Yeah, it's definitely a different culture than Microsoft. Like I said, it was at Microsoft for seven years after the Xamarin acquisition and actually helped startup. I was one of the first members on their Azure advocacy team. So coming over here, working with AWS as a .NET developer advocate,
00:37:54
Speaker
Lots of similarities, but just little things like Amazon loves writing stuff down or the culture in Amazon is very much like, okay, let's get it in writing first. And when I first started here, I was like, oh, can I just do it? I could be done by now, or I could spend a week writing this three-page document with charts and graphs and appendix.
00:38:23
Speaker
Well, I still don't love that part because my favorite part of the job is I love writing code. I love getting on stage and talking at conferences. I love hosting workshops. But what I've at least come to learn and find out is when you write stuff down, once it's defined, once it's, well,
00:38:47
Speaker
Once it's written down, it can be reviewed. And then once you get input from a couple of folks, you can really start to polish this idea to the point where when it comes time to execute, it's super easy. Like one of the things I'm focusing on right now when I'm not traveling is working on improving the docs with, you know, specifically for .NET developers, but also
00:39:16
Speaker
all developers, so I'm going at it through the lens of I'm a .NET developer, I'm trying to create a S3 trigger in AWS Lambda, for example, and as I'm going through it, I'm struggling and I'm an AWS employee and I can't really find where the documentation is or where code samples are.
00:39:40
Speaker
Um, so taking those lessons learned and working now with the docs team and a couple of folks on the developer advocacy teams, um, to, to help improve it. And so, um, and so hopefully, uh, once, once we get some improvements going that it'll make everybody's lives better because, you know, I just, it took me about five months to learn that we had this comprehensive
00:40:08
Speaker
set of samples for .NET developers for AWS. And like, why are we hiding these? Like, let's make it front and center. Like we should have big red neon signs with arrows saying like, click here. This is where you can find everything you need. Um, cause you know, when I was making my first AWS backend, um, I tried to find him couldn't.
00:40:31
Speaker
And then, you know, Google eventually took me to some what I'll say random blog posts, you know, not, not AWS official blog posts, which was really, really helpful. And I appreciate the, uh, the writeup, but you know, my process as an engineer, as a developer is I try to, or I do, I go to the source first. You know, if I'm doing something at AWS, I'm going to look at AWS as docs because
00:40:58
Speaker
They should be latest, greatest, up to date. And then if I can't find something there, then I kind of go out to go out into the wild. And that's where I'll source, you know, try and find information on third party blogs or anything like that. So. So, yeah, it's been a lot of fun. Everybody at AWS is super, super kind and learning that culture where
00:41:25
Speaker
writing things down, like writing down exactly how I'm going to execute this .NET Docs improvement project has been interesting because I'm an engineer because I don't like writing. My mom was actually an English teacher, so she hates when I say that, but yeah, I like writing code, not necessarily writing down execution plans.
00:41:53
Speaker
But no, it's definitely something I've kind of learned to appreciate. And yeah, it's been a lot of fun. I will say, yeah, it's been about five months.
00:42:08
Speaker
six months, seven months, a couple of months, less than a year. And I just kind of now feel like I'm getting my legs underneath me and chatting with a lot of folks in AWS. Uh, you kind of hear a similar sentiment like, yeah, it took me about a year till I figured everything out. Like where, where to go if I needed something or who to ask if I needed something or just how to get little things done. Like, you know,
00:42:35
Speaker
the, all the other things that come with your job, right? Like I didn't realize I had to do things like enroll my HSA through fidelity and like little things like that, like, or how do you find your play stub and all that admin stuff. But yeah, I'm really enjoying it. I'm very, yeah, very glad to be here. So if all the shiny new things you got to play with, what's your favorite AWS service?
00:43:04
Speaker
Ooh, good question.

AWS Lambda for Mobile Developers

00:43:06
Speaker
Um, I love serverless and a lot of this is because of my, um, mobile background and my say independent developer background. But, um, yeah. So the serverless offering at AWS is called Lambda. So.
00:43:26
Speaker
I've already mentioned it a couple of times, but, um, it's great cause I, like I said earlier, like I don't make any money off my apps, but they still need a cloud backend. And so what I've kind of figured out is you can use serverless APIs. So, um, write some code that you need to execute in AWS lambda, publish that to the cloud. And that code's only running when you need it. So only when my mobile app launches, we'll call that API.
00:43:55
Speaker
And if all of my users are asleep, then what AWS does with Lambda is they spin those resources all the way down. So there's no code running on any server. It's still listening. It's still anticipating the API request. But what's great about that is when you're not using any resources, you don't get charged for resources. And so your bill at the end of the month is a lot cheaper than if you
00:44:22
Speaker
you something like elastic bean stock, which is also great, but you're essentially reserving. You're reserving a CPU, you're reserving memory on their servers and that's yours. You can do whatever you want with it. You got, you own it 24 seven for as long as you keep that subscription, but
00:44:46
Speaker
maybe nobody's using it. Maybe all your users are asleep. Or maybe you have this seasonal app like taxes. Like we all in the US have to submit our taxes this week. And that's very seasonal. Like I don't know many people who are doing their taxes in October, November. But yeah, if you paid for a service like Elastic Beanstalk, well, you still got that CPU, those cores, you still got that memory all reserved for you.
00:45:16
Speaker
whether users are using it or not. So yeah, my favorite's always going to be serverless for that reason. And I highly recommend it to any other folks who are looking to create their first mobile app. You don't have million dollar venture capitalist funding. You just want to make something for free and play around with it. Lambda is super, super cheap. Like my serverless bill is usually around
00:45:44
Speaker
like usually less than a dollar for my mobile apps to have a couple hundred monthly active users. But most of the costs that I get hit with from the cloud is for database usage. You still have to store that data somewhere, but at least your APIs can be cheap.

Brandon's Contact Information

00:46:05
Speaker
So I can imagine working in developer relations, you're pretty active on social media. Where can people get in touch with you?
00:46:13
Speaker
Yeah, you can find me on Twitter. My handle is TheCodeTraveler. And that's still the best place to find me. Twitter's not been great lately, but I do appreciate that. We still have our little tech community in there. So yeah.
00:46:33
Speaker
You can find me on Twitter at The Code Traveler. I also have a website, codetraveler.io, where you can keep up to date with my latest blog posts. Again, .NET, mobile, C-sharp stuff. That's what you can find there. Sure. Actually, if you can send me those afterwards, I will put them in the podcast episode notes so people can get in touch with you.

Closing Remarks and Listener Engagement

00:46:58
Speaker
Well, Brendan, it's been an absolute pleasure, as anybody who's listening can probably tell by the amount of times I've been laughing at this. Great to have you on the podcast, and maybe we'll have you back sometime else to talk about more on mobile development. Love it. Yeah, thanks for having me, Tom. Thanks a lot, and we'll catch up with you next time.
00:47:23
Speaker
Thanks for listening to this episode of the Basement Programmer Podcast. I really appreciate you tuning in, and if you have any feedback or comments, of course, send me an email. Also, please consider subscribing. It lets me know that you're enjoying this production. I'm looking forward to you joining me for the next episode of the Basement Programmer Podcast. In the meantime, take care, stay safe, and keep learning.