Writing
What actually happened while shipping my own products: store rejections and why the fix did not work, a live data incident, CSS that missed silently. All of it with measurements, dates and real numbers.
3 September 2026
Front end · 4 min read
Front end · 4 min read
What broke the mobile layout was a decorative glow
The familiar feeling of hunting horizontal overflow: text cut off on the right and no idea which element is doing it. I measured my way to all three, and two were not where I expected.
3 September 2026
Front end · 2 min read
Front end · 2 min read
text-transform: uppercase breaks brand names on a Turkish pageA short piece, because the bug is short. But once you have seen it you notice it in every Turkish interface.
31 August 2026
Incident · 3 min read
Incident · 3 min read
21 provinces went empty: the guard did not block bad data, it tripped over its own history
The incoming data was healthy the whole time. What stopped it being written was the guard’s own output from the day before.
31 August 2026
Stores · 6 min read
Stores · 6 min read
Three Apple rejections: ATT, the GDPR form, and an ordering bug I did not expect
Every fix uncovered the next layer. The last one was not in the code at all — it was in when iOS agrees to show the ATT prompt.
20 August 2026
Architecture · 3 min read
Architecture · 3 min read
Finding “the nearest one” without ever sending location to a server
Sending location to the server is the easy path. Not sending it is an architectural decision rather than a line of code — and the bill is downloading the entire province list.
15 August 2026
Stores · 3 min read
Stores · 3 min read
We fixed the Play declaration and the rejection came back word for word
Ticking the wrong box on a form can get an app rejected before anyone looks at a line of code. The real surprise was that un-ticking it did not help.