The Modern .NET Show

Episode 106 - fimi.market and The .NET Tech Stack with Miguel Adwin

Sponsors

Support for this episode of The Modern .NET Show comes from the following sponsors. Please take a moment to learn more about their products and services:

Please also see the full sponsor message(s) in the episode transcription for more details of their products and services, and offers exclusive to listeners of The Modern .NET Show.

Thank you to the sponsors for supporting the show.

Embedded Player

Episode 106 - fimi.market and The .NET Tech Stack with Miguel Adwin
The .NET Core Podcast

Episode 106 - fimi.market and The .NET Tech Stack with Miguel Adwin

Supporting The Show

If this episode was interesting or useful to you, please consider supporting the show with one of the above options.

Episode Transcription

Hello everyone and welcome to THE .NET Core Podcast. An award-winning podcast where we reach into the core of the .NET technology stack and, with the help of the .NET community, present you with the information that you need in order to grok the many moving parts of one of the biggest cross-platform, multi-application frameworks on the planet.

I am your host, Jamie “GaProgMan” Taylor. In this episode, I talked with Miguel Adwin about his personal history with .NET, and how he has been a self-taught developer from the earliest days of .NET all the way until now. We also talked about why he picked a tech stack which was 90-96% .NET for his most recent project: fimi.market.

Along the way, Miguel shares some absolute stellar pieces of advice for all developers, regardless of their journey; with a few perfect pieces of advice for juniors and those who are starting their journey right at the end of the episode - so stick around for that.

So let’s sit back, open up a terminal, type in dotnet new podcast and let the show begin.

The following is a machine transcription, as such there may be subtle errors. If you would like to help to fix this transcription, please see this GitHub repository

Jamie

So the first thing I’d like to say, Miguel is thank you ever so much for being on the show. I know that you are an incredibly busy person. Me, not so much these days. But that’s my problem, not yours. And we’re across pretty much all the time zones when we’re talking. It’s like five to six hours apart. This is wonderful. I love the internet.

Miguel

Thank you. Thank you for having me. Definitely. I’ve listened to you for quite some time. So it’s a pleasure and an honor to be on your show.

Jamie

Thank you very much. Thank you very much.

So for the folks who are tuning in, they’ll have seen the episode title and stuff like that. But I was wondering, would you mind giving the folks who were listening, a bit of an introduction to the work that you’re doing and how you got into development and all that kind of stuff? Is that okay?

Miguel

Yes, yes. Perfect.

So hi, I am Miguel Edwin, I am the CEO of Femi market, Inc. We are a tech company focused on web3. So we are in crypto, we are in NFT’s, etc. A bit about me. I’m Jamaican, born and educated, raised. And you know, that is the depth of my background where a lot of my own beliefs come from. That is where I got interested in tech. That is where I was introduced to Microsoft technologies way back when the.NET Framework version one came out. And a few friends of mine got the first version on CDs. And I started tinkering around with it. Those days, I was using ASP using VB script. And this was a game changer. Because we weren’t using you know, all these assemblies and stuff. And it was something completely different. That’s when Visual Studio came out. So that was really the beginning of the love of the.NET Framework. And fast forward, you know, quite a number of years later. We are no longer tied to Windows. And we are cross platform using different databases. It’s a completely different world now in the.NET Framework in this ecosystem.

So yeah, so that’s pretty much something about my tech life. I have always been an entrepreneur, I have always loved Microsoft technologies and used it as my go to whenever I’m developing.

Jamie

I like it. Yeah. I remember my personal introduction to the .NET technologies was when I started the university. And they were like, “right. Before you can start doing any of your assignments or your homework, you need to download this five gigabyte set of ISOs. And once they’re burned to disks, you can install everything.” And yeah, so that took about a week and a half. compare that to: download the Visual Studio web installer, it’s, you know, a couple 100 megabytes, you run it, tick a few boxes and installs as it downloads, right? So it’s like, this is brilliant. You can almost be working with it. And that’s if you want to use Visual Studio, I tend to use Visual Studio Code for a lot of stuff because it’s quite small.

Miguel

I actually use Rider.

Jamie

Oh, yeah, yeah. I use Rider a lot too. But when I’m working on something really small, like I’m putting together a console app or something. I use Visual Studio Code because it’s like one file or if I need like the refactorings of things and moving files around then, you know, rider is my go to experience. It’s so much smaller, and it has Resharper built in right. It’s wonderful.

Miguel

Amazing software. And I’ve been using Rider as a matter of fact, since it came out. I’m also that early adopter kind of kind of person. And when it works, I stick with it.

Jamie

Absolutely, absolutely. So I’m a contractor. Right. And so I jump from client to client. The only problem I found is that clearing out Rider’s internal cache of the code you’ve just worked on, it’s kind of hidden away, right? When you click on the button, it just restarts the ID, which is something that I need to do quite often as someone who jumps from client to client, right? I don’t want to be taking a laptop to a client site and saying, “here’s your code. Here’s your project.” And suddenly there’s some other project that’s cached. So that gets a bit wobbly, but that happens with Visual Studio too. So it’s like you can’t say that it’s not just a Rider problem. Right?

Miguel

Definitely.

Jamie

‘Cos it’s got to be cached somewhere. Right?

Miguel

Definitely. And you know what one thing that is a minor annoyance for me with Rider still to this day is it doesn’t handle very big files well. So if you open a large file it will corrupt your system, you know, but I rarely do that. So it’s neither here nor there. I just open it in Visual Studio Code and move on with life.

Jamie

Sure, yeah. I found that as I’ve moved more towards microservices based architecture, I don’t open so many solutions that are huge these days. Because I tend to separate things out to like, “here’s a separate solution for that one microservice. And here’s a different solution for a different microservice.” And then that way, everything’s sort of self contained. But yeah, I can imagine that if you’re working on say, a Maui app, or a huge nTier architecture system with like domain driven design everywhere and all that kind of stuff, he would very much slow down your system.

Miguel

