Hooked on .NET - September 2023 with Rachel Appel

This edition features guest Rachel Appel discussing dark patterns. Includes suggestions for the latest blogs to read, podcasts to listen to and videos to watch.

Layla Porter
Read on Substack

Welcome back 👋

I can’t believe we’re through September already! My favourite time of year is fast approaching - Autumn - or Fall for our friends across the pond! Well, in the Northern Hemisphere at least!

Joining us this month is the amazing Rachel Appel. Rachel is a good friend of mine and we share a love for tea done well!

Rachel holds a master’s degree in Advanced Software Engineering and currently works for JetBrains as a Developer Advocate. She has been in the business of creating software for over 30 years, as an author, mentor, and speaker. During her career, she has worked on projects of all sizes from the smallest of apps to the largest enterprise systems at some of the world’s leading companies. Rachel’s expertise is in web development on the Microsoft stack, specifically ASP.NET, Azure Functions, SignalR, C#, HTML, CSS, JavaScript, and TypeScript.

Rachel’s thoughts

Dark Patterns have become a more popular topic of conversation in software, and rightfully so. You may not have heard the term, but you likely have experienced a dark pattern. Dark patterns are characteristics or behaviours in software that manipulate or deceive users. Perhaps you’ve tried to purchase something and you notice a warranty that’s been added to the cart - but not by you. Or you try to cancel that subscription and can’t, because there is no way to do so online, so you have to call and wait for a long time. They’re trying to get you to give up rather than cancel, and many people do. Airlines have been known to offer that 39€ seat that ends up being over ten times the quoted price because of sneaky fees and dark pattern upsells in their software. The travel industry got so bad that the UK and the USA as well as several other countries created laws regarding dark patterns. Dark patterns have cost consumers millions of dollars in cash plus millions in lost time. In some cases, these dark patterns are breaking local laws. Software that uses them is objectively lower in quality than software that avoids them. Dark patterns make software sketchy.

At this point, you might ask yourself, “As a developer, what can I do so that my team isn’t putting dark patterns into our software?” Firstly, talk to management and make sure they’re on board with the fact that eliminating dark patterns is also a quality metric. This means you’ll need to learn more about dark patterns and how they work (links below). Once you have a general understanding of dark patterns, ask management to ensure dark pattern removal is part of the quality metrics. Then the design and testing teams can work to actively thwart them and make a much better experience for your customers. If you’re not already “dogfooding” your software, now is a great time to start. Watch users but also thoughtfully use your own software. Consider every action and click you make. Did you feel forced into an action? Is something confusing or is information lacking? These are common dark techniques (airline favourites) that are easily avoidable with a bit of good design and quality assurance.

Rachel’s recommendations

What’s new and exciting?

What to read 📖

Your Quick Guide to Pattern Matching in C# - I do love to be reminded of the basics from time to time. It’s so easy to get stuck in a rut and do things as one has always done before. Check out this guide to pattern matching and see what you could do differently!

Discriminated Unions in C# - I’ve long heard of discriminated unions in F#, but never in C# – Maarten Balliauw talks us through the process. Keep an eye out for pattern matching in use!

Optimizing .NET code: Hunting for allocations - Jonathan George talks us through a basic approach to determining where memory allocations come from.

Tools and Libraries for Building Cloud-Ready Apps in .NET - this month, I was interviewed by Visual Studio Magazine, where we talk about building cloud-ready apps. If you wish to attend Visual Studio Live Orlando you can use my promo code “PorterL” to receive $500 off the standard pricing of the 6-day, 5-day and 4-day packages.

What to listen to 🗣

Designing C# with Mads Torgersen - In this episode of Adventures in .NET, the gang had the pleasure of talking with the awesome Mads Torgersen and his work on the C# language.

Mediatr with Jimmy Bogard - whether you like Mediatr or not, learning how Jimmy Bogard came to build it is a great listen.

From Junior to Jedi: Navigating the Web Development Galaxy with Irina Dominte - last month’s guest, Irina Scurtu is interviewed on the Modern .NET Show. Give it a listen!

What to watch 📺

Send Email in dotnet with Mimekit, Retry, and Outbox Pattern - I enjoy learning different design patterns and the Outbox Pattern is new to me. Check out this concise video by Steve Smith aka Ardalis

Why do you have to return a Task when you use “await” in a C# method? - I think it’s important to understand the reasons we do things. In this video, Jeremy Clark explains why we have to return a Task when we use an await.

Enforcing Architecture in .NET with tests - not to shamelessly self-promote, but I really think you should check out my latest video on how to use tests to maintain the architecture of your applications.

Before you go 👋

We do hope you’ve enjoyed the articles, videos, and podcasts we’ve shared with you. If you have an article you’d like us to include in the newsletter, then please complete this form.

If you have any comments or suggestions or just want to reach out then feel free to complete this contact form to reach me, Layla.

Lastly, don’t forget to subscribe to the newsletter and share it with your friends!

Thanks for reading!

Layla.