Hooked on .NET
With Gui Ferreira
Welcome back π
Hello and welcome readers, both new and old. It has been a while since my last newsletter - a lot has happened in the convening time.
Firstly, I was laid off from my role at VMware, along with 1000s of others. Sadly, this is not an uncommon occurrence these days. Secondly, I suffered a serious illness. My appendix ruptured, requiring emergency surgery and an extended stay in hospital to treat sepsis. I’m on the mend now, but recovery has been slow.
Getting back up to speed on what I’ve missed since February has been harder than I thought.
However, this issue’s guest, Gui, not only encouraged me to pick the newsletter up again but also reminded me that simplicity is often the answer.
If I can start simply, layer in the topics as needed, I will get to where I need to be. As software engineers, we often want all the things (read knowledge) right now. However, I believe this leads us into a never-ending cycle of learning, not absorbing and playing. Learning new things is great, but it’s exhausting. Our minds need time to process and store the information.
Right now I’m learning data-oriented design in Unity. It’s making my object-oriented brain work very hard. However, I’m taking it slowly, letting the information truly sink in, to absorb.
So I encourage you to give your brain time to absorb the info you feed it - don’t worry you won’t fall behind - and play with the knowledge. I think you’ll find you’ll have a greater understanding in the long run.
So let me introduce Gui properly: Guilherme “Gui” Ferreira is a Minimalist Software Craftsman, passionate about simplicity and continuous learning.
He is a Microsoft MVP, Tech Speaker, YouTuber, Dometrain Author, and a content creator.
Gui’s Thoughts
Seriously. We need to stop making our lives harder than they need to be.
We are developers. We build amazing things. We are proud of it. Our code is running everywhere, even in space.
Many of those lines of code are remarkable. True genius. They moved tech-forward by opening so many possibilities.
But then, genius becomes commoditized. Genius becomes desirable. Genius becomes standard. And that is the moment where tech becomes vanity.
There’s nothing wrong with being proud of what we build. I’m all up for that. The problem is when an industry rewards fancy and shiny over quality and simplicity; when we don’t focus on solving what needs to be solved.
I’m writing this as I’m seated at Frankfurt Airport, waiting for my flight home. I will be here for 3 hours, so I decided to open my laptop and play with a new framework that I’ve found. I will not name names β that is not the purpose of this text.
I received the repo some days ago and I was planning to run the Sample project β I’m always happy when a project has a Sample.
So, I’m sitting here when I realize I have to run Kubernetes to run a tiny simple sample project. Why? There was no apparent reason for that.
Building applications hosted on a server is one thing. Breaking them down into multiple microservices starts a new era. A new era of amazing possibilities. But also an era of new complex problems. It’s not only those that come with designing Microservices.
It’s also all the problems that come with packaging them into containers, orchestrating with Kubernetes, and hosting in the cloud. All of this drastically increases the level of complexity of our software. But all that complexity has a place to be, and a simple Sample project is not a good reason!
I bet the team that built that learned a lot during the process. I bet they are proud of it.
But time is a finite resource.
If we spend it on CV Driven Development we won’t have enough time to focus on the real problem. Not even to ask what the real problem is.
When we focus on the bells and whistles, we are finding a way to be distracted from what actually matters. In a moment when our industry is changing, we need to refocus. We need to get back to first principles.
We need to get back to simplicity.
You can find Gui on the internet here:
- YouTube - congratulations for reaching 10,000 subscribers, Gui!
- guiferreira.me - for everything else Gui-related.
Gui’s recommendations
- Taste for Markers by Paul Graham: In this article, Paul Graham talks about simplicity. It is not about code. But many of the lessons here apply to developers.
- Test Desiderata: A list of properties your tests should have.
- 11ty: A static site generator. I use it on my website. I have been recommending it to everyone.
- Actionable Books: This is a great way to find the key takeaways of books you have been looking for.
What’s new and exciting?
- Introducing .NET Smart Components β AI-powered UI controls - a new set of useful AI-powered UI components that you can quickly and easily add to .NET apps
- Unity extension for Visual Studio Code β Now Generally Available - any place that we can write Unity code is a good place π
- Streamline your container build and publish with .NET 8 - how
dotnet publish
is the new approach to publishing containers
What to read π
Implementing Dijkstra’s algorithm for finding the shortest path between two nodes using PriorityQueue in .NET 9 - my recent game development foray has seen me delving into algorithms such as A* and the such, and I’m thoroughly enjoying it. In this post, Andrew Lock digs into how to implement Dijkstra’s algorithm with PriorityQueue (also read this article on that topic) - I hope you enjoy it as much as I did!
Dumping the managed heap in C# - if you just read the previous articles, you should be familiar with the heap. In this article, Kevin Gosse tells us how to dump it!
Organizing ASP.NET Core Minimal APIs - I’m a big fan of minimal APIS, and in this article, Tess Ferrandez gives some great recommendations for their use in production.
Building a scalable gateway with .NET for Microsoft AI - I’m a big fan of YARP and it’s great to hear how it’s used internally at Microsoft.
What to listen to π£
Understanding Large Language Models with Jodie Burchell - with LLMs everywhere these days, it’s important that we understand them. The awesome Jodie Burchell explains them in this RunAsRadio episode
Code, Coffee, and Clever Debugging - Leslie Richardson’s Microsoft Journey and the C# Dev Kit in Visual Studio Code on The Modern .NET Show
Serverless, AWS, and .NET - with James Eastham - James has been a guest on my stream a few times and is such a patient teacher - go learn from him!
What to watch πΊ
Writing async/await from scratch in C# with Stephen Toub - Join Stephen Toub and Scott Hanselman as they dive deep into the world of .NET, this time looking at async/await.
Coupling and Cohesion to Write BETTER C# CODE - join our guest Gui as he talks about coupling and cohesion, such an important aspecct of modern software design.
ME, Live on stream!! I’ll be live on Twitch and YouTube starting Tuesday, April 23rd, at 3pm BST | 10am EDT | 7:30pm IST
Where to see me next π
VS Live! Online workshop - Building cloud-ready, resilient systems in .NET - June 4th to 5th NDC Oslo - 2-day workshop and session - June 10th to 14th KCDC - workshop with Alyssa Nicholl - June 26th to 28th
Before you go π
If you’ve gotten this far, thanks for reading my newsletter! I do hope you’ve enjoyed it. If you have any suggestions you can reach me here, I’d love to hear your thoughts and suggestions.
I hope to see you on a livestream, come say hi!
Lastly, donβt forget to subscribe to the newsletter and share it with your friends!
Thanks for reading!
Layla.