Let me let me say this before I get angry emails from the JetBrains. Guys, they have improved that. So I have opened very large solutions. And it’s very, very quick. No, I was actually referring to the fact that if you have a really big JSON file that you’re opening, yes, the memory allocation doesn’t work that great with that. But overall JetBrains, you have written a fantastic product and improve that over time.

Jamie

Right? Yeah, I see what you mean. Yeah. Yeah.

I remember, there was this project that I worked on years ago in the.NET Framework 3.0 days, where we had to deal with creating, parsing, and passing around really big XML files. And if I wanted to open up an XML file in editor, I’d drop out Visual Studio - like close Visual Studio - I’d open up Notepad++. Because at the time opening the XML with Visual Studio, it would load loads of tools, and it’d be like, “let me visualize this for you.” And I’d be like, “no, I need to change the value of one property field.” I could have changed this file, save the file, recompiled the app and shipped it in the time it’s taken you to show me this Visual Studio? Oh, well.

So you started with some VB script and some ASP and stuff like that. And you’ve migrated over the.NET Framework, and then followed it through with .NET Core and .NET 5 .NET 6, [.NET] 7 whatever. I’d love to know if you have any opinions about how this all changed. Because I feel like you and I are very similar vintage. And that’s because we’ve seen it from the beginning. We’ve seen this like. So from my perspective, when people used to ask me what is.NET Framework, I would say that it’s something to allow you to do rapid application development, right? I feel like it’s, like .NET itself has had rapid application development throughout his life, right? It’s had this process applied to it, whereas things like C++ is almost equally as old. But it’s, and maybe I’m sure my bias is here. But like C++ is really hard to use.

Miguel

Well, you know, what, my history? Um, well, let’s talk about the vintage first.

You know, I remember, back in the day I would code in Dreamweaver, do you remember Dreamweaver? So Dreamweaver was my was my app of choice using ASP. And I remember we had a choice in ASP It was either you choose VB script or Jscript. And I chose VB script because I found that to be, you know, an easier, more readable language for me at least. And as a matter of fact, this was the first language actually really started learning. And, you know, we were using VB script, ASP, Microsoft SQL Server, and running on IIS.

Now, if we fast forward to.NET Framework coming out, and they introduced C#, and you mentioned the fact that, you know, well, C++ has been around for a while. I mean, let’s let’s give the C++ guys their credit, right? Everything is C++, you get your deals, but where use ability is concerned and abstracting away a lot of those things. I think C# is king. So actually started using C sharp when the.NET Framework came out and left VB script behind. It was a completely different world for me.

But it’s interesting, you can always tell when a company is throwing their weight behind the language. And you could see that C# was going to be the language of choice. And even though what they tried to do they try to placate everybody and actually came out with VB with the.NET Framework; but as you could see, the community was so heavily weighted towards C#. It was kinda ridiculous. So if you were stuck in in using VB as the years ticked on, you actually got less and less as community support, which is really beneficial when you have an ecosystem, to be able to do some quick searches on how to do something, and you’re finding the solution in this different language is not very helpful for you.

However, the beauty of.NET Framework is - and this is becoming a Microsoft commercial. The beauty of.NET Framework is, when they came out with.NET Framework, we we at that time, we could use both languages. So I could write an assembly in C#, and I could consume it from VB. So we still had that little interoperability, which was a game changer. You know. So now that we’ve gotten to .NET Core, it is the Holy Grail, in my opinion, where we were my laptop setup was always SQL Server. They had SQL Server Express, which you could use in your development environment. It was Visual Studio, using C#, and when .NET Core came out, that’s when I could kind of cut the Microsoft chord a little.

So I started because back in the day, you always had PHP developers, and I’m pretty proficient in PHP and their LAMP stack. And one thing that as a Microsoft ecosystem developer, one thing that I envied was their ability to deploy apps in such a cheaper manner. And in such a faster manner also, and when .NET Core came out, and it opened up the world of Linux to me, so now I could actually deploy my software on Linux, I could actually use Nginx. And not as I could actually use different databases, and everything runs performant. And my code actually runs on Linux, this is fantastic. So what I personally did was I started moving away from SQL Server. And I gravitated towards Postgres, eventually, PostgreSQL.

I lived some life with MySQL, Maria dB, which is pretty much my SQL anyway, you know, and I tried a few others and I settled on Postgres, you know, for for the performance, you know, the speed memory management, etc. And that’s really what my stack is. Now I’m using .NET Core, C#, PostgreSQL as my database. And we’re hosting is concerned, I often hosted on containers, or I just use Azure App Services.

Jamie

And I think that’s the important thing about the new .NET, right? Both .NET Core and .NET Five, Six, whatever you want to call it, there was something that was something that Scott Hunter - who was at the time PM of .NET, and all the other related things. In the first .NET Community stand up, when they were explaining what .NET Core was going to be. And it was called like .NET vNext at the time, Scott Hunter quite literally said, and I looked up while we were talking - I was listening, honest. Because it’s in one of the earliest episodes of the podcast, he said, “Linux servers, I want you to host your apps on Linux servers. That’s my goal.”

And there’s something that I think Scott Hanselman constantly says in some of his videos, I think it was about two years ago, he released a video when he said, “we fixed notepad. So it stored your files as Unix compatible, because there were some like Windows line ending characters that were not compatible with Linux and Unix.” And since then, he’s been saying, “like, use .NET. And use whatever application you like, if you want to use Visual Studio, do that. If you want to use Visual Studio Code, do that. Or if you want to use Rider, do that. Use what you like,” which is a wonderful way to think about it because we’re playing with Legos, right? And you don’t have to use Microsoft’s Legos, you can use Amazon’s Legos, or you can use Google Legos. Or you can use LAMP stack. Legos, obviously wouldn’t be LAMP stack. So it would be your Linux, er…

Miguel

That’s not a word.

Jamie

Yeah, I’m just trying to think of what the… Linux, Docker, .NET, and a database. So

Miguel

LDDD

Jamie

LDDD.

