
This year, it was already time for my 10th Codegarden. A lot has happened since the last edition. That time, I gained a lot of inspiration and thus started doing more for the community. That made this Codegarden even better for me personally than the previous one. Therefore, in this blog post, I will tell about a few of my highlights.
The Umbraco Keynote
The keynote is a strong start to Codegarden every year. It continually reaffirms that the Umbraco landscape is very robust and is only getting better. Most of the highlights can be read here. Just like last year, there was a lot of focus on headless and platform DXP, but this time we can get started right away. That's because an Umbraco 12 release candidate is already available. The addition of Umbraco Commerce and Umbraco Workflow also make Umbraco a better choice in the upper mid-market segment. What made this keynote special for me was that I got to go on stage at the end because, after a long time, I'm finally an Umbraco MVP again.
Expand your content reach with the new Delivery API in Umbraco
The Umbraco Content Delivery API finally makes headless a first-class citizen within Umbraco. During this presentation, we were shown the ways content can be retrieved via this API. What's nice to see is that, like most parts of Umbraco, it's also easy to extend. Additional filters can be added, and it is also possible to adjust the output of individual properties via converters. Unfortunately, protected content (member authentication) is not yet available. The backoffice UI for content preview and webhooks are also still to come. So it's a good start, but it still needs to be developed further.
Migrating from HTTPHandlers and Modules to Middleware
In this session, Poornima showed how middleware can be used instead of HTTPHandlers and Modules. What I liked about this session was that she first explained how certain things work in .NET 7 and then how this can be applied to Umbraco. For example, she gave a demo on how you can modify a robots.txt with content from Umbraco. She also showed the problems she encountered and how to solve them.
Umbraco with external login providers
I would have liked to attend Jacob Overgaard's session on Exploring the new Backoffice, but unfortunately, that was not possible as I had to be elsewhere to prepare my own presentation. The last time I gave a presentation at Codegarden was in 2016, so I'm proud to finally be able to give one again. In this session, I explained how to use external login providers in Umbraco. I gave a demo that is also available on Github and also shared something new about virtual members. You can download the slides here.
UmbraCoffee
I've been at every UmbraCoffee episode at Codegarden. It's always a nice summary of the day with lots of humor. The Wednesday edition was quite late and I think no one was drinking coffee anymore ;-). I found it particularly interesting when Filip was on the couch. He said, "What can we make Umbraco Cloud do that no one else can do" and came up with several examples, such as the sustainability dashboard. That's something that only they can make because they know Umbraco and the infrastructure. In this way, Umbraco Cloud becomes an even better option than if you were to host it yourself.
CMS backstage collaborative discussion around property editors
This was a short session during one of the breaks. In it, Niels and Jacob showed how to create a property editor for the new backoffice. It's clear that it's really built with a focus on frontend techniques such as web components. For the current backoffice, property editors are mostly created by backend developers who build the APIs, but also the AngularJS part. With the new backoffice, you can let a backend developer create the property editor APIs and a frontend developer create the property editor UI. That's the same way you already do it for websites. It was nice to have a discussion about this. The question came up why Blazor wasn't used, but that's primarily a technique that backend developers like to use. Umbraco may run on .NET 7, but that's only the backend part. For the UI, web components were chosen because they align much better with what most frontend developers use.
Code Red: convincing your boss to focus on code quality
This session wasn't about Umbraco, but about code quality in general. Adam showed the problems that technical debt can cause. He showed how you can visualize this and really find the hotspots where the problem is using an X-ray tool. It was a very refreshing session, and I would like to use this tool in some of our larger projects.
DXP Update: Umbraco As An Extensible Platform
I also attended Andy's DXP session last year, and it's interesting to see how the focus has shifted. Last year it was mainly about composable DXP, but this time it was also mentioned that you can opt for platform DXP or a hybrid solution. Thus, you can have Umbraco "as a DXP" or "as part of DXP". For example, Heartcore, where Umbraco is really just a content provider. Or when you build an external integration in Umbraco (for example Shopify) and manage everything from Umbraco. Lastly, Umbraco Authorized services were announced. This should simplify integration with external services.
Block Grid - deep dive
I'm a fan of the Block Grid, but I still don't know everything about it. Kenn explained step by step how to configure the Block Grid and went a little further each time. He showed how to apply styling, but I found it especially interesting when he demonstrated how to use web components to use the same component in the backoffice and frontend. This way, you only have to build a component once and can use it in both places.
Conclusion
This year I mainly attended technical sessions. Those are the sessions from which I learn the most and get the most inspiration. It was another fantastic conference! There were also a lot of first timers this year, and it's always great to see how they immediately feel at home here. Especially Mikkel's blog is wonderful. I wonder if they can top this year's bingo. It's never been so exciting! It's a shame that Codegarden is over. I can't wait until next year!