Blog

Writing

Storing credentials in the repo: SOPS + age

Keeping secret values encrypted inside the git repo: setting up SOPS + age, the per-environment recipient model, decrypting at runtime, the team and CI flow, and the things to watch out for.

devops
Read more →

Free Custom Domain Email with Cloudflare and Gmail

Receiving and sending email from your own domain without running a server or paying anything: Cloudflare Email Routing for inbound, plus a Gmail app password and Send mail as SMTP setup for outbound.

devops
Read more →

Local Ignore Rules in Git: .git/info/exclude and core.excludesFile

Hiding personal files dropped into the project root without polluting .gitignore or pushing them to the team. .git/info/exclude, core.excludesFile, and the precedence order.

devops
Read more →

PostgreSQL LIKE Performance: CAST, Concat, and OR Comparison

Comparing 6 different LIKE approaches in a migration from bigint LongColumn to text TextColumn with a 2 million row benchmark: CAST+concat, CAST single, text concat, text single, text OR, and CAST OR.

backend performance dotnet
Read more →

.NET Memory Management 1: Stack, Heap and Strings

What are stack and heap, where do value types and reference types live in memory, why is string a special type, and how does the GC lifecycle work.

dotnet csharp performance
Read more →

Welcome

Why this site exists, what I track here, and a few thoughts on writing and code in the AI age.

kişisel ai
Read more →