.NET Oxford Meetup XI: A Piece of Cake

For our February .NET Oxford meetup, we definitely had a bit of a food theme going on! With Gary Ewan Park talking about the Cake build system; our primary sponsors Corriculo Recruitment providing the food variety; and if that wasn't enough, the topic of Chocolatey also came up! Is anyone getting hungry yet?

I was really pleased when Gary agreed to come down to talk about Cake. I'm a really big fan of Cake (insert witty comment here), and I use it for all of my projects. After I tweeted a blog post I wrote about Cake last September, a conversation started on Twitter which then turned into a group DM conversation with the Cake team, which then somehow turned into a Cake road trip for Gary! We were very honoured to be his first UK stop in his 2018 Speaking Tour!


Intro Talk

This time it was Matt's turn to do the intro talk. Which felt kind-of weird in the week leading to the meetup, as it meant that I literally had nothing to do for the meetup! So it was very pleasantly relaxing for once! This is the first time it's been like this, as when Matt's done the intro talk before, I've always either been doing a lightning talk or a full talk.

Matt covered the usual stuff - who we are, what's we're all about, etc. then moved onto the news and prize draws (see below). This month's published slides can be found here, and the Reveal.js source code can be found here. If you're viewing the source code, remember to checkout the commit with the relevant tag for the meetup you're interested in.


News Items

As usual, our intro section included a few hand picked news items since our last meetup. As Matt did the intro talk this time, he also picked the news items too - so I had no idea what was coming. It was actually only the first one that I knew about, so I learnt something new here too!

ASP.NET Core 2.1 Roadmap

On the 2nd February, Microsoft announced their roadmap for ASP.NET Core 2.1. Covering a wide range of areas and improvements. I won't go into these here, but their official MSDN blog announcement can be found here, and a Channel9 video about it can be found here.

Event Grid General Availability

I've heard a lot Event Grid in podcasts recently, but hadn't realised until Matt's intro that it had hit GA already! Things certainly move fast nowadays at Microsoft!

Microsoft's official announcement blog post can be found here.

Managing Azure Secrets In GitHub

This is another one that I didn't know about - I must really be slacking with keeping up to date with stuff recently! Basically Microsoft will now scan your Github repositories for any secrets that have been accidentally committed - eg. authentication credentials, connection strings, private keys, etc, etc. The Azure subscription owner will then get notified if any are found. According to their blog post, at the time of writing, thousands of customers had already been notified! So this definitely seems like a very big win!

The Microsoft blog post about it can be found here.

Corriculo Recruitment

Our amazing sponsors Corriculo Recruitment where on hand being awesome as usual! As mentioned earlier, they kept the theme going by providing the food version of Cake, as well as their usual liquid refreshments!

They've been our sponsors from the very beginning, and I really cannot thank them enough! They've not only helped us out financially - covering the venue costs, and providing plenty of liquid refreshments at each of our events - but also, helping us out welcoming everyone in, with marketing and promotion, feedback and advice, and much more. They're also just genuinely nice people, and really great to get on with. I'm very proud to have them as a core part of the .NET team!


Prize Draws

As usual, we had our three prizes for our amazing prize draw sponsors - JetBrains, Manning Publications, and Oz-Code.


Congratulations to Guy Fletcher-Wood for winning a year-long Jetbrains product licence! She very wisely chose a Resharper + Rider combo!

Manning Books

Congratulations to Morgan Willis for winning a Manning ebook of his choice! He's not yet chosen, but he has the choice of any of the awesome Manning ebooks from their website!

Remember that we have our special Manning coupon code (ug367) which gives all of our members a 36% discount on any of their e-books! They've also asked me to share a link to some of their new courses for their LiveVideo system.


Congratulations to Peter for winning the Oz-Code licence!

If you haven't checked it out, definitely download the trial and have a play. All our member get a free 3 month trial licence (see below) or 50% off a full licence! To claim, you can visit this link to pick up your licence!


Gary Ewan Park - "A Piece of Cake"

