Editörden

Pazar günü iki yazı: biri "hata ayıklaması zor bir protokolü nasıl yaklaşılabilir hâle getirdik", diğeri işin kendisinin nasıl değiştiğine dair veri. Arşivden de 600.000 testi otomatik taşıyan bir göç hikâyesi ekledim — Java yazan herkesin okuması gereken cinsten.

Günün Kapağı
Cloudflare Blog 27 Temmuz 20268 dk okuma orta

Hata ayıklanamayan protokolü araçla ehlileştirmek: pvcli

We’re open sourcing our privacy proxy CLI · Hannah Wang, Ben Yang

Gizliliği koruyan protokollerde hata ayıklamak zor. Oblivious HTTP (OHTTP) dört farklı taraf arasında birkaç adımdan oluşuyor; üstüne ikili HTTP kodlaması ve birden fazla taslak RFC'ye dağılmış detaylar ekleniyor. Cloudflare bu protokolleri saniyede milyonlarca istek ölçeğinde işletirken öğrendiklerini temiz bir komut satırı aracına sarmış ve açık kaynak yapmış: pvcli, Apache-2.0 lisansıyla.

Aracın gösterdiği şey basit ama etkili: eskiden dört tarafı ayrı ayrı kurup elle takip etmeni gerektiren tam bir OHTTP isteği, artık tek satırda çalışıyor — relay, gateway ve origin dahil.

Motivasyon bölümü de öğretici. Cloudflare'in gizlilik ürün ailesi büyüdükçe (Privacy Proxy, Privacy Gateway — Apple'ın Private Relay'ini ve Microsoft Edge'in Secure Network VPN'ini besleyen altyapılar) sorunu teşhis etmek de zorlaşmış. Yani araç bir pazarlama ürünü değil, kendi operasyonel acılarının çözümü.

Öne çıkanlar

  • OHTTP'nin zorluğu tek bir karmaşık adım değil: dört taraf, ikili kodlama ve dağınık taslak spesifikasyonlar bir araya geliyor.
  • Karmaşık bir protokolü benimsetmenin en etkili yolu, onu tek komutta denenebilir hâle getirmek.
  • Aracın kaynağı gerçek operasyon deneyimi — saniyede milyonlarca istek.

Neden önemli?

Bir teknolojinin benimsenmesini belirleyen şey çoğu zaman teknolojinin kendisi değil, etrafındaki araçlardır. Hata ayıklanamayan bir sistem, ne kadar iyi tasarlanmış olursa olsun üretimde kullanılmaz. "Bu sistemde bir şey ters gittiğinde nasıl anlarım?" sorusu, tasarımın kendisi kadar tasarımın parçasıdır.

Sende karşılığı

Bu yazıdaki alışkanlığı kendi projelerine taşı: kurduğun her karmaşık akış için küçük bir teşhis aracı yaz. Mobit'teki doküman arama mimarisi için bir CLI düşün — bir sorgu ver, hangi belgelerin getirildiğini, benzerlik skorlarını ve modele giden nihai prompt'u bassın. Python'da argparse ile yarım saatlik bir iş, ama RAG sisteminde "neden bu cevabı verdi?" sorusunu dakikalar yerine saniyeler içinde cevaplatır. Ayrıca mülakatta göstereceğin şey de bu tür araçlardır: sistemi yazmak kadar sistemi anlaşılır kılmak da mühendislik.

Sözlük

Oblivious HTTP (OHTTP) gizli HTTP
İsteği gönderen ile hedef sunucu arasına aracılar koyarak, hiçbir tarafın hem kimliği hem içeriği görememesini sağlayan protokol.
relay / gateway röle / geçit
OHTTP'de aracılar: röle kimin istediğini bilir ama içeriği göremez; geçit içeriği görür ama kimin istediğini bilmez.
RFC draft taslak RFC
Henüz standart hâline gelmemiş, üzerinde çalışılan internet protokol belgesi.
Orijinali oku

Kısa Kısa

OpenAI Research 27 Temmuz 20264 dk okuma başlangıç

Görev geçişkenliği: işler değil, işi kimin yaptığı değişiyor

How AI is expanding what people do at work

OpenAI'ın ekonomi araştırması 800.000'den fazla ABD kullanıcı mesajını incelemiş. Bulgu: işle ilgili mesajların %16,8'i ve mesleğe özgü mesajların %43,5'i başka bir meslekle ilişkilendirilen görevlerle ilgili.

Buna görev geçişkenliği (task crossover) diyorlar: tarihsel olarak bir mesleğe ait olan işin, başka bir meslekten insanın AI kullanımında görünmesi. Küçük işletme sahibi metin yazıyor, sözleşme inceliyor, temel finansal analiz yapıyor. Satışçı, eskiden analiste gidecek bir veri setini kendisi keşfediyor. Pazarlamacı, geliştiriciyi beklemeden web sitesindeki sorunu çözüyor.

