Notlar
Blog
Frontend mühendisliği, SEO, yapay zeka, analitik ve gerçek ürünler geliştirme üzerine notlar.
37 yazı
DeepSeek fiyatları artırdı — aynı V4 Flash'ı eski tarifeden bile ucuza buldum
17 Ağustos sabahı DeepSeek API harcamamın normalin yaklaşık beş katına çıktığını gördüm. Ardından aynı DeepSeek-V4-Flash-0731 checkpoint'ini sunan başka bir sağlayıcı bulup test ettim; güncel fiyatı DeepSeek'in eski tarifesinden bile yaklaşık %45 daha düşük.
Animasyonlu WebP, GIF ve APNG’yi kareleri veya zamanlamayı bozmadan H.264 MP4’e nasıl dönüştürüyorum
Üretim işlem hattım kullanıcının gerçekten gördüğü tam kareleri yeniden kuruyor, kaynak zamanlamasını koruyor, her nihai MP4 için tek bir CFR seçiyor, büyütmeden en küçük ortak tuvali hesaplıyor, uyumlu H.264 bölümleri kodluyor, ikinci bir kayıplı kodlama yapmadan birleştiriyor ve hem dosyayı hem HTTP üzerinden sunumunu doğruluyor. Ölçülmüş bir çalıştırmada toplam 1,49 GB olan 217 animasyonlu WebP tek bir 78,49 MB H.264 MP4’e dönüştü.
Her şeye alarm veriyordum: tarayıcı hata gürültüsünü işe yarar üretim izlemeye nasıl dönüştürdüm
İlk frontend raporlayıcım reklam engellemelerini, GTM arızalarını, AbortError’ı, bilgi vermeyen Script error olaylarını ve gerçek Next.js parça hatalarını aynı düzeyde görüyordu. İzlemeyi sahiplik, kullanıcı etkisi, kanıt kalitesi, olay ilişkilendirmesi ve kurtarma etrafında yeniden kurdum.
Eski Next.js sekmeleri dağıtımdan sonra neden bozulur: bayat HTML, eksik chunk dosyaları ve sürüm uyuşmazlığı
Bir dağıtımdan sonra üretim izleme sistemim, kendi Next.js uygulamama ait bir chunk dosyasının yüklenemediğini kaydetti. Kayıt hatanın gerçekleştiğini kanıtlıyordu, nedenini değil. Bu olaydan yola çıkarak uzun süre açık kalan sekmeleri, bayat HTML’i, eksik /_next/static kaynaklarını, sürüm uyuşmazlığını, eski dosyaları saklamayı, deploymentId kullanımını, yayın sırasını, izlemeyi ve kontrollü kurtarmayı ele alıyorum.
CFR’ımı bozan tek tick: 5580 neden 5625 değildi, 3751 neden 3750 değildi
Doğrulayıcım 16 fps MP4 dosyasını 5625 yerine 5580 tick süren bir paket yüzünden tekrar tekrar reddetti; daha sonra 24 fps için tam 3750 gerekirken 3751 buldu. Bu iki hata kaynak zamanlamasını, CFR nicemlemesini, MP4 zaman tabanını, PTS/DTS ilişkisini, çoklama işlemini ve paket düzeyindeki doğrulamayı birbirinden ayırmamı sağladı.
H.264 ile Bir Üretim Videosunu ~280 MB’den ~50 MB’ye Nasıl İndirdim
Üretim sistemindeki gerçek bir video, H.264 yapılandırmasını CRF 28, x264 veryslow, 720p sınıfı çözünürlük üst sınırı, anlamlı kare hızları ve ölçülü kod çözücü gereksinimleri etrafında yeniden kurduktan sonra yaklaşık 280 MB'tan 50 MB'a indi. Daha önceki bir aşamada aynı örnek yaklaşık 350 MB'tan 238 MB'a düşmüştü; eski kitaplığın denetimi de saniyede birkaç megabitlik H.264 dosyalarının yaygın olduğunu gösterdi.
Gitae’yi, web sitesi kesintilerini yalnızca “çalışıyor / çalışmıyor” seviyesinin ötesinde teşhis etmek için geliştirdim
Gitae’yi pratik bir soruya cevap vermek için geliştirdim: site gerçekten erişilemez mi, yoksa sorun yerel mi? Araç Moskova ve Helsinki’deki harici VDS kontrollerini DNS, HTTPS/TLS, port, routing, IP, hosting ve CMS sinyalleriyle birleştiriyor; her sonucu kesin kanıt değil, bir işaret olarak ele alıyor.
TypeScript üretim yazılımında Codex ile neden bu kadar iyi çalışıyor
Üretim ortamında TypeScript, Codex'e iyi bir promptun tek başına veremeyeceği şeyleri sağlar: makine tarafından doğrulanabilir sözleşmeler, hızlı derleyici geri bildirimi ve büyük refactor'lar için daha güvenli bir yol.
Jurfi.com’u geliştirdim: yapılandırılmış hukuk taslakları için tarayıcı tabanlı bir stüdyo
Jurfi.com’u form ve şablonlardan tarayıcı içinde yapılandırılmış hukuk çalışma taslakları üretmek, taslakları yerel olarak saklamak ve incelemeyi sürecin açık bir parçası yapmak için geliştirdim; yazılımın avukatın yerini aldığını iddia etmiyorum.
İlk SaaS Gelirim: Tek Bir Ödeme Gerçekte Neyi Kanıtladı
Kendi geliştirdiğim bir SaaS ürününden aldığım ilk ödeme küçüktü ama elimdeki kanıtın niteliğini değiştirdi. Tek bir işlemin neyi doğrulayabileceğini, neyi kanıtlayamayacağını ve tekrarın neden ilk kilometre taşından daha önemli olduğunu anlatıyorum.
Codex ile 15 projeyi incelerken manuel kontrolü nasıl elimde tutuyorum
15 yazılım projesini incelemek eskiden tekrar eden kontroller içinde kaybolmak demekti. Codex bug, test, SEO, çeviri, yerelleştirme ve tutarlılık kontrollerini çok daha hızlı yapmama yardımcı oluyor; ama her AI bulgusunu hüküm değil ipucu, her değişikliği de doğrulanması gereken bir öneri olarak görüyorum.
ChatGPT Plus’taki Codex limitimin son %3–5’ini neden büyük mühendislik işlerine harcıyorum — Güncelleme: 2026 yazında bu yöntem çalışmayı bıraktı
Güncelleme: 2026 yazına gelindiğinde bu workflow benim için güvenilir olmaktan çıktı. Hesabımdaki 5 saatlik sayaç kayboldu, yalnızca haftalık limit görünür kaldı ve uzun bir görev haftalık limit bittiğinde durabiliyordu.
AI ile 10.000 SEO makalesi yayınladım; sonunda sitem Google’da sıfır indekslenmiş sayfaya düştü
Toplu AI yayıncılığı önce kısa yol gibi görünüyordu: Google oluşturulan 10.000 makale URL’sinin tamamını taradı, ancak yalnızca yaklaşık 1.000 sayfa gerçekten indekslendi, Search’te göründü ve gerçek trafik getirdi. Sonra bu sayfalar da kayboldu ve site sıfır indekslenmiş sayfaya kadar düştü. Bu deneyim AI, SEO, çeviri ve editoryal sorumluluk konusundaki yaklaşımımı değiştirdi.
8/256 GB M1 MacBook ile Beş Yıl: Neden Hâlâ Değiştirmedim
8 GB bellek ve 256 GB SSD’li temel M1 MacBook’u yaklaşık 1.000 dolara aldım ve geliştirme, medya işleri, yazma, öğrenme ve yan projeler için günde yaklaşık 15 saat kullandım. Beş yıl sonra sınırlarını açıkça görüyorum; ancak yükseltmeyi düşünmemin nedeni bilgisayarın işe yaramaz hâle gelmesi değil, iş yükümün büyümesi.
Blogumu ChatGPT ile 20 dile çevirdim — dünyanın her yerinden arama trafiği almaya başladım
Yapay zeka çok dilli yayıncılığın maliyetini benim için tamamen değiştirdi. Tek dilli bir blogdan, her yazıyı 20 dile kadar yayımladığım ve yeni organik arama girişleri oluşturduğum bir yapıya geçtim.
QRViz’i ücretsiz bir statik QR kod üreticisi olarak yayına aldım — dağıtımı SEO’ya bıraktım
QRViz kampanya platformu değil, tarayıcı tabanlı statik QR kod üreticisidir. qrviz.com’u reklâm bütçesi, ücretli kullanıcı edinimi veya gelir hunisi olmadan ücretsiz bir QR kod oluşturucu olarak yayınladım. Keşfedilmek için tamamen SEO’ya güveniyorum; bu yüzden en büyük belirsizlik dağıtım.
Müşteri kazanmak neden bana SaaS geliştirmekten daha zor geldi
Kendi SaaS deneyimimden çıkan ders: mühendislik bana açık ve kontrol edilebilir geri bildirim verirken dağıtım, konumlandırma, mesaj ve retention çok farklı ve daha az öngörülebilir bir döngü gerektirdi.
Bir SaaS ürününü tek başıma yaptım. Ödemeleri açınca işin anlamı değişti
Bu ürünü akşamları, hafta sonlarında ve tatillerde tek başıma geliştirdim. Ödemeler açılınca bug'lar, onboarding, moderasyon, retention ve güven artık 'sonra bakılacak' konular değil, gerçek bir ürünü işletmenin parçası oldu.
I Got 550 Views from One Image, Voiceover, and Subtitles: What Three Shorts Tests Actually Taught Me
A simple YouTube Short built from one static image, a voiceover, and subtitles reached 550 views. After three early tests, the useful lesson was not a proven formula, but a repeatable way to experiment without confusing a promising signal with proof.
Moskova’daki bir frontend ilanında yaklaşık 6.000 başvuru gördüm. Bu, Rusya IT pazarı hakkında ne söylüyor — ne söylemiyor?
2023’ün sonunda işe alımcılar bana ilan başına 300–500 başvurunun bile çok olduğunu söylüyordu. 20 Ocak 2026’da Moskova’daki mid-level bir frontend rolünün birkaç saat içinde yaklaşık 6.000 başvuruya ulaştığını gördüm. Bu sayının gerçekten neye işaret ettiğini, neyi kanıtlamadığını ve aday olarak bugün nasıl okuyacağımı anlatıyorum.
DeepSeek Node.js workflow’umu nasıl değiştirdi: altı ayda 4.000+ commit
2025 GitHub grafiğim yılın ilk yarısında neredeyse boşken ikinci yarıda 4.000’den fazla commit’e çıktı. Bu yazı AI coding’in Node.js side-project workflow’umu nasıl değiştirdiğini, nerede zaman kazandırdığını, nerede hata yaptığını ve neden doğrulamanın üretim hızından daha önemli kaldığını anlatıyor.
My First TikTok at 28: What a Vertical Product Demo Taught Me About Traffic
At 28, I posted my first TikTok and cross-posted the same product demo to Reels and Shorts. The useful lesson was not the view count: it was how much a 9:16 frame changes a desktop interface, and how to measure short-form traffic without confusing reach with acquisition.
25 yıllık bir domain aldım: ölü URL'lere günde 1.000+ istek gelmeye başladı
İlk kez 2000 yılında kaydedilmiş bir domainde yeni siteyi açtıktan sonra eski URL'lere günde 1.000'den fazla istek ve Yandex Webmaster'da bir gecede 900'den fazla hata gördüm. Gerçekte neyi kanıtlayabildiğimi, neden hedefli 410 kullandığımı ve bugün eski bir domaini nasıl denetleyeceğimi anlatıyorum.
Yandex 12.500 sayfayı indekslemişti ama Rusya’dan neredeyse hiç trafik gelmiyordu: gözden kaçırdığım Cloudflare sorunu
Yandex 12.500 sayfayı indekslemişti, ancak Rusya’dan trafik neredeyse sıfırdı. Sorunu ağ yoluna kadar daralttım, Cloudflare proxy’sini kapattım, önbellek, sıkıştırma ve temel korumayı VDS’imde Nginx’e taşıdım ve erişilebilirliği geri getirdim.
Statik Next.js sitem günde binlerce güvenlik açığı taraması alıyor. Nginx bunu neredeyse hiç hissetmiyor
Loglarım WordPress, PHP backdoor, .env ve .git/config arayan probe’larla dolu. Statik Next.js + Nginx yapımda bunların çoğu ucuz miss ve 404 olarak bitiyor; gözlem sırasında CPU yükü değişmedi. Bu deneyimin statik site güvenliği hakkında gerçekten ne söylediğini ve neyi kanıtlamadığını ayırmak önemli.
Yandex yeni siteme trafik gönderirken Google neredeyse yerinde saydı
Aynı yeni projede Google uzun bir dönemde yalnızca yaklaşık 300 tıklama üretirken Yandex Webmaster belirgin bir yükseliş ve bir noktada +%500 tıklama artışı gösterdi. Önemli olan, bu sayıların gerçekten neyi kanıtladığını ve neyi kanıtlamadığını ayırmak.
Yandex, Next.js ile oluşturduğum 4.278 sayfayı bir gecede indeksledi — bu gerçekten neyi kanıtladı?
Yandex, Next.js ile statik olarak oluşturduğum 4.278 sayfayı neredeyse aynı anda indeksledi. Bu gerçek bir teknik dönüm noktasıydı; ancak sıralama veya trafik başarısının kanıtı değildi. Sonucun SSG ve programmatic SEO hakkında gerçekten ne söylediğini, ne söylemediğini ayırıyorum.
İlk SEO Ayım: 632 Organik Ziyaretçi ve Bot Trafiğiyle İlgili Bir Gerçeklik Kontrolü
İş yerindeki daha büyük bir SEO girişimine hazırlanmak için kişisel bir yan projeyi deney alanı olarak kullandım. Bir ayda 632 organik ziyaretçiye ulaştı; ancak 83 ziyaretçili bir gün, şüpheli trafik ve analitik artefaktlarının sonucu ne kadar kolay çarpıtabildiğini gösterdi.
Yandex Webmaster’ı Neredeyse Görmezden Geliyordum. İki Hafta Sonra Google’dan Daha Fazla Trafik Getiriyordu
SEO’nun kritik olacağı iş projesinden önce pratik yapmak için Next.js ile bir yan proje kurdum. İlk iki haftada Google’dan 58, Yandex’ten 200 ziyaretçi gördüm ve trafik, indeksleme ve tanı verilerini ayrı değerlendirmeyi öğrendim.
Yandex Metrica vs. Google Analytics: Bir Haftanın Ardından Neden Metrica’yı Tercih Ettim
Yeni bir projede Google Analytics ve Yandex Metrica’yı bir hafta boyunca yan yana kullandım. Metrica’yı daha çok tercih etmemin ana nedeni Webvisor ve oturum tekrarlarıydı; fakat bu, benim çalışma akışımla ilgili bir sonuç, herkes için evrensel bir üstünlük kanıtı değil.
Yandex blogumu /en olmadan taradı. 308 yönlendirmeleri URL’leri 404’ten kurtardı
Sitemap’e yaklaşık 3.000 adet /en/blog/... sayfası ekledikten sonra Yandex’in karşılık gelen /blog/... yollarını denediğini gördüm. Önceden ayarladığım 308 yönlendirmeleri bu isteklerin 404 ile bitmesini engelledi. Asıl ders “Yandex sitemap’i bozdu” değil, sağlam bir yönlendirme katmanının URL mimarisine kattığı toleranstı.
İki yeni site Google’da hızla yükseldi, birkaç gün sonra trafik yaklaşık 10× düştü
Arka arkaya iki lansmanda Google gösterimleri hemen sıçradı, birkaç gün sonra trafik yaklaşık onda bire indi. Gözlem gerçekti; bunun kanıtlanmış bir “Google balayı dönemi” olduğunu söyleyemem.
Yandex aramasından bir gecede 2.000 sayfa kayboldu. Bundan gerçekten ne çıkarabildim?
Yandex Webmaster’da yaklaşık 8.000 sayfanın 2.000’inin artık aramaya katılmadığını gördüm. %25’lik düşüş çarpıcıydı; asıl ders ise gözlemlenen arama durumu değişikliğini kanıtlanmış bir nedenle karıştırmamaktı.
MoscowJS 66’da 10’dan fazla soru sordum ve iki ödül kazandım
MoscowJS 66’da Telegram botları, LangChain.js, site oluşturucu mimarisi ve TypeScript tip testleri hakkındaki konuşmalar sırasında 10’dan fazla soru sordum. İki soru en iyi sorular olarak seçildi ve iki ödülle ayrıldım.
PiterJS #79'dan Ne Aldım: Legacy Monolitler, FrontOps, Web Performansı ve Daha İyi Sorular
St. Petersburg'daki PiterJS #79, zaten var olan sistemleri sürdürmeye odaklandı: legacy monolit, FrontOps ve web performans metrikleri. Etkinlikten pratik notlar, Q&A'den iki ödül ve yüz yüze meetup'lara aktif katılımın değerini yeniden hatırlayarak ayrıldım.
I Launched a Next.js Blog in 21 Languages. Here’s What 439 Google Impressions Actually Told Me
In its first week, my 21-language Next.js blog recorded 439 Google impressions and 5 clicks. Later, 436 of 471 pages were indexed. The useful lesson was learning to separate visibility, indexing, and actual search performance.
JavaScript’le altı yılın ardından MoscowJS 65: Neden hâlâ yerel buluşmalara gidiyorum
5 Haziran 2025’te T Bank’te düzenlenen MoscowJS 65’e katıldım. Dört konuşma AI’a farklı açılardan yaklaşıyordu, ancak benim için asıl sonuç daha basitti: yerel meetup’lar hâlâ dokümantasyon ve kayıtların tamamen yerine koyamadığı bir şey sunuyor.