The Modern .NET Show

Episode 93 - Umbraco Heartcore and Blazor with Poornima Nayar

Embedded Player

Episode 93 - Umbraco Heartcore and Blazor with Poornima Nayar
The .NET Core Podcast

Episode 93 - Umbraco Heartcore and Blazor with Poornima Nayar

Supporting The Show

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

Episode Transcription

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

I am your host, Jamie “GaProgMan” Taylor. In this episode I talked with Poornima Nayar about Umbraco Heartcore and Blazor. We’ve discussed Umbraco and Blazor on the podcast before, but always as separate topics. Poornima is an expert in both Blazor and Umbraco Heartcore - Umbraco’s headless CMS. We discussed both the headless version of Umbraco, why you might consider using it, and we also touched on GraphQL - which is one of the things that Umbraco Heartcore supports thanks to it using modern .NET (.NET 5 and beyond).

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

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

Jamie

So thank you very much Poornima for being on the show. I really appreciate you taking the time out of your day. You’re a busy person, we’re all busy people. So taking some time out to actually talk to me is, I really appreciate it. I’m going to try and not waffle my way through this. Because it’s not good for the listener and for you, for me just to be yammering on and taking all loads of time up. But thank you ever so much.

Poornima

Thank you, Jamie, for having me on your show. It’s always fun to talk tech. Because when you talk tech, you learn tech as well. And I like talking about Umbraco Heartcore. And Blazor as well, which is the topic for our show today. So yes, happy to be here. Happy to be talking.

Jamie

Excellent. Excellent. Okay. Yeah. So you’ve let the cat out of the bag. We’re going to be talking Umbraco Heartcore. We’re gonna be talking a little bit about Blazor, all of those lovely, wonderful things. But I guess, if you wouldn’t mind, before we start, would you mind introducing yourself to the listeners, so they know a little bit more about you the kind of work you do that kind of stuff? Is that okay?

Poornima

Yes, of course. So my name is Poornima Nayar. I’m a freelance .NET developer. And I’m based in Birkshire, UK. I’m a Microsoft MVP for developer technologies. And I’ve been an Umbraco MVP for the last three years. So I started using Umbraco when it was at its version 4.7, I think, and ever since that, ever since then, Umbraco has remained with me for the past 11-12 years. So it’s, it’s a community that I always go back to, Umbraco has always remained with me.

