omeryanbas.com

Ömer Yanbaş

General Manager, Ticofab Yazılım

Data posts

Everything in the journal filed under data.

2026

  1. 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.

    OperationsData6 min read

  2. 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.

    OperationsData4 min read

  3. From a slow query to the right index

    Find the query, read the plan, then choose the column order. A practical route from a slow page to an index that actually gets used, and its cost.

    DataPerformance5 min read

  4. Idempotent jobs: doing the work exactly once

    Queues and webhooks deliver at least once, so every handler runs twice eventually. How to make the second run harmless with a key and a constraint.

    DataIntegrations5 min read

2025

  1. Log rotation, retention and the silent cost of a full disk

    A disk creeping towards full is a slow outage: writes get refused, builds fail, backups truncate. How to find what grew and stop it growing back.

    OperationsData6 min read

  2. A hundred thousand rows pasted into a form: move it to a queue

    A synchronous bulk import dies at the proxy timeout, leaves half written state and charges the user twice. Accept, store, return, then work in chunks.

    DataPerformance5 min read

  3. Why one Turkish character can double your message cost

    Short messages use a 7 bit alphabet with 160 characters, or a 16 bit one with 70. A single accented letter switches the whole message and the bill.

    MessagingData6 min read

  4. The delivery report that arrives before the record

    An asynchronous callback can reach you before the row it refers to is committed. Keep the orphan, retry the match, and stop losing final states.

    MessagingData6 min read

  5. The campaign that never sent: time zones in the database

    A job scheduled for 09:00 sits in the queue with no error at all. The application wrote local time, the worker reads UTC, and the offset does the rest.

    DataOperations5 min read