UmbracoSpark 2024 Badge and Lanyard in their green colourscheme, showing the sponsors and attendee name too.

The Spark is Back

March 2024 saw the return of Umbraco Spark to Bristol for a fourth iteration, and the third one in total I’ve now been able to attend even if I wasn’t able to blog about it last year. By now you’d think I’d have the routine for this down to a fine art, however this year I was keen to stretch things a little further and take part in the pre-event Hackathon and post-event afterparty. This meant an earlier than usual start on the coach down on Wednesday so that I could already be in the city ready for Thursday morning rather than just Friday.

I’ve always intended to get along to a Hackathon ever since hearing a somewhat inspiring talk on them at a small pub in Macclesfield many years back now. But not wanting to risk taking too many days off work previously (as my attendance at events has always had to come out of personal holiday allowance), or some last-minute illnesses have always ended up scuppering them in the past, but nothing got in the way of it this time round. So up I rocked to the offices of True Digital bright and early, though apparently still not quite as bright and early as many were already there even by 9.30. I always worry about being that person who gets there too early, so for future I know this isn’t something I need to worry about too much with Hackathons. I’d done a little amount of prep so I had some inklings, but they were still only vague and I had little idea of exactly what to expect on the day. The first Beta of Umbraco 14 had been released the day beforehand while I was traveling so I knew it was going to feature heavily, but having never looked at it myself what I would be able to do with it was a bit of a mystery.

True Digital office featuring the obligatory agency office dog! Taken during the Hackathon.
Because every dog needs a place to rest during a Hackathon.

By the end of the day I hadn’t delivered any pull requests or revolutionary new packages, but I had managed to learn a lot. Having spent time spinning up a new Umbraco 14 instance from nuget from scratch, then working out how to check out the source code from Github and build it properly as I already can for contributing to Umbraco 13, I also then decided to have a try at upgrading a large existing project, taking the TV Whirl site from Umbraco 13.1 up to Umbraco 14. Just to see how smoothly the process worked. This caused some issues, most of which were eventually traced down to the packages for Umbraco UI Builder and uSync. I’d removed the Umbraco 13 packages for these from the project, but apparently Visual Studio’s Clean option was still leaving orphaned dll files in the bin folder resulting in all sorts of spurious errors about other missing packages like Smidge, Nuglify and Umbraco Licencing, until I finally worked out what was going on and deleted the lingering files manually. The upgrade of the data itself mostly worked with only minor changes even needed on the frontend. At this early a stage of the Umbraco 14 beta cycle media pickers didn’t seem to be showing up anything for me in back office, and this lack of related picked media seemed to flow through to the models on the frontend too meaning I had to patch in some extra null checks on my frontend code to handle this. But it was still an impressive amount to be able to get up and running in a relatively short space of time. Outside of my own experimentation with Umbraco 14, I was also able to take advantage of being able to see people in person to float some ideas for future contributions. And while it wasn’t directly something I’d achieved on the day as technically I made the PR a little while back, I’d be remiss if I didn’t celebrate that during Thursday a minor release of Umbraco 13.2 went out too. Notable to me as it includes my first PR on the project to fix an issue with list views contained. I certainly don’t intend it to be my last!

The Hackathon day zipped by in the end, but I left very enthused about what the months ahead may hold and determined to be back to these events in the future. One other big personal takeaway I got from the day was how nice it was to be back in a digital agency office environment. I’ve not been in an office since last June now. Even though back then it was only an occasional day with most time spent working remotely, the day was a nice reminder of how much I miss those little things of the office. Like the person who’s brought in a dog that instantly lifts everyone’s mood. Or the fact no one can ever quite work out where all the glasses in the kitchen have disappeared too. Or remember exactly how we’re supposed to load the dishwasher efficiently. Yes, every place up and down the country has these exact same things popping up! And of course most importantly just having that ability to bounce ideas back and forth off other people in the same room is something I’ve really missed in recent months. While I don’t think I’d ever go back to full-time office working, it’s why I’d always still be keen in any future role to see if I can maintain that little bit of hybrid. With the Hackathon day over, most people retired off to a pre-party in Bristol. With so much going on over the week, I decided to skip this myself and recharge for the evening so I could be ready again for Friday morning and the main Spark event.

