The Modern .NET Show

Episode 89 - Umbraco 9 and .NET 5 with Sebastiaan Janssen

Embedded Player

Episode 89 - Umbraco 9 and .NET 5 with Sebastiaan Janssen
The .NET Core Podcast

Episode 89 - Umbraco 9 and .NET 5 with Sebastiaan Janssen

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 Sebastiaan Janssen about Umbraco 9, which is the first release of the CMS known as the “friendly CMS” built entirely in .NET Five and ASP .NET Core. If you have ever submitted a PR to the Umbraco project on GitHub, or have attended one of their official hackathons, then you’ve likely met Sebastiaan, as he manages all community PRs.

Along the way, we talked a little about some of the unique challenges involved in managing a completely open source project; especially one with mutliple active branches, each targetting different .NET versions. We also discussed Sebastiaan’s blog post about installing and running Umbraco 9 on a Raspberry Pi.

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 ever so much Sebastian for taking some time this afternoon to talk to us all about umbraco. Well, okay, so I know there are three pronunciations of umbraco. There’s umbraco, umbraco, and umbraco. So I apologise to everyone in the world for saying it wrong every single time.

Sebastiaan

It’s all right. Everybody says it wrong. And that’s the correct way to pronounce it. Actually. There is a video on YouTube somewhere with all of the, there’s eight more pronunciations of it. So you can you can look it up.

Jamie

Wow, okay, that’s, that’s amazing. I don’t think I know of any other any other tool anywhere that has eight pronunciations of the name. So maybe we can come up with a ninth one in this episode.

Sebastiaan

Oh, yeah.

Jamie

Excellent. But yes. Thank you, Sebastiaan, for taking some time this afternoon. So yeah, I was wondering, could you let the folks know a little bit about, maybe a little bit about you? Maybe an elevator pitch for umbraco? Or umbraco? or any of the other pronunciations? So then, because people may not know, there’s some people who work in .NET who don’t know about it, right?

Sebastiaan

