Issues Deploying Docker Images to Synology Container Manager

I upgraded my 2019 MacBook Pro Intel Core i7 to the newer 2024 MacBook Pro M4 Max. Before upgrading I was building Docker images in my Intel Mac and deploying a Next.js app and a .NET Core API without any issues to my Synology NAS. However, after getting the new Apple Silicon Mac, I started having Issues deploying the Next.js Docker Image to Synology Container Manager.

Continue reading

AI Enlightening Moment

Up to this point I have only used AI to generate code snippets, either via Gemini web or the Codeium extension on VS Code/Rider. Recently, I decided to give Trae AI IDE a try and as I was updating my portfolio site at esausilva.dev, a brilliant idea sparked and found a use-case to fully utilize the power of AI. That is when I had my AHA moment, my AI enlightening moment.

Continue reading

Implementing Idempotency in .NET Core

Implementing idempotency in .NET Core can be accomplished with a filter, which I will cover at a high level.

Putting it simply, idempotency is the concept of executing an operation multiple times and getting the same result back, given the same input parameters for each request. In our case, we will be setting up idempotency for an API endpoint.

Continue reading

Unintended Side Effects with .NET Core Service Lifetimes and Dependency Injection (DI)

We have an API that handles ~45k monthly requests that was, at times, responding strangely. I suspected it was related to the .NET Core service lifetimes.

The symptoms in question were that out of the blue, the API response body had a status code of 409 with a message of invalid user-provided values, however, the actual HTTP response status code was 200.

Continue reading

.NET Global Exception Handler to Return Problem Details For Your APIs

This article will focus on handling custom exceptions for flow control on .NET with a global exception handler and return a problem details object.

Having said that. There are, for the most part, two schools of thought. One where it is OK to throw a (custom) exception to control flow. i.e. Throw a UserNotFoundException when a user is not found. The second is implementing the Result Pattern where you return a Success or an Error to control the flow. i.e. Result.UserNotFound.

Continue reading