- 2017’den bu yana bant genişliğindeki artış, tipik sitelerin aktarım boyutundaki artışı bir ölçüde geride bırakmış olsa da web uygulamalarının CPU gereksinimleri, düşük maliyetli cihazların performansından daha hızlı büyüdü; bu da hızlı internette bile web erişilebilirliğini kötüleştiriyor
1Gbpsbağlantıda bileTecno Spark 8C, Discourse forumlarında tarayıcı çökmesi yaşıyor;Itel P32üzerinde ise Discourse, Reddit, Shopify, Substack, Wix, Mastodon, Bluesky gibi siteler FAIL durumuna düşüyor veya fiilen kullanılamaz hale geliyor- Ölçümler
M3 Max,M1 Pro, Chrome’da10xCPU throttling,Tecno Spark 8C,Itel P32üzerindeLCP*ve ana iş parçacığı CPU süresi karşılaştırılarak yapıldı; PageSpeed Insights puanlarının gerçek algılanan hızla ilişkisi zayıftı - MyBB, phpBB, eski WordPress, HN, danluu.com gibi basit veya eski siteler düşük maliyetli mobil cihazlarda görece iyi çalışırken; Discourse, Medium, Reddit, Substack gibi dinamik yüklemesi yoğun sitelerde kaydırma, arama ve dokunma gecikmeleri belirginleşiyor
- Nigeria, India, Latin America gibi bölgelerde düşük maliyetli cihaz kullananlar gerçek web kullanıcılarıdır; web yalnızca iOS ve hızlı internet temel alınarak yapılırsa daha az varlıklı kullanıcılar ve düşük özellikli masaüstü kullanıcıları da dışlanır
Bant genişliğinden çok CPU’nun darboğaz olduğu web
- 2017’de yavaş bağlantılarda web şişkinliği kullanılabilirliği ciddi biçimde zedeliyordu; sonrasında üst seviye bağlantılarda bant genişliği Nielsen ölçütüne göre yılda yaklaşık
%50gibi hızlı bir oranda arttı - Yavaş internet kullanan hâlâ çok sayıda kullanıcı var ve modern web’in önemli bir kısmı yavaş bağlantılarda kullanımı zor olmaya devam ediyor; ancak tipik sitelerde bant genişliği artışı, aktarım boyutundaki artışı bir ölçüde geçti
- Buna karşılık web uygulamalarının CPU performansı gereksinimleri bant genişliği kadar hızlı iyileşmediği için, iyi bir internet bağlantısı olsa bile düşük özellikli cihazlarda web kullanımı zorlaştı
- Discourse tabanlı “modern” forumlar
Tecno Spark 8Cüzerinde tarayıcıyı çökertebiliyor; çökmeler arasındaki tepki süresi de8 MHz 286ve1200 baudmodemle BBS kullanmaktan daha kötü ölçülüyor - Discourse’ta mesaj başlıklarını getiren sıkıştırılmış payload
2.6 MB; geçmişe kıyasla aktarım miktarı1000xartmış durumda, ancak1Gbpsbağlantıda bu görece hafif kalıyor - CPU tarafında ise
8-core (2 1.6 GHz Cortex-A75 / 6 1.6 GHz Cortex-A55)taşıyanTecno Spark 8Cbile Discourse’un altından kalkamıyor; oysa bu CPU,286dan yaklaşık100000xdaha hızlı
Ölçüm hedefleri ve metrikler
- Test cihazları:
M3 Max Macbook (14-core),M1 Pro Macbook (8-core), Chrome DevTools’ta10xthrottling uygulanmışM3 Max,Tecno Spark 8C,Itel P32 - Ağ tarafında cihazlara avantaj sağlamak için
1Gbpsinternet ve yük altında düşük gecikmeli olduğu benchmark’larla görülen bir WiFi yönlendirici kullanıldı - Karşılaştırma kapsamına blog/mikroblog, forum ve küçük işletme platformları dahil edildi
- Blog/mikroblog: danluu.com, Substack, Medium, Ghost, Hugo, Tumblr, Mastodon, Twitter, Threads, Bluesky, Patreon
- Forum: Discourse, Reddit, Quora, vBulletin, XenForo, phpBB, MyBB
- Küçük işletme platformları: Wix, Squarespace, Shopify, WordPress
- Başlıca metrikler aktarım sıkıştırılmış boyutu (
wire), sıkıştırma açılmış boyut (raw),LCP*ve ana iş parçacığı CPU süresi LCP*, Chrome’un ölçtüğü Largest Contentful Paint değil; büyük ekran güncellemesi kullanıcı için işe yaramadığında, gerçekten faydalı içeriğin göründüğü anı temel alıyor- CPU süresi bir Core Web Vital değil, ancak yavaş cihazlarda kullanıcının hissettiği kullanılabilirlikle güçlü biçimde örtüşen basit bir metrik olarak kullanıldı
Tabloda görülen kullanılabilirlik uçurumu
- danluu.com ve HN tüm test cihazlarında hızlı çalışıyor
- danluu.com:
6kB wire / 18kB raw,Tecno Spark 8Cüzerinde0.4s LCP* / 0.3s CPU - HN:
11kB wire / 50kB raw,Tecno Spark 8Cüzerinde0.5s LCP* / 0.5s CPU
- danluu.com:
- Eski PHP tabanlı forumlar, yavaş cihazlarda modern forumlardan çok daha iyiydi
- MyBB,
Tecno Spark 8Cüzerinde0.8s LCP* / 0.8s CPU - phpBB:
1.7s LCP* / 1.5s CPU - vBulletin:
4.4s LCP* / 4.8s CPU - Discourse:
15s LCP* / 26s CPU;Itel P32üzerindeFAIL
- MyBB,
- Blog platformlarında da eski WordPress teması, düşük özellikli cihazlarda Medium ve Substack’ten çok daha hızlı
- WordPress(old),
Tecno Spark 8Cüzerinde0.7s LCP* / 1.7s CPU - Medium:
2.8s LCP* / 33s CPU - Substack:
14s LCP* / 14s CPU
- WordPress(old),
- Birçok modern site
Itel P32üzerinde başarısız oldu veya fiilen kullanılamaz durumdaydı- XenForo, Mastodon, Bluesky, Wix, Substack, Shopify, Discourse, Reddit:
FAIL - Threads:
28s LCP* / 66s CPU, Twitter:24s LCP* / 43s CPU, Medium:3.2s LCP* / 63s CPU
- XenForo, Mastodon, Bluesky, Wix, Substack, Shopify, Discourse, Reddit:
10s+ CPUkullanan sayfalar yükleme sonrasında da kötü bir deneyim yaratıyor- Kaydırma birkaç FPS’ye kadar düşüyor; dokunma gecikmesi uzadığı için kullanıcı dokunuşun kaydedilip kaydedilmediğini anlamakta zorlanıyor
- Tekrar dokunulduğunda ilk dokunuş gecikmeli olarak kaydedildikten sonra ikinci dokunuş beklenmedik bir eylemi tetikleyebiliyor
Gerçek cihazlar ile CPU throttling arasındaki fark
- Chrome DevTools’un CPU throttling özelliği kullanışlı olsa da gerçek yavaş cihazların sonuçlarını tutarlı biçimde yaklaşık olarak veremiyor
M3/10ileTecno Spark 8Ckarşılaştırmasında sitelere göre farklar büyük ölçüde değişti- danluu.com ve Ghost bir ölçüde yakınsadı
- Medium, Substack, Twitter’da
Tecno Spark 8CCPU süresi yaklaşık3xdaha yavaştı - Reddit ve Discourse yaklaşık
4xdaha yavaştı - Shopify’da
Tecno Spark 8C,M3/10dan tek haneli katlardan daha hızlı sonuç verdi
- Yavaş sayfalar, cihaz yavaşladıkça kimi zaman süperlineer biçimde daha da yavaşlıyor; bir sayfanın yavaşlığı başka bir sayfanın yavaşlığını iyi tahmin ettirmiyor
- Discourse, Medium, Reddit
M3veM1üzerinde fazla CPU kullanmıyor gibi görünse deTecno Spark 8Cüzerinde en yavaş gruba giriyor - Reddit hiçbir etkileşim olmadan beklendiğinde bile
~90% CPUkullanıyor; bu yüzden CPU∞olarak gösteriliyor
Eski sitelerin ve basit sayfaların gücü
- Eski siteler genel olarak en yeni sitelerden daha hızlıydı; 10–20 yıldır görsel olarak pek değişmemiş siteler en hızlı grup içinde yer aldı
- MyBB, Discourse’a göre
M3üzerinde3.6x / 5x,Tecno Spark 8Cüzerinde19x / 33xdaha hızlı - WordPress(old), Medium’a göre
M3 Maxüzerinde17.5x / 10x,Tecno Spark 8Cüzerinde4x / 19xdaha hızlı ölçüldü - Ghost, Medium’dan bir yıl sonra çıkmış modern bir platform olmasına rağmen eski platformlarla rekabet edebilen performans gösteren bir istisna
- NodeBB de ek testlerde modern forumlar arasında istisnaya yakın
M1üzerinde0.3s / 0.4sTecno Spark 8Cüzerinde3.4s / 7.2s- Discourse’tan çok daha hızlı; yükleme sonrası kaydırma ve dokunma da temelde çalışıyor
Dinamik yükleme ve metrik optimizasyonunun tuzağı
- Discourse, Reddit, Substack gibi sayfanın bir kısmını önce yükleyip kalanını dinamik olarak getiren sitelerde gerçek kullanılabilirlik, tablodaki puanlardan daha kötü
- Yavaş cihazlarda kaydırma mesafesini öngörmek zor; fazla uzağa kaydırılırsa ek yükleme tetiklenip sayfa donabiliyor
- Geçmişte kaydırılmış içeriği kaldıran sayfalar yavaş cihazlarda fiilen kullanılamaz hale geliyor
- Dinamik yüklemeli sayfalarda tarayıcının hızlı
Ctrl/Command+Faramasını doğrudan kullanmak zorlaşıyor ve özel arama uygulanması gerekiyor- Google Docs araması, son birkaç ayda ya da yaklaşık son bir yılda, belge yüklendikten hemen sonra kullanılamayacak kadar geç yükleniyor
- Discourse araması yavaş veya çok hızlı olmayan cihazlarda hiçbir zaman iyi çalışmadı
- Teoride başlangıçtaki CPU işi sonraki etkileşimleri hızlandırabilir; ancak test edilen sayfalarda ilk yükleme, sonraki yüklemeler ve yükleme sonrası etkileşimlerin tamamı yavaştı
LCP’nin oyunlaştırılması
LCPbaşlangıçta kullanıcının sayfanın ana içeriğini ne zaman gördüğünü tahmin etmeye yönelik bir metrikti; Chrome ölçümü ise daha çok ekrandaki büyük bir paint’in ne zaman gerçekleştiğine yakın- Bazı siteler kullanıcıya fayda sağlamayan büyük bir yükleme ekranını hızlıca göstererek
LCPyi düşürüyor, ardından gerçek içeriği küçük güncellemelere bölerekLCPye yakalanmasını engelliyor - Discourse, Discourse Splash’ı açıkça devreye aldı ve yavaş yüklemelerde büyük splash ekranıyla
LCPyi önemli ölçüde düşürdüğünü belirtti - Discourse’un resmi yanıtı, gerçek içerik banner’ı splash’ten büyükse bunun
LCPaçısından dezavantaj yarattığı yönündeydi - Faydalı içerik temelindeki
LCP*ile Chrome’un ölçtüğüLCParasında büyük fark görülen örnekler Wix ve Discourse oldu- Wix:
M3üzerinde6x,M1üzerinde12x,Tecno Spark 8Cüzerinde3x - Discourse:
M3üzerinde10x,M1üzerinde12x,Tecno Spark 8Cüzerinde4x
- Wix:
Performans optimizasyonunun iş etkisi
- Büyük şirketlerde site ve uygulama performansını iyileştirmek, A/B testleriyle ölçülebilecek kadar büyük parasal değere sahipti
- Uzun vadeli holdback’lerde de performans iyileştirmeleri büyüme ve elde tutma oranı üzerinde görece büyük etki yapan müdahaleler olarak göründü
- Twitter’da kullanıcı gözlemlerine dayalı p99 gecikme süresi yalnızca India ve çeşitli African countries’de değil, United States’ta da yaklaşık
60sidi - Her ülkede yavaş cihaz veya bağlantıya sahip yeterince kullanıcı var; sınırlayıcı etken, tüm nüfusun ortalama cihaz/bağlantı dağılımından çok kullanıcı sabrına yakındı
- Yavaş cihazlarda
60syi50sye indiren bir iyileştirme, üst seviye cihaz kullanıcıları için de5syi4.5sye indirmek gibi etki yaratabilir; gelir, büyüme ve elde tutma üzerinde de etkisi olabilir
Düşük özellikli cihazları dikkate alan tasarım
- Yavaş cihazlarda veya düşük bant genişlikli/kararsız bağlantılarda, çok sayıda içeriği tek seferde statik sayfa olarak yüklemek genellikle en iyi deneyimi sunuyor
- Görsellerde uygun
width,height,altözniteliklerinin olması yardımcı oluyor; ancak progressive JPEG özellikle büyük bir fayda sağlamadı - Hızlı bağlantıya sahip yavaş cihazlarda hafif statik sayfalar iyi çalışıyor; performans gözetilerek yapılmış hafif dinamik sayfalar da çalışabilir
- Ağır sayfalarda kaydırma sırasında ek yükleme ve aramayı ele geçirme, kullanılabilir etkileşim modelini bozuyor
- Substack’te bir yazının
LCPsi iPhone 8’de hızlı olabilir; ancak başlığın altına kaydırmak için sonraki sayfa yüklemesini6sbeklemek ve sonrasında da1s~2sbeklemek gereken örnekler var - Ters örnek olarak büyük düz HTML sayfaları düşük özellikli cihazlarda da görece iyi çalışıyor
https://danluu.com/diseconomies-scale/:0.1 MB wire / 0.4 MB rawhttps://danluu.com/threads-faq/:0.4 MB wire / 1.1 MB raw1.1 MBmetinlik tek bir sayfa, yavaş cihazlarda çoğu modern siteden daha iyi çalışıyor
- Zig standard library documentation başlangıçta tüm kaynak kodunu getirip yerelde render ediyor; buna rağmen
Tecno Spark 8Cüzerinde4.7sCPU kullandıktan sonra görece tepkisel kalıyor
Düşük gelirli kullanıcılar ve erişilebilirlik
Tecno Spark 8C, Nigeria’daUSD 50-60, India’da yaklaşıkUSD 100-110seviyesinde bulunabiliyor; ancak bu bölgelerde medyan hane gelirine oranı, ABD’deki mevcut nesil iPhone’dan çok daha yüksek- Dünya ölçeğinde
Tecno Spark 8Cen ucuz cihazlara yakın değil;Itel P32de gerçekten kullanılan en düşük özellikli cihazlardan daha üst bir grupta - Alex Russell’a göre iOS pazar payı India’da
%7, Latin America’da%6 - Windows telemetrisine göre dizüstü ve masaüstü kullanıcılarının çoğunun, en yeni iPhone’dan daha yavaş olması muhtemel düşük özellikli cihazlar kullandığı görülüyor
- Hükümlü veya denetimli serbestlik kapsamındaki kişilere verilen “lifeline” telefonlar arasında iPhone 6 veya iPhone 8 de var; ancak
Itel P32den daha düşük cihazlar da çok ve veri limitleri küçük olduğundan limit bittikten sonra iş arama, sosyal yardım formları doldurma veya Maps kullanımı zorlaşabiliyor - Mobil uygulamalar iyi bağlantı varken önceden indirilebilir; ancak web uygulamaları her erişimde birkaç MB sıkıştırılmış JavaScript indirmek zorundaysa sınırlı bağlantılarda kullanılamaz
Deney koşulları ve sınırlamalar
- Her site, mümkün olan “en temel” deneyim bulunacak şekilde ölçüldü
- WordPress için mevcut varsayılan tema
twentytwentyfourdemosu kullanıldı - Shopify’da tema listesinde ilk görünen tema kullanıldı
- Discourse, vBulletin, XenForo, phpBB, MyBB için resmi forum olarak aramada bulunan sayfalar kullanıldı
- WordPress için mevcut varsayılan tema
- Bu çalışma, veri toplama ve analizi bir gün içinde yapılan kısa bir proje olarak yürütüldü; bu nedenle en yaygın temaları veya gerçek kullanıcı özelleştirmelerinin dağılımını yansıtmaz
- Dizüstüler yaklaşık
%60pilde, güce bağlı olmadan,20°Codada ısıl dengeye yakın bırakıldıktan sonra test edildi - Mobil cihazlar yaklaşık
%100şarjla, güce bağlı, başka uygulama ve sekme olmadan test edildi - Gerçek kullanıcılar aynı cihazlarda daha fazla uygulama ve arka plan işi nedeniyle çoğu zaman daha kötü performans görebilir
- Boyutlar mobilde ölçüldü; mobil ve masaüstü farklı asset alıyorsa mobil asset boyutlarını yansıtır
CPU, ana iş parçacığı CPU süresi olarak ölçüldü; diğer iş parçacığı süreleri kaydedildi ancak metrikte kullanılmadı
Site bazında dikkat çeken örnekler
- Wix,
Tecno Spark 8Cüzerinde kaydırmayı düzgün ve kararlı hale getiremiyor;Itel P32üzerinde deterministik olmayan biçimde başarısız oluyor - Patreon’da kaydırma performansı ilk yükleme sayılarından daha kötü; eski yazıları bulmak zor olduğu için ayrı bir Patreon yazı dizini tutulacak kadar rahatsız edici
- Discourse’ta
LCPgüçlü biçimde oyunlaştırılmış;M3 Maxüzerindeki1Gbpsbağlantıda bile Chrome’un ölçtüğüLCP115msiken gerçek içerik1.1sde yükleniyor - Bluesky,
Itel P32üzerinde boş ekran gösteriyor - Shopify’ın ilk iki gerçek kullanım örneği, test edilen demo sayfadan ikisi de çok daha yavaştı
- Tumblr
Itel P32üzerinde JavaScript hatası veriyor; fakat bu sayede sayfa daha hızlı yükleniyor ve kaydırma ile bağlantıya tıklama çalışıyor - MyBB mobil sürüm sunmadığı için Google açısından dezavantajlı olabilir; ancak yavaş mobil cihazlarda kaydırma ve dokunma gerçekten iyi çalışıyor
- Woo Commerce, yalnızca ilk yükleme performansıyla Shopify’la karşılaştırılması zor olduğu ve sepet/checkout gibi gerçek akışları da içeren ayrı bir karşılaştırma gerektiği için tablodan çıkarıldı
1 yorum
Hacker News yorumları
Yakın zamanda nispeten yavaş bir Android telefon kullanınca, sadece metin ve görsellerden oluşuyor gibi görünen web sayfalarının bile yüklenmesinin gerçekten can sıkıcı olabildiğini gördüm
Asıl darboğaz ağ değil, daha çok izleyiciler, reklamlar ve şişmiş JavaScript tarafı
Yavaş eski telefonlarda mobil Firefox gibi tam teşekküllü tarayıcıların kendisi fazla ağır kaldığından Firefox Focus gibi hafif bir tarayıcı kullanmak zorunda kalıyorsunuz; ama uzantı kullanılamadığı için uBlock Origin de kullanılamıyor ve web deneyimi daha da kötüleşiyor
Bazı siteler “standart” bir tarayıcı değilse şikâyet edip kullanılamaz hale geliyor, şirketler de bunun yerine uygulama yüklemeye zorluyor
Eskiden yavaş cihazlar ve bağlantılar için sadeleştirilmiş sürümler vardı ama giderek kayboluyorlar; muhtemelen JavaScript şişkinliği olmadan reklam ve takip ağlarını döndürmek zor olduğu için
Rastgele reklamlarla doldurulmuş sonsuz kaydırmalı sayfalarda bu özellikle daha kötü
Yakın tarihli bir örnek olarak Nike web mağazası ödeme sırasında anlamsız bir hata gösterdi ve destek ekibi sadece “uygulamayı deneyin” dedi
Avrupa’daki havayolu rezervasyon siteleri de büyük şirket web sitelerinin sık sık bozulmasına iyi bir örnek
2024’te neredeyse sınırsız kaynağa sahip olup da çalışan bir web sitesi yapamamanın markaya olumsuz etkisi olmayacağını düşünmek tuhaf
Çünkü her ülkede çalışması gerekiyordu ve en yavaş telefonların önemli bir kısmı da o şirketin ürünleriydi
Hızlı değil ama web sitelerini kullanırken zorluk çıkarmıyor; sadece yeni donanım kadar anlık tepki vermiyor, onun dışında gayet kullanılabilir
Gerçi uBlock Origin kullanıyorum
Bu Android cihazların gerçekten 11 yıllık giriş seviyesi bir MacBook’tan daha mı zayıf olduğunu merak ediyorum
Dan’in, dünyanın dört bir yanındaki eşitsizlik düzeyini hesaba katmak gerektiği yönündeki ana fikrine güçlü biçimde katılıyorum, ama buna Latin Amerika ve Güneydoğu Asya gibi orta gelirli ülkeler de dahil edilmeli
Örneğin aylık veri kotası tek haneli GB seviyesinde olan ve RAM/CPU’su 10 yıl önceki ABD amiral gemisi cihazları düzeyinde kullanıcılar var
Discourse’u hiç kullanamayacak durumda değiller ama deneyim büyük ihtimalle rahatsız edecek kadar yavaş
Dan’in CPU/RAM/diskteki kademeli iyileşmelerin katılımı ölçülebilir şekilde artırdığını düşünmesinin başlıca nedeni de bence bu kullanıcı kitlesi
Itel P32 gibi en ucuz cihazları kullananlar için Dan’in grafiği, kademeli optimizasyonların pek fayda sağlamadığını gösteriyor
Yardımcı olabilecek şey; özelliklerden ve şıklıktan feragat edip mümkün olan en ince kodu sunan tamamen farklı bir istemci yapısı, yani alternatif bir hafif/temel mod olabilir
Ancak bu yaklaşım da pek başarılı olamadı; çünkü ABD’li geliştiricilerin performans uğruna neyin korunup neyin atılacağına yanlış karar vermesi şeklinde aynı empati sorunu yeniden ortaya çıkıyor
Discourse’un bugün PhpBB veya DLang forumlarına kıyasla gerçekte ne sunduğunu merak ediyorum
Mobil uyumlu tasarım dışında, normal bir dünyada birkaç satır duyarlı CSS düzenlemesi yeterli olmalı
Aylık 30 GB veri $3.64 ve bu da asgari ücretle yaklaşık 4-6 saatlik işe denk geliyor
Daha önemli olan, insanların Batı’daki gibi veriyi hoyratça harcamaması
Kafe, restoran, süpermarket ve AVM’lerin hepsinde ücretsiz Wi-Fi var ve çoğu kişi menüden önce Wi-Fi şifresini soruyor
Web sitelerinin veriyi fazla hızlı tükettiğini söyleyen birini hiç görmedim ya da duymadım
Bu, gelişmekte olan ülkelerde gerçekten yaşamayan insanların uydurduğu bir endişe gibi geliyor
Burada verinin bitme nedeni web şişkinliği değil; TikTok, Instagram ve Facebook’ta video izlenmesi
Bilgisayarlarla birlikte kurulu gelen bloatware için de aynı şey geçerli
Kısa süre önce yeni bir dizüstü aldım ve bana $50’lık bir “ayar çekme” hizmeti teklif edildi
Yeni araba bayisinin böyle bir teklif yaptığını hayal etmek bile tuhaf
Sinyalin kötü olduğu yerlerde sorun 10 kat büyüyor
Mesele sabit başlıklar ve reklamlar yüzünden ekranın yalnızca üçte birinin görünmesi gibi karmaşık bir arayüz değil; sanki bir tasarım belgesi gibi görünene kadar rastgele bir araya getirilmiş web sitelerinin boyutu
Düzgün yapılmış olsalar bile zaten şişkin olacak siteler, yavaş internet bağlantılarında kullanılamaz hale geliyor; yavaş donanımı ise hiç saymıyorum bile
Anlatılan koşullarda internet kullanmanın nasıl hissettirdiğini hayal etmek zor; tek umudum, o insanların kendi bant genişliklerine ve cihazlarına uygun yerel siteler kullanıyor olması ve bizim maruz kaldığımız bu şişkin çöplükle uğraşmamaları
Web sitelerinin çoğu neredeyse işkence gibi
Çoğunun suçu sadece yöneticilere ya da korkutucu büyük şirketlere atmasının ilginç olduğunu düşünüyorum
Verimlilikten pek anlamayan ve anlamaya da niyeti yokmuş gibi görünen yetersiz web programcıları kitlesinin de büyük olduğunu geliştiriciler kabul etmiyor
Kötü yazılım üretmeye zorlayan yöneticiler ya da şirket elitleri kadar, bu insanlar da bu acıklı web yazılımı dünyasından sorumlu
Ortaya çıkan HTML, CSS, JS çıktısının somut kısımlarını sorduğumda bana başka bir dil konuşuyormuşum gibi bakıyorlardı
JavaScript framework dünyasından gelmişlerdi ve altında ortaya çıkan sonuç üzerine pek düşünmemişlerdi
Benim yaklaşımım neredeyse tam tersidir: elde iyi yazılmış bir HTML+CSS+JS sitesine eşdeğer sonucu üreten, bakım yapılabilir asgari kod nedir diye sorarım
Genelde ortaya çıkan çıktı birkaç basamak daha küçük olur
Birisi bana 1000 tablo satırını gerçek zamanlı filtrelerken mobilde de hızlı yüklenip iyi çalışmasını nasıl sağladığımı sormuştu; ben de ilk istekte tüm veriyi gönderip filtreye uymayan verileri dinamik olarak gizlediğimi söylemiştim
Web sunucusunun tek yaptığı aynı önbellek verisini herkese göndermekti ve sitede çalışan JavaScript de bundan ibaretti; bu yüzden onlara tuhaf derecede hızlı görünüyordu
Onların framework tabanlı çözümündeki benzer tablo satırı HTML’sine baktığınızda, %80’inin hiç kullanılmayan boilerplate olduğunu görüyordunuz
Web geliştirme fazla katılaştı ve birçok insan web teknolojilerinin özünden fazla uzaklaştı
Ana hedef kullanıcı ABD ya da AB’deyse, düşük donanımı ve kararsız, düşük bant genişlikli-yüksek gecikmeli bağlantıları aşırı optimize etmemek bir ölçüde anlaşılabilir olabilir
Ama hedef kırsal Afrika ise agresif optimizasyon çok bariz bir gereklilik gibi görünüyordu
Buna rağmen ana sayfa, CSS ile 500×1000 piksele küçültülmüş 2 MB’lık dev bir görsel yüklüyordu ve sonrası daha da kötüydü
JS payload boyutunun tam olarak ne kadar olduğunu hatırlamıyorum ama birkaç MB’tı ve uygulamanın büyük bölümü klasik şablon tabanlı backend uygulaması gibi görünmesine rağmen frontend aşırı ağırdı
Fikir güzel olduğu için başvurdum ama teknoloji korkunçtu
İlk mülakat aşamasına bile geçemedim, bu yüzden neden böyle olduğunu bilmiyorum ama Batı Avrupalı geliştiricilerin bu konuda ne yaptıklarını gerçekten fark etmemeleri dışında bir açıklama hayal etmek zor
Başlangıç noktası geliştirici değil bütçedir
Üst yönetim teknik konulardan anlamıyorsa ya da mühendislik geçmişi yoksa genelde yeni özelliklere bütçe ayırırlar ama bakım ve teknik borç temizliği için ya çok az bütçe koyarlar ya da hiç koymazlar
Bakım bütçesi olsa bile neredeyse tamamen daha ucuz yurt dışı bakım ekiplerine verilir
Özellik ekibi 6 ay boyunca bir özellik geliştirir, sonra yurt dışındaki bakım ekibiyle 1 saatlik bir “KT session” yapıp kodu devreder
Yurt dışı ekip özelliğe dair biraz bilgi edinir ama mevcut teknik borcu yönetmeye yetecek kadar değil; sadece sistemi ayakta tutacak kadar
Bu döngü kurum içinde 100 ila 1000 kez tekrarlandığında, aslında en fazla 250 bin satır olması gereken frontend çok kısa sürede 2 milyon satıra çıkar
Yeni özellik ekibine en iyi mühendisleri koysanız bile artık önceden yapılmış kutunun içinde çalışmak zorundadırlar
Mockup ile öğeler uyuşmuyorsa sorun mockup’ın hatalı olması, UI kit’in yükseltilmiş olması ya da mevcut UI kit’in refactor edilmesi gerekliliği olabilir ama bunların hiçbiri için bütçe yoktur
Bu yüzden ekibe, bir component’i kopyalayıp kendi özelliğine uyacak şekilde değiştirmesi söylenir
Bakım ekibine devrederken de yeni ekip mevcut özellik çalışmalarına dokunmak istemediği için onları olduğu gibi bırakır
Teknik olmayan yöneticiler farkı anlayamaz ve yıllar içinde ekipler yeni özellikleri uydurabilmek için kopyala-yapıştır yaptıkça kod tabanında “Button” adlı 50’den fazla component oluşur
Ekipte verimliliğe önem veren yetkin geliştiriciler varsa ve daha verimli bir siteyi zorlayabilirlerse ya da en baştan daha verimli geliştirebilirlerse sayfa daha iyi olabilir
Ama çoğunlukla mesele teşviklerdir
Yönetim umursamıyorsa, programcıların verimliliği artırmak için ekstra zaman harcamak yerine işin yarı sürede çalışır hale gelmesini sağlayıp backlog’u eritmeye yönelmesi daha olasıdır
Bu yüzden yavaş cihazlar saçmalıkları elemek için harika bir filtredir
Kısa süre önce 6 yıllık bir LG amiral gemisi telefondan yeni bir Galaxy’ye geçtim ve performans farkı çok büyüktü
Böyle olmaması gerekirdi
Çıkış döneminde son derece üst seviye bir cihazdı, o kadar da eski değil ve hâlâ yeni gibi çalışıyor
Test için kullandığım Galaxy S9’ların da aynı sıkıntıları yaşadığını görünce bunun sadece benim telefonuma özgü olmadığını anladım
Keşke testlere Amazon da dahil edilseydi
Deneyimime göre Amazon web sitesi, 4 yıldan eski mobil cihazlarda en kötülerin de kötüsü
Nispeten yeni üst düzey mobil donanımlarda bile düzenli kullandığım siteler arasında neredeyse kullanılamaz düzeyde olan tek siteydi
LineageOS ile Android 14 yüklediğim OnePlus 5’i günlük cihaz olarak kullanıyorum ve oyun dışındaki işlerde kullanıcı deneyimi gayet yeterli
Bu telefonda 6 GB RAM var; yani günümüz orta segment cihazlarına bile benziyor
Tek şikâyetim pilini değiştirmek zorunda kalmam ve telefonu sökmenin uğraştırıcı olması
Buna karşılık aynı SoC’ye, 4 GB belleğe ve Samsung modifikasyonları içeren stok Android 9’a sahip Galaxy S8 sürekli takılıyor
2 GB bellek farkı etkili olabilir ama iki telefon arasındaki fark geceyle gündüz kadar büyük
Bunun nedeni Android 14’ün bellek yönetiminin Android 9’dan çok daha iyi olması mı, yoksa Samsung’un yavaş ve şişkin yazılımının cihazı aşağı çekmesi mi bilmiyorum
Her hâlükârda, birçok şirketin eski ve düşük segment cihazlarda test yapmaması sinir bozucu
Dünya çapında kullanıcıları hedefliyorsanız, dünyanın büyük bölümünün en yeni amiral gemilerini kullanmadığını hesaba katmanız gerekir
Aslında o kadar da kötü çalışmıyor
Elbette buna mecbur kalınmaması gerektiği konusunda hemfikirim
Ama Firefox’ta tüm reklam engelleyicileri kullanıyorum, muhtemelen bunun yardımı var
Günümüzde teknoloji, teknolojiye aşina olmayan insanlara karşı bile fazla kayıtsız.
Bence bunun en tipik örneği akıllı telefonlar.
Kendi cihazını neredeyse hiç kullanamayan ya da tamamen bilmeyen gerçekten çok insan gördüm ve onlara her şey kara büyü gibi görünüyor.
En büyük sorun, görünmediği için yokmuş gibi olan jest navigasyonuna aşırı derecede bağımlı olunması.
iPhone’daki jest çubuğu bir şekilde keşfedilebilir belki ama bildirim merkezi ya da denetim merkezi diye bir kavramları yok.
Bu insanlar aptal değil; başka alanlarda benden çok daha iyi olabilirler.
Teknolojideki sorun çaba eksikliği değil, sezgisel arayüz eksikliğidir.
Gerçek belgelere bakmak için Apple sitesindeki dokümantasyon sayfasına kadar gitmek gerekiyor ve biraz daha derine inince ancak birkaç olası jesti kabaca gösteren bir sayfa çıkıyor.
Hangi durumda hangi jestin kullanılacağına dair bir cümlelik örnekten fazlası yok.
Üstelik bu yalnızca işletim sistemi için geçerli.
Uygulamaların kaç tanesinin, kendi içlerindeki jest özelliklerinin nasıl kullanıldığını açıklayan dokümantasyon sunduğunu merak ediyorum.
https://support.apple.com/guide/iphone/learn-basic-gestures-...
Oysa onlar bu cihazların etrafında büyüdüler.
Bu yüzden bunun yalnızca modern teknolojinin suçu olduğunu düşünmüyorum.
Kullanıcının kendine uygun tasarımı ve etkileşimi seçmesine izin vermek yerine, tasarımcı ya da ürün sahibi tüm kullanıcılar için neyin en iyi olduğunu bildiğini varsayıyor.
Android’den geçtikten sonra en büyük şikâyetlerimden biri buydu.
Geri düğmesi nerede, ana ekran düğmesi nerede, düğmelerin kendisi nerede hiç belli değil.
Apple’ın minimalizm takıntısından gerçekten nefret ediyorum; bu telefon ölünce Android’e döneceğim.
Bu yazı masaüstünde 48 yaşındaki bana göre temelde okunması zor.
Geliştirici araçlarında
bodyiçine aşağıdakileri ekleyince okunabilir hale geliyor:font-size: 18px;line-height: 1.5em;max-width: 38rem;Bunu yapınca ne kadar okunaklı ve güzel göründüğü ortaya çıkıyor.
Dan Luu’nun yazılarını çok okurum ama her seferinde bunları değiştirmek zorunda kalıyorum.
Cidden söylüyorum, teknisyenler: bir sayfayı daha okunabilir hale getirmek için sadece 64 bayt daha gerekiyor.
O sayfa neredeyse sorun değildi; sadece CTRL + ile yakınlaştırmam yetti.
O sayfa neredeyse saf metin ve neredeyse hiç etkileşim yok.
Senin kullanım durumuna uygun bir çözümün var, benim de bana uygun çözümüm var.
Görme engelli okurlar da kendi çözümleriyle erişebilir.
Kaynak basit olduğu için erişilebilirlik çözümleri de makul ölçüde basit kalıyor.
Bence Dan etkili iletişim kurmanın yolunu biliyor.
Mesele bunu sade tutmak ve mutlaka gözle okunacağını varsaymamak.
Kişi gösterimi kendi amacına göre kolayca değiştirebilir.
Bu sunum biçimini beğenmiyorsan, okumadan önce kendin yeniden biçimlendirebilirsin.
Dan, mesajını kolayca işlenebilen sade bir metin akışı olarak sunmuş oluyor.
Luu’nun okur kitlesi genel olarak daha stilsiz bir yaklaşımı tercih etme eğiliminde olabilir.
Kullanıcı pencere boyutunu, yazı tipi boyutunu, renkleri vb. kendi tercihine göre değiştirebilir.
Bunu her dosya için tek tek yapmak gerekmez; birden fazla dosyaya uygulanabilen bir kullanıcı CSS dosyası ekleyip kullanmaya izin verilmelidir.
Bu ayar Firefox’un varsayılan ayarlar sayfasında var.
Bir web sitesi
font-size: 18px;değerini zorunlu kılarsa, tarayıcıda daha büyük yazı tipi seçmiş kullanıcılar için yazı aslında daha da küçük görünebilir.Ancak tarayıcının okuma modunu da kullanabilirsin; geliştirici araçlarında birkaç adım dolaşmak yerine tek tık yeter.
Bu arada Raspberry Pi 3 üzerinde YouTube kullanılamıyor
Son 1 yıl içinde bu hale geldi; ondan önce videoları yaklaşık 10~15 FPS ile “izlemek” mümkündü ve atölyede tamir videoları izlemek için yeterliydi
İlk çıkan model olan Raspberry Pi Model B çıktığında depodaki 1080p videoları oynatabiliyor, YouTube izleyebiliyor ve oyun da çalıştırabiliyordu
YouTube’un ne yaptığını, diğer servislerin de ne yaptığını bilmiyorum
İklim krizini ve değişimi ciddiye alıyorsak Google ve Meta’nın bu tür numaralarını çok sıkı incelememiz gerekir
Kâr uğruna CPU döngülerini yakmak — yani kabaca tahminle reklam teknolojisi yüzünden düşük güçteki cihazlarda YouTube’un bozulması — medyada ağır biçimde eleştirilmeli ve genel kullanıcı deneyimi daha kötü olsa bile daha verimli servisler kullanılmalı
Pi3’te x264 donanım hızlandırması var ama YouTube bir süredir başka bir kodek kullanmaya başladı
2021 model Intel MacBook Air’da bile orta düzey yük altında videolar rastgele takılıyor; eskiden böyle değildi
İklim değişikliğini çözmek için orayı hedef almak, plastik pipetleri ya da poşetleri yasaklamak kadar anlamsız
Bir başka referans noktası olarak, 10 yıl önceki YouTube o donanımda tamamen sorunsuz olurdu
Suçlu genel web şişkinliği ve daha özelde JS içinde yaygınlaşan soyutlama canavarları
“İklim krizi”ne hiç inanmayan birine bile zamanla ustalığın ve kalitenin kaybolduğunu, bu karmaşanın da bundan çıktığını söyleyebilirsiniz
Bu yüzden bunun politik yelpazenin tamamında uzlaşılabilecek bir konu olduğunu düşünüyorum
Bu Consumer Reports tarzı olabilir ya da Nielsen reytingleri gibi çalışan bir eklenti olabilir
O Discourse tarafındaki kişi, ürünleri gerçekten yaşadığımız dünyaya göre değil, var olmasını istediği dünyaya göre tasarlayan tipik bir örnek
Qualcomm SoC kullanan cihazlar milyarlarca adet var, olmaya da devam edecek ve üretilip satılacak
Ne kadar şikâyet edilirse edilsin bu değişmeyecek
Bunu kabul edip o cihazlara göre optimize etmek gerekiyor
O cihazların kullanıcıları geliştiricilerin şikâyetleriyle ilgilenmez; yazılım çöküyorsa sadece beceriksiz yazılım geliştiricileri olduğunu düşünürler
Normalde Dan Luu’nun yazılarını severim ama bu yazının bu kez hedefi ıskaladığını hissettim
LCP/CPU tablosu iyiydi ama sonrasında koltuk psikolojisine benzer bir yere kayıyor
Discourse kurucusunun birkaç rastgele yorumunu temel alıp okurdan yazılım mühendislerinin tutumlarını hayal etmesini istiyor
Hatta Knuth’u bile tek çekirdek ile çok çekirdek performansı ve Itanium hakkındaki sözleri üzerinden aşağı çekmiş; oysa bu eski bir akademik tartışma noktası
Yazı fazla yumuşak ve internet kavgalarına yaslandığı için sağlam durması zor geliyor
Discourse kurucusunun sözleri sadece bunu çok açıklayıcı biçimde ortaya koyuyor
Son dönemde web kullandıysanız, durum hayal edilemeyecek kadar şişmiş halde; Google artık Largest Contentful Paint 2.4 saniye için hızlı diyebiliyor: https://blog.chromium.org/2020/05/the-science-behind-web-vit...
Bu 4 yıl önceki veri, yani şimdi daha da kötü olmuş olması çok muhtemel
Masaüstünde YouTube’un 2.5 MB CSS yüklemesinden, Vercel kurucusunun çok hızlı bir site diye övdüğü şeyin biraz kısıtlama uygulanınca 20 saniyede yüklenmesine kadar uzağa bakmaya gerek yok: https://x.com/dmitriid/status/1735338533303259571
Frontend için basit bir API servisi yanıt süresi 500 ms olsa kimse alay etmiyor
Kendi bulut maliyetinin ne kadar olduğunu bilip buna önem veren mühendis sayısının da ne kadar olduğu şüpheli
Bugünkü paralellik, uzmanlaşmış kullanım senaryoları ya da aynı tek iş parçacıklı programı birden çok veri öğesi üzerinde çalıştırma durumları dışında yazılımın %90’ında kullanılmıyor
Hem programlama dilleri hem de donanım ince taneli paralelliği düzgün desteklemiyor ve klasik yazılımları paralel yaklaşımla hızlandırmak çok zor
Luu aslında oldukça cömert yazmış
Knuth daha çok, onlarca yıl süren bedava öğle yemeğinin bittiğinden şikâyet ediyordu
Jeff Atwood sadece örnek olarak seçilmiş
Çok takipçili, tanınmış web geliştirme düşünce önderleri benzer görüşleri durmadan yayıyor ve pek çok takipçi de bunu olduğu gibi kabul ediyor
Tüm şirketler artık bunu umursamayı bıraktı; özellikle de standartların ve iyi web tasarımı pratiklerinin ön saflarında yer alan Google ve Apple gibi şirketler.
Google kısa süre önce HTML Gmail'i kapattı; bu sürüm 2008 model 256MB RAM'li Android telefonlarda ve eski Firefox'ta bile hızlı ve sorunsuz çalışıyordu.
Doğal olarak, yeni şişirilmiş JavaScript sürümü tarayıcıyı öldürüyor.
Uç bir örnek olsa da düşük segment telefonlar 2GB RAM'e sahip ve artık bu tür cihazlarla web'de gezinirken makul performans beklemek zor.
Mobil web berbat ve bu, kullanıcıları “native” uygulamalara itmek için kasıtlı yapılıyor.
Çünkü bu, Apple ve Google gibi şirketlerin veri toplamasını ve reklam göstermesini kolaylaştırıyor.
Siteleri mobilde korkunç; Decathlon ise yüksek performanslı olmayan masaüstü bilgisayarlarda bile korkunç.
Üstelik uygulamalarını da özellikle öne çıkarmıyorlar; bu yüzden buna sadece beceriksizlik demek gerekiyor gibi.
Geliştiriciler sanki her şeyi yalnızca backbone'a bağlı üst düzey cihazlarda test ediyor.
RIP Google
Yeni Reddit kullanılamıyor, old Reddit ise fazla eski.
Twitch, sohbet ve video akışı sorunları yüzünden ancak zar zor kullanılabiliyor.
Liste uzayıp gidiyor.
Son formülü zaten elinizdeyse, yapılan her değişiklik iş güvencesi için yapılan kötü bir değişikliğe dönüşür.
Bir gün bu çamur topunun üzerindeki maymunlar işlerin ve paranın var olmadığını fark edecek, ama o zaman çok geç olacak.
Hayır, o zaman şimdi.
RIP Humans