How'd you like to listen to dot NetRocks with no ads? Easy? Become a patron For just five dollars a month, you get access to a private RSS feed where all the shows have no ads. Twenty dollars a month will get you that and a special dot NetRocks patron mug. Sign up now at Patreon dot dot NetRocks dot com.
Hey Carl and Richard here with your twenty twenty four NDC schedule.
We'll be at as many NDC conferences as possible this year, and you should consider attending no matter what. The Copenhagen Developers Festival happens August twenty sixth through the thirtieth. Tickets at Cphdevfest dot com.
Ndcporto is happening October fourteenth through the eighteenth. Tickets at Ndcporto dot com.
We'll see you there.
We hope it's dot net rocks. You scared you didn't I?
You know?
Said John Cleary the other day. He's so good, absolute monster, gentleman.
He is so good. God, I love that guy. Anyway, you're listening to net rocks. I'm Carl Franklin and I'm Richard Campbell and we're here for the nineteen hundredth and eleventh time. There you go, nineteen hundred and eleventh time. Yeah, so it's gonna be a good show.
World War One has begun, there you go.
Yeah, Archduke Ferdinand has been assassinated.
Yes, after several tries, and then he kept going out again Like what were you thinking? Doesn't matter? Now here's a grenade.
Oh, such fun with history we have. Let's start this show off right. We better know a framework. Awesome, bar man, what do you got? This is my official first announcement of an album with only five tracks that I have kept under wraps since twenty thirteen. Wow, I've just been waiting for the right time to release it. They have told me no, but I think you might have heard it. So this is an album of instrumental groove, chill jazz pop that I did with my friend Doug Wolverton.
Oh wow, okay, I know Doug.
Have you You've heard these songs right? Long time ago?
Ye?
So. Doug is a trumpet player. He's currently playing with Kenny Wayne Shepherd on tour, and he's a protege of Kurt Ramo, who plays with Bruce Springsteen in the EA Street Band and Kurt actually gave him connected us and we've been great friends ever since. Doug's played on my albums and my videos and you can see him at Franklin Brothers band dot com on a couple of videos. But anyway, we got together for about year year and
a half there and we just started making music. And this is the I'm not I'm not just saying this. This is my favorite project that I've ever ever been involved with, produced, written. All the music is just like it's all original. You think you've heard it before when you listen to it. And the name of the album is It's the Tone. It's the Tone, and the artist is Franklin and Wolverton. It is available everywhere you get your music, or it will be by the time this comes out.
Okay, so spot, you've finished your work now?
No, No, the production work was done. Really, I've just been sitting on it and waiting for the right time. And I released it on my fifty seventh birthday. Wow, because that is my father's fifty seven when he died, so this is a special year for me to survive. And so when we were making this music and I'm sorry to just keep going on about it, but The mantra for us was not listen to these notes, right, which a lot of music and musicians and performers they
have that in their mind. Hey, check out these notes that I played. But it's listen to this tone. It's all about the tone. So it's the tone. Go get it and let me know what you think of it. Everybody send me some email. That's it. That's what I got.
Cool, all right, we'll put the link in the show notes. When there's a link available.
Yeah, there will be. It's thetone. Dot com will be available, but you could just you know, search your favorite music solution for that. Who's talking to us today, Richard?
I grabbed a comment off a show's nineteen oh six. Just back in July, we were talking to Joe Finnie about WPF. This particular comments from John Dyer is only little while ago, where he said desktop is dead.
Is it true?
It really seems so? And Richard almost said so on the Lowie Blazer show back in nineteen oh three and again this show it's danced around. I worked on a dot net app started in the very beginning, shipped on one point zero. It was a fun mix of wind forms in WPF with the new UI and WPF. I don't think it was WPF at one point. Oh, that wasn't around till three point five. But you know, details, did we make a big mistake migrating to dot net core because now we're forced into the upgrades as versions
go end of life. Additionally, stuff that was automatically patches now in packages, forcing us to release new versions for co changes and on ours, mainly if it's security related. Okay, I'm done whining. It's been a fantastic ride.
Time to move on.
I mean, I've been dancing around the issues with desktop apps because I don't believe they're dead. They might be pining for the Fjords.
You know that. There's just something I got to say here. We have gone out of our way to avoid saying never use this, it's dead, don't use that, use this instead. We don't do that here. No, that's not what we do. We don't. Even if you think that we're hinting at that, you're wrong.
Yeah, it's not what we mean. I mean, we're not communicating with it's not what we mean.
Yeah, exactly.
But I mean what I'm abundantly aware of, and I've done it on the show and you've seen me do it is that there is a whole bunch of different desktop tool sets out there, which to me says it's an unsolved problem. Nobody would bother making an Avalonia or the silver Light as a web assembly solution open silver You know, why would all of this exist except that people are trying to find a good way to build desktop apps. Microsoft wants it to be Maui, but Maui's
still growing up. You know, it's still a little kid, really, And certainly they've seemed to consolidate a bunch of stuff around that, which is interesting, but it's bloody challenging. And when I wear my IT hat, you know, I'm the guy who looks at you when you want to deploy software and says you want to do what? Because browsers are are a good security context, So you know, I
know the barriers for deploying software is hard. You've got to really demonstrated reason for software to be built that way.
And we said this on that show. We said it a couple of times that the browsers have already figured all this stuff out right.
Well, a lot of stuff. They're also bad at some important things too, Yeah.
But they're at least consistent across the main three browsers.
Especially when you're talking about running on multiple platforms, which is the real life that we're living in today, right Like it's a heterogeneous client world, and then building multiple clients it's hard, which I think is going to lead us to our conversation today. When I think about no code low code solutions, it's about solving client problems. We'll get into that. So, John, I hope I cleared some things up for you. Thanks so much for your comment, and a copy of music Cobey is on its way
to you. And if you'd like a copy of music cod by, I write a comment on the website at donn at Rocks dot com or on the facebooks. We publish every show there, and if you comment there and are reading the show, we'll send you a copy of music co buy.
And people are still buying music to coy and it's great. I see you know. Orders come in every day or so a couple of days.
I've sent out a winner pack the other day and I got a message back a little while later. It's like I already had like the first eight, but I like the new ones, so they were excited to use it very good, good.
All right, Well, you know you can follow us on Twitter ex Twitter, I think is what I call it now ex Twitter, because it was Twitter and now it's not. It's something else. And we've been there for years, of course. But the cool kids are hanging out on mastadon. I'm at Carl Franklin at tech hub dot social.
And I'm Rich Campbell at masadon dot social.
Send us a twote. That's another way that you can get yourself copy of music to God by absolutely all right. Let's bring on our guest season. Software developer, architect and entrepreneur with a quarter century of experience building large scale enterprise applications for major telecommunications and transportation companies with dot net and type script. Serge Sarah Fudenov is the creative
mind between Zomega dot net. That's x O M E g A dot net, Zomega dot net, a low code platform for dot net developers, and the open source Zomega framework. Off the clock, you can find him across the net developing his backhand and forehand and serving up aces on the tennis court. That's a very nice bio. Very good.
Welcome, serge, thank you, thank you so much. And thanks for inviting me here. I've been a longtime listener of the show, and now it's an honor to be a guest here.
You're welcome. When I think about what's on the minds of our listeners when we talk about low code or no code stuff, you know, a lot of them are our age, and by our I mean Richard's and my You look a little younger than us, but that's neither here nor there. And they've been through a lot of these things, and I think people are rightly skeptical of these especially when you think of our experience has been. We jump in, we're very productive, We get going, and
then oh, we want to modify something. Oh does it allow me to No, Now what do we do? So get it? Hitting that brick wall is what I think everyone is afraid of. So with that in mind, the floor is yours. Give us the pitch.
Well, yeah, when you ask silicon vallee entrepreneur like why they're building their product, oftentimes you might get an answer to make the world a better place. With Zamiga, I would say that we want to make the world a better place for dot net developers and their clients.
Very good. So, and let's face it, really, Silicon Valley doesn't want to make the world a better place. They want their bank accounts to be a better place, better place. That's really what they want, right.
Yeah, And with the other tools, there are a lot of other tools and local platforms that try to help you build your applications faster. What Zmega tries to do is to help you build faster, high quality applications with the best practice architecture, with the consistent user in phrase and user experience, and that are easy to maintain and get that you know, future proof, so that you can easily change it, you know, and migrate to a new
framework or technology once that comes along. And given the current pace of technology, you know, like if you start a new project, a big, large project multi year with a brand new framework, you know, brand new technology, cutting edge. By the time you finish it, sometimes this framework is already obsolete. You know, it's already you know, it's history.
So does Zomega use sort of black box things or does it Is it a code generator or a little of both? Like uh, I'm I'm more on the side of code generation because then I can at least look at that code, see it, modify it, put in my points wherever I want. What what what's the experience?
Like, Yeah, this is a code generator. It generates code, but you know, like the typical code generator, like there are source generators, they generate code that you does not user friendly. You don't want to read that, you know, you don't want to You can go and debug it, you know, if you.
Want to write only code.
Yeah, but it's basically isle of you know, gibber is that you don't want to look at, right, And what we do here is the code it generates is basically the code you would have written yourself down to, even like the comments, you know, it has the comments structured. You know, it's a formatted like this is basically saving you from writing that code like the boilerplate code as they call.
So and then that means I can edit it because I can probably read it. But does that mean and it's no longer manageable? Like what happens now?
Yeah? And yeah that's a major question. You know, once you generated, you know, can you touch it? And the question the answer is no, generally you don't want to edit it.
Right because you do want to be able to regenerate.
So yes, exactly The idea behind it is that it's designed in such a way that it provides customization points for you. You can subclass, you know, in a variety any methods. You can even insert your code in certain places like to customize it.
Right, that's what I wanted to hear. Yeah, but you because you know, a perfect example is if it's creating an API controller, right and it's injecting all the stuff, but you want to inject something else. Yeah, you know what I mean, now you've changed it. How do you do that?
Yeah?
That's the kicker, you know, Like you want to be able to regenerate, like make changes, and that's going to be so easy on the maintenance theant because okay, you can just you know, go and change the underlying model that's generated from I.
See, and then regenerate. So it's not like you're messing around with the code at all. You're still working with the model and the code generator. But you can do can I say anything that you can do in code with the model generator?
Pretty much?
Yes?
I mean sometimes, like with the UI views that you generate, you want to change the layout completely and you can just you know, say, okay, I'm going to take over that file.
And yeah, there's architecture issues too, right, I mean, if you start out with a client project and a server project, a web project, let's just say, and then you want to sort of tout to put a shared project in between those that has some models or some things that do stuff. Is that something that you can easily modify in your model designer?
Yes, yes, the model allows you to change like actually, it makes you kind of like model your application, like you build your domain models, you build your service models. Yeah, even the presentation models. And that's all like an XML. I know Carl's feelings about XML, but.
Hey, as long as I don't have to edit it, I'm fine. Yeah.
Yeah, you can generate all the XML you want. I don't have to read it. I'm happy.
Yeah, I can use you you I to do that, right.
Yeah, but I mean it's it's still nice. It's an experience for developers to update the models. But then you generate pretty much like the entire applications, like all delayers from the business services to like interfaces, view models, views, and you can do like tons of other things you know that you can generate. It's extensible, so you can bring more generators to generate.
So you really focus on the architecture and let the model do the dirty work, the model designer.
Yeah, and the the idea behind the platform is that it will allow you to generate to use the architecture with the best practice development practices baked into the development process.
So it's opinionated.
Yeah, so yeah, I mean, you know, like separating business logic the UI logic. It's been around for a long long time.
Yeah. I didn't say it was bad opinion.
Yeah, people have been moving to like multi tier applications back in last century and there was service oriented architecture, the main driven design.
Welcome to the history of dot net right here.
Ye, lean architecture, et cetera, et cetera. And these are all good best practices as long as you follow them.
Right right, don't get technical. Now, we waived at it at least.
Yes, But oftentimes what happens is like, as a developer, you get a request to like build a new application. You know, you start with a prototype, build like a proof of concept. You go quick and dirty, and then you work on this demo, make try to make it realistic, and then the demo goes well, you know, in fact, so well that people, the stakeholders don't even realize that it's not a real.
Thing, it's a demo. Yeah, they want to employ it.
And then when you come back to them like asking like all right, we need you know, the big budget, you know, for actually doing it properly, they would say.
Like, what do you mean, I already saw the demo.
It's done like a share We've seen it working, you know, like it just fixed the rough edges and you know, And that's how a lot of projects end up being because I mean, maybe you'd be okay if you just hand it over to someone else, you know, and making someone else's problem. This is just going to be turning over technical debt, and the technical debt will come do fast because the maintenance will become a nightmare, you know.
The changing the architecture will be next to impossible. Migrating to a new U I framework will be problematic if the business logic is mixed in with the UI logic, so you may end up having to do the full rewrite if you need to modernize your system down the road. And I guess the issues with you know, using the best practices is that people need to have some learning curve. You need to have knowledge developers that are familiar with
the best practices. There is sometimes too much ceremony, you know, with all these interfaces that you have to build on, implementations and everything, and that eventually is the upfront investment that you know, business needs to make, and sometimes they are not willing to and so Omega is trying to alleviate that and bake in, you know, the best practices at the fraction of the cost by enforcing these architectural principles and generating you know, all the code for you
so you don't have to manually maintain all the interfaces and stuff.
So can I ask about the different types of dot net projects that you can create? Is it all core only or do you also support dot Net framework apps?
No, it's actual it can do anything. We started it a long time ago and it actually held the well, you know, over the years. We can talk about the history you know it came to be, but.
I think anything pretty much covers it. Yeah, so it'll generate a Python app.
Is that what you're saying?
Anything, Well, it can if you need to, but we have the we have a generated typeescript.
Okay, so fully web if you want to go that way.
Yeah, you can do anything. We just happened to use dot net and have dot net framework that is the most advanced there.
So what clients can you produce for me?
Right now? It supports from WPF web forms, a sp dot.
Net, Blazer. I saw.
The SPA applications script, Blazer server and Blazer web assembly and the unified Blazer.
Uh all right, So here's the question that might stump you. Maybe I'm hoping it doesn't. Authentication authorization. In the various models and scenarios that with which you can do that, are they all supported?
Yes?
Uh?
Not? Well when you say all that's a big statement.
Okay, Well, you know you have the individual accounts using Microsoft Core Identity, you have Identity server that can put itself in there. Sometimes, you've got M S A L, You've got what do they call azure B two B now as your ad A D B two B intro and yes, yes, so all of those things, and then you've got O I D C, and you've got open connect, and you've got all these protocols and things. Uh, is are you wizarding that for me? So I don't have
to know all the details of these things? Are you helping me get the stuff that I need to have in place.
Yes, So Zomega dot net is a visual studio extension, okay, and it's it has a project template for creating new solution uh where you have a wizard that allows you to pick which architecture you want to use. Uh and UH the initial solution template that it generates now for Blazer UH and I think other solutions as well include the authentication and authorization support. Like out of the box, UH, it's the default is the user and password just you know,
to get something started. But there is obviously you know, if you have services hosted, like is the rest API or a jw T token. Uh. There is if you use a different communication technology like w c F, they have their own like identity model that UH needs you know, the authentication UH, and there is the Blazer server is a little different because it's like called server side, but there is a you know, signal or circus running and it's not easy to set the kookies like the authentication
cookies and send it back to the client. But we actually solve that so that you can build the same log in experience and it's going to work the same way. Both in Blazer server and Blazer web assembly.
Wow.
You know, under the hood it's going to go like call an API and point for a web assembly or for a Blazer is going to run on the server side, but it's all like hidden behind you know, the interfaces and different implementations.
Well that sounds good. I mean anything that will give me some sort of guidance and assistance and either making those decisions, which it sounds like not like it's not a guidance wizard, but you know, help me with the plumbing of implementing those things which are always changing and always moving and have different requirements.
That's good.
Yeah, because there are so many different ways of you know, the doing security and authentication specifically, we kind of just you know put it all in you know, right.
Yeah, yeah, sure.
You Basically a sp dot net core is specifically just allows you to like add one line like a you know Facebook authentication, Google authentication, you know Microsoft. So that's just you know, one line that you add and you should be good to go.
Like, but I got to think you're talking about a typical app for Zomega. It's an internal app, right, and replacing an old ASP dot webforms AP. Things like that like, they're going to have an internal authentication strategy you're going to need to support, right, Yeah, it's probably not going to be Google or Facebook, I'm betting.
Yeah, it's going to be some sso if it's a big company, but.
Yeah, it's going to be active directory or it could be Google or Facebook.
You never know, pretty sure, pretty.
Sure, Microsoft authentication might be there.
You haven't met my customers, Richard, That's true.
Sometimes you just need something, you know, to athentic case of password and user name. Yeah, like a speed up net identity will be fine, you know, just to get started. Sure.
Yeah, then it's always question of how much challenge it is retrofre to new security profile and yeah after the fact. But if I'm living in generators, it shouldn't be that hard, right, I should just be able to indicate the few changes and then regenerate and hopefully all the good things happen.
Right. It's a big leap of faith for your average programmer that loves to write code. Yeah right, I'm writing code though, Yeah, I'm no longer writing code. I'm learning the ins and outs of this model generator designer thing. Yeah.
But the.
Best thing, I guess is you are able to go and change the model and you just keep iterating, you know, and you regenerate the whole thing. It just makes so much easier to program and you know, build his applications and a.
Lot less prone to bugs. I would think, right, you know, you would hope, you would hope. I mean bugs get introduced when you do something over here but not over here, or you do things a little bit differently in a couple of places and you know, or you duplicate work. Yes, and those are some of the fallacies that you know, pitfalls that dot net developers, developers in general fall into.
Yes, And this is basically the consistency that we provide because and this is like the core thing. You know, on the framework level, on the model level, you can define like logical types, you know, like for example user type and you know, just describe, you know, the validation rules for the conversion, you know, the list of possible
values and use it like everywhere. So it's going to have the consistent user experience across all the screens wherever you use the same the same type or the same data property.
And you know what, this is a good time for a break, I think, So let's take a break and we'll be right back after these very important messages, and we're back. This is dot net Rocks. I'm Carl Franklin. That's my buddy Richard Campbell. Hey, and we're talking to Sergei, Sarah Fudenoff about Zomega, dot Net and Richard and I believe the floor is yours.
Yeah, you know, I was thinking about Greenfield. Doesn't happen very often that and I really like the particular scenario and something you mentioned in your documentation too, about I have an existing ASP dot net web forms app. People have asked for changes to it. I didn't write that code. I'm scared to death of this thing. I think now, can I make changes to it through some and like Zomega and have fewer problems?
Yes.
Normally, if you have an old legacy web forms application, you're probably thinking of upgrading it to the ASP dot netcore and Plazer and lay this tech. So we help you do that. You can rewrite some of the modules or some of these screens using Zomega like generated and because we make you write code that is basically platform independent, it's just it doesn't matter like what communication framework you're using.
Then you can expose your services as whatever, either like use them in process internally or exposed as rest API, g RPC, whatever you want, or even like the presentation logic that you're right is basically it doesn't have any dependencies on the UI framework. It's basically like m v
v M like model few view models. But it's like on steroids, you know, because it allows you to describe all your logic in there, all the presentation, like the data elements, you know, the way they're calculated, the way they format their values for display, for internal storage, the way they the validation rules. You know everything about your UI.
You know what views and forms in the view model you have, and then you just have a thin land of the actual UI view that you just bind to your view model and you get you know, working screen.
Nice. So we're talking about rebuilding the existing app through Zomega or are we able to actually add to the existing app.
You can add you know, like because we support webforms applications, right, you can generate stuff for webforms, Like if you want to add like new screens with web forms Zoemega, then those will be automatically structured and architecture in such a way that you can migrate them easily to.
And I can point Zomega at the existing data store that the existing asp web Forms app are you using, and it'll build a model for me from that, right, and then I can go and build it. I thinking like,
that's just giving me me. It would be fun to take this out for a spin on an existing asp dot Webforms app where they've asked me to add a new section to it, and just have pick the model up and go from there and see if I can get to a place that makes sense before without having to touch the existing code, because that's what scares people, right,
It's just a way to avoid that. And then the other side of this is then I could start refactoring and rebuilding some of the older existing stuff into Zomega, and at some point when I got the whole thing across, I could say, would you like to see a Blazer version of this?
Right?
That's interesting to me because you now no dead drops, right, I can add any features in demanding right now, and I can make improvements here and there and bit by bit remediate an old application.
Yes, And it's similar to what Microsoft, I guess is pushing right now, like with the migration path from a web forms to Blazer where you run some screens, you know, like they get rendered with the old technology and some new screens are rendered with the Blazer technology. But it's still.
Yeah, it's just always a question of are you always in an operable state?
Right?
You can make some changes and you can introduce them to folks and have them take it out for a spin, and they're not like, what is this much as opposed to you? I go away for six months build a huge thing that everybody hates, right, And that's what scares me. It is all too often, you know, they get caught on a rewrite and nobody sees it until it's done, till the budget's burned. Right, And now now you're in trouble. Right, I'm just trying. I'm just trying to stay out of trouble.
I'm not saying I'm good at it, just trying. I'm only trying. Yeah, all right, what about like testing infrastructure, like all of those kinds of things. Do you bother any of that? Is the code you generate so good it doesn't need to be tested.
Well, you can use any testing framework with it. You can even add generators that would generate unit to right, I mean it's basically as long as the model has that information and the data enough data to derive you know what tests need to be there. And because we already have like the model has tons of information, has the service model, it has the domain model, and it
has the some presentation model. So it's able to generate all the codes, so there is no reason it cannot generate unit tests for those as well.
What's the preferred back end storage model? Like, I see you support postcress. Is it all our dybms? Could I switch this to a mode where it's just writing into blobs?
So yeah, we use anty framework Core and I guess whatever back end providers it has would be supported.
Now I gotta go quickly look up to see if they still support XML as a store. I don't know that it's a good idea, but I'm just saying that that would amuse me.
Probably not actively supporting yet, but.
No, no as your SQL, SQL Light, my SQL postgrass and Cosmos dB, right.
I mean some vendors might have their own providers this third party so whatever. In terms of the domain model, we use Endity framework or also have support for the legacy antidy framework. Six You have six but that's kind of going away. But you know, you can use as much of it as you want. You know, you can generate the services and then override provide your own implementations to do whatever data story you want.
You well, and there's all the third party like you can go into ole if you hate yourself and dB two inter base. Look, here's a provider for storing tables and files. Because I'm looking for bad performance. I don't know the answer. That's probably unfair. Be interesting to try it, honestly, just to see where they Oh boy, there's an access provider. There you go.
But you can even go with no SQL databases.
Like Mango supported.
Absolutely, it's a wonderful no SQL database solution that I've been using lately. It's called Jason.
You and me both. So that's what run as lives on Jason yeah too, yeah, yeah, no question. Uh But I mean when you think about one of the powers of these generators is to attack questions like that, is to say, hey, what if we switched to we're paying a license fee for this database, what would what would it take to try some of the other ones. So you go down the you know e f core list and say, well, which one should we grab and let's try something. And it doesn't have a license on it,
does it? You know what difference does it make?
Well? You know what all that could be solved if you use the repository pattern. Do you use the repository pattern?
Well, the repository is basically with the Antity framework Core. So if whatever you do with the Antidy framework Core, if you switch the provider from one database to another, yeah.
But there are things that EF doesn't support, right, So the trick is to have your interface that has all the CRUD operations on it, and then repository.
It's kind of part of the clean architecture. I mean, I'm still yet to see people switching the databases.
But I'm describing something probably nobody does.
That's not true. I do, but I start I start with in memory and then I switched to uh, you know, any framework or back and forth between that and dapper or you know, if I wanted to create to do it all with JSON files, that could swap that out. Yeah.
It's definitely creating a low barrier of entry to experimenting with different data stores. If that became a concern of you, what about true containers?
That's crazy talk, Richard.
Containers. Uh, they're supported just as part of the general you know architecture because you just build your solution and you know, build containers and you can employ them.
That's just part of the c ICD pipeline. The Zomega gets to the build stage essentially pushes the code, kicks off a bill process, and if in that build process you're deploying out to containers, fine, you're not going to interfere.
With that, right, yeah, It just you know, I bet your own.
And you're so your architecture is already very much about state outside of the object, So you're not going to get any nasty traps that inexperienced container people run into.
Mm hmm.
Right, yeah, well, because we'll find out fast if you didn't know where stuffs get stored matters for sure. You know, that's that's always part, part and parcel of the problem. But I do think one of the things we like with a generator is providing people with the ability to rapid choice. That we could look at a blazer of melitation of something both web assembly or server and say, what do we think? You know, what's the feel like?
You know that that to me is very interesting that that you don't know, you're not doing a big multi week spike to try and test something like this. The generator would do a lot of that work for you.
Yes, the generator and the architecture we use in some of the videos will show how you can build the same application with Blazer server web assembly and you can't even tell, you know, from the look of it, you know which architecture it uses, owner of the hood, but it looks exactly the same.
Now i'd wanted to experiment with Okay, now the client's remote, it's through a narrow pipe or something highly latent, right, and just she can you know, can you feel the difference on that? But the fact that it'd be easy to do that testing you call the type script implementation is SPA. What SPA libraries are you using?
Well, that was kind of an old framework back in h like maybe ten years ago or so, when we had only like the web forms support, and then I realized that, you know, it's going away, and Microsoft was pushing for MVC, you know actively, and we're saying like, oh, don't you worry, it's just an alternate way of doing it, you know, like web forms is going to be your life and well, you.
Know, and there's still plenty of worms web forms people out there today, right, like it's not like that things going away, but they're definitely on standard framework.
Right, So and I didn't like see much difference like with NVC, so I didn't jump on the bandwagon because we in the web forest we used like ohing like with the middlewere and dependency in Jackson, so all the latest stuff, right, So it didn't feel like, uh, uh m VC was much different at the time. So we started looking around and everybody was like building spas, so we thought, like, what can we do to massage Zamiga
to make it build a spa? And uh, there are tons of different JavaScript frameworks around uh back then and the most popular ones in the dot net community were Knockout. Yeah, yes, so uh and uh D Randal by Rob Rob Eisenberg.
Yeah, okay, those were they. You know, history is history, right like today you may talk about react and angular and the other one she's the name just jumped out of my head View and you and View. Yeah that's sort of the big ones right now, but back then, knockout was the way.
So yeah, we did pick the knockout because it was pretty closed in terms of uh how Zamega framework was working and uh the m v D m uh paradigm, so it had like observables and everything. And we build the Zomega JSU frame, work with the Typescript based framework for that. But then you know, it kind of got stale. Yeah, they knockout, you know, got stale. Rob left for Google and then started his own.
To aralia you know as the nature of JavaScript frameworks.
But so we were left stranded again. You know, so I was thinking about building an angler version like Zomega Energy.
I can't imagine that's that's not what the customers want. The customers want Blazer.
Yeah, then came out there's you know, amazing technology from Blazer, and I looked at the who stands behind it, and then look what it is like Steve Sanderson.
Yeah, the same right, no kidding? Yeah, Yeah, it's hard. Yeah, I think you put your time in the right place. Like, it doesn't make sense to do this now if you're gonna if you're gonna go down that path, you only have so many hours to work on code. Better to add features on the Blazer side then to worry about I'm not going to say legacy, but other you know,
I don't know the SPA is that hip anymore. Lots of people got work in it, no two ways about it, and goodness, those angulars certainly had deep penetration a lot of places as has react, but I don't know that would be your focus. Does make sense really.
And that was actually a perfect fit for our platform because the Mega framework was building SISHARP and all the OI stuff. You know, you can reuse all this power of view models we had, so it just plugged right in and the architecture where we have the business services separated from the presentation logic. That also played well with going from Blazer server to the Blazer Web assembly because people don't realize that, oh now you need an API later.
You know, now you cannot like split out, you know, your business services.
How much can I split up those services to let them scale independently? If I app gets big and busy.
You can the generators allow you to how would put two different projects so you can build different kind of services. If you want some services to be more scalable, then you may split it up into a separate project and then right basically have it like run a lot of copies of it, whereas like admin screens, you know that I don't.
Only use Yeah, you don't need to do that. Then and then and I'm dancing against the mall the monoliths versus the micro service sort of mindset. But uh, and we're we're hip to modular monolists. That's been a good conversation.
I've done it right.
So and that's why I asked the question exactly that way. It's not that I want want service rining architecture, it's nothing I want micro services. Is that I got a problem child and I want to put it in a can so that I can scale it separately from everything else.
Yes, exactly, I don't want a problem child factory.
Yeah, so that's the answer to the question is like, yes, making its own project. Now it runs something that you could be called by the other projects, and you can scale it however you want. What about mobile clients making stuff for iOS and Android?
Yeah, we actually have a generator for zamal and WPF so it's it's quite possible to use to go to MAUI. Yeah, we kind of skipped on the zamorin and zamorine forums there, but you can pretty easily just use Blazer, as you guys have discussed numerous time, just you know, do the hybrid Blazer for a mobile for now, and we may even provide like a template for a mile we app using hybrid Blaser, just to get started.
On the Yeah, that'd be good. I would think it would be very difficult to keep up with or it has been certainly in the past, to keep up with Microsoft on Maui's AMMO features and things.
What's the Zomega framework. I see it here on GitHub.
Yeah, so this is the framework that powers the applications that we generate. Basically, it allows you to uh write this presentation logic that is platform agnostic. It's independent of the view framework. So it's kind of m VVM on steroids. Like with the classic MVVM, you have these eye notified property changes, and each property is just a value right older.
In Zoomega framework, a data property represents both the value and the metadata like whether it's editable, whether it's visible required, the validation rules associated with it, the conversion rules to different formats, like the at least of possible values that are allowed. So you build this property you know as a kind of big collective you know, reusable item and then you just bind your control in whatever framework it is, whether it's a EXAMO control or user controlling webforms or
Blazer control or whatever. You just buying it, you're telling it there's the property, and it reflects you know, all the takes everything from the property. So basically all your coding is encapsulated in the platform independent presentation logic.
Nice and yeah, and this is great. You know why be open source on that because you've also got a retail component of this project as well, right.
Yes, and yeah. The best thing you can bind any controls to your properties, like you build your view models and then you can build your views with the you know, regular controls that we provide. But then you want to switch to sinc fusion for example, we partner with see sink fusion. Right, it just bind sync fusion controls to this very same property and it just works out of the box. You don't need to do anything, so you
don't have the vendor lock in. You can you know, just switch and swap any component library.
That's cool. So there's a free product that's totally usable.
A basic Yeah, we have a basic license that is kind of a community license on visual studio.
What are the requirements for that?
Just a visual studio twenty twenty two.
I mean, is there any single person use that kind of thing?
Yeah, yeah, a single person Like you can order your own license and you can renew like when the new version comes in, you can get a new version.
Right.
So we're looking for feedback and looking for directions because you can do a lot of stuff with it. You can developing in a lot of different directions, add you know, various features. So we're looking for the directions from the market, you know where.
Sure, it's the big the big difference between that in the full license which is about eight hundred bucks the generator source that you get right and in unlimited perpetual license kind of thing. Yeah.
Yeah, so I only have to buy this one, so I don't get it, I don't buy it annually.
Yeah, you buy it for this specific version. Oh I see, okay, or you know the minor upgrades.
Obviously. We also talk about model enrichment in the custom generators. What is that?
So, yeah, we have the structure of the model defined, but then you may want to add your own elements to it. Define you know, things that you want to capture in the model and then be able to use that in your own generators, or in customize the existing generators to use the additional data in the model to produce the code the way you want it.
I see anythink in terms of like, if I'm a bigger organization where we have sort of standards of way we want things to look, I can build up custom generators so that everybody using it sort of goes down that path, right right, Yeah, I appreciate that. That's very good, it's smart. I also feel like that modeling piece is something I'd probably sit with the domain expert, you know, with the principal knowledge person, and work the model with them.
It'd be probably a lot more approachable than doing it on whiteboards and ex sell spreadsheets and things. Actually, let's just go through the model together. Let's see if we get get to a good place.
Yeah, if you watch some of the videos that I had, it's such a quick process from model to a working prototype.
At least prototype.
You can see like right away what the screen is going to look like. Then you weak something, you know, you'll go regenerate, you know, all the art defects, and then you get an updated screen.
You know, I watched some of the video and I saw a tree view. Is that the main designer a tree view structure? Or do you have other UI design that use for different parts of it.
The treview I mean the XML.
Yeah, yeah, the XML view.
Yeah yeah.
The XML is basically the main designer right now. We'd love to have like the more graphical designer where you can just be able to easily like you know, like an antity data model. I remember these there was a designer. Yeah, microsoftware you can like add.
Things and link things together and whatnot.
Yeah, so we'd like would love to build something like that. We just haven't gotten around to it. But the the XML, the editor actually is, has been enhanced. Yeah. You can like collapse the definitions so you don't need to like view this convoluted XML like you can just expand the sections that you're interested in. You can go to definitions,
find references, refactoring, you know all this stuff. So that's basically I mean people are used to editing XML, like you go to our HTML, you go to Blazer, you go to zamo.
You know, are you taking pull requests? Do you have issues that need do you need help? I guess is what I'm asking.
Yeah, if someone is interested in contributing and helping with that would be all happy to to get these contributions.
Well, as Louis Armstrong once said, what a wonderful world. It really is, the wonderful world of open source. Well, is there anything that we missed? Serge anything that you want to or a shout out or call the action before we hang up?
Well? Yeah, as I said, you know, if, uh, if you find it interesting and if you want to learn more about it, you can go to zamaga dot net website and check out the documentation, the videos. We keep adding new videos to it, keep adding features, you know, as uh it says it. We just added the postgrasskvil uh. Support Yeah, by popular requests uh and uh yeah, I give it a spin. Uh and we always want to hear your feedback. Uh and what do you think? What do you think would benefit you know?
Uh?
Any ideas, features and contributions are always wealthy.
That's great. Thank you, This is good stuff and sorry that we hadn't noticed it earlier. This is good and I hope our listeners think the same. I'm sure they will. Thanks again.
All right, thank you?
Here he is okay, and we'll talk to you next time on dot net rocks. Dot net Rocks is brought to you by Franklin's Net and produced by Pop Studios, a full service audio, video and post production facility located physically in New London, Connecticut, and of course in the cloud online at pwop dot com.
Visit our website at d O T N E t R O c k S dot com for RSS feeds, downloads, mobile apps, comments, and access to the full archives going back to show number one, recorded in September two thousand and two.
And make sure you check out our sponsors. They keep us in business. Now go write some code, See you next time.
You got Jack Middle Vans
