omeryanbas.com

Ömer Yanbaş

What broke, why it broke and how it got fixed

This edition45 posts so far

Lead · Practice

Making technical debt visible enough to pay

Debt nobody can see never gets budget. Give each item a cost, an interest rate and a place on the same list as features, then pay it inside feature work.

  • Technical debt that is only described as a feeling competes against features that have numbers attached, and it loses every quarter.
  • Each debt item needs three things written down: where it hurts, what it costs to fix, and the interest, meaning how much slower each release gets while it is unpaid.
  • Deliberate debt was chosen for a reason and can be recorded and revisited, while mess was never chosen by anyone, and the two need different conversations.

Read the whole thing

Also in this edition

Practice · Operations

Where your team writes down its decisions

Decisions live in chat threads and in people's heads until they vanish. A one paragraph record next to the code keeps the reasons where the work is.

In brief

  1. Debugging: measure first, guess later

    The order that finds bugs is reproduce, narrow, measure, then theorise. Here is how to bisect changes and inputs, and why the first theory costs the most.

  2. Long jobs get finished in small reversible steps

    How to cut a large piece of work into steps that can each ship and each be undone, with feature flags, expand and contract migrations and a real rollback.

  3. Lab numbers, field data and a real phone

    A synthetic audit, real user data and a phone in your hand answer three different questions. Here is when each one lies and how to measure a change.

  4. An eleven kilobyte home page: the case for static sites

    What pre rendering buys you, what it costs, and the build pipeline, page weight budget and caching rules that keep a static site small and boring.

  5. The scheduled job that never runs at midnight

    A schedule written in one zone on a machine running another, plus daylight saving twice a year, makes a nightly job run late, twice or not at all.

  6. Your backup is a zero byte file and nobody noticed

    Backups fail quietly: a missing tool in the container, a permission, a full disk. Check the size and the row counts, and restore on a schedule.

Sections

Earlier

Everything published before this edition, newest first.

  1. Three fields that make logs worth reading Operations
  2. What your AI feature does when the credit runs out AI
  3. Keeping an AI feature affordable in production AI
  4. Payment webhooks: signatures, replays and idempotency keys Integrations
  5. From a slow query to the right index Data
  6. Idempotent jobs: doing the work exactly once Data
  7. Two accessibility mistakes almost every site makes Web
  8. Self hosted fonts, privacy law and one request less Security
  9. What the responsive images audit is really telling you Performance
  10. Invisible dot underscore files travelling from macOS to your server Operations
  11. The rsync flag that breaks certificate renewal Operations
  12. Blue green deploys: check the build exit code before you restart Operations
  13. A streamed response that never closes hangs for a hundred seconds Web
  14. Proxy tunnels that die after ten idle seconds Integrations
  15. How a misconfigured root exposes your .env to the internet Security
  16. Never write to /tmp with a generic name on a shared server Operations
  17. Log rotation, retention and the silent cost of a full disk Operations
  18. A hundred thousand rows pasted into a form: move it to a queue Data
Halftone portrait of Ömer Yanbaş in a dark suit and sunglasses, standing beside a window.

Who writes this

I am Ömer Yanbaş. I run Ticofab Yazılım, I work on enterprise projects, automation and data, and I write here about what actually happens inside those systems.