Yeah. So I am Sebastian, I work on the open source part of umbraco. CMS, I am jokingly called the head of PR, which doesn’t stand for public relations, but for pull requests. And I am leading the team of community contribut… contributors - ooh, that’s a hard word - community contributors. Which is a team of five volunteers, were helping me sift through any incoming pull requests for umbraco `cms. They test them they, they verify that the code is correct. And maybe if there’s tests and things like that, they make sure that it’s safe to merge. And they actually merge their code into umbraco - or other people’s code, actually. And they, yeah, there’s there’s a good team of contributors who regularly contribute to umbraco. So for each, for each release, we have at least 20 to 30 people, unique people who have actually contributed to the new to the next release from umbraco. So we’re very much building umbraco together with our community.

Elevator pitch: I guess umbraco is a .NET CMS, and actually .NET Core CMS these days since since two weeks since we released umbraco version nine. We focus on making the editing experience, very friendly. So the end users who are actually going to be using the CMS should have the best experience possible building and updating their website. And then, of course, the second area and focus on is developers who are implementing the CMS, making that a nice experience for them as well; which has just gotten a lot nicer on on NET Core, or NET Five, as it’s called. Now, I guess.

Other than that, I am based in Copenhagen, but originally a Dutch. I am from Holland, moved here for the job. About nine years ago, I love cycling through Copenhagen, and it’s a very pretty city. I’m looking forward to going to live concerts again. But until then, I will just brew some more beer, which I do in my spare time a lot.

Jamie

There was a, I don’t want to say old but a marketing term that I’ve heard in the past for umbraco is “it’s the friendly CMS”.

Sebastiaan

Definitely. So that’s how we market ourselves. Yeah, exactly. But it’s not just marketing, we actually we actually mean it. We have actually a very friendly community. And they are happy contributors. And we also really happy to see each other in real life, which we’re hoping to do again soon as well. This is actually why I came in to the umbraco community quite early on. I’d been to conferences before and I heard about this umbraco thing I thought I’d go to that conference and see what it was all about. And actually within the first five minutes, I had the most interesting conversation I’ve had in my professional life with someone, and that just kept going for the three days the conference was on and I never looked back. I’ve been all in on umbraco ever since. So we’re very, very happy bunch.

Jamie

I have to say, I went to - oh, gosh, it was definitely in the before times. I went to an umbraco conference in London. It was a two or three day thing

Sebastiaan

It was 2018?

Jamie

Yeah, I think it would have been - may have been a little earlier. I did a, I know I went because I did a talk and it was on what Blazor is and all that kind of stuff. And I have to say that the people that I met they were super friendly. You know. I’m not I’m not saying that there’s unfriendly people at conferences. The people that I met, they were just like, “Oh, hey, Jamie! Let’s talk about this. Let’s talk about that.”

Sebastiaan

Exactly yes. I’ve been to other conferences before where people just stay with their own little groups and don’t talk to to any of the other attendees. And this was just immediately it was very, very friendly and welcoming. So yeah. And we try to keep that up these days as well, even if we have to do it online sometimes.

Jamie

Hmm. Yeah, I’m a big fan of the umbraco conferences. I’ve got to say, at least, by that I mean, the two that I’ve been to, and there’s just been a because life and you know, it was in the before times. But yes, I loved attending the hackathon that happened slightly before then just talking about community contribution. So this is like, my understanding of it having been to it was, you know, everybody gets into a room and they’re like, “Oh, hey, I have this idea for a bug fix or for a feature. Let’s see if I can implement it in the next few hours.” There’s umbraco people there. There’s some other people there are going to help out. And then as far as I remember, you’re in the room just sitting there going, “right. Okay. merged, okay, merged.” And there was like a counter. And you were saying, “Yeah, we merged 17 pull request today,” or something like that.

Sebastiaan

It’s always so much fun to see people, to help people set up the umbraco source code and get it get it up and running. And then to see the eyes go wide, when they go, “oh, I can actually change this. And it has an immediate effect. And I know that I know where to find stuff. And now I know how to actually change anything else that I might might encounter.” It’s super fun to see that that light bulb go off and then of course, it’s even more fun if people will actually submit a pull request. And I then I said, I’m sitting next to them, able to merge that pull request. Usually on these hackathons, you tried to do something simple first, right? Like a spelling mistake or whatever. And then it’s super nice to give people that good feeling of, “okay, now my change to umbraco will live in the codebase forever It’s in the git history. I can see myself there. I’ve been an active contributors to this to this project.” Super fun.

Jamie

Yeah, it is it is.

Sebastiaan

Especially this is my my passion. Actually, when I started with umbraco, I found a bug. And I actually sent - this was in a way before, this was on codeplex. So I sent them, I think I needed to add a patch file to a issue somewhere. And I got no response for like, for like a year. And I kept asking about it like, “hey, do you? My bugs fix is really good. Do you want to want to put it in the in the core?” and they were too busy. So um, yeah. When I was hired, I made it my mission to, to make that experience a lot better. And hopefully I have succeeded.

Jamie

Yeah, most definitely. I can say for sure that when I was at those hackathons, I’m sitting here with my, my MacBook Air. And this was in the, you know, the .NET Framework timeline. So I was like, “there’s not really much I can do. But I can help someone out if they need to.” I remember I was looking through one of the PowerShell, build scripts, and trying to swap all of - the were a number of hard coded strings for paths, you know, with like a backslash in place. And I was trying to replace a number of those with like directory, or Path.Join or something like that, just to make it a little bit simpler, but I never got it finished. So I didn’t submit it. So but it was it was a it’s a wonderful experience to be sitting in a room 20,30 people and they’re all going, “I’ve just fixed this!” and then and then like you say, you shouting up and going, “oh, wow. Yep, just pull request complete,” and just mark it off on the board. That was a really fun experience, I have to say.

Sebastiaan

Yep. It’s always very rewarding to have a roomful of people who are actually trying to get stuff done and are actually getting things done. Super fun.

Jamie

You mentioned there that you got started with umbraco after you know, sitting in waiting for a while, with a pull request or rather a patch file. And then having gone to a conference and started talking to some people. So that that tells me you weren’t there really from the beginning. I guess you haven’t been umbraco developer since the beginning of umbraco. Right?

Sebastiaan

Not since the beginning of unbroken, okay, I think I came in and when version four was just released, this was in 2009. So I’ve been around for what, 12 years now. So it’s been a while and I got hired by umbraco in the nine years ago. What’s that? 2012 Yeah. 2012. So I’ve been around for a while, just not from the very, very beginning. Indeed. I got hired to manage the core of braco while also doing 50% of actually actual development on umbraco itself, but we really needed a project manager who could get set some deadlines and do get get some goals. all sorted so that we wouldn’t get distracted by all those shiny new things that we could also be doing. So yep, that’s, that’s why my journey Adam braco, HQ started at least,

Jamie

that’s pretty cool. So have you been dotnet developers since before then? Or was it like, oh, there’s this thing called dog net and this thing called a braco. Let’s learn them both the same time,

Sebastiaan

I think I started programming when I was 12, or 13, I was q basic, and I figured out that you can make the speaker make make a sound. And I could build notes, or you could actually make it sing a song, which was, which was fun, but kind of silly. But it really took off for me when I when I discovered the Internet, and you know, geo cities was there, and I copied and pasted HTML and JavaScript and then got into, okay, let’s do this PHP thing that seems like it might might might be doing something interesting as well. So I started building my own little websites, and just self taught, really. And then in 2005, I think I landed my first actual developer job, where I was immediately forced to forget everything I’d learned because this was in. And this is the worst it wasn’t in VB dotnet. And I had to learn Visual Studio I was obviously used to doing everything and notepad plus plus like PHP, like, you don’t need to compile anything. So I had no idea what I was doing the first year, I think compiling in Visual Studio is a bit of a beast on you haven’t seen it before. But yes, that was a bit painful. But once I got into it, it was it was nice, then then then I discovered on braco, through a colleague was like, actually, the CMS that we’re building is exactly the same as the one that they’ve done. But theirs is open source and better. So maybe we should look at this. And I agreed. Luckily, and braco was, was written in C sharp, so I am quickly converted to I don’t know if I can see this if this is bad, but to a real programming language.

Jamie

No, I think that’s allowed. I think that’s, you know, I feel like old programming languages a real programme will Yeah, true. But yeah, it’s always fun just to have a little laugh at a joke person or

Sebastiaan

whatever, it gets stuff done. Whatever works for you. I’m very happy with that. But I’m very comfortable in C sharp, and I really love using it that.

Jamie

Yeah, absolutely. I like the the, your colleague had said, Why should we build when we can embody quartz by and by that I don’t mean use currency. But you know, the time to invest in it. There’s there’s a, there’s often an argument of build versus buy. There’s not really, really something there. I’d like to get into here just because it’s, it’s it’s more of a software engineering question, I think. But yeah. It’s it’s something that I think a lot of teams, I’ve tried to put this as delicately as possible. There are some times sometimes you get developers on a team who are a little overzealous, and think, yes, this has been done before, but I can do it better. And maybe you can, I’m not trying to say that you can’t. But is it worth spending all of that developer time if like you say, someone has already solved this problem? And even better, it’s open source. So you could just sort of copy not copy. But you know, I mean, it’s not going to cost you it’s not going to have a physical monetary cost to it. Right?

Sebastiaan

Exactly. I think actually, in 2009, when I when I started there and open source and Microsoft was really kind of like polar opposites there. So it was kind of innovative, that there was open source stuff happening on the on the Microsoft stack. And that made the company that I was working for a bit scared as well. So they are they actually went off and found a different product that they used, instead of, they’re also continuing to build their own. So yeah, I totally understand that, especially in the time off before from Bronco. It was it was quite mature. It worked. It was really cool. And what it did, but there was also like a lot of rough edges around it. And yeah, we’ve been polishing those rough edges for the past few years to make sure that we actually have a nice developer experience as well.

Jamie

Yeah, I can I can understand the reservations that back then and still to a certain extent now some project managers or clients or whomever may have with but it’s open source because what had quite literally what happens if the developers stopped working? Yeah, exactly. If you put all of your company, the stake of your company in the fact that this thing is here and is open source, and then it magically goes away. You know what happens then? Right? Yep, there are some efforts to stop those kinds of things. So like, stop that from happening. Sorry. So like, you know, there’s there’s a, I happen to know that there is a commercial arm to one braco And that, you know, Microsoft have set up things like the dotnet foundation in the hopes that if like, for instance, if I’m working on some open source thing, and I decide, right, I am done with this now, it is not complete, but I’ve done all that I can, I need to sort of leave this for now and the community can take over, then, you know, the idea is that there are different groups and organisations who can help with getting new people on boarded and the code shared

Sebastiaan

depends on Yeah, I mean, it is a hard thing to do as well. I mean, even if you were to take on someone else’s project, it is tough to get into a big project and make it your own and figure out if you actually want to support this. Luckily for him, braco, we have done a few things to make sure that we have a future. And so first of all, as you said, we have a commercial component, we have umbraco Cloud, which is any anything you want to do in in braco, you can do in the broker cloud, you set up a project, and you pay a monthly fee, and you get the beautiful open source, CMS, plus all of the stuff that you don’t need to do on servers and things like that. I’m not a salesperson. So I’ll stop talking about this. But this is a continuous, good for our continuity. Plus, when, in 2009, when there was four people working on this project, yes, of course, it is a bit scary when those four people and they might just drop out and go do something else. Right now we’ve just, we’ve just completed about 100 people working at umbraco. Now, so we’re an actual company. And you can see that as well that we actually have support staff and everything else that surrounds a software project.

Jamie

So yeah, what you’re saying is, there’s no need to worry contrary, the friendly CMS and see where you can build right?

Sebastiaan

That’s exactly what I’m saying. Thank you for being my sales man.

Jamie

Like I say, I’m not a salesman, either. But let’s let’s say that that’s the thing. I don’t know. Okay, so one of the things that we’ve sort of touched on a little bit, so far is that umbraco now runs on dotnet, core slash dotnet. Five. And I guess, because we’re recording this early October, soon to be dotnet, six, right. And I know that there is an episode earlier in the show’s history, Episode 46, I believe, from 2020, where I talked to Bill Goldberg about some of the plans for moving over to dotnet core. And I believe that was, that must have been arranged shortly after I talked. Because I remember at the the umbraco Festival in the UK, down in London. And actually I was sitting in a in a q&a session with a number of engineers, and I said, you know, put my hand up and said, So what can you tell me about dotnet? core? The core of it? Nothing yet. Which is fair enough, right? Because the last thing that you want to do is say something in public about whether you are or aren’t moving, and then that get taken out of out of context and blown up put over the internet. So that’s totally fine. So I fully understood that.

Sebastiaan

Yeah, I think at the time we were, we were working on it, but we weren’t sure what we could commit to. And actually, pretty soon after we were really like focused on Okay, this is what we actually can commit to

Jamie

show and that makes sense where you don’t want to, if you’re in a moment of uncertainty about whether you can commit how much you can commit engineering time or whatever, then you don’t really want to announce that so yeah, I’m not I’m not trying to say it was good or bad. I’m saying I fully agree with it. And that’s perfectly fine. So it has now been migrated or rather there are parts of it that have been is it Do you know I mean, you may not know but do you know whether it’s a full eight now the whole thing runs on dotnet core 565

Sebastiaan

and six RC or whatever is available right now is working. So we have everything running. That used to run in V eight from Brock. So the net framework version. In fact, this is one of our biggest struggles in the last year as people have been actively contributing to the net framework question from Barco and we’ve been merging everything up to V nine so anything that comes in as has been most of the vino so the VM v nine have currently have feature parity we have exactly the same back office look and feel is all looks the same. So you wouldn’t even be able to tell if you’re on V nine. If you look at it from the outside. This was one of the biggest struggles that we’ve we’ve had especially when anything, anything see Sharpie changes then then that needs to be slightly changed in in the renamed branch possibly. Most of the front end stuff stayed the same. So that was that was pretty easy to merge up. But I know that Yaga has been cursing a little bit about some of the big merges that he’s had to do with 200 merge conflicts in the in one merge. So yeah, that’s been fun.

Jamie

Yeah, I can understand that. And like you said, because it’s an open source, CMS and anyone, technically, anyone could submit a pull request. You know, if you’re, if you’re submitting pull requests version eight, then yes, they will be there headache of right. Okay, how do we bring this into V nine? I remember something I was saying to. There’s a question with Yaga. Back in 2020. Word said, Well, how are you like, is this seems like it’s a very difficult thing to facilitate, right? Because at that time, I believe there was active development for V eight, or rather, you know, there was some development going on in V eight, and this V nine was being spun up, I don’t think it was called v nine at the time. But like, keeping that in sync must have been, presumably more difficult than that it is now. I mean, that’s just it’s beyond my my method of understanding how you will uphold this.

Sebastiaan

It’s actually it’s, it’s it’s been also a learning experience for us. Of course, we haven’t ever tried to say this before. But here is where we are known as the friendly CMS, and we’re trying to do the friendly thing and not break too many things for too many people. So that they can actually eventually come along and migrate their websites of the V nine and not notice that much of a difference even in the code that we need to write, which was very important to us. So we wanted to make sure that everything was kind of the same, or at least we could explain the differences. Of course, there’s a few things that we had to change, something like membership providers doesn’t exist in net five, so we had to flee going on SB identity or dotnet. identity. So those those bits different differ a little bit, but we’ve tried to keep our API’s quite quite similar so that people could understand where to look for the for the differences. And then of course, the, the way you write views, and in that core is a little bit different, as well. So those things need to be rewritten and updated. But still, there’s not that much difference. If you look at it side by side, it actually looks quite similar. So it’s a it should be a familiar experience for people who have been using in braco. before. And that’s what we wanted to really work on to make sure that that was facilitated for.

Jamie

Do you know of I mean, we’ve we’ve talked a little bit there about the sort of migration and keeping everything feature parity was in sync. Were they were they the majority of the issues that you knew about that you as a team knew about going in, again, with the identity stuff? Or is it because like, I feel what I’m trying to get at is, I feel like over the next couple of years, there’s going to be a lot of teams who go, Oh, well, we’ve just been told to convert over from is a migrate from framework over to five or six, or whatever the number of the time is of that time is? Are there other any, you know, of other any big gotchas, there’s a lag time when right? Oh, gosh, we didn’t think of this? We didn’t think of that.

Sebastiaan

Yeah, exactly. So I have not been super involved in the development process of the nine. So I’ve looked at it from from from a little distance, and I kept seeing jakka, smiling. So that’s a good thing. So most, most things were actually very similar and pretty easy to point over. Of course, when some, some complete concept disappears, like, like membership providers, then you need to figure something out there. We had to do some things with image manipulation, we used image processor before, which is an image manipulation project, we had to switch that out for image sharp, which is, there’s a company called six labours who’s doing that it’s also an open source project. So therefore, there was things we needed to switch out, but that wasn’t too too bad. I think the the one traumatic experience stuff the ACA had very recently after we after we launched v nine was the change from NSL to E. ICU, which is so whenever you deal with languages in dotnet, the let’s see, the framework version was still using nlos national language support and the NET Core version is using ICU, which is international components for Unicode. This is fun, especially if you’re not Swedish, then it’s fine then it works absolutely perfectly. Once you do go to Sweden, and you type the minus sign and you Try to, let’s say you have minus one, and you try to enterprise that you suddenly get a false instead of a true in tripods, of course, because the minus is slightly different than Sweden, then it’s not actually a number or a part of a number. So we learned that the hard way. Some of our querying in the database looks for things that start with minus 20 minus 21. And that just, yeah, that’s not working. So we’ve had to update those those things to do the right thing. And we’re we’re forcing, we’re actually forcing everything to the new ICU now so that it will all be the same in all operating systems as well. So not just Windows, Windows also has differences, by the way. So windows eight does nlos, Windows 10 and 11. Does ICU or some windows 10 and 10 versions? I don’t know. It was very interesting. So that’s a huge gotcha that you need to look out for. Once you get past that one, though. It was it was not too bad. So yep. And then, of course, I mentioned Yeah, merging if you are still supporting both the framework and core somehow then merging stuff or doing so what some of our plugin developers do, they’re actually multi targeting now. So they’re actually having if def statements in their code to say, to check if we’re on NET Core or not, and actually doing something a little bit different, which is, surprisingly, it works surprisingly, well. That’s the only thing that we were very afraid of that our plugins would all fall behind, because they would like take months to redevelop. But just adding some some detection, a framework in there is actually working for them. And it works quite well.

Jamie

I think that’s a wonderful boon. I guess, for the for the team who created the compiler and the runtime, just to be able to just throw in a if def, this version of the framework if def don’t a go if def dot f5 or whatever, they’re there feels like a really good idea, you know, because otherwise, you have to combine multiple versions, right?

Sebastiaan

Yeah, that that’s actually the most important part is that you don’t have to compile different versions, which was was going to be hard. So if you’re a plugin developer, and you, you have a version eight out of your blog, and people are trying to instal that in, in the NET Core version, obviously, that won’t work. And the other way around, definitely will not work. It won’t work either. So there was a huge conflict coming up right there. And most of them have actually sorted by multi targeting and just like no version, version 10, whatever. Yeah, it works in both. NET Framework and NET Core, don’t worry about it. Just a solid. So super nice.

Jamie

Excellent. I do like that, because like, one of the things I like to do with the show is to collect some helpful hints for people who are going to be moving over, I believe it was Scott hanselman, who said, you know, the enterprise is a bit like a, an oil tanker, he will migrate over, but he will, he will take some time. And that’s both a good thing and a bad thing. But I guess it’s a good thing, because it gives those developers who are working on enterprise things, some time to actually look at how other people have solved these problems, right. And then it becomes I don’t want to say easier, but less difficult to migrate over. And I think that’s that’s a good thing. And I think sharing that information is a wonderful way of helping those people out. Right?

Sebastiaan

Not just at the prices, but the same. Same goes for us. We have we’ve tried the versions two and three, I think and we just, we couldn’t we couldn’t really get there in the end. And it was only when dotnet five was released that we were like, okay, now it’s smooth enough to to move to a new framework. So yeah, we’ve we’ve had to wait as well. And of course, we were a small team at a time. We couldn’t spend all the resources that we have had this this time round. So yeah, I think dotnet five is great comes at a perfect time. I think people will find it surprisingly nice to move over to actually.

Jamie

So one of the things that I’d love to talk to you about is recently at the time of recording, you’d written a blog post about, hey, guess what, I’ve just got a braco, the dotnet friendly CMS running on a Raspberry Pi. So I’d love to talk to you about that. Like, where did the idea for trying that out come from? Was it just a case of Hey, it runs on Linux, right? prosper. py runs Linux as well. Let’s just do it. See what happens.

Sebastiaan

Basically, yes, one of our community members call did this. He started installing gotten a Raspberry Pi, which is a crazy idea, why would you run software? software on the Raspberry Pi? But yes, because you can, that’s the answer. And he, he got it as far as it runs, everything works absolutely fine. But you need a SQL Azure database to, to link to. And I found that was a little bit of a bit of cheating going on there. And like, wouldn’t it be nice if it was self contained on the Raspberry Pi, without having to rely on an external service? So yeah, I started investigating that, and it turned out to be really difficult. So I got stuck for a few weeks there until someone told me that SQL edge is a thing. And SQL edge is basically meant for for IoT devices. And it’s a it’s a Docker image that works on rmsc on the SQL server version that works on arm. And surprisingly, it actually runs and it looks like a real SQL Server. I had the most frustrating weekend. The first time I tried this out, I was doing this on my Raspberry Pi four with I think this one had two gigs of RAM. And I just kept getting errors and errors. I’m like, I am not a Linux person. So I’m probably doing it wrong. So I kept googling what I was doing wrong, until I realised that finally I got into Docker logs. And finally I realised I just don’t have enough memory to do this. So I found my other ERP I have eight gigs of RAM laying around, switch it out, started all over again. And finally, the SQL Server started running. And that was the amazing moment. I’m like, okay, SQL server is running. Okay, now I can do anything I want. And the five minutes later on brocco was was installed and and actually running on the on the PI. Of course, then I am a little bit weird, I wanted to take it a little bit further. I’m like, Okay, what can we do next, I want this to sit and sit in my office next to me and run an actual website that people can can visit. So to go back to SQL for a second, it The hardest part there was to actually create a database, you don’t get SQL command on the arm version. So I had to also figure out, Okay, how do I then do anything, had to connect to SQL Management Studio from Windows, to the to the PI, stuff with firewalls that was also also interested in getting them opened up, but not too bad. Actually, the Docker image, make sure that it opens up ports quite quite well. So that worked. So I got it running as a service. So Docker sites as a service, and braco website, Kestrel starts as a service. That’s great. So I could reliably reboot the thing. That was also a big win. And then the final key of the puzzle, which I didn’t know the word for it, of course, I wanted it to be online on the internet. The problem is that I am at an office here, which is a shared office space with about 150 other companies. And of course, they won’t let me fiddle with the firewall and open up Port 80. For me, that would be a big ask. So I needed to figure out how to bypass the older older firewalls here. Which is finally when when I tweeted out, okay, what can I do here, and someone pointed me to something called CloudFlare a tunnel, which is a service you run on the on any computer, it connects to CloudFlare, it’s free CloudFlare you can map ports on on your Raspberry Pi, in this case, to a port in the in the public Internet, and point your DNS at it. And it was five minutes of work. And it just worked, which was amazing. So now I have Yeah, I have a Raspberry Pi laying around here with a website on it that you can you can actually hit and it works and my colleague, Warren try to, you know, DDoS, or at least DDoS if he sent a bunch of traffic to it. Of course, some some traffic was too much. I think he got up to about 100 requests per second, which is very acceptable for a very low power device for it to accept 100 requests per second. And it still be running so yep, that was my journey of getting the Raspberry Pi connected to an internet.

Jamie

That’s that’s amazing because I can I can kind of imagine a instead of like if you if you were to sort of self host and braco in the past you would need you know a server and they would in the dotnet framework timeline they would need to be running Windows as So that would be a cost there of a Windows licence, right. But you also need relatively strong hardware, not because of a bracket. But because there’s a lot going on, there’s windows, there’s dotnet framework, there’s an braco, there’s SQL Server all sitting on the same box. Or even if you split your SQL Server onto another box, it’s still there’s quite a lot there, right? But now I can, I can kind of see a situation where you might go, you know what, I’ll get four Raspberry Pi’s, I’ll get 12 Raspberry Pi’s, I’ll get a bunch of or lead, you know, any other sort of IoT single board computer, get a bunch of these together, put a Linux on there, put some dotnet core on the head on f5 on the put on braca, one there, but sequel edge on there, put something in front of it so that we can, you know, load balance between those. And hey, you’ve got yourself at a low powered web server, compared to how much you would have had to have paid in the past, right?

Sebastiaan

Yep. And that’s one of the things I mean, we don’t officially support anything, but when there’s windows at the moment, because we don’t have the capacity currently to test everything. But everybody who was been using a backup before but was hating Windows is like, I am going to try it anyway. So all of the wonderful Mac people and all of the wonderful Linux people have been trying it out. Of course, we found some like casing problems, file names that were not in the correct casing, which we were expecting. And they’ve been, they’ve been slowly fixed over the past few weeks. So it’s running pretty well now and without any real problems. And then now we want to, of course, look into new storage options. So not just SQL Server. But let’s see if we can do something with maybe with SQL, SQL lite, or whatever we can, we can fit in there to make it even easier for for these kinds of setups as well. Because you don’t, I mean, SQL Server is not doing all that much fun braco when we’re basically doing reads of content that goes into a cache. Of course, content editing means you need to do some writes, but it’s not. It’s nothing very heavy. So we don’t need all the power of that beast of SQL Server at all. If we can do it into in some later database that’s also see Linux or Mac native, fantastic. We would love for that to be a thing.

Jamie

Sure. I’ll just quickly point out to anyone listening and that’s not you saying or braco is definitely going to spot these other platforms that you say you’re looking into it right? Just Just in case someone takes what you said and went, Oh, my goodness, it’ll be running on Maria DB or a Behringer, Postgres. It’s like, no, they just experimenting, right? Just like how we all experiment, right?

Sebastiaan

Yes, no commitments at the moment. But we’re, I mean, we’re definitely going there. We need to we need to be able to support it. And it’s definitely also going to be a thing for people who want to do hosting cheaper, and those kinds of scenarios are really important for people so Yep,

Jamie

sure. Okay. So we did have a question from Paul from cocido. Cody, UK. I know that he’s a full Yeah, yes. He’s very, very famous in the, in the young braco community, and also quite famous on tik tok, I hear from Tick Tock. So yeah, he said, so Well, I think you’ve already answered one of his questions. And that was, what model of raspberry pi. Are we talking? Because obviously, you know, because of it has because it has that SQL requirement, it’ll have to be the one with the most ram right? Yeah, so

Sebastiaan

it’s the one so sequel are the raspberry four with eight gigs of RAM and of? Well, I don’t know, of course, but in this case, I couldn’t use the the default, raspberry OS that comes with it, I actually needed to instal the full Ubuntu version on it as well, that the Ubuntu version that works for arm. And that’s one thing you can choose, when you set up your Raspberry Pi, there’s an installer that you can download a Raspberry Pi website, you can choose which distribution you want to run on it. And this was the official Ubuntu distribution that was made for the raspberry. And that one just does all the things.

Jamie

And so as you were saying earlier, you know you’re not and braco at the moment and supporting this as a as a deployment option. But I like that there is an option to although is not supported. Hey, let’s let’s hack around and see if we can get it working. Right. And my other question was going to be which operating system and which bits of software are you running? But I think you know, you answered that with

Sebastiaan

this one too, but it is the server version. So everything is unfamiliar to Windows people. It’s all command line. And that’s Yeah, it’s interesting to copy paste stuff from random blogs to see if you can get it working. without really knowing what it’s doing, but you get there in the end,

Jamie

I think that that’s one of the one of the things that the that they everybody quits teach you not to do when you start looking into Linux based operating systems is not just pasted in. But hey, if it gets you to solve the problem,

Sebastiaan

this is a this is a hobby project. I don’t care if it breaks or anything. But yes, if you’re doing something important, you need to find someone who’s good at Linux administration and not just copy paste random strings.

Jamie

And like you say, because it’s an experiment, it’s, you know, that’s fine. That’s no problem. Excellent. Okay. So let’s, let’s just talk about that for a second. And so you’ve got the, you got the boon to four installed on the Raspberry Pi, you presumably did a lesson saw the dotnet runtime? And then, was it just a case of, I guess you would have needed the SDK as well, and just dotnet new on braco? Was that almost quite literally it?

Sebastiaan

Yeah, that’s exactly it. So luckily, Microsoft has become much better at documenting their stuff. And it was literally going to the Microsoft website saying dotnet instal dotnet to give you the instructions to do it on on a boon to even version specific, and then copying those strings and executing them. It’s, it was a one minute job to get dotnet running, and then you do we have some dotnet templates for umbraco. So you can instal umbraco easily so you do dotnet new and braco give it a name. You can ever give it as a connection string, if you already know one. And then and then it starts running. It was at most five minutes of work to to actually get that going.

Jamie

Well, can you imagine that? So let’s just do a thought experiment, right? And rewind back to 99. And somebody says to you, hey, there’s this thing called mono, which allows you to run that on a Linux machine. Do you want to try and get an braco running on a Linux machine running mana?

Sebastiaan

People have tried by the way and failed, quite miserably, miserably, unfortunately. Yeah, I am, I am super amazed by all of this, by the way, I have another spare laptop rattling around too much I installed Ubuntu just on the whole machine. It is literally running Microsoft Edge SQL Server, a full SQL Server JetBrains writer, it’s VS code. I have GitHub desktop running on that, and it feels like almost feels like a Windows environment, if you look at it. So all of this is amazing. And in the last few years, it’s been possible by all the wonderful work that Microsoft has been doing to to fully support all this.

Jamie

Yeah, I can foresee if it hasn’t happened already. A lot of Donaire developers going well let’s try this Linux thing then what is a Linux and how do we download it? And sort of playing around with it? Because why not right if it works there because like, I’ve been a Linux user since around 2008 right? And my biggest problem was I want to do dotnet stuff I want to do dotnet stuff. It just wasn’t possible until around 2016 2017 and that’s not to say that the mono was in any way inferior a lot of the time it felt like it was okay right you’ll donate code in a mono environment then do a bunch of wizardry and maybe it will work

Sebastiaan

yeah and the best thing about it now is that it will it works consistently exactly the same way across any operating system which is which is super nice. You don’t have to learn anything new if you already know the one thing so perfect.

Jamie

Exactly right it’s it’s almost a perfect example of pick that all the works for you and then build the software on top of it right?

Sebastiaan

Yeah, we have a lot of we have a lot of math people doing any CMS has a lot of Mac people because they like they like their max designers and Photoshop and all those kinds of things. And all the Mac people are super interested in running an grok on their Macs. I’m actually not sure if it works on the on the M one does it

Jamie

so as far as I’m aware dotnet core slash five slash six. So dotnet core and five doesn’t work on m one but dotnet six will six well that’s that’s it. Yes, that’s my understanding. Yep.

Sebastiaan

Good so we only have a few more months ago. I guess when this is released that might be out.

Jamie

Yeah, yeah, by the time this episode comes out, you’re listening to this listener dotnet. Six will it should if as long as the the release date doesn’t slip and move After pretty good about not slipping release dates, it should be able to run on your m one without any, because I think there are some sort of unsupported hacky ways of getting it running. But obviously if you want the the it works, then you ever done etc.

Sebastiaan

Fantastic well we’re we’re ready we’ve we’ve already started a V 10 branch, of course, and installing dotnet, six our C’s on there to make sure that everything still works. That’s going to be we’re actually linking up with Microsoft’s long term support version. So umbraco version 10 will be long term support to get on with dotnet, six long term support. So it will be out soon after Microsoft is ready with with ethics. So yeah, all the Mac people can rejoice.

Jamie

Awesome, there must be good, then for your thank you say you have a number of designers or the user interface, people who are happy with working on a Mac, perhaps a bunch of them are already running m one. And they’re like, hey, I’ve got an M one Mac, and you are doing umbraco stuff. I want to be able to run it locally, so I can make my designs happen in real time. And that that is just something that can happen from November onwards, right?

Sebastiaan

Yeah, and for now, we’ve actually only talked about existing umbraco users, but we now suddenly have an enormous amount of people who suddenly can can use and development braco on anything they want. They don’t have to choose windows anymore, ever VM running or whatever. So yeah, it’s gonna be really good for our number of number of users, we hope.

Jamie

Interesting thought experiment that just happened in my brain. And none of this is me tying umbraco or yourself or anyone down to a definitive answer. But a stupid thing that just happened in my brain is on braco on a smartwatch and braco in blazer.

Sebastiaan

Who knows? Yeah. I have no experience with any of that. So you tell me if it’s possible.

Jamie

Why not? Anything’s possible, right? Let’s see what we can do. Sure. Again, there’s none of that is supported by umbraco. That’s just me making a silly observation. But why not? Right? Let’s see if someone can get it going. Absolutely. Wonder if there’s someone out there who can make umbraco work on the default Raspberry Pi operating system? I wonder what it is? There’s not quite there. I’m sure that with more eyes on it. Now there’ll be a way of figuring out what’s missing, right?

Sebastiaan

I actually I actually never tried. The only reason I went to overwinter was because our community member Kyle did it? I don’t know if he tried actually. So it might actually be possible.

Jamie

Maybe Maybe I I know that there is a so the the distribution of Linux that I use on one of my Raspberry Pi’s is called diet pi. And the idea is the sort of stripped down, and it has its own sort of application selector. I may try and get it running on that, why not right? And then I can say, Hey, I got it running, or Hey, I didn’t get it running. But guess what? A failure is still a success. Because it’s like, yep, here’s a reason why it doesn’t work. And then I can maybe futz with it and see if I can get it working. Yeah,

Sebastiaan

absolutely. And I guess they’re all they’re all of these distributions are Debian based anyway, so they should be fairly compatible with each other. So yeah, it’s worth a try.

Jamie

Yeah, right. And I think that’s another thing that, especially for dotnet developers who haven’t been in the Linux world is that Linux is an operating system. It’s the kernel of an operating system. And there’s like distributions of Linux with all the stuff thrown on top. So he said Debbie in there, there’s so a boon to is a Debian based distribution. There’s Arch Linux is in a slackware. There’s Gen two, there’s 100 billion gajillion different Linux. So why not try it out? Right? That’s really what if one listener tries out a Linux VM on their machine, and throws umbraco nine on there, this gives them a go, let’s, let’s see what happens. what works and what is what isn’t right. It’d be brilliant. Be Cool. Yeah.

Sebastiaan

Yeah, I’ll be I’ll be very curious to hear back from that.

Jamie

Excellent. sebastiana Where is where’s the best place for people to find out a little bit more about you? And definitely To find out more about umbraco and things like that? What was the best places?

Sebastiaan

Yeah, well, obviously, um, proko.com would be the place to go if you want to know anything about umbraco. If you go to coder comm slash blog, you’ll see my face sometimes as well. I work mostly on community contribution. So that’s where my blog posts will be focused. I am on Twitter. You can follow me at cultish SEO LTV, is where I tweet and that’s probably where you’ll find me most and see you all t i v dot ml is my blog as well, where you will find the description of how I got Raspberry Pi running.

Jamie

Excellent. What I’ll do is I’ll put those links into the show notes that way, you know, if you’re driving to work, you don’t have to dive over the dashboard to type them in to your phone or write them down or something. You know, focus on what you’re doing, folks, don’t worry about where are these links, they’ll be in the show notes, so you don’t have to worry about that. Excellent. So Sebastiaan thank you ever so much for talking umbraco with us.

Sebastiaan

Pleasure.

Jamie

I’m actually recording this now on a Linux machine. So I’m very interested to go ahead and try and get everything running. I do you know, the aforementioned Paul Seal had sent me a bunch of commands to get it up and running. And we failed only because they don’t have a SQL instance on here. But SQL for Linux is available in Docker. So maybe I could just throw that on here tonight. And give it a go and get it up and running. Who could say

Sebastiaan

call has a handy blog as well where he has been collecting snippets to paste into with Linux instance. So you might have a SQL one in there for you as well.

Jamie

Awesome. Awesome. I’ll have to give it a try. Excellent. Well, like I said, Sebastian, thank you so much for spending some time with us today. I really appreciate it.

Sebastiaan

You’re very welcome. That was fun.

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 Sebastiaan Janssen about Umbraco 9, the fact that it runs on .NET Five, and running a .NET-based CMS on a Raspberry Pi. 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 out contact page, and to come back next time for more .NET goodness.

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

Follow the show

You can find the show on any of these places