If people start using that phrase right now in their conference talks, it’s because of me

Miguel

It came from Jamie.

Jamie

that’s it. I’m only messing folks. I’m only messing I’m only messing.

I think that was one of the great things about this continual evolution of these tools. Like you were saying about how you could tell that Microsoft got behind C#, you can also tell that they’ve really gotten behind .NET. So for those of you that weren’t around in the.NET Framework timeframe:.NET Framework could only have updates released at the same time as Windows updates, because Windows and .NET were so closely intertwined. To a point where I believe and I may be wrong about this, but I seem to remember Immo Landwerth an episode of .NET Rocks saying, “yeah, the kernel requires the presence of.NET Framework. So.NET Framework isn’t going away, ever.” Or rather,.NET Framework isn’t going anywhere, anytime soon, because Windows requires.NET Framework, right? That may change. I’m not a Microsoft employee, and I don’t represent them at all.

But because of that, the evolution of.NET Framework slowed down. So every time that they made a change, they had to think, “there’s 15 to 20 years of applications out there that require this change to not be there. So how do we test that? And how do we not break all of the Windows machines in the world ever?” And so testing all of their code changes, took loads and loads and loads of time. But now that we’ve separated from that model, .NET Core or rather .NET, is now separated from Windows. So they can rapidly release whatever they want, whenever they want. Which I think, not necessarily for startups and entrepreneurs like yourself, but for big enterprises. I feel like that’s really scary. “So you’re telling me that I’ve spent a million dollars building my app. And now I’ve got to spend another million dollars next year?”

Miguel

I tell you what, though, the Mono, when Mono came out, that was actually what set us on this path.

I know that one of the hardest things, when we were deploying software back then was the fact that it was such a huge deployment, the file sizes were so huge. And, you know, when when Microsoft decided to start taking a deep look at Mono, and actually start integrating it. And they saw that they could actually do that decoupling, where now we can build a modular framework, right. So when they started pushing .NET Core, they started saying, “only take in what you need,” versus the.NET Framework where you had this huge package. And you needed almost everything to get your app to work.

Now they said, “okay, fine, here are these little bits. And if you’re not using the security bit, then don’t include it.” And that cuts down on your file size, so much greater than ever before. So I can thank the Mono guys for that. And as a matter of fact, I was also an early Mono user, because I started with it before they became Xamarin. It was MonoTouch, right? And I coded using MonoTouch, and I found it fantastic. And I thought to myself that this is going to be the future. I didn’t see Microsoft buying them. And I didn’t see Microsoft actually, because Microsoft was never known as being open source. It was never known as as being that company that would allow you to actually contribute. So it’s really a completely different world now, and I love the direction they’ve gone in.

Jamie

Yeah, it’s another Hanselman quote. But he said something like, “Microsoft and the enterprise. It’s like an oil tanker: it turns but it takes a long time to turn.” And I feel like you’re right, they’re leaning towards this open source idea. Because they’re not going to make any money out of .NET. Right, or they never did make any money on .NET. Or rather, my assumption is that they never made any money with .NET. They used to make loads of money with Windows. And from the reports I’ve read recently, it’s all about Xbox and Azure. So it makes sense that they’re going to be like, Hey, here’s some tools to make your life easier. Just use them. And if you happen to host them as your fantastic if you happen to also go out and buy an Xbox also fantastic. Also, here’s a bunch of stuff for free. Just use it. I feel like they would create this stuff internally anyway, right.

Miguel

That’s true. That’s true. And as a matter of fact, Findlay market, we have an NFT marketplace as our first product. And we are completely hosted on Azure. So we use all Azure services currently. Well, let’s talk

Jamie

about that a little bit. So you’ve got fimi market, which is an NFT marketplace. But like, did you have to go with .NET? I mean, I’m sitting here waving the .NET flag with number one fan on saying, Why did you go with .NET? But like, you were saying earlier on how you’re proficient with PHP and envied the LAMP stack? But was there something about .NET and all that stuff where you were like, Nope, it has to be .NET and C sharp, and I’m putting my foot down because I’m in charge and I’m waving

Miguel

the flag with you. Right here Give him a flag with you. So we always have choice. There is there’s so much technology out there, there’s so many stacks that you can put together. Being a C sharp lover, and somebody who is very proficient in C Sharp, it is my language of choice. I typically watch where Microsoft is going. And when I started loving, loving the direction, I said, You know what, there’s no way I’m leaving these guys. And, you know, true to form, actually, they went ahead, and they created yet another game changer in blazer, when they and again, you know, you’ve heard me say it again, I use the first version of blazer blazer, I use blazer from before it actually came out to public use. And, you know, it was it was a bit clunky, it was, you know, still being built, but I saw where they were going with it. And I said to myself, I will at some point, when we get to blazer in the browser, using Wesson web assembly, I will definitely be there. And I am, I am 100% going to build my first full web assembly software with it. So what happened was blazer came out, and actually built quite a number of applications using blazer server, since that was the first thing that was available. And you know, you’re familiar with blazer server, where it’s actually a signal our connection to the server that changes the UI. And we were waiting for a bit until the client side blazer came out. And client side blazer in my mind was going to fulfill the promise where I could actually leave a lot of my JavaScript work behind. There is nothing greater in my mind than being able to write C sharp for the browser, where you can do something as simple as I don’t know, monitor a button, click on the client side and actually do something. We we kind of had this now I know some people might be saying, Yeah, but we could do that in.NET Framework with the onclick event. Yes, but this is so much better. So I’m in the NFT marketplace, we’re streaming market, whilst it is not my very first blazer app. It is actually the largest enterprise WebAssembly blazer app that I have written. And I chose C sharp because it was competent. You know, it could definitely I know that it could it could tie in to my ecosystem, I know that it could provide the end user with the speed and security that we needed. So if you actually visited, you’ll see how a how fast it is. Because, you know, and I’m not gonna say it is that fast only because of Blaser. Because if you take a look at the majority of, of single page apps, single page apps tend to be much faster, because all you’re doing is making API calls, et cetera, you know, but just imagine as a .NET developer, being able to create, I would say 90%, maybe even 90 plus percent of your code base is written in C Sharp, and it’s running in the browser. And you’re doing client side coding, because for anybody who’s familiar with web three, and crypto, we still use JavaScript libraries on the client. However, the way that that we’ve architectured it, all the calls to web three are so small, really, that the majority of the work is done using the API using C sharp in the background. So yeah, so there was there was really, it was a no brainer for me to choose to choose C sharp. And the way that our setup is is we use C sharp integrating with TypeScript. So TypeScript has been my language of choice now for some time, because it really does take my stupid brain out of making JavaScript mistakes. There is nothing worse than chasing down a JavaScript error. So TypeScript definitely helps with that. So we use TypeScript, making calls from the client, Sue to the .NET code, the .NET code, also making calls to the client through to the web three code for certain bits of information and it’s a marriage. It’s a marriage made in heaven.

