In March 2026, I challenged GitHub Copilot to build a Visual Studio extension, "Version Sync," from scratch without coding. Despite initial failures and needing extensive feedback, it succeeded in creating an extension to sync project version numbers. However, Copilot's code quality was lacking, emphasizing that AI can't replace experienced developers.
Category: Development
UX Chronicles: How OpenAI Broke Sora
The article critiques OpenAI's Sora 2 platform, highlighting its worsened user experience compared to Sora 1. Key features have been removed, leading to confusion and inefficiency for users. The author argues that Sora 2 exemplifies a troubling industry trend called "enshittification," where tech platforms degrade service after users have invested in them, prompting potential user migration to alternatives.
Making Code Easier to Understand with Mermaid Diagrams and CodeRush
The author emphasizes the utility of CodeRush by DevExpress for refactoring, particularly its feature for embedding images in source code. Using Mermaid's flow diagrams, the author illustrates complex methods visually, enhancing code comprehension. Despite limitations in image handling, the combination of Mermaid and CodeRush promotes clear, maintainable code effectively.
Coding Faster with dotNetTips.com Spargine 10: January 2026 Release
Spargine 10 (v2026.10.1.5) launches on January 5th, 2026, featuring enhancements for .NET 10, including new types, methods, benchmarks, and significant performance upgrades. There are breaking changes that may affect existing code. Community contributions are encouraged, and feedback is welcomed to improve the project further.
Visual Studio 2026: Regressions, Reliability Issues, and Missed Opportunities
Visual Studio 2026 has regressed by removing or disabling key code-quality features, making development more difficult. The Analyze tool suffers from inconsistencies and lack of reliability, while various testing functionalities are also flawed. AI tools like Copilot cannot replace essential code-quality features. Greater MVP involvement and thoughtful updates are needed to enhance the IDE.
Rock Your Code: Code & App Performance for Microsoft .NET (5th Edition)
The fifth edition of David McCarter's book, "Röck Yöur Cöde: Code & App Performance for Microsoft .NET," is now available on Amazon. It offers practical techniques for enhancing .NET application performance, including coding patterns, memory insights, and benchmarking. This definitive guide is essential for modern .NET developers aiming for speed and scalability.
Defensive Programming Rule #6: Verify Resource Availability (Before You Access It)
The article emphasizes the importance of defensive programming in .NET applications by validating resource availability before access. It outlines guidelines for checking connectivity, setting timeouts, and managing user experiences when resources are unavailable. The author shares personal insights and promotes Spargine, an open-source project designed to enhance defensive programming practices.
Defensive Programming Rule #5: Let the Compiler Work for You — Harness the Power of Type Checking
The excerpt discusses coding standards highlighted in "Rock Your Code: Coding Standards for Microsoft .NET," emphasizing the pitfalls of using numerous public fields in a class. It advocates for strong typing, proper encapsulation, and input validation to enhance object integrity. The author underscores the importance of self-documenting code for maintainability.
Defensive Programming Rule #4: Safe and Efficient Type Casting
This article emphasizes defensive programming by highlighting safe type compatibility checks in .NET. It advises using the 'is' keyword to prevent InvalidCastException and warns against unnecessary type casts that clutter code and affect performance. The open-source project Spargine aids developers with tools for better validation and logging, promoting cleaner, more resilient applications.
Defensive Programming Rule #3: Validate Your Enums (Every Time)
Enums enhance code readability but can lead to errors if not validated, as any integer can be cast as an Enum, including invalid values. Validating Enum inputs prevents silent data corruption, ensures meaningful defaults, and avoids processing impossible states. Always validate at method boundaries and define a zero value as "unknown."

You must be logged in to post a comment.