S09E02 44mSeason 9

Episode Summary
This episode was recorded live on one of the stages at Codegarden, Umbraco’s annual conference, where Jamie was invited by the team behind the Candid Contributions podcast to record a collaboration episode in front of an audience. Joining him were Emma Burstow and Lotte Pitcher of Umbraco, and Carole Rennie Logan of Equator — three of the four Candid Contributions hosts, with Laura Weatherhead absent but very much thanked for the digital signage that made the venue look as good as it did.
The question on the table is one that Emma admits Umbraco had barely asked itself internally: how should an open source project feel about pull requests written with the help of an LLM? Her answer comes back to contributor trust. Umbraco is an ecosystem built on the assumption that people contribute responsibly, and the guardrails that catch a bad contribution — pull request review, a growing test suite, maintainers who ask why — are the same guardrails that were already there. Lotte adds the practical argument: it would be hypocritical to reject AI-assisted contributions when Umbraco’s own product and engineering teams use those tools productively every day. Umbraco has no AI contribution guidelines yet, and would much rather react to a problem than put contributors off before one exists.
Carole draws the line where she thinks it has always been. Whether the code came from an agent, from the documentation, or from a stranger on Stack Overflow, the moment you commit it, it is yours and you are responsible for explaining it. Jamie reaches for ReSharper as the precedent — nobody ever wrote “I used ReSharper to turn this into LINQ” in a pull request description — and Emma points out the natural consequence: if you can’t read it and understand it, you can’t claim it, and if you can’t claim it, you have no business pushing it into someone else’s codebase.
From there the conversation widens. The panel looks at the projects that have banned AI contributions outright, at the pile-on aimed at rsync’s maintainer for using an agent to re-learn code he hadn’t touched in five years, and at whether Hacktoberfest-style drive-by pull requests are a problem Umbraco has been spared largely because it gives out so little swag. On the more hopeful side, Lotte and Emma talk about agentic tooling as an empowerment tool for people who raise issues but never felt able to fix them, and about the hackathons that used to be spent entirely on getting a development environment working. Two audience members make the case better than anyone on stage: Justin describes shipping his first Umbraco package, something he says would have stayed an idea that went nowhere, and Sebastian describes finally renaming master templates to layouts across the codebase — screenshots in the documentation included, via Playwright — a job he had put off for years.
The recording ends on the part Jamie and Emma genuinely disagree about. Emma wishes she were a junior developer today, with a tool she can query in the way her brain actually wants to receive information. Jamie, who works with local colleges, worries that juniors are being handed the tools without any way to earn the experience needed to judge the output, and Carole wonders aloud whether the battle scars from two days of banging your head against a production bug are something we’re about to stop acquiring. Audience member Mike offers a third way — that AI can be a curiosity enhancer, if you are the sort of person who asks it to explain the F# pattern you just found in a C# codebase. And then Jamie closes with the spicy opinion he warns you about in the introduction: that the age of the incurious nine-to-five developer is, in his personal view, coming to an end.
Whether you maintain an open source project and are wondering whether you need an AI contribution policy, you contribute in your own free time and want that time to go further, or you are simply curious how a room full of experienced developers actually feels about all of this, this is a candid, unscripted conversation with a live audience and no shortage of disagreement.
Episode Transcription
Hey everyone, and welcome back to The Modern .NET Show; the premier .NET podcast, focusing entirely on the knowledge, tools, and frameworks that all .NET developers should have in their toolbox. I’m your host Jamie Taylor, bringing you conversations with the brightest minds in the .NET ecosystem.
Today’s episode was recorded shortly before the annual mid-year hiatus, and was recorded live at Codegarden. Codegarden is Umbraco’s main conference, and I was invited by the folks over at Candid Contributions to record a collaboration episode on one of the stages.
We sat down to discuss the topic of AI-based contributions to open source, the opinions of everyone present, what the Umbraco leadership team (which Emma is a part of) throught of them, and the (then) recent news that rsync’s developer had come under fire for using AI. Along the way, we took questions from the audience and the recording ends with a rather spicy opinion from me; so keep an ear open for that.
I’m very grateful to Emma, Lotte, Carole, and Laura for asking me to collaborte with them on this episode. I’d also like to thank everyone on the Umbraco team for organising everything and allowing me to be part of Codegarden.
One thing to note is that Carole’s mic wasn’t working in the openning minutes. Podcast editor superstar Matt has done what he can to clean the audio up, and Carole’s mic got replaced at the three minute mark, but it’s worth knowing that going in.
Before we jump in, a quick reminder: if The Modern .NET Show has become part of your learning journey, please consider supporting us through Patreon or Buy Me A Coffee. Every contribution helps us continue bringing you these in-depth conversations with industry experts. You’ll find all the links in the show notes.
So let’s sit back, open up a terminal, type in dotnet new podcast and we’ll dive into the core of Modern .NET.
Emma
Jamie
Emma
Jamie
I’m going through this thing at the minute where every time I feel imposter syndrome, I reframe it from “I shouldn’t be here” to “look what I get to do!” Look what you all get to do. Look where you all get to be, right? It’s just amazing.
Emma
Jamie
Emma
Carole
Emma
Lotte
Carole
Emma
Jamie
Emma
Jamie
Emma
Jamie
Emma
Jamie
Emma
Jamie
Emma
Lotte
Emma
Lotte
Jamie
Emma
Jamie
Emma
Lotte
Jamie
Lotte
Jamie
Carole
Emma
Lotte
Jamie
Emma
Carole
Lotte
Emma
Carole
Jamie
Lotte
Jamie
But I’m really interested in the way that the tech community has reacted to agentic development and AI: Claude Code, GitHub Copilot, all of that. Over the last couple — and this will probably show more about where I hang out online — but over the last couple of weeks and months on LinkedIn, Bluesky and Hacker News, I’ve seen a real divide. Almost 50-50. The problem is, only a Sith deals in absolutes, and I’ve just given you an absolute, so maybe I am evil. But it’s almost a 50-50 split between “this is the worst thing ever, it only ever produces nonsense, and, we should never use it for anything in production” and “this is the greatest thing ever, it is the best thing, and we should all be using it for everything.”
It goes as far as some really key open source projects that, whether we know it or not, we all rely on. They’ve either outright banned the use of AI — things like cURL, so that’s C-U-R-L if you want to spell it out, and the Ladybird browser project. If you’re not an active contributor already, they will not let you contribute, because they have no idea whether you used an LLM and whether your contributions are safe.
There’s a thing called rsync. If you’re a macOS or a Linux user and you’ve moved files over the internet or over a network, you’ve probably used rsync. And for the transcription bots, that’s the letter R and the word sync, as in synchronise, because my accent’s really weird and I really want to see what that’s going to tell me.
Emma
Jamie
So I’m interested in everyone’s perspective — our colleagues up here, and everyone in the room. I’m interested in your thoughts about using LLMs and agentic coding for open source. Because as soon as you stop prompting, that code is yours, whether you wrote it or not. We’re not really in the industry of manufacturing code, and we never were. We manufactured code to solve problems, right?
But with Umbraco being such an open platform — and I’ve been speaking for about five hours by this point, so I’m going to shut up in a minute — I can make a contribution using an agent to help me. That code is then mine, and I’m giving it to Umbraco saying, “I am representing the quality of this, because I’ve reviewed it, I’ve checked it, all of that.” But then there’s this nebulous thing where I give it to Umbraco, I give it to the community, and I don’t ever really need to touch that code again. It’s now someone else’s problem.
So I guess there are multiple layers to this. How does the community side of Umbraco feel about people using agentic workflows to build features, fix bugs, do that sort of low-hanging fruit that was mentioned in the keynote this morning? And how do people outside of Umbraco in the community feel about, “can I use an agent to make a contribution and build a package?” What does that look like?
Emma
I think ultimately it comes back to the notion of contributor trust. We’re an ecosystem built on trust. We’ve always had really good processes in place around pull request review and tests — we’ve got better tests than ever, thanks to Uncle Claude, and so on. But we’ve always had this approach where we think people are going to contribute responsibly. And by and large they do. Very few bad actors take the time to try and contribute irresponsibly, and because there’s no cash reward — there’s not even a swag reward, really, there’s bragging rights if you contribute to the Umbraco codebase — we don’t see an awful lot of people contributing for the sake of it.
So people are very proud of their work. They work hard to make sure it’s in a good state before it reaches us. Often it doesn’t even reach us, because they’re not sure it’s in a good enough state. And so it’s never really been a question of whether we should dictate how people write the code, because we know that once it reaches us they’ve probably handled it very, very responsibly. And if not, we should be in a position to be the judge, I guess.
I think there’s been a stigma around it. I know experienced developers being like, “me and Claude made this.” Soon we’ll drop that, I think. We’ll just be like, “I made this using a suite of tools, one of which is Claude or Cursor or something like that.” But I think we’re still very much at the stage of saying, “just so you know, I didn’t take a tablet and a chisel and write the code myself, I had help.”
But aside from the stigma, I think people are using it very, very responsibly. We’ve never had reason to do otherwise.
Lotte
I think Umbraco is lucky that we haven’t been a target, as Emma was saying, of bad actors. I know that quite a lot of open source projects do have AI contribution guidelines making it very clear about their willingness to accept contributions from people who’ve used AI. The controversial one is when there’s no person involved and it’s just an AI agent that’s been set running. Luckily that’s usually in the Python world, and so we in the .NET world aren’t such a target.
We don’t have any AI contribution guidelines yet, because we haven’t needed to — and I’m not sitting anywhere near any wood, but long may that be the case. Our contributions are generally what we appreciate, and I’m sure it will change one day.
Emma
Lotte
Carole
It’s the same — I don’t work at an open source company, but it’s the same as our rules. We still treat it as that developer’s code once they work on it with Claude or otherwise and they commit it. That’s their code. They take responsibility for it, the same way.
Not to be too simple about it, but we always Googled, we always went somewhere, we went to the docs, we copied, we pasted, we altered it. It was never that we rewrote every single line of code. It’s just the new way of getting there. And I think you’re right, we’re a bit more old school. I still say, “I’ve done this with Claude,” just so you know. But we never went, “oh, I got it from the docs and changed it,” or, “I Googled it.” Sometimes we would say it, but…
So I think it will get to the point where we need to justify it a wee bit less, and it becomes the norm, but it’s still your code, you’re still committing it. We could never before get away with going, “oh yeah, it was just off a stranger on Stack Overflow.” So we still shouldn’t be able to get away with saying, “oh yeah, that wasn’t me, that was Claude.” As soon as you take on that code and you commit it, then you’re responsible for it, whether that’s a PR to an open source project or a client’s project.
Jamie
Emma
So I think we should probably give devs — especially in the open source world, who are used to being, or who are interested in being, community contributors — a bit more credit. Because quite often we do feel a strong sense of ownership around what we’ve created, however it is we’ve created it, and we do want to be able to defend it. We do want to be able to explain it. So whether we’ve handwritten it or otherwise, I think it’s likely that we’re submitting stuff we know.
Carole
Emma
Lotte
The thing I really like the idea of is people feeling way more empowered at being able to solve the issues that they raise themselves. Usually, especially if it was a front-end bug, I would raise it and then I’d go nowhere near even trying to fix it, because where would I go in the codebase? It would take me a long time, or need a lot of help, to find it. Whereas of course now AI is a really good empowerment tool. It will help you navigate the codebase that is not very familiar to you and help you find it.
Let’s all remember the joy of fixing the bugs we find. That’s why we all got into open source, probably, in the early days. So I hope that it means that more people will be able to work on the codebase without having to have invested the many, many hours that you’re used to in the olden times — i.e. last year — in order to really navigate your way through. The Umbraco codebase is complicated.
Emma
Carole
Emma
Carole
Lotte
Carole
Emma
Carole
Emma
Lotte
Because dealing with people’s pull requests can be a real — I’m going to say time investment, not time sink. But it’s a real investment in that human, in terms of working through it with them and helping them, because you don’t want to put them off. They’re trying, they’re giving their time for free. And if you are a package maintainer and you’ve just got a couple of hours on a Saturday evening perhaps to make progress, then actually the return on investment of dealing with a pull request that’s perhaps not done in the way that you want… But hopefully that person will explain that in their README and their contribution guidelines so that everyone’s expectations are met.
Emma
I think that’s the thing that people forget about open source. We’re all behind computers and we’re contributing usually in an asynchronous manner. So if you’ve got a contributor on the other side of the world, it doesn’t matter if you’ve all got the best of intentions, there’s going to be a massive delay. So yeah, you would sit there and just think, “well, I’ve got a couple of hours, I can fix this with my tool.”
Carole
Emma
Carole
Jamie
Lotte
Jamie
I don’t know whether the folks who are using the tools and then saying you shouldn’t be using AI realise that the tools they’re using are built with AI, right? There’s a level of irony there about, “don’t build this higher-level thing, don’t build that with AI, but I’m perfectly happy with the lower-level thing that I interact with being built with AI.” There’s a weird dichotomy there, I guess.
But I’m all about using agentic tooling to help me with whatever I’m doing, for the same reasons that you’ve all just said. If I’ve only got two hours to solve a bug or implement a feature, well, I’ll talk with an agent for two hours and then I will tell it to build the code and I’ll walk away. I don’t just commit the code, as we’ve all said. I give it a review myself — and, okay, I need to do my best BBC bit here, there are other agents of course — but if you use Claude you can do forward slash code review, and it will review its own code by spinning up several different agents and poking around in the code, and it finds stuff that I’m happy to say I wouldn’t have spotted. Then I’ll give it a review afterwards. I feel like that’s good enough. Then I hand it off to the maintainers and say, “hey, I’ve created this thing, I’m totally happy to stick around and make more changes if needed, just let me know.”
Specifically in the .NET space, I feel like it’s become “everybody can use it”. But looking into what you were saying, Lotte, it feels like perhaps in the Hacktoberfest times there’s more Python — I hate to use the phrase — drive-by PRs, where somebody’s gone, “hey, I want to be internet famous and I want my t-shirt. Go create five low-value…” — we probably shouldn’t say low-value — “go create five different pull requests and just do it, because I’ve got the GitHub CLI installed. Just do it, it’s fine. Then I’ll walk away and I get my t-shirt.” Because the PRs never used to have to be closed, but now they have to be closed.
Emma
Jamie
Maybe the other language and framework ecosystems should just go, “it’s a tool, and if folks want to use it, great.” But I also fully understand that it is a time investment when someone raises a PR and then disappears. What do you do then? Do you have someone — Seb is in the room — do we have Seb take over on a PR, because this person has raised the PR and run away?
Emma
But I think, by and large, our contributors to Umbraco, the reason they contribute is because they want to make the product better, they want to build something with purpose, they want to solve their own problems. We’ve been very bad at incentivising pull requests, I think. We don’t do much for people that contribute. We give them a home, we give them a community, and we ask them to be curious and to explore and to collaborate, and that is the reward. You might get a t-shirt.
Carole
Emma
I think that’s a thing, but maybe we’ve been not so vulnerable to the drive-by pull request submitters because we just don’t give out enough swag.
Jamie
Maybe that’s it. Because I do remember, five or six years ago, definitely BC — before COVID — I do remember people reaching out to me on LinkedIn and, at the time, Twitter — I won’t call it by its new name, because it’s not the same product — asking me, “how do I get a free t-shirt?” And I’m like, “if all you want’s a t-shirt, go to the store and buy one.”
Emma
Carole
Emma
Justin
Yeah, so I used AI to create the package. I wasn’t that great on the new back office, so it helped me create something that was working, that did what I wanted it to do. I fed the instructions into AI, used Claude Code to do that. It had some issues, obviously, bouncing backwards and forwards a few times to resolve those. It would have taken me a lot longer to do it myself than to get AI to do it for me. It’s a tool, and I use AI as a tool. I don’t think I would have been able to do that without AI. I would have struggled. Probably it would have gone so far and then… or not even have started. It would have just been an idea that never went anywhere.
I also use AI when I’m writing my blog posts. I use AI to generate the blog post — I obviously feed it the information. I’m a bit of a perfectionist, so if I was writing it by hand, I would never get it done, because I’d keep reviewing it and going back over it, over and over.
I’m also using AI to help out on the forum. I’m not just copying and pasting AI responses into the forum, but I’m using it to validate things, I’m using it to research issues, and then going back to the forums and helping people. So I’m using it in lots of different ways. But I’m still trying to do traditional coding as well. I don’t want to lose that ability.
Lotte
Emma
Seb
Is this on? Yes, it’s on. Hi. Sebastian.
Similar to Justin — basically, I just want to brag. I finally contributed something to Umbraco, for the first time in months, maybe a year, that got accepted. It was a pull request to finally remove the wording “master” from templates and call them layouts, which is what they should have been called for the past nine years, maybe.
This took me so long because I didn’t want to dig into, “did I get all the masters, and did I get all the correct masters?” Because there also used to be master servers and blah, blah, blah. It was just so easy to get Claude to help me do all the things. Then I told it to do it as minimally as possible: I don’t want anything breaking. We had to break something, but okay, fine. I was really closely guarding what I was doing, and actually reviewing along the way, and I threw it away twice and said, “nope, it’s not good enough, let’s start over.” But I finally got it done, and all of the things got replaced where they needed to be replaced. I still wouldn’t have finished it if it wasn’t for a bit of AI helping me make sure that I caught everything that I needed to catch.
Now, I don’t think Sophie’s in the room, but Sophie wasn’t very happy, because all of the documentation needed to be changed. That’s fine. But all of the screenshots in the documentation also needed to be changed. And guess what? Running an AI with Playwright is actually quite easy. It’s got the new rounded corners in the Umbraco 18 back office as well. Very happy with it.
Emma
Jamie
It’s, “this is a thing that would have taken me hours to research and to perform” — in both aspects, creating a package and replacing all of these strings across an entire codebase. That would have taken hours to make sure that I did it properly, but I have an agent that can [do it], and this is why we call them agents: they work on our behalf, like a travel agent, right? So maybe that’s what I’m hearing: it democratises everything, makes it a little easier to work with.
Carole
Emma
Carole
Emma
On the flip side, some of these things are making us smarter, because now Justin has a living, breathing package to maintain and build, and to understand how it got from here to here to here. So we’ve got these great opportunities for learning, and great opportunities for just removing friction and doing the crap work we don’t want to be doing. I think if we use it responsibly, it’s so exciting. I wish I was a junior developer now.
Carole
Emma
Jamie
Carole
Jamie
But there’s also no experience. We all have the experience. All of us in the room have the experience to be able to go, “actually, what you’ve produced there is not great, let me guide you and help you to produce better code for this particular situation.” Or, “I know, for instance, that this particular thing is not going to work in this instance, because we’ve tried it before.”
Whereas a junior — maybe they are vibe coding, maybe they’re just following whatever practices. They don’t have that experience. And they can’t get that experience, because they’re being given the tools and told, “you will use agentic coding to build the thing.” I would hate to be in that position: I can’t learn and I don’t have the knowledge. What am I going to do? So I think we’re on opposite ends of the spectrum there.
Emma
When I think about when I entered the industry, people were worried about everyone being a copy-and-paste developer, living off Stack Overflow. That stuff never really worked in the wild. But this stuff does. So I was always beaten back and forced to go and learn, because stuff didn’t work that I would copy and paste, and then I had to know why. Whereas with agentic coding you don’t necessarily have that nudge. So I see where you’re coming from.
But I’m also really hopeful, because I think very few people get into writing code for the money, or just because “I need a job.” Quite often we’re problem solvers and we really want to learn how to solve a problem. So the right people, the right juniors — and there’s always been all kinds of juniors; I’ve been a junior, there’s always been all kinds of juniors — will be asking the right questions, but they’ll be empowered to ask in the way they want.
I’m neurodiverse, so if you hand me documentation, nope. And don’t give me a video. I still have not watched a safety briefing video for Codegarden.
Lotte
Emma
Carole
But if you’ve not been through sitting and banging your head against the desk trying to fix something for two days, because AI just does it for you… I worry about not having those battle scars. Or maybe they’re not needed. Maybe agentic has got them now, and we don’t… I don’t know, maybe I’m being protective of my own experience of how I got to where I am. But it’d be interesting to hear what other folks think. But Mike had a question.
Mike
Is it on? There we go. Ah, now it’s on.
Interesting, around the experience of learning with AI. Very recently I was picking up a project and saw a bit of code in there — I feel like I’m a fairly decent developer, I can understand most code — and I kind of got it, but it was very weird. It was not something I’d seen in C# very commonly. So I put it into AI and I was like, “is this… am I just not good anymore? Has something changed?” And it came back saying, “oh, this is an F# pattern.” Someone had written this who was obviously a functional programmer and done it in C#, and it still worked.
It was fascinating, because it opened up a different level of curiosity and learning. I learned something new, unexpectedly. Previously I probably would have looked at that and gone, “I get it, I don’t know if it needs to change or not. I might rewrite it so it’s more readable.” But I went, “no, this is actually fine.” I understand it now far quicker than I would have before.
On the back of that idea of how it’s going to affect education: the way that we’re all having to change the way that we work, there’s also a case of having to change the way that we learn. It could be a real curiosity enhancer, to go, “okay, we’ve just found out something new that we didn’t expect, a solution to a problem, and we can now ask it what it’s done.” I don’t know if that step is happening as much, because we see it, we test it, it works. As experienced developers we might go, “that’s fine, we can understand it.” But someone who is junior should be encouraged to go, “okay, it built something and it seems to be working. Can you get it to help you understand?” And also, “right, the AI’s given you an answer, but you’re allowed to scrutinise that answer and go off and do your own research and validate whether it’s correct” — because it isn’t, but it’ll think it is.
Jamie
I need to be very cautious with the words I’m about to say, and I also know we’re running out of time. I think everyone in this room, everyone watching live, everybody listening back to the podcast audio, we’re slightly different to the majority of the people in our industry, for the same reason you just pointed out: “I found this code, I don’t know what it does, I’m curious, I’m going to go and learn.” I posit 75% of the people in our industry would go, “that’s weird,” and scroll.
Emma
Jamie
It’s my personal opinion — it’s not the opinion of anyone else in this room, anyone in this recording. My personal opinion is that the age of the nine-to-five developer, the person who’s not curious, the opposite of what you’re talking about, the person who’s just going to go, “yeah, cool, whatever,” and scroll, or “yep, accept, accept, accept” — that person is going to be slowly pushed out of the industry, I think. Because we’re going to be asked, as we’ve all said, “yeah, you wrote it like that, but why?” “Oh, well, because the AI did it.” “I’m sorry, there’s the door.”
Emma
Jamie
Emma
Jamie
But genuinely, how many people have you ever interacted with in the industry — not just Umbraco people, not just people listening to the podcast, not just people who come to conferences, because we’re a special breed. We’re interested in what’s happening, right? By being in this room, by listening to this recording, you’re interested in what’s happening now. Well, depending on when we get this out, a few weeks ago.
Emma
Jamie
I feel like it’s great for boosting that curiosity if you have the curiosity in you. And this is tarring a lot of people with the same brush, but sixteen-, seventeen-, eighteen-, nineteen-year-olds, most of them when they’re in education: “I just want to pass the course, I want to pass the exam, I’ll do maybe the minimum amount of effort and a little bit more just so I can get my passing grade, and then I can go off, because I’ve been told if I pass this I get a really good job.” That’s my goal over there: get a really good job. Not to pass this exam.
So when the curiosity hits, the other people in the room who’ve got that curiosity will probably go, “oh, this is awesome.” I’ve actually seen it when I’ve given talks at colleges. I’ll have four people come up to me afterwards and be like, “that was awesome, can I learn about this? Can I learn about that?” And I’ll have a twenty-five-minute conversation with a student about, “oh, and then…” and then I move on to talking about Wi-Fi Pineapples and talking about Bluetooth and talking about all of this kind of stuff, because they’re super curious. But the rest of the room, they’ve already left.
Emma
But you’re right, because people need to earn a buck. So why would they be working after work? It’s already a punishing and demoralising thing to have to do a nine till five. I did it for years. And school disincentivises curiosity. So we are up against all of that.
We are in a bubble. We’re in a really nice bubble. And it’s nice that we started with gratitude and we can end with that too, because you reminded us that the people in this room and the people that are listening are the ones that care.
Lotte
Emma
Jamie
Emma
Jamie
Lotte
Emma
Lotte
Emma
Carole
Jamie
Emma
Jamie
Lotte
Wrapping Up
Thank you for listening to this episode of The Modern .NET Show with me, Jamie Taylor. I’d like to thank everyone involved with this producing this episode for graciously sharing their time, expertise, and knowledge.
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 this episode. The show notes, as always, can be found at the podcast's website, 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/review for ways to do that—reach out via our contact page, or join our discord server at dotnetcore.show/discord—all of which are linked in the show notes.
But above all, I hope you have a fantastic rest of your day, and I hope that I’ll see you again, next time for more .NET goodness.
I will see you again real soon. See you later folks.
Useful Links
- Codegarden and Candid Contributions
- Umbraco
- Companion episode
- Open source projects discussed
- Tools mentioned
- Also mentioned
- Supporting the show:
- Getting in touch:
- Podcast editing services provided by Matthew Bliss
- Music created by Mono Memory Music, licensed to RJJ Software for use in The Modern .NET Show
- Editing and post-production services for this episode were provided by MB Podcast Services