Jamie

Yeah, should never be discounted, how much more productive you can be in the tools that you already know. And being able to continue to do web development with what was traditionally server side language and still achieve the same goals. It’s mind blowing. Because you said yourself that you sometimes have issues switching into JavaScript, because there are things that it does that no other programming languages. Well, they don’t really do or maybe they don’t do in the same way, right. And my friend, Zack always says that people make fun of JavaScript, because he doesn’t do X and he doesn’t do Y. And that’s because they were approaching him from an object oriented programming language background, or something like that. And that’s totally fair, right? The same thing could be said for C, and could be set for go and could be set for insert programming language of the day name a year, right? It could be any one of those languages, if you’re approaching it, with a certain mindset, you’re gonna have a bad time. But if you’re able to approach the problem that you’re solving with the tools you already have, and be able to use those tools, then you get to be much more productive. And I really liked that. It’s like, I can’t think of a metaphor. Now. I’m usually pretty good at metaphors. If you’re doing some kind of woodwork, and you have a sore, and you’re used to using a particular sore, being able to use that same sore on different types of good, the you can probably cut the wood really quickly. I mean, that was a really bad metaphor, but point across, right.

Miguel

And that’s what they provided us. You know, that is, that is something that we have always wanted. Because right now, the over Microsoft world, is so much richer than what we I don’t want to say grew up with because that sounds weird. But you know, the world that we live in now is I can use C sharp. And I use it throughout my API. I use it throughout my clients like code. I use it to build my mobile app with Xamarin. I can use C sharp, pretty much all over the place right now, to get to get almost all bits of my interface and bits of my product written. And I can do it cheaply using some Linux boxes. This is this is the golden age, as far as I’m concerned for .NET developers?

Jamie

Absolutely. Can you imagine going back 15 years and saying to yourself, don’t worry, literally everything we do in 15 years time will be C sharp? No. It would blow your mind. Right? It’s pretty cool. Yeah, blazer Xamarin, all these different technologies. They’re just like, I read the other day, that if you’re running .NET, core 3.1 on a Linux machine, you’re actually running on the mono runtime, not a .NET runtime. Which makes sense when you think about it. I mean, why would you rewrite it just for Linux? But I was like, mind blown. I was like, really? We’re still using this technology that Miguel de Icaza first shipped in 2006, or 2007. Yes, sir. I can’t remember exactly what it was, though. And blazer is actually running on a mono runtime. Yes, it’s mad.

Miguel

Yeah, when they started, when they started experimenting with blazer, that’s exactly where they went right to the moral framework. So I am thankful to Miguel, my namesake for that, because I’ve followed his career for a while, and he’s a genius.

Jamie

He really is. Yeah, it really is. I mean, I don’t want to put words in your mouth. But would you say that female market is around 90%? .NET? Because you said that there’s some TypeScript in there, right?

Miguel

Yes, easily easily about that. The majority of the code that I write, I’m sitting in C Sharp. And right now really, with WebAssembly, what will be recommended approach is to try to minimize the coupling of JavaScript with the UI changes as much as possible. And so I do attempt to strictly follow that I say attempt, because we’re developers, you know, sometimes we just have to do some stuff. You know, but if you understand that, you know, the things that you can get away with, without, you know, having a change engine issue. So really, the majority of of the marketplace is, in fact, written in C sharp and very happy for that. Because what that means is, the developers within the company use their their skill set that they’re most familiar with, and the idea that any buddy who has written in multiple languages, I can tell you if I get a PHP project because I also consult like you, Jamie occasionally. And if I get a PHP project, I have to, I have to switch my mind, I have to get my mind geared up, because the moment I decided to put my finger to the keyboard, I’m going to I’m going to type nonsense. You know, so you have to get your mind into that mode. So I can tell you I’ve worked on when we’re looking at Spa frameworks I’ve used earlier, which was not let me see, knockout Jas is what it was, before it became earlier. And I decided to choose knockout because of how easy it was really. Now when you’re taking a look at either look using Orelia? Or what is the most what is really the most popular now? Is it Angular? is angular still the most popular?

Jamie

From my perspective, I would say it’s about a 5050 split between Angular and react and react. Yeah. Maybe that betrays the types of projects I’ve been working on. Don’t know write in and let us know folks.

Miguel

Yeah, so when you are when when I used to write code using spurs, and then I’d have to switch from because you already know that. Depending on how you write your code, you’re possibly using web forms, at some point, loading that up, jumping over to the SPAR framework writing in JavaScript or TypeScript, then coming back over so you’re dealing with your regular HTML, you’re dealing with your JavaScript, you’re dealing with your C sharp, and who knows what else that you have to learn in the background. So your brain is actually working so much harder in developing this one application. Now, I can do all that using C sharp razor syntax and C sharp, and I’m good to go.


ZOOM Platform, no not the video conferencing app, ZOOM-Platform.com! The premier DRM-Free games portal.

Unlike directionless larger stores, ZOOM operates more like a boutique offering all-time classics such as Duke Nukem, exclusive hidden gems like Hardwar and innovative indies like REKKR: Sunken Land. ZOOM will even take requests and hunt games down for you.

