The Angry Dev

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

  • Home
  • Github
  • ko-fi
  • LeetCode
  • Twitch
  • YouTube
Share to reddit Share to facebook Share to twitter

© 2025. All rights reserved.

  • Why Leetcode Style Interview Tests Are Bullshit Mon, Jun 9, 2025
  • The Darker Side of Tech Layoffs (it's darker than it seems) Wed, May 14, 2025
  • AI is Making Developers Lazy: RIP Core Coding Skills Wed, May 7, 2025
  • The Optimisation Lie: Why Your 'Optimised' Code Might Still Be Slow Thu, May 1, 2025
  • The Dirty Secret of Clean Code: When Breaking Programming Principles Makes You a Better Developer Tue, Apr 8, 2025
  • AI Is Smart Because You Are Stupid Sun, Mar 30, 2025
  • .NET Aspire - Microsoft's Attempt at Infrastructure as Code Fri, Mar 28, 2025
  • Understanding Garbage Collection - How the dotnet Garbage Collector Works Wed, Feb 5, 2025
  • Why C# Developers Should Also Learn Rust, and What It Can Teach Them Sun, Jan 19, 2025
  • Why Frontend Software Development Is Needlessly Complex, When It Does Not Need to Be Thu, Jan 2, 2025
  • Linux Is NOT the Developers Paradise You Have Been Told It Is Wed, Dec 11, 2024
  • Why Do Open Source Applications Often Have Less Polished UIs Than Commercial Software Thu, Dec 5, 2024
  • My Top 6 Productivity Tools as C# Developer Wed, Dec 4, 2024
  • Why C# Should Be Your First Language and is the Best Programming Language for Beginners Tue, Dec 3, 2024
  • How To: Create a Basic GraphQL API with dotnet in C# Sat, Nov 9, 2024
  • SOLID Design Principles Rust (with examples) Fri, Oct 25, 2024
  • Why Rust and Its Memory Safety Lulls Developers Into a False Sense of Security, Leading to More Serious Bugs Wed, Oct 2, 2024
  • Stop Designing Your Web Application for Millions of Users When You Don’t Even Have 100 Sun, Sep 15, 2024
  • Why Copilot is Making Programmers Worse at Programming Wed, Sep 11, 2024
  • Five Reasons Visual Studio is Better than Rider Wed, Sep 11, 2024
  • Five Reasons Rider is Better than Visual Studio Wed, Sep 11, 2024
  • The Single Best and Worst Things About Popular Programming Languages Wed, Sep 11, 2024
  • HTTP Server Tutorial in Rust Tue, Jul 23, 2024
  • Why GraphQL is Better Than Basic REST and SOAP APIs Tue, Jun 4, 2024
  • Save KSP2 - An Open Letter to Take-Two and CEO Strauss Zelnick Sat, Jun 1, 2024
  • Why is AI Such a Polarising Subject? Does it Change Everything? Or Nothing? Wed, May 15, 2024
  • PirateSoftware is a Hypocrite - Helldivers 2 and Security Fri, May 3, 2024
  • Stop Using string.ToLowerInvariant() to Compare Strings. InvariantCulture Comparisons are Slow Thu, Mar 7, 2024
  • Respecting the Clock: Unveiling the Time-Wasting Pitfalls in Professional Software Development Wed, Jan 10, 2024
  • Why are Women so Underrepresented in Software Development? Thu, Nov 30, 2023
  • Whats New in ML.NET 3.0 Tue, Nov 28, 2023
  • Mastering Backend Development in C#: 5 Essential Skills Fri, Nov 24, 2023
  • .NET Chiseled Containers: A Revolution in Deployment Efficiency Tue, Nov 21, 2023
  • Asynchronous Programming in C#: A Practical Guide Tue, Nov 21, 2023
  • C# Design Patterns: A Practical Guide Mon, Nov 20, 2023
  • Exploring What's New in C# 12 Tue, Nov 14, 2023
  • Optimizing SQL Queries in Entity Framework Core Sun, Nov 12, 2023
  • The Dual Nature of Artificial Intelligence: Strengths and Limitations Sat, Nov 11, 2023
  • From Chaos to Clarity: The Tale of PHP and .NET Naming Fri, Nov 10, 2023
  • Why is AI So Bad at Financial Trading When Computers Are Just Better at Maths Thu, Nov 9, 2023
  • Solving Common Database Performance Bottlenecks Wed, Nov 8, 2023
  • Mastering Git: Tips and Tricks for Version Control Tue, Nov 7, 2023
  • Image Recognition with C# and AI: A Practical Guide Mon, Nov 6, 2023
  • Unleashing the Power of C#: Integrating AI for Intelligent Applications Sun, Nov 5, 2023
  • Setting Up Bitlocker With SSD/NVME Hardware Encryption (it can be faster than no encryption at all) Tue, Oct 24, 2023
  • Best Practices for Exception Handling in C# Wed, Oct 18, 2023
  • Effective Code Reviews in a Development Team Tue, Oct 17, 2023
  • Building a Cross-Platform Desktop App with .NET MAUI Mon, Oct 16, 2023
  • Efficient Debugging with Visual Studio Sat, Oct 14, 2023
  • Unit Testing vs Manual Testing Fri, Oct 13, 2023
  • Essential Things Every Professional Software Developer Should Know Fri, Oct 6, 2023
  • Comparing GraphQL and OData: Which is Best and When? Thu, Oct 5, 2023
  • Why Your Language Choice Doesn't Matter as Good Programmer Tue, Oct 3, 2023
  • Choosing the Right IDE: Visual Studio vs. JetBrains Rider Tue, Oct 3, 2023
  • Embracing TypeScript: The Advantages Over Raw JavaScript Mon, Oct 2, 2023
  • Evaluating Go: Why It Might Not Always Be a Suitable Replacement for C++ Sun, Oct 1, 2023
  • Debunking the Rust Hype: Why It's Not Always a Good Replacement for C++ Sat, Sep 30, 2023
  • Unraveling the Causes of Burnout in Software Developers and Strategies for Prevention Fri, Sep 29, 2023
  • Embracing Efficiency: Shorter Work Hours for Software Developers (And everyone else) Thu, Sep 28, 2023
  • Mental Health in Tech: Prioritizing Employee Wellbeing for Enhanced Productivity Wed, Sep 27, 2023
  • Enhancing Unity Game Performance with Universal Render Pipeline (URP) Tue, Sep 26, 2023
  • Feedback Culture: Constructive Criticism vs. Destructive Blame in Software Companies Mon, Sep 25, 2023
  • What is the difference betwen Promises and Observables in angular? Sun, Sep 24, 2023
  • Navigating Moral Dilemmas in Software Development Sat, Sep 23, 2023
  • Securing ASP.NET Core Applications Against SQL Injection Attacks with Microsoft SQL Server Fri, Sep 22, 2023
  • Understanding the Gap between Sales and Software Development in Software Companies Thu, Sep 21, 2023
  • Working with Entity Framework Core in C# Thu, Sep 21, 2023
  • Building Marlin 2.0.x Firmware for Ender 3 3D Printer and Ender 3 Clones Wed, Sep 20, 2023
  • When Does Automating Away a Coworkers Job Cross The Line into Bullying Wed, Sep 20, 2023
  • Time Series Anomaly Detection with ML.NET in C# Tue, Sep 19, 2023
  • Company Culture: "No Blame" vs "Know Blame" Tue, Sep 19, 2023
  • How a Zero Trust Policy Hampers Software Developer Productivity Mon, Sep 18, 2023
  • The Pitfalls of Overmanaging Software Developers Fri, Sep 15, 2023
  • Linus Tech Tips, Gamers Nexus, Ethics and Responsibility Tue, Aug 15, 2023
  • 5 Reasons C# Is Better Than Java Tue, Aug 15, 2023
  • Yes You Can Block Elon Musk on Twitter Fri, Jul 28, 2023
  • How to Become a Better Software Developer With These GitHub Repos Wed, Jul 26, 2023
  • New and Interesting Features in C# 12 Thu, Jul 13, 2023
  • Creating Windows and Linux background services in dotnet 6.0/7.0 Sun, Jul 2, 2023
  • C# Basics: Generate Random Numbers Sat, Jul 1, 2023
  • How To: Move Windows 11 Taskbar/Start Menu Back to the Left Sun, Oct 30, 2022
  • Native pico-sdk ILI9341/ILI9342 display drivere library for Raspberry Pi Pico in C++ Mon, Sep 19, 2022
  • Native pico-sdk mpu6050 accelerometer and gyroscope library for Raspberry Pi Pico in C++ Mon, Sep 19, 2022
  • Native pico-sdk BMP280 temperature sensor and air pressure sensor library for Raspberry Pi Pico in C++ Sun, Sep 18, 2022
  • C# Basics: Loop Through a Dictionary Wed, Apr 27, 2022
  • C# Basics: What is the difference between 'string' and 'System.String' Wed, Apr 27, 2022
  • C Sharp 11 Raw String Literals Mon, Apr 25, 2022
  • Why You Should Use Oauth OAuth 2.0 Tokens Thu, Apr 14, 2022
  • Observe/React to Array Changes with Angular 12 Mon, Apr 11, 2022
  • uTP Micro Transport Protocol Documented Mon, Oct 4, 2021
  • Building a site with Hugo, using GitHub, Amazon S3 and CloudFront with HTTPS and extensionless URLs Wed, Mar 10, 2021
  • IMAP4 Client Protocol Library for C# and .NET Wed, Jan 13, 2021
  • What's New and Interesting in .NET 5 Thu, Oct 15, 2020
  • C# Console Async Main - Async Entry Point for Console Apps Wed, Oct 14, 2020
  • Problems With Copying a Stack<T> in C# and How to Fix It Tue, Oct 13, 2020
  • Simple C++ Neural Network Library Sun, Oct 11, 2020
  • dotnet BitTorrent library written in C# Fri, Oct 9, 2020
  • Creating Windows and Linux background services in dotnet core 3.0/3.1 Thu, Apr 30, 2020
  • dotnet Core and C# Dependency Injection Fri, Apr 24, 2020
  • dotnet core 3.0 Self Contained Single Executable (and other build optimisations) Tue, Apr 21, 2020
  • Adding appsettings.json options to a dotnet core console application Sun, Nov 17, 2019
  • Microservices Introduction Tue, Nov 12, 2019
  • Who should we blame? Wed, Jan 18, 2017
  • The Battle for Proper Working Hours Mon, Jan 9, 2017
  • The Pain of Developing a Xamarin App for OSX and iOS Mon, Jan 9, 2017
  • PHP Problem with UPLOAD_ERR_PARTIAL (File upload error code 3) Tue, May 1, 2012
  • jQuery UI Tabs without the ul and li elements Wed, Apr 25, 2012
  • Easy (and complex) Search and Replace in Linux Command Line Mon, Aug 15, 2011
  • Fix broken image links with javascript Tue, Nov 30, 2010
  • Generic htaccess mod_rewrite SEO rules Tue, Nov 30, 2010