Blog

I keep track of what I learn by writing it down.

There is no marketing copy here. I write about what I did when an app was rejected on the App Store, which backend I picked and why, and the steps I took to make a site visible on Google — the things I actually went through. Some of it is a note to my future self, and some of it is here in case it helps someone stuck on the same problem.

R&D
8 min read

Putting the Model on the Phone, Not in the Cloud

Putting the model in the cloud is the easy path. In most of the R&D work I designed I chose to run it on the phone instead; this post covers what that decision bought me and what it cost.

Read the post
Mobile Development
4 min read

The Two Days I Lost to the Turkish "i"

The app crashed for some users only. The cause was not the device but its language setting — and it came down to a single letter.

Read the post
R&D
6 min read

The Hard Part Isn't the Model, It's the Data

Choosing the model was the easy part. The hard part was the gap between the clean lab photo in the open dataset and the picture a farmer takes in a hurry, in the shade.

Read the post
Mobile Development
3 min read

Publishing on Google Play: 7 Ways It Differs from the App Store

I released my first apps on the Play Store and moved to iOS a year later. Staged rollouts, test channels, Data Safety and the target API requirement — the real differences between the two app stores.

Read the post
Mobile Development
7 min read

The App That Has to Work Without Internet

The moment an app is most useful is often the moment the internet is not working. The decisions and the trade-offs of offline-first architecture, seen through the design of Sağlam and the QR verification in Vakti Geçmeden.

Read the post
Mobile Development
4 min read

How I Read a Crash Report

Users don't report an app that crashes, they delete it. From symbolication to prioritization, my routine for tracking crashes after a release.

Read the post
Product
8 min read

Nobody Wants to Go First: The Escrow Flow

The buyer will not send the money first and the seller will not hand over the ticket first. In 2.El Bilet I broke that deadlock not with a single button but with an escrow flow built from states that wait on each other.

Read the post
Mobile Development
5 min read

7 Lessons from Shipping Apps to the App Store

I moved to Swift in 2021 and have worked in the Apple ecosystem ever since. This post is an honest account of the rejections I collected along the way and the things I wish I had known for my first app.

Read the post
Mobile Development
7 min read

Moving to Flutter After Writing Native in Three Languages

I stopped writing the same product twice. What a single codebase gained me, what I gave up in return, and how my native experience paid off once I started writing Flutter.

Read the post
R&D
7 min read

Good Enough Instead of Optimal

The vehicle routing problem is NP-hard: as the number of stops grows, an exact solution becomes impossible in practice. While designing RotaAkıl I saw that the gap between “optimal” and “good enough” is really a product decision.

Read the post
Backend
3 min read

Why Does the Firestore Bill Blow Up?

The bill tracks the number of reads, not the size of your data. Five patterns that inflate the cost: reads with no cache, listeners left open, N+1 queries, lists without pagination, and fetching everything just to count it.

Read the post
Software
9 min read

Swift Through the Eyes of Someone Coming from Java

I moved from Java to Swift in 2021, and what I wrote in those first weeks was really Java in Swift syntax. Through my own mistakes I go over where each old reflex misfired: optionals, value types, dispatch behavior in protocol extensions, ARC and closure capture lists.

Read the post
Mobile Development
3 min read

Building for the World, Not Just for Turkey

Localization is not translation. What has to change when you go global — from text length to currency, from regional pricing to the hour you send notifications.

Read the post
Software
9 min read

Android with Java: Lessons Left Over from My First App

Writing my first Android app in Java in 2020, I fell into every trap one by one — from losing all the data when the screen rotated to memory leaks. In this post I go through the lifecycle, context leaks, the habits left over from the AsyncTask era and null checking, all through my own mistakes.

Read the post
Software
9 min read

Bringing Kotlin into a Java Project

I added Kotlin later to the Android projects I had written in Java in 2020. Instead of converting everything at once, I moved file by file. This post covers why platform types punch a hole in null safety, the spot that blows up at runtime when you use data classes with Firestore, how extension functions took the place of my Utils classes, and how I wrapped Firebase calls while moving from AsyncTask to coroutines — including the Java calls that broke and the @Jvm* annotations that fixed them.

Read the post
Mobile Development
4 min read

The Part of Push Notifications Nobody Tells You About

Why does a token die silently, when should you ask for permission, how do you get from a notification to the right screen? The real work starts after the setup.

Read the post
Software
8 min read

Hardware with Python: Raspberry Pi and Arduino Notes

A year after learning Python I built an earthquake early-warning prototype with a Raspberry Pi and an Arduino. Instead of the flat line I expected on screen, I got a jittering cloud of numbers. What that project taught me about GPIO, serial lines, sampling, filtering and power.

Read the post
Software
8 min read