When ZOOM signs titles, they make sure to get every release, version, language, you name it. That’s how ZOOM carves it’s niche. ZOOM hand-scans box art, manuals and other bonus content and even records soundtracks. On top of all this, ZOOM always makes a point of securing rights to obscure expansion packs and mods. When you buy the ZOOM Platform edition of a game, you know you are getting the most complete and definitive edition.

ZOOM’s staff and technology are best in class. In fact, when competitors can’t get a game running on modern hardware, they go directly to ZOOM. They’re some of ZOOM’s best customers!

ZOOM provides unparalleled 24/7 customer service and closeness with its user base. ZOOM’s management interacts directly with customers via Discord. They take their small business approach seriously. ZOOM-Platform.com, your friendly neighborhood DRM-Free games store!


Jamie

It’s amazing. Yeah, I feel like it makes me more productive. Because like you say, you’re not having to context switch across different languages, you can make the argument that you’re supposed to know JavaScript, because you’re a .NET developer, or that you’re supposed to know this. And you’re supposed to know that, well, guess what some people don’t. And some amazing people are doing the mental gymnastics required to leap from one programming language, or framework over to another. Like you said, it’s quite taxing, and it really tires you out. And some people just can’t do it. And that’s not me saying is a good thing or a bad thing. It’s just that some people can’t do it. I feel bad for those people. I’m not trying to lose people. Being able to do just about everything in one language in one framework. I mean, that’s why we have the same thing with no JS, right? They can live on the server. And you can build an app that runs in your browser. It’s exactly the same idea. Exactly. One language in both places. But I think that .NET and C Sharp take that to the extreme right? Their whole thing was one code base everywhere. And I’m pretty sure that if I build something using blazer or .NET, Maui, that I can run it almost anywhere. I mean, I use it Linux desktops, I can’t run .NET Maui there. But I’ve been told that is on the way, exactly. We are literally one language, anywhere.

Miguel

The hybrid apps are where it’s at. And as a matter of fact, the first decision that we made with shimmy and the NFT marketplace is we decided to make it a progressive web app. And so right now, you can actually, you know, you drop the icon on your desktop, it loads within its own context. The one thing that is missing, I think, to make PWA is really stand out. And it’s an iOS issue mainly and they’re working on that is push notifications. And I can see that there is some hint in the code base for the next version, where push notifications will be enabled. And that now we’ll be another game changer for progressive web apps. Because I particularly love not being able not needing to write something for the App Store, that it really doesn’t need to go in the app store. You can install it on your desktop, you can start using it done.

Jamie

And yeah, I have this discussion with some juniors and people who are starting their journey and development a lot where they’re like, but I want to learn web. I want to make a desktop app and I want to make a video game. And I’m like, you could totally do those things, but also, they will be using the web, right? You just need to know what an HTTP get request is what a post request is. Maybe just know that G RPC exists, know what a PWA is. And you don’t go make your app, go make your game, go make your whatever. But they need to know these things exist, because at some point in their future, they’ll be using them.

Miguel

Well, you know what, I’ll add some information to what you just said for them. Unity using C sharp export into WebGL. Everything runs on the web. No problems at all, Microsoft.

Jamie

Absolutely. And as far as I’m aware, you can do that in writer on Linux as well. There you

Miguel

go. Because writer integrates perfectly with Unity,

Jamie

does the hitter. So let’s talk a little bit more about Fimi dot market. So you’ve got blazer web assembly running in the browser, communicating with JavaScript when you need to, you’ve got .NET technically on the server and the client. And you’ve said that you’re running Postgres. So again, I’m waving the Microsoft flag a little bit. Why Postgres versus say, SQL Server? Is it just that SQL Server is big and slow?

Miguel

I mean, I didn’t say it, but

Jamie

he’s really good at what he does. Right. I think just before you answer you real quick, I think that a lot of developers need to experience the different database engines. I’m not sure if that’s the right word on all these different database technologies to be able to understand the differences, right?

Miguel

Okay, so SQL Server is what we, and I’m going to use the term the span, that’s what we grew up with, as Microsoft developers, and we always knew it was big. We always knew it was expensive. So as a solutions architect and a problem solver, when you actually went to a business, one of the things that they had to consider, they had to consider, what is the license for my Windows Server? And then after they consider the language, the license for the Windows Server they have to consider Okay, so what’s the license for the for the database, which is Microsoft SQL Server, and before you know it, they have hit several 1000s of dollars. And I personally i, so like I said, I was I was born and raised in Jamaica. So there is a kind of a different, there’s a different system of economix there. And however, it’s similar. I live in North America. No, I live in the USA now. And small businesses, for example, still have issues with spending several 1000s of dollars on your operating system plus your database. And that’s just for start. So consider being in a developing country where somebody wants to expand their business, add technology into their infrastructure. And you’re saying, for example, well, your initial outlay has to be six or $10,000, before you even get moving. So that never ever sat right with me. And we needed a way to provide technology to those who actually are business leaders, they are helping, you know, they’re they’re, they’re adding to the GDP of the country. But how can they do that if they have these roadblocks, the roadblocks to entry in and of itself? So the moment I actually and we always had lamp stacks, but I was a Microsoft developer. Now, when we started getting the option, the option of branching out for databases, I immediately took it. Now before we get emails about the fact that Well, you always had SQL Express. Yes. Well, SQL Express had limits. I think the first version was it one gig, and then four gigs, per file, you know, so you always had those, those little limits that you had to work with. And yes, a small business could use SQL Express, but they’d still need a license for the operating system. So fast forward, now. We are talking about being able to use Linux, which is free. We are able to choose the database. And you mentioned, you know, several databases out there. So let’s just talk about some of the most popular ones, open source ones that people use, you have MySQL, and you have Postgres SQL. You have Maria, which is pretty much my SQL anyway. I tried all of them because I believe in knowing your tools so that you can make the right decisions. And I decided to settle on Postgres as a matter of fact, it’s interesting. The reason I decided to settle on on Postgres was actually not, it’s not my SQL fault at all. I think it was, I think it was, I was doing a project in .NET, Core three worlds at 2.1. Yeah, I’m trying to remember and their MySQL driver. What I was doing, it was causing all kinds of madness for my code. And every transaction was taking so much longer to process. And at the time, I was under the gun, and I needed a solution. And I was like, maybe 60% of the way through a project. But the queries I started writing suddenly started blowing up.