Gary is one of the five maintainers of the Cake project. This is a tool which allows you to automate your build processes by writing distinct tasks in C#, then defining how they depend on each other. So that rather than writing just a build script (eg. in PowerShell) which runs commands sequentially, you're instead building a dependency graph of tasks. Being a text file - it's also source controlled together with your project's source code. I've actually previously written a blog post about Cake which has a few examples, so I won't repeat too much detail here.


Gary's talk started off explaining the typical development build and deployment pipeline - eg. clean, package restore, build, unit test, publish, deploy, etc. Plus a few more which I don't have in most of my Cake files which I should really add - eg. StyleCop, FxCop, DupFinder, etc.

He then moved onto Cake, explaining how it works, and talking about the various components - eg. the the Cake executable, the bootstrapper, the main build.cake file, nuget, addins, etc. Speaking of addins, he also spoke about the vast number of integrations - both built-in and optional addins. There are integrations to support most use-cases, and if there isn't one for your needs, Gary explained how easy it is to create your own!

He then spoke about why we need something like this - talking about the bus factor, where if one developer gets run over by a bus, and he's the only developer who knows how to build everything, and his machine is the only one that it works on - what does the company do? Obviously this is where a CI/build server comes in - but for this, you have to push your code to source control and wait for an available build agent for something you might just want to do locally. Using something like Cake means you can run your tasks (or a subset of your tasks) locally, on a colleagues machine, as well as your build server. Cake as integrations for all the popular build servers - so this really goes with the whole run it anywhere philosophy.

After explaining all this - Gary then moved onto the demos! He was running on MacOS, and using VSCode. Because he wasn't expecting to have an internet connection (which we did have), he'd set this all up to work offline. He did this using a tool called the Nexus Repository Manager. I hadn't actually heard of this before, but it allowed him to have all the Cake/Nuget dependencies in a local repository rather than having to reach out to the internet.

His demos were very VSCode heavy - which is always a good thing! :) He showed the VSCode extension, and built up a Cake file one task at a time, explaining the syntax, and running them in VSCode. The Cake extension allows you to do various things - like bootstrapping your project with Cake, adds various snippets; even adds debugging support! You can easily run your tasks directly from VSCode without moving over to a separate command line - which is what I tend to normally do to be honest. Doing it in VSCode is really nice though - and if you also install Bakery, which you can do by choosing Install intellisense support from the vscode command palette - you even get intellisense!

His talk finished a bit earlier than our usual 9pm finish - but thankfully at question-time, our most prolific regular member, James World kept Gary quite busy, so all was good!

Gary's slides can be found here. Note that he's using both horizontal and vertical slides, so try pressing both down and right when navigating. His source code can be found here.

Wrapping Up

As Matt did the intro talk this time - it was my turn to do the wind down. I thanked Gary for joining .NET Oxford as part of his speaking tour; mentioned about his recent news about being taken on full-time by Chocolatey; and also thanked him for his open source contributions to both of those awesome tools. Both of which I use heavily, and Gary has been a big part of making them what they are. So again - a massive thank you to Gary, and all those involved in both of those amazing projects!

During the evening, an announcement had been made that the Blazor project was now part of the official ASP.NET Github organization. This was causing quite a lot of noise on Twitter. It was a bit too late to include as a news item in the intro slides, but I did mention it at the end as a last minute additional news item. We know that .NET is pretty much everywhere nowadays - but Blazor also adds it to the browser! We already knew about this project that Steve Sanderson started - but the fact that Microsoft has brought it into the official ASP.NET GitHub, suggests that they're definitely taking it seriously, and makes you wonder where this'll go long term! I'd highly recommend listening to the .NET Rocks episode that was published the same evening talking all about this.

Finally I reminded everyone about the pub, which a few of us tend to head to afterwards...


As usual, our regular pub visit afterwards was at the Royal Blenheim, just around the corner. I normally always forget to take pictures at the pub - but at least this time I remembered to get one! Here's Matt and James, and Tim and Andy in the background! Gary was also there somewhere, plus a few others. Thank you Matt for the beer!


Please retweet if you enjoyed this post ...