Yazının kendi vurgusu şu: AI ile ilgili çoğu çalışma sabit bir görev listesiyle başlayıp "model bunu yapabilir mi?" diye soruyor. Bu araştırma farklı bir şeye işaret ediyor — AI kimin hangi görevi üstlendiğini de değiştiriyor.

  • Değişim "işler yok oluyor" değil, iş sınırları bulanıklaşıyor biçiminde görünüyor.
  • Bu, yeni mezun bir mühendis için hem fırsat hem risk: senin işine başkaları girebilir, sen de başkalarının işine girebilirsin.

Sende karşılığı

Kariyer açısından buradan çıkan ders net: bir aracı kullanabilmek artık ayırt edici değil — kimin ne yapabildiği hızla eşitleniyor. Ayırt edici olan derinlik. Herkes bir LLM'e sorgu yazabiliyorsa, senin değerin bir sistemin neden yavaşladığını bulabilmen, bir veritabanı indeksinin nasıl seçileceğini bilmen, bir dağıtık sistemde hangi tutarlılık garantisinin gerektiğini kestirebilmen olacak. Bu gazeteyi okumanın sebebi de tam olarak bu: yüzeyde kalmamak.

Sözlük

task crossover görev geçişkenliği
Bir mesleğe ait sayılan işin, başka meslekten kişiler tarafından yapılmaya başlanması.
Orijinali oku

Arşivden Seçmeler

Bugün az yayın çıktı. Bu yazılar daha eski tarihli ama hâlâ öğretici — her birinin gerçek yayın tarihi başlığın üstünde yazıyor.

Arşivden Uber Engineering 7 Nisan 2026 11 dk orta

600.000 testi elle taşımadan JUnit 5'e geçmek

How Uber Executed A JUnit Migration at Massive Scale

Uber'in Java monorepo'sunda test paketinin ana çerçevesi JUnit 4'tü. Çalışıyordu, ama sekiz yıl önce çıkan JUnit 5'in yeteneklerini kullanmalarını engelliyordu — ve JUnit 4'ün aktif geliştirmesi 2021'de durmuştu, yani hata düzeltmeleri ve güvenlik yamaları da gelmiyordu.

Ölçek şu: 15 milyon satır kodda 600.000'den fazla JUnit 4 testi. Elle göç, geliştiricilerin Jupiter API'sini öğrenmesini ve özel test paketlerini taşımasını gerektirecekti — devasa bir mühendislik saati. Üstüne Uber Bazel kullanıyor ve Bazel'ın yerel JUnit 5 desteği yoktu. Yani problem hem teknik hem kültüreldi: geliştiricileri ikna etmek.

Sonuçlar: Bazel'da JUnit 5 desteği açılmış ve tüm test modülleri JUnit Platform'a alınmış (Vintage ve Jupiter motorlarıyla JUnit 4 ve 5 birlikte destekleniyor). 4 ay içinde 75.000'den fazla test sınıfı taşınmış, 1,25 milyondan fazla satır değiştirilmiş, 5.000'den fazla otomatik değişiklik seti üretilmiş.

  • Anahtar tasarım kararı: iki çerçeveyi aynı anda çalıştırabilmek (Vintage + Jupiter). Böylece göç tek seferde değil aşamalı yapılabiliyor.
  • Göç merkezîleştirilmiş — her ekibe "kendi testlerinizi taşıyın" demek yerine tek bir ekip otomatik dönüşüm yazmış.
  • Kültürel boyut teknik boyut kadar açıkça ele alınmış.

Sende karşılığı

Bu, Java tarafında doğrudan uygulayabileceğin bir yazı. Kendi projelerinde bile aynı deseni kullan: bir kütüphane sürümü yükseltirken "hepsini bir seferde değiştir" yerine köprü katmanı kurup aşamalı geç. Ayrıca OpenRewrite gibi araçları öğren — Java'da otomatik kod dönüşümü yapan, tam da Uber'in yaptığı işi yapan araçlardır. Mülakatta "600.000 testi nasıl taşırsın?" sorusuna "elle taşımam, dönüşüm kuralı yazar ve iki çerçeveyi bir süre birlikte çalıştırırım" diyebilmek çok güçlü bir cevaptır.

Sözlük

monorepo tek depo
Bir şirketin tüm projelerini tek bir sürüm kontrol deposunda tutması.
Bazel Bazel
Google kaynaklı, büyük monorepo'lar için tasarlanmış derleme ve test aracı.
codemod otomatik kod dönüşümü
Kaynak kodu programatik olarak analiz edip toplu şekilde değiştiren betik ya da araç.
Orijinali oku