And I tracked it down to the implementation of the driver itself. And so I had to make a decision, do I try to fix this? Do I wait on a fix? Do what am I going to do? Or do I take another look at some other engines. And this is where the beauty of EF core, you know, transforming from when we had we always had Entity Framework from.NET Framework is, so I’ve been using this code, so I’m familiar with it. And what I decided to do was I started taking a look around, and I landed on Postgres. Give it a try. And, you know, kind of like what we spoke about earlier, the modularity of .NET Core, I was able to just swap that out using EF core code first, because I’ve always been EF core code first. So all I had to do was migrate my my schema onto Postgres. See my database, run, my tests worked like a charm, and I just kept moving. This is not something we could have done back in the day. And so the speed, the speed of iterating through software is so much better now with .NET Core. I absolutely love it. And, you know, like I said, it was no fault truly of MySQL. But I started using Postgres, it was so fast, it was so lean, it was so small, and I never looked back.

Jamie

To be fair, everyone, I’ve talked to who’s used Postgres for something for a personal project, or some big enterprise thing. They’ve said, Jamie, you need to really be looking at one of my friends said, I don’t care what your next project is. You do it in Postgres. Maybe I’ll look into it. But you’re absolutely right, the wonderful idea of just swapping, you were saying that you have this .NET app, which is talking to Entity Framework core, and there’s a driver layer that talks directly to your database of choice, swap that driver layer, and everything still works perfectly. I love that.

Miguel

No, no, there are little nuances. Right, but the nuances aren’t so much that it’s a deal breaker. You know, it’s kinda like, it’s kind of like the syntax, it’s like the difference in in Postgres, for example, is that when you’re running a query, the case doesn’t matter. So for example, you’re coming from your SQL Server days, you don’t really care that much about the case. But when you’re running, I like queries on Postgres, you definitely need to care about case. And those are just little nuances that you have to know.

Jamie

Sure, and those things you can pick up with experience as you go along. Right? Exactly. You don’t have to relearn how databases work, you don’t have to rewrite huge swathes of code. Like you say, you just have to make sure your queries line up with the things that Postgres cares about. Yes,

Miguel

then, yes, yeah. Jamie, you know, what, when, when we started using EF core, I remember I am the guy who I usually write my own libraries to make my future development easier. And I remember that, I used to write views, and then map the views in EF core, so that I could have a representation of the data that I wanted using my Microsoft SQL Server, that was an easy way to do it, you know, and, of course, when, of course, when when Entity Framework came out, we still had the idea of using stored procedures, we were very much still reliant on using stored procedures, etc. And, you know, the, the Convention was, well use the stored procedure because it will compile on the server and it will be much faster, et cetera. This is what we grew up with. And I can tell you, the only time I write queries now when I use JetBrains data grip. And that is the only time I write queries in my code. I never touch SQL. But yes, data grip is awesome.

Jamie

I feel like we’ve started gushing over JetBrains here. At data grip is amazing. If you haven’t used it, you need to it’s an IDE for your database. Everything. You got a JSON file, I don’t know. Yeah, okay. And you said in our chat before we did the recording that there is a CMS in there. And that is Parana CMS. It is. Now, I know that there are loads of .NET CMS is if I came to you and said Miguel, my friend, please help me. I need to pick a CMS for my .NET based application. Should I go with Umbraco? Should I go with cycle? Or should I go with? I saw the glimmer of worry in your eyes when I said cycle then should I go with Parana? How do I go about figuring out the answer? Man, as a man of experience, was it just we went with Parana? Because it’s our choice? And we’re the best? I mean, is that what you did?

Miguel

Well, you know what, let’s let me just welcome some more hate mail, then why don’t? Why did I choose Puranam, it took me some time to actually make that decision. I have been, I’ve been writing my own CMS for years. And I typically custom write it and iterate on that version throughout the years. And, you know, as as a guy who writes everything, and so Jim, I know that you can, you can attest to this fact, because it means that you have full control over the code base, you know, what’s in it, you know, what’s not in it, etc. And deep, deep in my brain, though, I always knew that I couldn’t do that forever. Because as your workload increases, and you take a look at actually iterating, your CMS, updating it at cetera, you find that your time that you’re spending doing that could be spent doing something else. And I’ve always been, you know, knowledgeable of these other CMS says, As a matter of fact, I remember, I tried .NET nook was the very first one that you remember that .NET nook was the very first one that I tried way back when, and I was impressed by it. But it had it had the same issue I always have with CMS is and this is from WordPress, on PHP, etc. It’s, it seems like this massive titan of a ship, when all I need is to pull some data. I rarely ever need everything that the state provides. And so your question about how do you go about choosing a CMS? You know, you ask yourself, what is it that you actually need? So the first thing is, I literally only need the data to display on some pages. That’s all I need. And how do I need to frame this data? Um, do I need images? Do I need to add a gallery? Do I, you know, what kind of features do I need in a rich text editor? Do I need to add polls to the site etc. And once you because knowledge, knowledge of where you want to go will help you in making your decision on your tooling. And knowledge of the tooling will help you in not choosing the wrong and so after I took a look, I decided a headless CMS was going to be the direction I don’t need anything too big needed to run on X software etc. And with the integration. And yes, I did take a look at Umbraco I took a look at a bunch of them. The reason I chose Parana was Purana simplicity and simplicity works for me when I when I personally looked at piano I thought in my head this is something I would have written and that’s why I chose it I took a look at whole their their design around x extending Parana is because you can extend Parana easily and yes, I know you can extend Umbraco you can extend .NET New get cetera. But just how small the implementation is when you pull down the default project for piano for example, it is what is it? It’s like 10 files 10 custom files that you can actually go in and start modifying. And it has a built in blog. It has Built in where you have regular pages. And so you can have sub menus. Within that, you can have a blog where you have an actual archive system. So for example, we, we were running a blog on WordPress before. And I’m transitioning that over to using Puranam. And it is so much faster. And as a matter of fact, let’s let’s get back into Postgres. I’m actually using Peruana CMS with Postgres SQL, and I’m storing the blobs on Azure, to keep them off the actual web server, you know. So it’s nice, it’s nice, it’s headless, it’s fast. It’s easy.

