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