That next day soon dawned, and despite a little last-minute rushing around at the hotel, I was at registration well in time to catch everything from the start. Steve Temple from Gibe, the main organising agency behind Spark, opened things with a brief welcome back to everyone for another year, a thank you to all of the sponsors, as well as some talk about the Umbraco UK Foundation which they were now part of. After that, we were straight into the first talk of the day, and as has been traditional in previous years this was the combined track to start the day. Lone Iverson and Jacob Overgaard from Umbraco HQ were there to give a runthrough of the newly released Umbraco 14 Beta back office. Giving us all an overview of the new system, before moving on to some demos of how to create new property editors using the new package setup and APIs, one of the most feature-complete parts of the new system to allow package developers to get started migrating their packages as early as possible. There were a few technical issues with the projector and laptop deciding they didn’t like each other, but despite that the talk was still able to fit in huge amounts of detail on the upcoming summer release, as well as even looking further ahead than that.

From this point onwards, the event was split into two tracks, so the rest of this post can only touch on the tracks I was present at. Indeed one of the most difficult part of these conferences is choosing which of the talks to attend. Naturally with AI continuing to be a hot topic into 2024, it was going to feature in some talks, and so I chose to head to a talk by Luke Hook on UmbraCopilot. Which gave an introduction and overview of AI, touching on those frequently heard topics of both the benefits and pitfalls but without spending too much time on this part. Before moving on to the main part of the talk which was to show some examples of them being put into use. Starting out with more general demos of the tools GitHub Copilot offers for developers, and building from that into how to use them within Umbraco projects itself, taking an example of using image identification hooked on to Umbraco’s publishing notifications. One interesting thing that was demoed here was the older Azure Cognitive Services for image recognition versus their newer Azure Open AI Vision Services. While it’s great to see just how much things have come on in only a short few years, it once again highlighted a pet peeve of mine with Azure in that rather than work to enhance that existing vision service with the emerging improvements in AI, Microsoft just rolled out a completely different ‘collaboration’ service requiring developers to reimplement any calls if they want to access the improved capabilities. Having built things for Microsoft’s Bot Framework in the past, only to have them then rapidly ditch large chunks of that for totally different services partway through, this sort of thing does make me more reluctant to use Azure services in the first place in a production project as just deciding when they’re at that point of maturity where it’s safe to jump onboard is nigh on impossible. But given every time they come out with a new service it usually comes with a new pricing model too, I can fully understand why this isn’t going to be something we’re likely to see much of a change of approach from MS on any time soon. However, while I may be reluctant to use it in production, as a test or development tool it’s certainly an interesting one to experiment with.

The next talk I went to after that was from Mikkel Keller on sustainability at scale using static site generation. Sustainability is another of those topics which has been very big on agendas of late. However, what had really caught my eye on this one from the initial itinerary was that it would be talking about doing so not just on a small scale site but on huge enterprise-level solutions. The talk itself focussed heavily on a real world case study of how they’d managed to optimise such a large site by using strategies such as introducing a layered approach to remove any direct dependency between the Umbraco backend and the headless frontend, as well as moving the processing of pages to happen on the publish event rather than happening on render. Although there may not be any projects of such a scale I could use this on myself, it’s always interesting to hear how others do this. Though one very particular little point for me actually came about from a seemingly tiny comment around the frontend framework Astro they’d used. I’ve been to a few Astro talks before and up to now it’s just made it onto my ‘yet another frontend framework on a long list of frontend frameworks I need to look at at some point’ list. However, this was the first time I’d picked up on it being mentioned that the framework is specifically targeted for multi-page content-heavy websites, as opposed to countless other Javascript frameworks that primarily target building heavily interactive single-page applications. It’s a simple distinction, and one I would have seen mentioned very quickly if I’d delved into Astro’s own docs. But sometimes you just need that standout line in a talk to get something to break through the crowd. Off the back of that, I’ll very likely look at rebuilding a smaller more content-focused site, possibly even this very blog (as I’m not that wedded to the current WordPress setup), in Astro in the coming months.