Jamie

I like it, there was something that you said about knowing that other tools are out there, and applying that knowledge to the problem that you’re facing, right. And my personal opinion is that someone who is a senior developer or higher, has enough knowledge of the tools that are available, such that they can go in and say, well, we could use this technology. But I can foresee that in six months time, we’ll have this problem. Because we had the same problem when I was building project X for client y. And we did exactly the same thing. Is that breadth and depth of experience, being able to say yes, okay, SQL Server is gonna cost you a lot of money in licensing. And then you’re gonna want to bring in a consultant to drop the price of that licensing. By making it more optimized. I’m pretty sure it’s still a thing, actually, that you can get paid like 1000s of dollars per day, by going into a big enterprise and saying, right, I can optimize your SQL Server, because $2,000 across two days is worth way more than the $25,000 truth at the end of the year for the server, right.

Miguel

And you know what, it all begins with curiosity to Jimmy, you have to be curious. And that’s one thing that has served me well, throughout my career. I am self taught, I remember when I when I started coding. And I chose ASP, it was actually I saw my friends using it. And I thought it was cool. And I went, Hey, show show that to me, you know, but you won’t get much further, without somebody actually pushing and guiding you if you don’t have that curiosity. And you won’t learn the tools unless you have that curiosity. You know, so So I have a friend who I often tell him, you know, if you want to make sure that you can be the best at this thing, when you get it, you need to start, you take it, you twist it, you open it, you look inside it, and you just go through everything, you create a solution in your head to just write some software. Right? It doesn’t have to be anything that makes any sense either. But you have to start using it so that at the point when you actually need to use it for your career, then you have the experience personally already, that you can go Oh, like if a dream is like, Oh, I know this, I’ve encountered this before. This is going to lead to this conundrum later on, let’s not go down that road.

Jamie

And I can attest to that idea of curiosity. One of the things that my dad used to do when I was growing up, you know, those old rotary phones, the ones where you’d one, two, only bought one of them was gave me a screwdriver and said, Take it to pieces. There you go. And put it back together. Now it wasn’t the world’s greatest experience as a six year old trying to take a phone to pieces or indeed, putting it back together again. But it was the idea of which way around the screw go. Is it lefty loosey, righty tighty. And then the backplate comes off and you’re like holy moly, what’s all this stuff? There’s all these cables and bits and pieces in that. And you can totally do the same thing with open source technology, right? You can just go to, you know, GitHub, GitLab, Bitbucket, wherever it’s hosted, pull down the source code, run it locally, stick a breakpoint somewhere and go, Oh, cool. That’s how it works. It works. I think that’s one of the great things about open source and the open source revolution is that you can do that. You just pull down the code. You jump in and say how does this work? Oh, cool. That’s how it works. But the only problem I find is that you can’t really ask someone why they’ve chosen to do that. Because if you have a large enough community that’s around a single project, there’s no one person that you can ask but why did you do it that way? For instance, in React right. Why are react hooks engineered the way they are? You have to go hunting around the internet and hope that someone has written a blog post. Oh, we did it this way because but yeah, I think you’re absolutely right. You say I was gonna ask you your top tip for anyone getting into the industry, but I think you just answered it.

Miguel

There was another bit I could add to that and say Be patient with yourself, because what gives you struggle now, what you struggle with now isn’t necessarily what you’re going to struggle with next year. And experience, you know, the definition of it is such that, you know, you really have to be using it. So that your the synapses in your brain start connecting in such a way and firing off that next year, it’s, it’s like second nature, you know, I’ll give you an example. Similar to your, you’re taking apart the phone example, when I was younger, I received the train, you know, the train sets with the real smoke. And I remember I was maybe around four or five, six or so because I started pulling stuff up way early. And I had been pulling that train up to figure out where on earth is the smoke coming? I couldn’t figure it. And I wouldn’t be running it and I’d be over it smelling. And I’m like, this smells like real smoke. Why are they doing this? And I’m gonna be honest with you, I pulled apart that train for years. And it was something that I could I could take that train apart, and I could put it back together without even thinking. And I kept doing it, because I could not figure it out. And I remember one year, I don’t remember how old I was. But I had gained enough knowledge about life and how heat works and how oil grease works, when and how it interacts, et cetera. That one day, I pulled that train up Jamie and I went, aha. And remember, this is something I’ve done 10s 20, maybe 100 or so times, and I was just dumped to it. And then one day I opened it. And I went, there you go. And I never I never pulled that train apart again. That was it. Mission accomplished. So one day, it will click you know, so just keep going. Just keep at it.

Jamie

I think that’s really important too. In my opinion, you need to have a certain amount of drive as well as curiosity. And and like you said, you need to have a support network, a teacher or a mentor or something, someone you can turn to and say I’m stuck, and I don’t quite get it. And don’t be afraid to ask questions. Yes, that’s one of the things that people who’ve listened to the show for a long time will know that I was a math teacher. Straight out of uni, there were no jobs. So I took teacher training and became a math teacher. And I used to tell the students, okay, How stupid do you think you’re gonna fail? Ask the question. There’s no such thing as a stupid question. The only stupid question is the one you don’t ask. Because then you don’t know why it didn’t work. And if you don’t know why, then you might not understand. I told them that even if they wanted to take me to one side and say, Jamie, I’m a bit stuck and just whisper it to me. I don’t care, we’ll figure it out. But when it gets tough, and so parts of development, programming, coding, whatever you want to call it, are super tough. You were saying that you were working with blazer, air of zero by one, right. And you’ve got Xamarin and Postgres in the mix, all these different things that you’ve leaped to, you’ve got all these different things that are vaguely new to you, or you are right at the bleeding edge of times are going to get tough, and you need to be able to have the drive to go is tough. And I will crack this eventually. And having that drive is so important. You can actually come back to the tough part and going up, I will do it today, I will get some help. And I’ll figure it out. I think that’s as important as curiosity, and having a mentor because regardless of where you are in your career, you can have someone who’s one or two steps past where you are, and have them give you the benefit of their experience. And guess what? Sometimes it’s free.

