The Curious Engineer

All blogs / C# / .NET

The Angry Dev

darrenhorrocks.co.uk

Darren Horrocks explains various Programming and DevOps practices, with some guides, explanations and ramblings from a sometimes angry man

C# / .NETDevOps / SRE / infrastructureSoftware / engineering practiceAI / MLLinux / Unix

Posts
123 from 30 Nov 2010 to 30 Jun 2026
Posting
now and then (3 in the last year)
Kind
personal blog
Feed
https://www.darrenhorrocks.co.uk/feed.xml

2026 3

  1. Vibe Coding vs Coding with AI
  2. Why I Built My Own Solar Forecasting Tool (To Destroy My Energy Bills)
  3. Amazon Q is Indescribably Bad

2025 19

  1. Windows 10 Is Dying, but Gaming (and working) on Linux Is Easy
  2. Why Event Driven Systems Are Not That Hard
  3. How to Upgrade Windows 10 to Windows 11 on Unsupported Hardware (Step-by-Step with Rufus)
  4. Why UUIDs Beat Integers as Primary Keys (And Why Performance Isn’t the Issue)
  5. The Lie You Are Being Told About AI and Junior Developers
  6. The C# Mistake You're Probably Making with Memory
  7. Don't Buffer, Stream! How IAsyncEnumerable Solves API Performance Issues
  8. Most Unit Tests Are a Waste of Time, but You Need to Write Them Anyway
  9. Snap Unsnapped: Why Ubuntu's Packaging Isn't the Universal Dream You Were Promised
  10. Why Leetcode Style Interview Tests Are Bullshit
  11. The Darker Side of Tech Layoffs (it's darker than it seems)
  12. AI is Making Developers Lazy: RIP Core Coding Skills
  13. The Optimisation Lie: Why Your 'Optimised' Code Might Still Be Slow
  14. The Dirty Secret of Clean Code: When Breaking Programming Principles Makes You a Better Developer
  15. AI Is Smart Because You Are Stupid
  16. .NET Aspire - Microsoft's Attempt at Infrastructure as Code
  17. Understanding Garbage Collection - How the dotnet Garbage Collector Works
  18. Why C# Developers Should Also Learn Rust, and What It Can Teach Them
  19. Why Frontend Software Development Is Needlessly Complex, When It Does Not Need to Be

2024 19

  1. Linux Is NOT the Developers Paradise You Have Been Told It Is
  2. Why Do Open Source Applications Often Have Less Polished UIs Than Commercial Software
  3. My Top 6 Productivity Tools as C# Developer
  4. Why C# Should Be Your First Language and is the Best Programming Language for Beginners
  5. How To: Create a Basic GraphQL API with dotnet in C#
  6. SOLID Design Principles Rust (with examples)
  7. Why Rust and Its Memory Safety Lulls Developers Into a False Sense of Security, Leading to More Serious Bugs
  8. Stop Designing Your Web Application for Millions of Users When You Don’t Even Have 100
  9. Why Copilot is Making Programmers Worse at Programming
  10. Five Reasons Visual Studio is Better than Rider
  11. Five Reasons Rider is Better than Visual Studio
  12. The Single Best and Worst Things About Popular Programming Languages
  13. HTTP Server Tutorial in Rust
  14. Why GraphQL is Better Than Basic REST and SOAP APIs
  15. Save KSP2 - An Open Letter to Take-Two and CEO Strauss Zelnick
  16. Why is AI Such a Polarising Subject? Does it Change Everything? Or Nothing?
  17. PirateSoftware is a Hypocrite - Helldivers 2 and Security
  18. Stop Using string.ToLowerInvariant() to Compare Strings. InvariantCulture Comparisons are Slow
  19. Respecting the Clock: Unveiling the Time-Wasting Pitfalls in Professional Software Development

2023 51

  1. Why are Women so Underrepresented in Software Development?
  2. Whats New in ML.NET 3.0
  3. Mastering Backend Development in C#: 5 Essential Skills
  4. .NET Chiseled Containers: A Revolution in Deployment Efficiency
  5. Asynchronous Programming in C#: A Practical Guide
  6. C# Design Patterns: A Practical Guide
  7. Exploring What's New in C# 12
  8. Optimizing SQL Queries in Entity Framework Core
  9. The Dual Nature of Artificial Intelligence: Strengths and Limitations
  10. From Chaos to Clarity: The Tale of PHP and .NET Naming
  11. Why is AI So Bad at Financial Trading When Computers Are Just Better at Maths
  12. Solving Common Database Performance Bottlenecks
  13. Mastering Git: Tips and Tricks for Version Control
  14. Image Recognition with C# and AI: A Practical Guide
  15. Unleashing the Power of C#: Integrating AI for Intelligent Applications
  16. Setting Up Bitlocker With SSD/NVME Hardware Encryption (it can be faster than no encryption at all)
  17. Best Practices for Exception Handling in C#
  18. Effective Code Reviews in a Development Team
  19. Building a Cross-Platform Desktop App with .NET MAUI
  20. Efficient Debugging with Visual Studio
  21. Unit Testing vs Manual Testing
  22. Essential Things Every Professional Software Developer Should Know
  23. Comparing GraphQL and OData: Which is Best and When?
  24. Why Your Language Choice Doesn't Matter as Good Programmer
  25. Choosing the Right IDE: Visual Studio vs. JetBrains Rider
  26. Embracing TypeScript: The Advantages Over Raw JavaScript
  27. Evaluating Go: Why It Might Not Always Be a Suitable Replacement for C++
  28. Debunking the Rust Hype: Why It's Not Always a Good Replacement for C++
  29. Unraveling the Causes of Burnout in Software Developers and Strategies for Prevention
  30. Embracing Efficiency: Shorter Work Hours for Software Developers (And everyone else)
  31. Mental Health in Tech: Prioritizing Employee Wellbeing for Enhanced Productivity
  32. Enhancing Unity Game Performance with Universal Render Pipeline (URP)
  33. Feedback Culture: Constructive Criticism vs. Destructive Blame in Software Companies
  34. What is the difference betwen Promises and Observables in angular?
  35. Navigating Moral Dilemmas in Software Development
  36. Securing ASP.NET Core Applications Against SQL Injection Attacks with Microsoft SQL Server
  37. Understanding the Gap between Sales and Software Development in Software Companies
  38. Working with Entity Framework Core in C#
  39. Building Marlin 2.0.x Firmware for Ender 3 3D Printer and Ender 3 Clones
  40. When Does Automating Away a Coworkers Job Cross The Line into Bullying
  41. Time Series Anomaly Detection with ML.NET in C#
  42. Company Culture: "No Blame" vs "Know Blame"
  43. How a Zero Trust Policy Hampers Software Developer Productivity
  44. The Pitfalls of Overmanaging Software Developers
  45. Linus Tech Tips, Gamers Nexus, Ethics and Responsibility
  46. 5 Reasons C# Is Better Than Java
  47. Yes You Can Block Elon Musk on Twitter
  48. How to Become a Better Software Developer With These GitHub Repos
  49. New and Interesting Features in C# 12
  50. Creating Windows and Linux background services in dotnet 6.0/7.0
  51. C# Basics: Generate Random Numbers

2022 10

  1. How To: Move Windows 11 Taskbar/Start Menu Back to the Left
  2. Native pico-sdk ILI9341/ILI9342 display drivere library for Raspberry Pi Pico in C++
  3. Native pico-sdk mpu6050 accelerometer and gyroscope library for Raspberry Pi Pico in C++
  4. Native pico-sdk BMP280 temperature sensor and air pressure sensor library for Raspberry Pi Pico in C++
  5. C# Basics - Deep Copy Object Tree
  6. C# Basics: Loop Through a Dictionary
  7. C# Basics: What is the difference between 'string' and 'System.String'
  8. C Sharp 11 Raw String Literals
  9. Why You Should Use Oauth OAuth 2.0 Tokens
  10. Observe/React to Array Changes with Angular 12

2021 3

  1. uTP Micro Transport Protocol Documented
  2. Building a site with Hugo, using GitHub, Amazon S3 and CloudFront with HTTPS and extensionless URLs
  3. IMAP4 Client Protocol Library for C# and .NET

2020 8

  1. What's New and Interesting in .NET 5
  2. C# Console Async Main - Async Entry Point for Console Apps
  3. Problems With Copying a Stack in C# and How to Fix It
  4. Simple C++ Neural Network Library
  5. dotnet BitTorrent library written in C#
  6. Creating Windows and Linux background services in dotnet core 3.0/3.1
  7. dotnet Core and C# Dependency Injection
  8. dotnet core 3.0 Self Contained Single Executable (and other build optimisations)

2019 2

  1. Adding appsettings.json options to a dotnet core console application
  2. Microservices Introduction

2017 3

  1. Who should we blame?
  2. The Battle for Proper Working Hours
  3. The Pain of Developing a Xamarin App for OSX and iOS

2012 2

  1. PHP Problem with UPLOAD_ERR_PARTIAL (File upload error code 3)
  2. jQuery UI Tabs without the ul and li elements

2011 1

  1. Easy (and complex) Search and Replace in Linux Command Line

2010 2

  1. Fix broken image links with javascript
  2. Generic htaccess mod_rewrite SEO rules