Following a break for lunch, during which we were all able to catch up and process the morning events, the first talk I went along to in the afternoon track was from Matt Brailsford. Which took a bit more of a look at some of the technology and processes behind umb.fyi. This was the Umbraco Newsletter service set up late last year, designed to try and fill in some of the gaps in people finding out what others in the community were doing, brought about largely by the mess and fragmentation caused by all the Twitter changes in 2023. After going over the problems briefly, the talk moved swiftly on to how he’d tried to address them, but in a way that took as much manual work as possible out of generating the weekly news. Showing us the collections of background workers parsing RSS feeds, rest APIs and, where unavoidable, scraping HTML from webpages, before collecting that all together in an easier-to-manage format within Umbraco. Via some clever use of AI, we then got to see how summaries could be generated, and eventually how all of this was built up into an Umbraco page which could then be sent out to the website for an archive or onwards to the mailing list sending service. Matt even covered some of the things that can and have gone wrong with the system, just for those who sometimes think everything goes completely smoothly all the time for everyone else but them! This was one of those projects that always looks so simple just from what you can normally see on the public surface, so it’s always great getting that insight on just how many moving parts there are hanging together that you don’t normally see.

Matt Brailsford stood by an architecture diagram showing lots of technology icons
“Just follow my simple architecture diagram to success!”

Continuing on the same stage in the afternoon, the next talk I saw was a short one from Pete Duncanson, who was making a return to speaking at Spark after having not been around for a few years. Pete took a very tongue-in-cheek look at ‘edge cases’ within development, giving examples of how to identify and work with them, as well as plenty of examples of what aren’t edge cases or are such an extreme edge case that they aren’t sensible to address. Some of the key ending takeaways were about making sure to always find out who’s at the top, and ask lots of questions, but most importantly always keep it friendly.

After that, the next talk on the lineup was from Ravi Motha, with the rather open-ended title ‘The Future of Umbraco?’ attached to entice people in (hey, it worked on me!). The talk started by taking a look back at the past of Umbraco and how we’d gotten to where we are, featuring a throwback slide to a recent 2005-style video I’d done. Ravi had mentioned to me in advance I was on one of the talk slides, but I’d genuinely already forgotten that conversation had even happened so it still managed to pop up as a complete surprise to me! After establishing how we’d got to where we are, it took a look at things going forward, but more of an outward look at how we as a community are the best steerers for the future. By jumping in, finding and fixing issues, responding to RFCs, creating packages and finding the things we can and can’t build with it, this can all be fed back into the next versions. It was a very inspiring call to the community, which is always good to have in any conference involving Umbraco.

Ravi stood by a slide with Terence on about '2005'
“If you recognise the person in this CCTV, please get in touch with authorities!”

Getting towards the last talks of the day now following another short break in which some amazing apple cake had appeared (for those who saw me on the day or follow me on social media, you’ll know I really can’t stop going on about this cake!), Phil Whittaker was up to take a deeper dive into an Umbraco Headless Ecommerce Demo. This was an example system in NextJS using Headless Umbraco which had been put together by Matt Brailsford for a previous talk a few months earlier. Phil decided to take a more thorough look at it from someone completely new to the system, aiming to patch in knowledge gaps as well as highlighting a lot of the challenges he’d run into getting going with it and how he’d resolved them to help others. A key approach taken throughout this talk was to try and relate it as much as possible to backend .net concepts Umbraco developers may already know, particularly useful for those not as strong on some of the frontend frameworks involved already. While I suspect this is one of those I’ll have to relook through with the real project code and the slides beside me at a later point, it was a good expansion to getting more to grips with an existing demo.

This brought things on to the final talk of the day, and for me this was from Carl Sargunar. Who took a look at how Umbraco’s Content API and webhooks could be used to generate content for .NET MAUI applications. We’re used to seeing Umbraco powering websites, so it’s always good to see examples of it being used in other ways. Despite having to battle through a cough and the live demo gods being their usual unforgiving selves, Carl gave an excellent set of demos on how to bring products out from the demo site into a MAUI app. Starting with how to test it on Windows first (as this is the fastest platform to view the demos on, it makes sense to always get Windows working first before testing Android/iOS) to pull in content from Umbraco via the v12 Content Delivery API. Before moving on to how to use the v13+ webhooks within Umbraco to get them to push out things instead, showing the same content models being sent as from the delivery API with webhooks making it possible to reuse models in multiple places within the codebase.

And with that, the main conference was over for another year. As I’d skipped the pre-party on Thursday evening but had made sure I didn’t have to leave Bristol until Saturday this year, I was able to attend the after-party held in a nearby bar this year instead. Having been hired out exclusively for us, this gave me a chance to spend a bit more time catching up and chatting further with people in the community, and made for a great way to wind down after several busy days.