Neden yaptığım her şeyin adında “sim” var
Fly4cast, Mutfaksim, ArenaSim, QuantDesk, StageLightning. Farklı işler gibi duruyorlar. Değiller. Hepsi aynı şeyi yapıyor: gerçekleşmemiş bir şeyin ne olacağını söylemeye çalışıyor.
Ölçüm sistemleri, müşteri portalları, mobil uygulamalar, simülasyonlar, sunucular. Her yazı gerçek bir işten çıktı — projenin adı, bağlantısı ve ölçülmüş rakamı yazının içinde.
Fly4cast, Mutfaksim, ArenaSim, QuantDesk, StageLightning. Farklı işler gibi duruyorlar. Değiller. Hepsi aynı şeyi yapıyor: gerçekleşmemiş bir şeyin ne olacağını söylemeye çalışıyor.
Her müşteri için aynı teknik denetimleri elle yapıyordum: iki saat, her seferinde bir şey atlayarak. Bir motora çevirdim. En zor kısmı skor formülü değildi — sayı üretmemeye karar vermekti.
Mutfaksim, dolabında ne varsa ondan ne çıkacağını söyleyen bir tarif sistemi. Sonra içeriği sosyal medyaya elle taşımak saçma geldi ve site kendi kendini yayımlamaya başladı — üç hatayla birlikte.
Bir teknik ürün mağazasında en sık sorulan soru fiyat değil. “Bendeki model artık üretilmiyor, bunun yerine ne takılır?” Bu soruyu cevaplayan bir motor yazdım — ve önce kapalı tuttum.
En iyi mimari kararlarımı ekran başında vermedim. Çoğu, telefonun çekmediği bir yerde, ateşin başında, hiçbir şey yapmazken geldi.
Aynı hafta iki şikâyet geldi. Biri “site hiç açılmıyor ama ben girebiliyorum”, diğeri “müşteri ödedi, sistemde görünmüyor”. İkisinin de sebebi, hata mesajı vermeyen bir yerdeydi.
Disk analiz aracı yazdım. Klasör klasör gezerek 1,4 milyon dosyayı taramak dokuz dakika sürüyordu. NTFS zaten hepsinin kaydını tek bir tabloda tutuyor.
Sunucuda bir mail döngüsü vardı ve izleme betiğim bir aydır “bounce = 0” yazıyordu. Rakam doğruydu. Ölçtüğü şey yanlıştı.
NEO evde sürekli dinleyen bir asistan. İlk hatam bu üç soruyu tek soru sanmaktı. Ayırınca hem doğruluk arttı hem de sistemin nerede yanıldığı görünür oldu.
Sesli asistanın beyni çok yavaştı. Ayarları komut satırı bayraklarıyla veriyordum ve hepsi kabul ediliyor görünüyordu. Açılış olayını okuyunca gördüm: hiçbiri uygulanmamış.
Şahsi projelerim yıllardır müşteri sunucusunda duruyordu. Ayırdım: kendi VPS’im, kendi VPN’im. PC, telefon ve VR başlığı artık aynı tünelden giriyor — ve bu kararın sebebi teknik değildi.
QuantDesk piyasayı 7/24 izliyor, hangi rejimde olduğuna karar veriyor, o rejime uygun stratejileri açıyor ve beklenen değeri komisyonu ödemeyen her işlemi reddediyor. En değerli kısmı strateji değil — ölçüm altyapısı.
Hazır bot korumasını kullanmak istemedim: kullanıcıyı üçüncü tarafa açıyor, bazı ülkelerde çalışmıyor ve görsel bulmaca insanı da yoruyor.
ArenaSim’de sunucu ile tarayıcı aynı maçı oynamak zorundaydı. Aynı tohumu verdim, farklı sonuç aldım. Suçlu benim kodum değildi.
Nakit akış raporunu otomatikleştirirken elle tutulan hesap tablosuyla ERP tutmadı. Refleksim tabloya güvenmemekti. Satır satır bakınca varsayımım çürüdü.
Fly4cast’in iOS sürümünü Windows’ta yazdım, bulutta derledim, TestFlight’a çıkardım. Zor kısım kod değildi — imzalama. Çünkü imzalama bir derleme adımı değil, bir kimlik zinciri.
Bir ERP’nin üstüne konuşma katmanı kuruyorduk. Model bize olmayan bir uç adresi önerdi — akıcı, makul, tamamen uydurma. O an ürünün en önemli kuralı yazıldı.
Odanın yankılanma süresini ölçen bir araç yazdım. Güzel sayılar üretti. Sonra odayı tamamen sessize aldım ve aynı sayıları üretmeye devam etti.
Işık şovunun şarkıyla birlikte geri sarması gerekiyordu. Bunu sağlayan şey karmaşık bir senkronizasyon değil, tek bir kural oldu: hiçbir efekt bir önceki kareyi hatırlamayacak.
Elimdeki ışık arayüzü hiçbir yazılımla konuşmuyordu. Cihazın sürücüsünü değiştirdim, ham baytları gönderdim ve ışıklar yandı. Kırk yıllık bir protokolün neden hâlâ ayakta olduğu.
Evdeki ampulleri müziğe bağladım. Her vuruşta renk komutu yolladım. Işıklar önce geride kaldı, sonra takıldı, sonra rastgele yanıp sönmeye başladı. Çözüm daha hızlı göndermek değildi.
Kendi ağımdaki cihazları listelemek istedim. TCP ile taradım — altı dakika sonra hâlâ %18’deydi. Sonra bir katman aşağı indim ve iş üç saniyede bitti.
Drone’un bıraktığı .txt dosyası düz metin değil. Eski sürümleri bilgisayarında çözebiliyorsun; yenileri için üreticinin sunucusundan anahtar istemen gerekiyor. Sürüm baytı hangisi olduğunu söylüyor.
Bir mekanik taahhüt firmasının kurumsal sitesi doksan sayfa tutuyordu — Türkçe, İngilizce, Almanca. Doksan dosya yazmadım. Doksan dosya ürettim.
Sitemdeki groovebox’ın sequencer hücreleri bir sabah görünmez oldu. Ne JavaScript hatası vardı, ne konsol çıktısı. Sebep iki farklı dosyada aynı adı taşıyan iki CSS sınıfıydı.
Maslak’ta lüks otomobil servisi yapan bir firmaya taslak hazırlıyordum. Sitelerini açtım, “Randevu Al”a tıkladım ve ekrana PHP hata mesajları döküldü. Sunumun konusu bu oldu.
Fly4cast’te en zor kısım hava verisini çekmek değildi. Yerde ölçülen rüzgârın 100 metrede ne olacağını söylemek — ve o cevabı tek bir yüzdeye indirgememekti.
Bir ev tekstili üreticisinin tek düzgün dijital varlığı 49 MB’lık bir katalog PDF’iydi. Ürün ağacını oradan çıkardım — ve iki tuzağa yakalandım.
Bu yıl yaptığım işlerin sayısı önceki yılların birkaç katı. Sebebi daha çok çalışmam değil. AI’ı bir sohbet penceresinden çıkarıp projelerin içine, dosya sistemine ve terminale soktum.
Bir muayene laboratuvarının talep formunu yazarken şunu fark ettim: insanlar “hangi muayene tipini istiyorsunuz?” sorusunun cevabını bilmiyor. Bilmeleri de gerekmiyor — sistem hesaplayabilir.
Bir ölçü rakı, iki ölçü su, buz en son. Bu bir gelenek değil, bir fizik kuralı — ve hafta boyunca peşinde koştuğum hata türüyle birebir aynı.
Bir galerinin işletim sistemini sıfırdan kurdum. Ekrandan değil şemadan başladım ve dokuz katmanı tek günde, her biri kendi başına çalışır halde bitirdim. Sebebi acelecilik değil, tam tersiydi.
Kendi siteme bir “düşünme simülatörü” koydum. Bir kavram bırakıyorsun — “Faturalama” — ve sistem onu neye ihtiyaç duyduğuna ayırıyor. Sekiz adım sonra karşına “uykusuzluk” çıkıyor.
Bir CRM’de otuz kişi çalışıyor. Hangi ekran gerçekten kullanılıyor, kim nerede tıkanıyor, hangi üç adım her gün tekrar ediliyor? Kimse bilmiyordu. Bir panel yazdım — sonra o veriyi AI’a verdim.
Saha terminallerinin lisansını veren bir sunucu gerekiyordu. Laravel kurup 40 MB bağımlılık indirmek yerine altı sınıf yazdım. Tamamı 900 satır ve hâlâ aynı kod çalışıyor.
Dönem sonunda birinin “tüm faturaları PDF yap” butonuna basması gerekiyor. Sunucu bunu 4 dakika taşıyor, sonra tarayıcı vazgeçiyor ve kimse ne olduğunu bilmiyor. Önce nerede takıldığını ölçtüm.
CRM PHP 5.6’da çalışıyordu. 8.3’e geçmesi gerekiyordu. Klasik yol bir kopya açıp onu modernize etmek — daha önce denenmiş ve %85’te ölmüştü. Bu sefer kopya açmadım.
Satışçı ürünü tarif ediyor, kod numarasını bilmiyor. Katalogda 4.000 kalem var. Aradaki boşluğu AI ile doldurdum — ama AI’ın ürün uydurmasına izin vermeden.
Apartmanda herkes kendi sayacını okutuyor. Sonra faturayı görüp “ben bu kadar yakmadım” diyor. İkisi de doğru — çünkü faturanın yarısı senin sayacından, yarısı binanın toplamından geliyor.
Apartmanda oturan biri ısı faturasını görmek istiyor. Basit gibi. Ama fatura başka bir sistemde, sayaç başka bir tabloda, taşınan kiracının geçmişi donması gerekiyor. Portalı bu yüzden sıfırdan yazdım.
Dokuz yaşındaki oğluma sürpriz olsun diye başladım. Tavla, okey, pişti, hangman ve bir robot dövüş oyunu. Hepsi çok oyunculu, hepsi gerçek sunucuda — ve en zor kısmı oyunlar değildi.
Apartmanın kaloriferindeki sayaç ne kadar ısı harcadığını biliyor. Onu oradan almanın üç yolu var: gözle, optik kafayla, ve radyoyla. Üçünü de yazdım — ve üçü de ayrı bir dünya.