First Month in Flutter: Getting Used to the Widget Tree

After six years of writing native apps in Swift, Java and Kotlin, I moved to Flutter. The hard part was not the syntax but the way you build the interface: immutable widgets, a build method that runs over and over, the scope setState covers, and where BuildContext sits in the tree. I go through what confused me in the first month and the mistakes I made, one by one.

Read the post
Product
5 min read

Cutting Scope: What Unshipped Features Taught Me

The most expensive part of a product is the features that get built and never used. The method I have followed since I started seeing scope cutting as a skill rather than a loss.

Read the post
Backend
5 min read

Never Trust the Client: The Foundation of Mobile App Security

A mobile app is a program that runs on the user's device and can be picked apart. Only one rule follows from that: nothing coming from the client can be taken as true. Here is what that rule means in practice.

Read the post
Software
8 min read

Modern CSS: Grid, Variables and Dark Mode

The theme system I built while writing this site in plain CSS, the grid overflows I fixed and the contrast corrections I made. No libraries, just real code.

Read the post
SEO & Marketing
8 min read

Core Web Vitals: How Speed Became an SEO Problem

Core Web Vitals really asks three simple questions: when did the page appear, did it stay in place after it appeared, and did it respond when it was touched. The typical mistakes that break these three metrics, and the concrete fixes I applied on the sites I delivered.

Read the post
Mobile Development
3 min read

Why App Size Matters and How to Shrink It

Size has a direct effect on your download and update rates. Concrete steps on App Bundle, R8, vector assets and content downloaded on demand.

Read the post
Social Media
8 min read

Brand Voice: A Hundred Ways to Say the Same Thing

A brand voice is not made by a slogan but by the small decisions taken every day. How I put the tone down in writing while running social media for two brands, the platform differences, the recurring formats and the content calendar.

Read the post
Product
3 min read

The First 60 Seconds: What Keeps a User in the App

When should you ask for permissions, does sign-up have to be mandatory, what should an empty screen say? Eight concrete steps to keep a freshly downloaded app from being deleted on day one.

Read the post
Career
4 min read

Shipping a Product as a Student: What I Learned at 18

I published my first app at 18 and then pulled it myself — I knew how to build it, but not how to run it. The real constraints of shipping a product while still at school, and the lessons I took from that period.

Read the post
Mobile Development
4 min read

The First 60 Seconds: What I Changed in the Onboarding Screens

The one minute a user spends the first time they open the app decides more than everything that comes after it. The decisions I made while building the onboarding flow, and the ones I dropped.

Read the post
Career
3 min read

From 2018 to 2026: From Python to 10+ Published Apps

The TÜBİTAK project I left unfinished, my first app that made money, and what I learned every time I switched languages. Not a straight success story — a list of what worked and what did not.

Read the post
Mobile Development
5 min read

Two Stores, Two Cultures: App Store and Google Play Are Not the Same Job

I submitted the same app to both app stores; on the surface the processes look alike, in practice they are nothing alike. The differences — from review logic to test distribution, from rejection reasons to the store listing — and how I plan for each one.

Read the post
Social Media
4 min read

Write the Benefit, Not the Feature: Rewriting App Copy from Scratch

Copy written by a developer usually explains “what it does”, while the user is looking for an answer to “what's in it for me”. The method I used to rewrite the store and interface copy for my own apps, shown through concrete sentences.

Read the post
SEO & Marketing
3 min read

My App Is Live but Nobody Is Downloading It

I learned the expensive way that downloads do not arrive on their own once you publish. The steps I take to grow an app.

Read the post
Social Media
5 min read

Producing Content as a One-Person Team: The Loop I Built

The real problem in content production is not inspiration, it is consistency. The loop I put together when I had to build apps and publish at the same time — an idea pool, a batch shooting day, format templates and a single calendar.

Read the post
SEO & Marketing
5 min read

Local Business SEO: What I Do to Show Up on the Map

Competition in local search works nothing like nationwide search: it comes down to distance, relevance and prominence. Step by step, the setup I build for businesses with a physical address — the profile, NAP consistency, page architecture and the review flow.

Read the post
SEO & Marketing
6 min read

Schema.org: Describing Your Page to Google with Data, Not Words

A search engine reads the text on your page but only guesses at “is this a service, a post or a person”. JSON-LD removes exactly that guesswork. Which types I use and why, how I validate them, and the traps I fall into most often.

Read the post
Career
3 min read

As Important as the Code: What You Say and How You Say It

The hard part of freelancing was never the code. Lessons on getting scope approved in writing, delivering bad news early, talking about price, and telling the benefit apart from the feature.

Read the post

If any of this was useful to you

If you would like to talk about what I could contribute to your team, drop me a line. My CV and all of my projects are linked below.