And of late, I’ve been doing some experiments with Umbraco Heartcore, as well, just because it’s so f`lexible, I can do different things with it. And I will talk about that more today. later on during the show. And non-work me I’m a mother as well. I have a seven year old girl who I spend a lot of time with. And I read a lot, mainly fiction, I’m currently reading a book called The Princess Remembers, which is a biopic about Princess Gayatri Devi of India. And I’m also a student of Carnatic music vocals. I’ve been learning that for past three, four years now. So hopefully, you’ll get to hear me perform as well at some point.

Jamie

Brilliant, it’s always really important to have that, the thing or things outside of the workspace that we’re in to, right. I feel like it is really rather easy to fall into, “well, I’m a developer and I develop things. And when I’m not developing, I’m sitting at my computer developing stuff.” And it’s kind of important to have some time outside of that. Not just for your own sort of mental health, but for your physical health, changing that context. Even if all you, “all” - here come the bunny quotes, right - “all” you’re doing is going from sitting in front of the computer to sitting on the couch and reading right? There is still a difference in that right? We’ll be sitting on a different couches, a different room, maybe with people around, I don’t know. And just the physical act of doing something different is so important, I think, to our sort of physical and mental well being so yeah. Personally, I noodle around on instruments and play bass guitar and occasionally go for a walk. Because if I get it’s kind of boring stuff about me, but it’s kind of important, I think to have that disconnect.

Poornima

Absolutely. You spoke my words. It’s so important. Being a developer. It’s brilliant. We do cool things, amazing things, but in front of a computer for long hours. It’s not very healthy. So yeah, something to have that disconnect, as he says always good.

Jamie

Absolutely, absolutely. So let’s, let’s let’s set the scene a little bit we’ve talked about, we haven’t been on the show, we’ve talked about Umbraco a few times. And we’ve talked about Blazor a few times. And you mentioned about Umbraco as a technology, you come back to a lot. Partially, I feel because the community is just so friendly. Like they’re their catchphrase, I suppose that marketing term is it’s the friendly CMS. And they feel like the the, the team and the community around it so friendly to so. But before we do that, Could you could you tell us a little bit about what Umbraco is just so that we can set the set the expectations of the listeners, so they’ve got a little bit of background knowledge. Is that okay?

Poornima

Yeah, sure. So, Umbraco. It’s a content management system. It used to be a .NET framework based content management system until quite recently. I think last year, August, and if I’m not wrong, I’m brocco, Kmart with .NET. Five based on Umbraco. Nine. So that is Umbraco. CMS for you Umbraco. CMS is open source. And as you just said, it’s a friendly CMS with a very friendly community. And of course, it’s a fantastic CMS to learn and to use as well. So that’s about America that I have to talk about. America hardcore specifically. So shall I talk about America hardcore? Yeah, sorry. Yeah. Yep. So Umbraco Heartcore, is a product based from Umbraco CMS. So it’s available in the Umbraco cloud platform. It’s a cloud based SaaS offering. And unlike the traditional CMS, it’s a headless CMS. When I say headless, I always have this picture of the Headless Horseman in my head for some strange reason. But that is what exactly it is. When you think of a ccm as a traditional CMS, it’s got the head that is the the web front end or the templating engine. Headless means take that templating engine away, all your content gets delivered to you as an API. It can be a REST API, and more popularly Graph QL API’s. They are really popular amongst the headless CMS universe as well. So Umbraco Heartcore, is a headless CMS, if you know Umbraco, you can take all that knowledge into Umbraco Heartcore. And Umbraco Heartcore provides you with an API, both rest as well as a Graph QL version, which you can use in your projects.

Jamie

Excellent. I do like being able to swap out that sort of front end technology for something that I’m a little more experienced with. There’s absolutely, so to set expectations. The last version of braca that I used, I believe was a bracket eight, and it had a, when you go into the sort of the back office, the admin side of things, it was an Angular js app, and there’s nothing wrong with that at all. That’s perfectly fine. It works perfectly well. But if I’m less experienced with Angular, or react, or whatever, I’d like an API to talk to you to say, Okay, right. Okay, here’s a JSON blob, perhaps that represents the content I want you to store is the name has some properties stored. Okay, now I’ve written my own front end, talk to that, that API, and display that to me, right, I feel like that, that fits more within the sort of web API. Worried about saying it micro services, or maybe a back end for front end sort of idea of, I’ll just talk to this API and display this content, right, that feels like it’s a little better, it feels more JAMstack like as well. So I can maybe have a static website that has an API in a JavaScript or something, some JavaScript that loads the page and says, Okay, load this content, now load this content. And I like that website can then be can be then be served by Netlify, DigitalOcean. Anyone? And it costs me next or nothing. Right?

Poornima

Exactly. So you covered most of the important terms there. First of all, jam stack, when you think about a headless CMS, jam stack is the word out there. So you have JavaScript, an API, and the content management behind the scenes. So if you are used to using Umbraco CMS as an editor, that’s the same exact same thing that you would get with Umbraco headless that is on prodco. So as an editor, you’re covered. Now, when you talk about developers and development teams, you want a wide variety of skill set. So that’s again, something which you can benefit from. So when you think about headless CMS is one of the most compelling topics that are found out there is that when you learn a CMS beat any CMS, you have to actually learn that technology. Say for example, if I’m picking up Umbraco, CMS Umbraco, eight, or micro nine now, you, you are expected to know .NET, because the front end rendering is fully .NET based, and of course to build anything for the back office. It’s AngularJS based. But think about an API. I’m getting the content as an API, or REST API or a Graph QL API. I, as long as whatever technology I’m using can connect to that API or an HTTP request. I’m sorted. So I can be a .NET developer, I can be a Vue js developer. I can be a React developer, an Angular developer, any of the skill set or the frameworks or other libraries that I know. I can still use Umbraco CMS. So all I’m doing is talking to an API so that it’s not just about having a headless CMS or content. As an API, you are also looking at a team, a development team with a wide variety of skill sets, which helps you attract more talent as well, I think.

Jamie

Absolutely. And you can, I feel like you can abstract that away, right? If you’re using Umbraco, heartcore, you’re sitting behind an API, you don’t have to worry about. It’s the same with like, if we use Entity Framework, right, you don’t have to learn SQL, you don’t have to know that there is a database, you just know, if you talk to this object, this class this thing, you get the data back, you don’t have to worry about the sort of how it’s all sort of abstracted away, you don’t have to worry about it. And I really like that, because like, I’ve talked about this a lot so far this year, in 2022, it lowers that barrier to entry, it isn’t there. I don’t need to know anything about Umbraco. If I’m using Umbraco, heartcore, I just need to know where the API endpoints are. Or I need to know about which class to load or to talk to. And it just gets me my content. Right?

Poornima

Exactly. Its content as an API. And I talked to it using an HTTP request, be the REST API, the Graph QL API. So we cover jam stack, as well as the development team. And the most important thing when I talk about when I think about headless CMS, and particularly Umbraco Heartcore, is that it gives you an omni channel experience. In fact, my friend, manual Systra, who is from Australia, he’s written blog posts about this. So with omni channel experience, what you are targeting is a single experience for your customers across multiple marketing channels. So think about this Umbraco heart heartcore instance, which has all your content, the same content can power a website, it can power an E commerce platform, it can power a mobile app, it can power something on the IoT range of devices. So it’s the same content for your customers across multiple channels, which is again, fantastic. I feel so there is a huge value, as far as the businesses are concerned as well.

Jamie

And that makes sense, right? You’re not repeating yourself, you’re not having to use if you have two sources of your content, let’s say your website content and your mobile app content. When it changes in one place, you got to go remember to change it somewhere else, right. And it could be something as simple as maybe the placement or the color of a button if you’re talking programmatic. But if you’re talking maybe, maybe as a company, I published something which needs to be redacted for whatever reason. And I remember to do it on the website, content to base. But I forget to do it for the mobile app, or for the marketing platform or for the shop, storefront platform. I can run into real problems there where maybe I’ve maybe I’ve produced something that needs to be removed. But I forgotten I’ve gone oh, I’ve got to do across 15 different platforms, 5015 different databases, all of these apps need to change. Everything’s got to be reshaped. Hopefully you don’t have to reshape things when new content changes. But let’s just say there it does. But then all of this, this nightmare of Oh, my goodness, we’ve said something we shouldn’t have done to change it in a million places.

Poornima

Absolutely. Again, you spoke my words there. This is one of the many, many, many things about hardcore and LCM. So you change it in one place. All the channels, which are then fed off by a single Umbraco Heartcore instance gets updated instantly. You don’t need to worry about updating in a million places. So it’s a single omni channel, comprehensive and consistent experience, which is important to build brands, as well as you know, for your business as well.

Jamie

Okay, so if it is indeed headless, it doesn’t have a user interface. And I’m a member of the marketing team or the copywriting team. How do I get my content there? Do I need to go speak to a developer? Do I need to go hey, can you post this for me? I don’t know what I’m doing or is there? Is this something? Is it like headless in that there is a user interface, but it’s more the back office? Like the admin side of stuff, or is it headless? As in, there’s nothing. You got to go write your own user interface and hope for the best. How does that work that?

Poornima

Headless means there is no preview or there is no front end rendering engine, you decide how to render your website. So your content lives somewhere, and your website lives somewhere. There Don’t talk to each other apart from the API that the app is pulling the content from. And as far as a marketing person or a Content Editor is concerned, they get a back office experience. So if you’re used to an Umbraco, eight or a normal Umbraco, CMS back office, that’s the exact backoffice that you would get with Umbraco Heartcore, as well. So it’s the same back office that an editor would see. So they’ll fill out all the fields, they’ll populate all the content. And hey, that map content magically appears in an API for you. So that’s what happens with Proko.

Jamie

Where they see they see so it’s not. So there is something for the non technical people to interact with on an admin site. That’s good. Because if I’m honest, I was a little worried about oh, my goodness, if I, if I ship this to some customers, are they going to add content? Or no, that makes sense?

Poornima

Oh, yeah, there is a back office, the same friendly CMS back office that you would get with Umbraco Hardcore.

Jamie

Excellent, excellent. Okay. So okay, what can I do with Umbraco? Hub? Before we start talking about some of the cool stuff that you’ve done? And how you’ve hooked into it with Blazor and things like that? What can I do? I know that I can run my website, I know that I can run, perhaps a storefront. But is it? Is it an HECM? The bodyguards again, is it just that, can I do other stuff? I mean, I have loads of content? Where am I gonna show it? What am I gonna do with it?

Poornima

Okay, so my answer is What cannot you do with regard code because it’s very flexible. It’s an API full of content. So had it been a talk, I would have showed you a nice slide, because I do have a slide which I use for my talks. So it is quite powerful. You have content in the cloud. And you can power websites, websites can be developed in any platform that you want to you, you define, or you specify you decide what tech stack you want to use. And you can use that it can develop ecommerce platforms at your own logic, take payments, all of that. You can have cool mobile apps, you can have IoT devices talking to your API, you can have augmented reality, you can have watches talking to it. So think of anything that can communicate with an API. Because we are all surrounded by gadgets these days, all of that can derive content from Umbraco Heartcore. So think of a point of sale kiosk that can talk to hardcore as well. So the the opportunities are countless, you just need to have that creative edge of hey, I can use some brocco hardcore, I just need the content as an API for this. That’s all what you need to think. So it’s a it’s a slightly different shifts as well on how you in massage your websites and your content as well. It is definitely creative. Once you start using it, I think you will, you will then get to have a million ideas of hey, I can use it for this. I can use it for that. So the opportunities are infinite, countless possibilities.

Jamie

Okay, excellent. All right. So I guess let’s say let’s say I’m trying to decide between having traditionally an on premises and Umbraco installation, there’s running on my server, it’s doing everything I needed to do. It’s running lovely serving my website, whatever. And then the boss comes to being goes, Jamie, I’ve got this great idea. I’ve heard this this thing called Umbraco Hardcore. I’m going to hit you with the same enthusiasm I have for Bitcoin. We should totally use it, because I’ve heard of it. Right? And then start doing some investigations. In your opinion. Again, buddy calls, right? Why I always like to start with why. Why do I Why do I want to use hardcore instead of my own on premises? And Umbraco installation? What was the big sell there? Is there a big sell? I mean, it may be that I don’t need to use it.

Poornima

Yeah, of course, there is a big advantage of using heartcore over a normal CMS install a you will have to handcraft all the code that you need to emit out that API which draws in all your content and gives you out as API in itself. That’s the first thing I don’t think there is anything official as such from the HQ that supports it. I know there are community members who have written packages around it but I’m Umbraco has grown and it takes a lot of effort to keep up to that pace and continuously improve and update your packages as well. So that’s one reason, this project is supported completely by HQ. So there’s a solid team behind it, working at maintaining the platform, as well as improving the platform giving us more and more goodies. So that’s one of the things. Secondly, as I said, you will have to handcraft, your own code beat for the REST API, or for Graph QL API. It’s not that easy, as far as I can see, to do all that amount of work and keep up with the pace of changing platform as well. Finally, this is a completely self hosted, SaaS cloud offering, so I don’t need to worry about hosting it as well. So yeah, why not go for hardcore when you have a platform, which can give you all the flexibility that you need. But again, you need to choose wisely for yourself. Not it’s not for everyone to go the CMS way is not for everyone to go the hardcore way as well. I think you if you have a cost where you have a multiple, multiple, say, channels for communicating to customers like websites, mobile apps, IoT devices, that is a perfect useful use case for hardcore. But having said that, there are customers who just have websites, who they, which they want to develop in their own tech stack. And they opt for Umbraco Heartcore. So it’s up to your own choice as well, I would say, but, yes. Nothing stopping me from using Umbraco Heartcore.

Jamie

Right. Okay. I like that gives me like, lots of opinions and lots of chances to, to sort of think, where is this project going, Oh, are we going to have point of sale kiosks that need to show the same content? Do we have to have maybe mobile apps or like I was, it gives me a chance to sort of think a little bit in the future. I don’t usually like to think what’s happening in a year with this project. Because by the time we get to a year, even if I’m still working on it, I’m a different person, right. And the project has completely different goals and things in mind. And so it could be that by the time we get to a year, we were writing anyway. But I like that I like that I have that that ability. And I’d like I also like that it’s it’s a cloud based thing as well, because presumably, then, the first of all, they’re managing it right? I don’t have to worry about system updates, I don’t have to worry too much about, like the physical security of the box. I don’t need to worry about platform instability, because they’re taking care of it. You get all the benefits, I suppose, of cloud computing versus, you know, on premises one server, right. So I like that. So what about so you talked about how it’s an API, and I can talk to it from whatever I want, I want to write something and go, I can do it and go, if I want to write something in server side node writing and server side note, if I want to write it with .NET, I can do that. Now, I know that there’s this wonderful thing called Blazor that’s happening now. For I mean, if you want to explain Blazor, you can’t, it’s up to you. I mean, I can happily say it’s just .NET in the browser, rather, super simple right? Now, I know that you’ve had the chance to sort of play around with hardcore a lot and play around with Blazor and play with them both. Easy, quite literally just a case of I pulled in a new get package, and I’m done. Or is there loads and loads of wiring up and loads of stuff to do that really sort of holds me back and stops. What’s What’s the barrier to entry, I guess, is what I’m what I’m asking.

Poornima

Okay, so, Blazor, as I said, .NET on the browser? I don’t think there’s a better way to explain that either. I don’t think there is any technology which has taken the community with so much excitement. In the recent years Blazor is really hot at the moment. And yes, with hardcore and Blazor, it depends upon which flavor of the API that you’re using. So, there is a new get client heartcore Client for Umbraco I have used that for my rest API’s, but with Blazor, I have been primarily using the Graph QL endpoint from heartcore. So I wanted to learn Graph QL which is the reason why I signed up for a talk and I did a talk on Graph QL Blazor and heartcore which was fun to learn and fun to do as well. So with Blazor and Umbraco Heartcore. There is there is you can’t really use the hardcore client which the HQ has developed as a new client because Graph QL is a completely different thing in itself. So for connecting to the Umbraco Heartcore from Blazor, you can use any of the .NET, Graph QL clients that are available out there, you can actually use HTTP client as well this thing home. But when you have a Graph QL endpoint, you might want to use a proper donut graph your client. So I started using the Graph QL for .NET, that particular client in my initial talks, you have to write your own deserialized classes, I’m talking tech, and I’m sorry about that. Nothing wrong with that. And my initial demos, absolutely worked using Graph QL, for .NET. So that was fun. And then I came across this client called strawberry shake, as well, which is from the house of chili cream. So they have another implementation of Graph QL in .NET. So for listeners, Graph QL is actually a specification, there are implementations of it in various different programming languages. Graph QL, for .NET is one of the .NET implementation. And hot chocolate is another Graph QL server, it’s from the house of chili cream, they have a client called strawberry shake as well. So that particular client is a much more sophisticated client, it can talk to my endpoint, download the schema, and give me a strongly typed C sharp client for my hardcore endpoint. And from their own, I can execute an operation service in my code, which talks to my hardcore endpoint, gets me all the data, DC realizes it for me and says, hey, here is the data you want to play around with. So that’s what happens in a nutshell. But I know that strawberry shake, and graph your client are a lot more than what I see. I’m not like a Graph QL expert, I know enough Graph QL to query an endpoint and display the results. But it is totally fun to play with. It’s it’s a programming it’s a query language in itself. So if you are familiar with CQ, well, it’s like a, it’s a query language in itself, you will write queries to talk to your endpoint, and it gives you back only the thing that you asked for. So imagine, I have this big page in hardcore with, say, million pages in that piece of content, I can say, hey, for this piece of content, just give me this field, this field in this field, and nothing more. And the API would bring back back to you just those three fields. So this API is made for mobile. So that that’s the entire reason Graph QL came into existence, it’s made for mobile. So imagine, imagine a mobile app consuming heartcore. I want only these fields. So it’s communicating, getting the data back quickly. Most importantly, only what I asked for, is not giving me all this million fields, which means that I’m taking advantage of the Graph QL endpoint and reducing my bandwidth. And just getting back to what exactly I need. So it’s very powerful. And I’m just going to kind of go, go slightly over the tangent, here to say, now that we have Maui

on the radar as well, and it has a Blaser aspect to it. I am really, really interested in what comes out of this. So I’ve had a chance to play around with Blazor, the Blazor part of Maui with a plain simple API from Umbraco, it was all good. I’ve played around with the rest aspect of it. Now I want to see what comes out of the Graph QL aspect of it, because what we could have could be extremely powerful, I feel I can have a Blazor web app, I can use the same code in my mobile devices. That is my apps for iOS and an Android, I can use the same Blazor code on my desktop app. So it covers the entire spectrum of devices. For me, I know that Maui is going to be supported on ties in inline x as well. So I’ve got coverage on those devices as well. And bringing Graph QL to the mix, we have a super powerful app powered by a super API

Jamie

it is amazing, just like all of the different platforms that are being supported by .NET. And all of the the sort of components of .NET wrap with Mary with me because my understanding is that Xamarin Forms and Blazor and things like sort of in effect being combined into Maryam in my understanding may be incorrect. I appreciate that. I’ve probably got that wrong, but please listen negotiate that. One of the things that I’d like to I’d like to just sort of double back to just just so that people understand a little bit more, is that Graph QL? Really is that powerful. So like when you said, you’re only pulling back the data that you want, it really is that for, you know, some people may think, Well, I just, I’ll just build an API endpoint, that just gives me the ID. But you don’t have to do that. You could just say, just give me the ID, you know, I saw this wonderful example of someone had listed all of the characters, all of the planets, all of the allegiances in the Star Wars universe, in their graph, QL database, and they said, Give me just the names of the people. And it was the same endpoint as give me just the names of the planets. And which was the same endpoint as give me all the data. And the, the difference in the size of the data that came back is ridiculous. Because obviously, if you think about names linked to planets linked to political allegiances, like the storylines, like the films, all that stuff, that’s going to be huge. And that’s likely going to be several JSON, big JSON blobs. Whereas if you only want the names of the characters, that’s going to be tiny in comparison, right? Or if you say, just give me the characters, the names of the characters who live on this planet, it’s even smaller. So you, like you said, you’re being really specific. Just give me this data. And it only gives you that, and so your requests are tiny, which is brilliant, like you say, is perfect for mobile.

Poornima

Yeah, absolutely. So Graph QL. It’s a single smart endpoint. That’s the term that they give to the endpoint, single smart endpoint, which takes in queries. And those queries are specified by the developers have the consuming app. And the Graph QL server has a way of understanding these queries parsing it. And what it does is, it gives it the shape that you asked for. So you might be asking for the name of a person, the friends of a person, and see the description about the person from the Star Wars movie series. And what what the endpoint would give back his name, friends, and the description that is it. Graph QL doesn’t kind of concern itself about where the data is stored. It gives you the shape that you asked for. So your queries can be quite flexible according to your needs. And Graph QL gives you back the data that you asked for in the shape that you asked for. Which means the consuming developer is always in control of what they want to ask, usually otherwise, with a REST API. The consuming developer would come to me I’m a back end developer, say Poornima. What we need to add this field into the API, we need to get the response back, what should be my request be? What should the request be like? What should be the response be like, there’s a whole lot of communication. And it only if I’m not very careful, it only takes me a second to break the API and break the app as well. But with Graph QL, if I’m not consuming a field, it’s as good as the field doesn’t exist for me. So it’s business as usual. So one of the biggest boons of Graph QL is that the consuming app and the server can develop and iterate at their own pace, which is fantastic when you think about something like on Proko Hatco, which is very flexible. And then you have all these sort of apps, websites, mobile apps, IoT devices all lining up for you. And all that development can carry on at their own pace without the need for the backend developer to constantly do anything about the API. So yes, Graph QL is extremely powerful. And it is made for mobile, nothing wrong with running it on a website, either. But when you think about Graph QL is like, made for mobile API.

Jamie

I like it. I like what you say there about how the developer doesn’t then have to spend time worrying about a contract between themselves and the consumers think, as a back end developer, you can focus on the bit, that actually makes the difference, which is like a how it does it? You know, it’s almost like, you know, in C Sharp, we have interfaces, right? You design that interface, so that anyone can use it, they don’t have to worry about how it works. You can worry about how it works. You can worry about what’s going on behind the scenes where the data is stored, how it’s stored, any relationships, things like that. But the consumer doesn’t need to know that. When I asked for order number seven, if I also want the address, I don’t have to then put in another request to an address endpoint with the Order ID. I could just say give me the order and the address that’s being said. Do maybe I need the name as well, maybe, I don’t know, maybe I need the information to do an invoice or maybe I need an icon or an image or something. And, you know, line items and stuff I got sorted. You know, I don’t have to go order and name and address and image and you know, total tax or whatever, right? I could just get the information I need, and say, brilliant, this is me sorted, I can focus on what I’m doing. Because now I’m the front end engineer, I can focus on what I’m doing with that data. I don’t have to worry about discarding anything, because I’ve literally only asked for what I want.

Poornima

Yeah, absolutely. That’s another benefit. With REST API, you would have to query multiple times for related information. With Graph QL. That’s not the case, Graph QL endpoint that that specification is smart enough to understand the dependencies and the hierarchy of your data. And then give you back that information. Again, I use a slide to iterate this point in my talk, so I would have showed it. So I developed an endpoint with a very simple course and student data based off the EF core tutorial on Ms dogs, and then made that into Graph QL API. So you can query a course. And the enrollments of students for that particular course all in one go. So with, with M, record LM, again, one of the most common things that we do is, if we have a parent page, have a page which shows the content of the parent page, and on the same page, show the content of the children page as well. So I can do all that on the single page with a single query in America as well. But with Graph QL endpoint again, that effort and the way you see it has been kind of simplified for you, once you pick up the query language, then you can actually work your way around with Graph QL. And then query everything in one go, I can say here for for this particular parent page, get me these figures from the parent page. But then for the child child pages, I want only these few for the child pages, nothing Well, whereas with proper conbraco installed, what it will give me is the Umbraco page, as well as the child pages, all the information about it, but I don’t need all of it, I only need a part of it. So there could be ways to mitigate that. But the entire process becomes a lot more simpler with graph. QL is what I feel

Jamie

like it. I’m all about simplifying the work that needs to be done. I’m all about making it simpler for the user simpler for the consumer, sorry. So if I’m a developer, and I’m consuming an API, give me the simplest possible, I don’t want anything complex, because all I want to do is get the job done, right. And if all I need to do is say, give me the parent page, I don’t want the child pages or maybe want some metadata about it. And I just get that I’m happy. So I like that idea that I can use Umbraco Heartcore To get my content and the metadata or just the content, or maybe just the name of the content, or perhaps who created the content or when it was when it was created when it was last updated. All that kind of stuff. I like that. So So then, does this mean then that because you said earlier on it is entirely possible with loads of effort to make an Umbraco installation behave similar to a rack or hardcore. There’s loads of effort required. But why would you if these two products already exists? Does this mean then and this? You know, I’m not asking to reveal the magic that you’ll have access to because you’re an MVP? But does this mean then that Umbraco Heartcore? And Umbraco are evolving separately? Or are they evolving sort of at the same time, and they’re just swapping the interface into it? What’s was Do you know that you may not know that?

Poornima

Well, okay, what I can see from the knowledge that I have is I don’t have the infrastructure knowledge of hardcore on its own. I know that’s a cloud offering. But what Umbraco Heartcore offers you is the back office of Umbraco. So it’s based off Umbraco CMS. But then there’s an entire different architecture and entire different team and development effort around heartcore in itself to provide that API, which is a complete RESTful API, and a Graph QL endpoint as well. So there is separate infrastructure for it. If I’m not wrong, plus, I get to know that there is more work coming on the Umbraco Heartcore. Front, like there is going to be open API support For the REST API from Umbraco, heartcore, Umbraco Heartcore is moving to .NET. Six, that is on Umbraco 10. In the near future sometime sometime this year when Umbraco 10 comes out with .NET. With, with .NET, six support. So that’s another thing. And they are introducing more editors into Umbraco Heartcore. Like, is a developer can create pure HTML, JavaScript and CSS based web components, which will run inside Umbraco Heartcore. And then get, get into my API Bar Graph QL. And rest if I’m not wrong. So there there is development happening on Umbraco Heartcore. Front, and I also hear about a fantastic community contribution that is getting into Umbraco Heartcore, using which you can actually pulling external data XML or JSON into Umbraco Heartcore. And then that can be a part of your content API, from Umbraco Heartcore as well, that sounds really interesting is not mentioned. Not to face mentioned the wonderful effort that goes on, behind all this, I feel.

Jamie

I like that, because then like, imagine you have your business domain is you have some some some content. But there is some publicly available content that you want to include, right. And so for instance, in the UK for international list is in the UK, the UK Government exposes a bunch of public API’s that give you data on things like the public holidays, right, there is a public holiday API, you could poke at it, and it will give you a JSON blob with all of the public holidays for that for the rest of that year. So let’s say you’re running a shop, right, and you’ve got all of your all of your products in Umbraco Heartcore. And, but you also want to display the days when the shop is physically closed, because it’s maybe a bank holiday or some kind of public holiday, we’ve got the Queen’s Jubilee coming up this year. So there’s an extra couple of days. So you don’t have to then go into your your content and say, or even go to the page, if you’re hard coding it and say we’re not open this day, this day, this day, you could literally say, if the if this is indeed coming along, you could say go to the public API for the bank holidays and add that to my bank holiday table, perhaps or my bank holiday list of content. And then you’ve already got it, you’ve got it perhaps a build time. Or maybe you can do it there happen every two weeks or so in cases an update, but you have that data, you then don’t have to spend time as a content creator, or perhaps it gets booted to development, take this data and add it to our content. You don’t have to do that because it’s automatically there. Right? I really like that idea.

Poornima

Yeah, so when I heard about this idea, it was fantastic. But now that I’m talking to you about it, it is again, so powerful. So you have two different content sources merged into one for you, and then coming out to you in a single API. So it’s fantastic. As far as the consuming developers are concerned as well, as far as the content marketing is concerned as well. And as far as the consumer is concerned, they get the exact same experience. So it’s a win win.

Jamie

I like it. I like it. So do you know of any other new things that are coming up in Umbraco? heartcore. That’s quite exciting. Because obviously, there’s development happening all the

Poornima

time. So yeah, I spoke to you about the open API and the Umbraco 10. Being the new kind of hardcore back office based on .NET. Six, I hear that this custom grid editor is coming up. And then that will make way for custom property editors as well. So custom grid editors means grid. Umbraco grid is one of the content editing interface may say for the sake of simplicity. But the technical term is property editor. It’s a way for content editors to build rich content for their websites. And with Umbraco grid, you can have your own little targeted kind of property editors, which you can build, say you want to talk to an external API on your own and bring that data and you can do that using a property editor. So web components, web component based property editors are going to be a thing in hardcore, and then that is going to pay pay way for more complex property editors. So I have read that about that somewhere in the roadmap, I guess. Then there is going to be the Umbraco ID and two factor or vindication for the back office of Umbraco Heartcore, which I believe it’s, it’s it’s been something that some of the big customers have been asking me to hear about, I guess. So that’s going to come in, but I think on on the overall scheme of things, that team is growing this active development, and the product is continuing to grow and improve. So, yes, these are all the things that I know of. Yeah, I think these are all what I have at the moment about hardcore. But yes, I am equally intrigued to see how it goes. How is all going to kind of pan out and look like going ahead.

Jamie

So what’s really cool to to hear is that the next version of Umbraco will be doneness six, because the day that we’re recording where February your Gosh, 11th, right, so we’re a couple of weeks out from when it goes out. Microsoft have just made it very clear over on socials that, Hey, Don .NET, Five is being end of life in two, three months. So I really like that the Umbraco team, the Abraca hardcore team, are at a point where they can actually keep up with that cadence like Don .NET. Six is, is going to be V next for Umbraco. Because, you know, Umbraco, for the longest time was .NET framework, like with a capital F, right? And the modern .NET, .NET, 567, I can give gaming, but you know, the new versions of .NET, they’re going to have like a two year support cycle, I believe. And so the fact that they can keep up with that pace is just amazing that the majority of Americans lifetime has been with .NET framework, and there’s nothing wrong with that it’s been very stable, very, very useful, it then definitely will run on your Windows servers. But now we’re at a point where they can if they want just turn that wheel and just release as quickly as they want. Right. And that is that is amazing to me think that, you know, because like I say the last time I use Umbraco was Umbraco eight. And that would have been I guess 2017. So we’ve come very quickly up the version numbers. And I think that’s great that just the ability to iterate really quickly, because of perhaps the underlying framework and being able to add because I feel like Graph QL isn’t something that you can easily add to .NET framework, right? I’m not saying it’s impossible, but the fact that they can add this, they can say hey, you know, cuz we’re on .NET five, where you can have this extra cool thing, right? I really like that. I’ve got to say,

Poornima

absolutely. So talking about release cadence when the blog post came about, I think last year about how America excuse planning, the release is going ahead. I was like, Yeah, this is more in line with Microsoft release cadences, which is fantastic. Because then Umbraco as a product continues to grow and continues to benefit from the underlying .NET and the API’s. Furthermore, we all know that .NET six is the unified like covering all range of platform API’s. And I think that will be really complete once Maui comes out as well. So again, it a Roku can benefit from all of that, if you compare Umbraco eight and I’m recording Umbraco nine is like blazingly fast. So that’s that’s the first fleeting thing that hits you the minute is started on an Umbraco nine instance. Plus, the more and more I look at it, the more and more I kind of go and have a look at the source code because it’s all available on GitHub. If you want to have a look and contribute. I get a feeling that it’s really well architected and it is a CMS which which actually embraces .NET very well. So which means that all that goodness is going to come to Umbraco Heartcore is well, going ahead. So I’m looking forward to the growth of the product as well, because there’s a real opportunity, taking advantages of all the goodness that .NET gives you and then build a solid foundation on top of that and build the product that you need.

Jamie

Yep, I have to agree. The and not just that you get the all of the innovations that other people are putting in, right. So let’s say you know, let’s say that it’s not this but let’s say that America was like an island of people just working away, that they’re sort of insulated against the rest of the world. Well, we’re done their changes, they wouldn’t be able to get those changes, but Now that when when .NET evolves, the Umbraco developers and consumers everything, get that those changes, too. Right. And that’s what’s wonderful about that I talked to someone not so long back about a video game emulator. Right. So this is an app that you can use the Zed .NET, that allows you to make your computer pretend that it’s a Nintendo Switch. And he was saying, we fed back to Microsoft, can we have this attribute that does some stuff, we’ve noticed, because we’re essentially stress testing your system. We’ve noticed in these particular situations, things get a bit wobbly, performance goes through the floor, if we give you the logs, you can investigate it. And Microsoft went great. And then silently, those optimizations were included in the next version of .NET, which came out only a few months later. So like everybody’s getting all of this innovation coming from everywhere. And like you say, right, can you imagine? Let’s say you’re six months into using .NET or not. Let’s say we go back in time, and we’re at the six, six month point, you’ve just started using Umbraco. If you’re falling in love with it, it’s great. And then somebody says, Oh, yeah, but in the future, you’ll be able to use it with your phone, and on a fridge and on an IoT device. And you can go into the shop, and they’ll have it on on the you know, the small display. And you’d be like, what, what are you talking about? Go go continue to drink, whatever it is you’re drinking. I’m happy doing this this work here. Right? Just the speed at which we’ve sort of evolved, I guess, is just it’s mind blowing to me. But also, the effort behind the scenes that’s going on is also as equally staggering and mind blowing to me, it’s not just all happening for free. All of these engineers, the Bracher engineers, the Umbraco open source contributors, that .NET people, the Microsoft people that everyone else, everyone that’s made Blaser happen. It’s just the amount of engineering time that has gone into all of this is amazing to me. I just wanted to share that that I’m I’m overwhelmed, I think.

Poornima

Absolutely. Absolutely. So there’s, there’s a lot of engineering marvel with, which is, I think, a good term to talk about. Yes, definitely some really clever people and lots and lots of love and effort for the code. I think I am one of the consumers of all that esoteric barbell is also happy and proud to be a part of all that’s happening, I guess.

Jamie

Absolutely. Absolutely. So then, okay, where if I’ve listened to this, and I’ve decided I will learn more about them back I’d go on more, learn more about some of Penny Ms. Experiments with it and things like that. We’re gonna go to learn about a few of those things ways. Is there a is it a Umbraco.com? Is it? What do I do? Where do I go,

Poornima

you can go to umbraco.com. And there is a Products section in which you can learn about Umbraco Heartcore. There’s a dedicated area on the website for Umbraco Heartcore. Furthermore, if you go to umbraco.com blog, there are targeted blogs on Umbraco Heartcore, and the product Maps product roadmaps around it. That’s one area where you can learn. There are some fun, fun articles about hardcore as well in that which the community members like Emmanuel destra, who’s my friend, myself, we all have written blog posts about Umbraco Heartcore. So you can read about the fantastic use cases. So Emmanuel wrote about his fictitious Lamington cake shops, which was not only a fun article, but a delicious article as well. Talking about cakes, I wrote about an IoT device talking to him Umbraco Heartcore using the REST API. And Harry Potter was the theme because I love Harry Potter. Then more recently, I’ve been giving a lot of talks about Blazor and Graph QL using Umbraco Heartcore. So you would find that on YouTube as well. Yeah. So a lot of information out there.

Jamie

Okay, I think it. So what about if people are like, hey, the Redeemer I have a question. Can people reach out to you? Is there a way to do that? How do people keep in touch with like, what you’re working on things like

Poornima

you can reach out to me on Twitter. So if I know the answer, I’ll definitely make it a point to answer and reply, or at least direct people in the direction that they need to. They need to wander to get the answer as well. So that can be a good way. I’m not a very active kind of I tweet like too many times a day, but I am active on Twitter, I keep a watch on Whatsapp. Because the entire dev community lives on Twitter. Yeah, Twitter is a good place to reach out to me.

Jamie

Okay, excellent. What I’ll do is I’ll, I’ll put a whole bunch of links in the show notes, so people don’t have to worry about oh my goodness, I got to write it all down. Just press through on your device the listening to and you can see all of that. And yeah, they’ll all be there. I’ll make sure to link to the Umbraco Heartcore website. I’ll link to because I know that there is a Blazor nougat package, but you said you didn’t use that so much. And I’ll I’ll put a whole bunch of legs. Oh, excellent. Okay, so listen to me, Nemo has actually shared a whole bunch of links with me just now whilst they were saying Oh, that. So I don’t even have to go looking for it, because, but he was ace so, so much.

Poornima

Thank you so much. And thank you for having me on the show. I really enjoyed talking tech, and all the things I love talking about.

Jamie

Thank you very much for taking some time. today to talk to me. I am very excited to go away and learn about Umbraco hard core now. Maybe to pick up my project of bye bye my Blazor project that I was running, maybe see if I could do something else. I like it. Thank you ever so much.

Poornima

Thank you so much and enjoy listening

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

Wrapping Up

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

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

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

Follow the show

You can find the show on any of these places