Miguel

I’ll tell you a story on that on having a mentor. I have a friend Harold Harold Campbell. And he was when I started working with him. I saw him like a wizard. His his grasp of the.NET Framework was just so lightyears beyond mine. I couldn’t imagine myself getting to his level. But, you know, he became a very, very, he’s a very close friend of mine. And he actually stopped using .NET code for quite some time. And I’ve been trying to bring him back to the fold. Because, you know, I’m trying to explain that it’s not the same old Microsoft, you know, but what Harold taught me is be patient with somebody who wants to learn. I was nowhere near his level, and to be quite honest, where I’m at now and how quick Yeah, I was able to ramp up with.NET Framework at the time. It’s all due to him. He was patient, he showed it to me. He, he, he showed me things that just looked like magic. But now it’s things that I do like without even thinking, you know. So it’s always good to have somebody, they talk about pair programming. But it’s one thing to have a pair. It’s another thing to have somebody who is just lightyears ahead of you, who is able to look at you and say, Look, I’m going to teach you this. You learn so much faster. And if they are patient and kindness, you can you can become so much greater than you ever thought you could.

Jamie

I like it. I mean, that’s the nugget of the episode right there. I think I really, I just, I can’t. I can’t really say anything else. I’m worried about ruining. So remind the folks about fimi market and let them know how they can maybe get in touch with you. Maybe they can get in touch with you if they have questions. Absolutely. And I’ll send them on to you.

Miguel

Absolutely. You can reach out to us on Twitter, our Twitter is Femi underscore market, let’s FYI, I underscore ma RK et, you can reach out to me, my email is m Adwin, ma D wi n, we, we like to make fun and say Medwin. So it’s m Adwin at Gmail dot market reached out to me anytime, really, if it’s just about information. Absolutely. However, we are in the web three space. And we do have an NFT marketplace where we are championing for unrepresented artists and people who actually do not know anything about the crypto space where you mentioned NF T’s to them, and they have no clue what you’re talking about. What we’re trying to do is make sure that developing countries and communities that need the opportunity to get it. And so that’s actually why for me market was created to make sure that that gap that that that that knowledge gap doesn’t exist where crypto is concerned, because a lot of developing nations and people from the diaspora etc, have missed out on technology, and have missed out on their ability, the opportunity to earn a living with the talents that they have their creative talents. And personally, you know, I’m tired of hearing the adage of the struggling artist, you have all this talent, and yet you’re struggling. So that’s a part of the reason, you know, we’re trying to provide opportunity and education for for underserved communities.

Jamie

I like it. So yeah, get in touch with Miguel and check out free meat market, if you know someone who can benefit from female markets, position and power that let them know. I love that. I mean, I don’t have the power myself. But being able to talk to someone who can say, let’s take this group who, for whatever reason, unrepresented, and give them the power to proceed with their lives and increase their enjoyment. And like, I’m worried about saying quality of life. And I don’t want to put a he is right, right. If I as a person, or you as a person, or someone else as a person has the ability to create a thing and sell it for some value of money. And guess what? You’ve just increased the quality of someone’s life. Let’s do this. Let’s help people. That’s why a lot of us got into this business in the first place, right? We’re in the business of problems and make a little bit of money. Sure. But my personal thing is that I’m here to help people when I can. So let’s

Miguel

do this. I’m with you, Jim. I’m with you. I’m with you. Thank you.

Jamie

Excellent. Well, definitely check out for me don’t mark it. I’ll make sure that the links are all in the show notes. So you don’t have to worry about oh, gosh, what was that link again. So definitely check out the show notes. There’ll be a summary of them and your podcasts or whatever you’re listening on. And it will have the links in there. And the full show notes will have a transcription and all of the links in there as well. So don’t worry about I’m driving. How am I going to write all this down? Don’t worry about it. I’ve got you covered. But what I will say Miguel is thank you ever so much for spending this time with me. I know it’s the beginning of your day. So you’ve had to start your day by listening to me rambling on at you in my horrible laconic nerdy voice. But I really appreciate you taking this time with me and the listeners. It’s been wonderful. Thank you.

Miguel

And thank you for the opportunity. I will continue this knew as I’ve always listened to you,

Jamie

I mean, maybe we compare the show with some unrepresented artists and help them to create and sell some .NET Core NFT’s, right? Why not?

Miguel

Hey, listen, Jamie, if you take a look at our at our marketplace, you’ll find such a myriad of artists, we can definitely get something happening for you. Oh, and we’re launching a virtual gallery soon, so you never know.

Jamie

Yeah, I like it. I like it. Well, thank you very much. Thank

Miguel

You have a good one.

The above is a machine transcription, as such there may be subtle errors. If you would like to help to fix this transcription, please see this GitHub repository

Wrapping Up

That was my interview with Miguel Adwin. Be sure to check out the show notes for a bunch of links to some of the stuff that we covered, and full transcription of the interview. The show notes, as always, can be found at dotnetcore.show, and there will be a link directly to them in your podcatcher.

And don’t forget to spread the word, leave a rating or review on your podcatcher of choice - head over to dotnetcore.show/review for ways to do that - reach out via out contact page, and to come back next time for more .NET goodness.

I will see you again real soon. See you later folks.

Follow the show

You can find the show on any of these places