Mert Özen Further With Every Line

Blog

Mert Özen's blog posts on software development, backend, frontend, and DevOps.

Series
30 posts found
Global Error Handling: Catching All Errors in a Single Place
Backend PART 13

Global Error Handling: Catching All Errors in a Single Place

We cover catching unexpected errors from anywhere in the app in a single place: escaping scattered try-catch blocks, setting up exception middleware, and returning a clean, safe response to the user.

8 Aug 2026 12 min 56
Logging: ILogger, Serilog and Structured Logging
Backend PART 14

Logging: ILogger, Serilog and Structured Logging

We cover logging: the basics of ILogger, log levels, the difference between plain-text and structured logging, and why Serilog makes this job much more powerful in serious projects.

8 Aug 2026 12 min 100
Configuration and the Options Pattern: appsettings Layers and Separating Settings from Code
Backend PART 15

Configuration and the Options Pattern: appsettings Layers and Separating Settings from Code

We cover separating settings from code: appsettings files and environment layers, managing connection strings safely, reading settings with strong types via the Options pattern, and keeping secrets out of code.

8 Aug 2026 12 min 69
Async/await: Correct Asynchronous Usage in an API
Backend PART 16

Async/await: Correct Asynchronous Usage in an API

We cover what async/await actually does: the difference between sync and async, what a Task is, why an API should be asynchronous, its effect on scalability, and common mistakes.

15 Aug 2026 13 min 78
Pagination, Filtering and Sorting: Returning Large Lists Efficiently
Backend PART 17

Pagination, Filtering and Sorting: Returning Large Lists Efficiently

We cover returning a list with thousands of records efficiently: pagination, filtering, and sorting; the lazy nature of IQueryable, the Skip/Take logic, and running the query in the database.

15 Aug 2026 13 min 49
API Versioning: Evolving Your API Without Breaking Old Clients
Backend PART 18

API Versioning: Evolving Your API Without Breaking Old Clients

We cover how not to break old clients while evolving the API over time: what a breaking change is, why versioning is needed, the URL/header/query methods, and setting up versioning in .NET.

15 Aug 2026 12 min 119
Authentication and Authorization: The Difference Between Identity Verification and Permission
Backend PART 19

Authentication and Authorization: The Difference Between Identity Verification and Permission

We separate two concepts most developers confuse: authentication (who are you?) and authorization (what are you allowed to do?). The difference, the correct order, and how these are positioned in .NET.

15 Aug 2026 11 min 43
Authentication with JWT: How a Token Is Created and Verified
Backend PART 20

Authentication with JWT: How a Token Is Created and Verified

We cover authentication with JWT: what a token is, what its three parts mean, why it's signed, why the server is stateless, and setting up token creation and verification in .NET step by step.

15 Aug 2026 14 min 62
Role- and Policy-Based Authorization: Deciding Who Is Allowed to Do What
Backend PART 21

Role- and Policy-Based Authorization: Deciding Who Is Allowed to Do What

We deepen authorization: what role-based permission is, where it falls short, how the policy and claim-based approach offers a more flexible solution, and how we set these up in .NET.

15 Aug 2026 13 min 51
CORS, Rate Limiting and Security Headers: Hardening the API Against External Threats
Backend PART 22

CORS, Rate Limiting and Security Headers: Hardening the API Against External Threats

We cover three topics that harden the API against misuse: controlling which sites can access it with CORS, limiting requests with rate limiting, and adding basic protection with security headers.

15 Aug 2026 13 min 67
Documentation with Swagger/OpenAPI and Scalar: Make Your API Self-Describing
Backend PART 23

Documentation with Swagger/OpenAPI and Scalar: Make Your API Self-Describing

We cover API documentation: what OpenAPI is, why automatic documentation matters, OpenAPI support in .NET 9, and setting up interactive docs with Swagger UI and a modern alternative, Scalar.

21 Aug 2026 12 min 30
Unit Testing: Testing Pieces of Code in Isolation with xUnit and Moq
Backend PART 24

Unit Testing: Testing Pieces of Code in Isolation with xUnit and Moq

We cover unit testing: what testing a unit in isolation means, why we write tests, the test structure with xUnit, faking dependencies with Moq, and the basic principles of writing good tests.

21 Aug 2026 13 min 31
Blog Map