- 2017 के बाद bandwidth में हुई बढ़ोतरी ने आम साइटों के transfer size में बढ़ोतरी को कुछ हद तक पीछे छोड़ दिया, लेकिन web apps की CPU requirements low-end डिवाइसों के performance से तेज़ी से बढ़ीं, जिससे तेज़ इंटरनेट पर भी वेब accessibility खराब हुई
1Gbpsconnection पर भीTecno Spark 8Cमें Discourse forum पर browser crash हुआ, औरItel P32पर Discourse, Reddit, Shopify, Substack, Wix, Mastodon, Bluesky जैसी साइटें FAIL या व्यावहारिक रूप से इस्तेमाल न करने योग्य रहीं- measurement में
M3 Max,M1 Pro, Chrome10xCPU throttling,Tecno Spark 8C,Itel P32परLCP*और main thread CPU time की तुलना की गई; PageSpeed Insights score का वास्तविक महसूस होने वाली speed से कमजोर संबंध था - MyBB, phpBB, पुराने WordPress, HN, danluu.com जैसी सरल या पुरानी साइटें low-end mobile पर भी अपेक्षाकृत अच्छी चलीं, जबकि Discourse, Medium, Reddit, Substack जैसी ज़्यादा dynamic loading वाली साइटों में scrolling, search और tap delay साफ दिखे
- Nigeria, India, Latin America जैसे क्षेत्रों में low-end डिवाइस इस्तेमाल करने वाले लोग वास्तविक web users हैं, और अगर वेब सिर्फ iOS और तेज़ इंटरनेट को आधार बनाकर बनाया जाए तो कम संपन्न users और low-spec desktop users भी बाहर छूट जाते हैं
bandwidth से ज़्यादा CPU bottleneck बना वेब
- 2017 में slow connections पर web bloat ने usability को बहुत नुकसान पहुंचाया था, और उसके बाद high-end connections की bandwidth Nielsen के हिसाब से सालाना करीब
50%की दर से तेज़ी से बढ़ी - slow internet इस्तेमाल करने वाले users अब भी बहुत हैं और modern web का बड़ा हिस्सा slow connections पर इस्तेमाल करना मुश्किल है, लेकिन सामान्य साइटों में bandwidth growth ने transfer size growth को कुछ हद तक पीछे छोड़ा है
- इसके उलट web apps की CPU performance requirements bandwidth जितनी तेज़ी से बेहतर नहीं हुईं, इसलिए अच्छी internet connection होने पर भी low-spec devices पर web इस्तेमाल करना मुश्किल हो गया
- Discourse आधारित “modern” forum
Tecno Spark 8Cपर browser crash तक करा देता है, और crashes के बीच responsiveness भी8 MHz 286और1200 baudmodem से BBS इस्तेमाल करने से खराब मापी गई - Discourse में message titles लाने वाला compressed payload
2.6 MBहै, जो पुराने समय की तुलना में transfer amount में1000xबढ़ोतरी जैसा है, लेकिन1Gbpsconnection पर यह अपेक्षाकृत हल्का है - CPU के लिहाज़ से,
8-core (2 1.6 GHz Cortex-A75 / 6 1.6 GHz Cortex-A55)वालाTecno Spark 8Cभी Discourse को संभाल नहीं पाता, जबकि यह CPU286से लगभग100000xतेज़ है
measurement targets और metrics
- test devices थे
M3 Max Macbook (14-core),M1 Pro Macbook (8-core), Chrome DevTools में10xthrottledM3 Max,Tecno Spark 8C,Itel P32 - network को devices के पक्ष में रखने के लिए
1Gbpsinternet और load के दौरान low latency के लिए benchmark किए गए WiFi router का इस्तेमाल किया गया - comparison targets में blogs/microblogs, forums, और small business platforms शामिल थे
- blogs/microblogs: danluu.com, Substack, Medium, Ghost, Hugo, Tumblr, Mastodon, Twitter, Threads, Bluesky, Patreon
- forums: Discourse, Reddit, Quora, vBulletin, XenForo, phpBB, MyBB
- small business platforms: Wix, Squarespace, Shopify, WordPress
- मुख्य metrics थे transfer compressed size (
wire), decompressed size (raw),LCP*, main thread CPU time LCP*Chrome द्वारा measured Largest Contentful Paint नहीं है; जब बड़ा screen update user के लिए उपयोगी न हो, तब वास्तविक उपयोगी content दिखने के समय को आधार बनाया गया- CPU time Core Web Vital नहीं है, लेकिन slow devices पर users को महसूस होने वाली usability से मजबूत जुड़ा एक सरल metric के रूप में इस्तेमाल किया गया
table से दिखी usability gap
- danluu.com और HN सभी test devices पर तेज़ चले
- danluu.com ने
6kB wire / 18kB raw,Tecno Spark 8Cपर0.4s LCP* / 0.3s CPU - HN ने
11kB wire / 50kB raw,Tecno Spark 8Cपर0.5s LCP* / 0.5s CPU
- danluu.com ने
- पुराने PHP-based forums slow devices पर modern forums से कहीं बेहतर रहे
- MyBB ने
Tecno Spark 8Cपर0.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परFAIL
- MyBB ने
- blog platforms में भी पुराना WordPress theme low-spec devices पर Medium और Substack से बहुत तेज़ था
- WordPress(old) ने
Tecno Spark 8Cपर0.7s LCP* / 1.7s CPU - Medium ने
2.8s LCP* / 33s CPU - Substack ने
14s LCP* / 14s CPU
- WordPress(old) ने
- कई modern sites
Itel P32पर fail हुईं या व्यावहारिक रूप से unusable थीं- 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+ CPUलेने वाले pages load के बाद भी खराब experience देते हैं- scrolling कुछ FPS तक गिर जाती है, tap delay इतना लंबा होता है कि user को पता लगाना मुश्किल हो जाता है कि tap registered हुआ या नहीं
- दोबारा tap करने पर पहला tap देर से registered होने के बाद दूसरा tap गलत action करा सकता है
वास्तविक devices और CPU throttling का अंतर
- Chrome DevTools का CPU throttling सुविधाजनक है, लेकिन असली slow devices के results को consistently approximate नहीं कर पाता
M3/10औरTecno Spark 8Cकी तुलना में site-by-site अंतर काफी अलग थे- danluu.com और Ghost का approximation कुछ हद तक ठीक था
- Medium, Substack, Twitter पर
Tecno Spark 8Cका CPU time करीब3xधीमा था - Reddit और Discourse करीब
4xधीमे थे - Shopify में
Tecno Spark 8CनेM3/10से एक order of magnitude से भी ज़्यादा तेज़ result दिखाया
- slow pages, device धीमा होने पर कई बार superlinear तरीके से और धीमे हो जाते हैं, और एक page की slowness दूसरे page की slowness को ठीक से predict नहीं करती
- Discourse, Medium, Reddit
M3औरM1पर CPU ज़्यादा इस्तेमाल करते नहीं दिखते, लेकिनTecno Spark 8Cपर सबसे धीमे समूह में आते हैं - Reddit बिना किसी interaction के इंतज़ार करने पर भी
~90% CPUइस्तेमाल करता है, इसलिए CPU∞के रूप में दिखाया गया
पुरानी sites और simple pages की ताकत
- पुरानी sites आम तौर पर latest sites से तेज़ थीं, और 10–20 साल में visually बहुत कम बदली sites सबसे तेज़ समूह में रहीं
- MyBB, Discourse से
M3पर3.6x / 5x,Tecno Spark 8Cपर19x / 33xतेज़ था - WordPress(old), Medium से
M3 Maxपर17.5x / 10x,Tecno Spark 8Cपर4x / 19xतेज़ measured हुआ - Ghost, Medium से 1 साल बाद launch हुआ modern platform है, लेकिन पुराने platforms से compete करने लायक performance दिखाने वाला exception है
- appendix test में NodeBB भी modern forums में exception के करीब था
M1पर0.3s / 0.4sTecno Spark 8Cपर3.4s / 7.2s- Discourse से बहुत तेज़, और load के बाद scrolling और taps भी मूल रूप से काम करते हैं
dynamic loading और metric optimization के जाल
- Discourse, Reddit, Substack जैसी sites जो page का एक हिस्सा पहले load करती हैं और बाकी dynamically लाती हैं, उनकी वास्तविक usability table scores से भी खराब है
- slow devices पर scroll distance predict करना मुश्किल होता है, और बहुत दूर scroll करने पर additional loading trigger होकर page freeze हो सकता है
- scrolled past content हटाने वाले pages slow devices पर व्यावहारिक रूप से unusable हैं
- dynamic loading pages पर browser के तेज़
Ctrl/Command+Fsearch को सीधे इस्तेमाल करना मुश्किल होता है और अपना search implement करना पड़ता है- Google Docs search पिछले कुछ महीनों या करीब एक साल से document load होते ही तुरंत इस्तेमाल करने लायक नहीं रहता, क्योंकि यह देर से load होता है
- Discourse search slow devices या बहुत तेज़ न होने वाले devices पर कभी ठीक से काम करता नहीं दिखा
- theoretical तौर पर initial CPU work बाद की interactions को तेज़ बना सकता है, लेकिन test किए गए pages में initial load, subsequent load और load के बाद interactions सभी धीमे थे
LCP gaming
LCPमूल रूप से यह अनुमान लगाने का metric है कि user को page का main content कब दिखता है, लेकिन Chrome measurement ज्यादा इस बात के करीब है कि screen पर बड़ा paint कब हुआ- कुछ sites user के लिए उपयोगी न होने वाली बड़ी loading screen जल्दी दिखाकर
LCPघटाती हैं, और बाद में वास्तविक content को छोटे updates में बांट देती हैं ताकि वहLCPमें न पकड़ा जाए - Discourse ने Discourse Splash को public तौर पर introduce किया, और बताया कि slow load में बड़े splash screen से
LCPकाफी घटा - Discourse का official response इस आशय का था कि अगर वास्तविक content banner splash से बड़ा हो, तो
LCPके लिए नुकसानदायक होगा - उपयोगी content आधारित
LCP*और Chrome measuredLCPमें बड़ा अंतर दिखाने वाले cases Wix और Discourse थे- Wix:
M3पर6x,M1पर12x,Tecno Spark 8Cपर3x - Discourse:
M3पर10x,M1पर12x,Tecno Spark 8Cपर4x
- Wix:
performance optimization का business पर असर
- बड़ी companies में sites और apps की performance improvements की monetary value इतनी बड़ी थी कि उसे A/B tests से measure किया जाता था
- long-term holdback में भी performance improvement growth और retention पर अपेक्षाकृत बड़ा असर डालने वाला intervention दिखा
- Twitter पर user-observed p99 latency India और कई African countries के साथ United States में भी करीब
60sथी - हर देश में slow devices या connections वाले users पर्याप्त संख्या में हैं, इसलिए limiting factor पूरी आबादी के average device/connection distribution से ज़्यादा user patience के करीब था
- slow devices पर
60sको50sकरने वाला improvement high-end device users के लिए भी5sको4.5sकरने जैसा असर डाल सकता है, और revenue, growth, retention को भी प्रभावित करता है
low-end devices को ध्यान में रखकर design
- slow devices या low bandwidth/unstable connections पर बहुत सारा content एक बार में static page के रूप में load करने का experience आम तौर पर सबसे अच्छा होता है
- images में उचित
width,height,altattributes होना मददगार है, लेकिन progressive JPEG खास बड़ी मदद नहीं करता - तेज़ connection वाले slow devices पर हल्के static pages अच्छे चलते हैं, और performance-conscious हल्के dynamic pages भी चल सकते हैं
- भारी pages में scroll करने पर additional loading और search interception usable interaction model को बिगाड़ देते हैं
- Substack में iPhone 8 पर article का
LCPतेज़ हो सकता है, लेकिन header के नीचे scroll करने के लिए अगला page load होने का6sइंतज़ार करना पड़ता है और उसके बाद भी1s~2sरुकना पड़ता है—ऐसे cases हैं - उलटा उदाहरण: बड़े plain HTML pages low-end devices पर भी अपेक्षाकृत अच्छे चलते हैं
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 MBtext का एक page slow devices पर अधिकांश modern sites से बेहतर चलता है
- Zig standard library documentation source code को शुरुआत में पूरा fetch करके locally render करता है, फिर भी
Tecno Spark 8Cपर4.7sCPU use के बाद अपेक्षाकृत responsive रहता है
low-income users और accessibility
Tecno Spark 8CNigeria में करीबUSD 50-60, India में करीबUSD 100-110में मिल सकता है, लेकिन इन क्षेत्रों के median household income के अनुपात में यह United States के current-generation iPhone से कहीं बड़ा खर्च है- वैश्विक मानक से
Tecno Spark 8Cसबसे सस्ते devices के करीब नहीं है, औरItel P32भी वास्तव में इस्तेमाल होने वाले lowest-spec devices की तुलना में ऊंचे group में है - Alex Russell के अनुसार iOS share India में
7%, Latin America में6%है - Windows telemetry के आधार पर अधिकांश laptop/desktop users ऐसे low-spec devices इस्तेमाल करते दिखते हैं जिनके latest iPhone से धीमे होने की संभावना ज्यादा है
- सुधारात्मक निगरानी में लोगों को दिए जाने वाले “lifeline” phone में iPhone 6 या iPhone 8 भी होते हैं, लेकिन
Itel P32से कमज़ोर devices भी बहुत हैं, और data limits कम होने से limit खत्म होने के बाद job search, welfare forms भरना या Maps इस्तेमाल करना मुश्किल हो सकता है - mobile apps अच्छे connection पर पहले से download की जा सकती हैं, लेकिन web apps को अगर हर access पर कई MB compressed JavaScript डाउनलोड करनी पड़े, तो वे limited connections पर इस्तेमाल नहीं की जा सकतीं
experiment conditions और limitations
- हर site को संभव “सबसे basic” experience खोजने के तरीके से measure किया गया
- WordPress में current default theme
twentytwentyfourdemo इस्तेमाल किया गया - Shopify में theme list में पहले दिखे theme का इस्तेमाल किया गया
- Discourse, vBulletin, XenForo, phpBB, MyBB के लिए official forum के रूप में search किए गए pages इस्तेमाल किए गए
- WordPress में current default theme
- यह काम एक दिन के भीतर data collection और analysis वाले छोटे project के रूप में किया गया, इसलिए इसमें सबसे common themes या actual user customization distribution तक reflect नहीं हुए
- laptops को लगभग
60%battery, unplugged,20°Croom में thermal equilibrium के करीब रखकर test किया गया - mobile को लगभग
100%charge पर, plugged in, बिना दूसरे apps और tabs के test किया गया - वास्तविक users को उसी device पर भी ज्यादा apps और background tasks के कारण अधिकतर खराब performance दिखने की संभावना है
- sizes mobile पर measured थे, इसलिए mobile और desktop को अलग assets मिलने पर mobile asset size reflect हुआ
CPUको main thread CPU time के रूप में measure किया गया; other thread time recorded था लेकिन metric में इस्तेमाल नहीं हुआ
site-specific notable cases
- Wix में
Tecno Spark 8Cपर scrolling ठीक से stable नहीं होती, औरItel P32पर nondeterministically fail होती है - Patreon में initial load numbers की तुलना में scrolling performance खराब है, इसलिए पुराने posts ढूंढना इतना असुविधाजनक है कि अलग Patreon post index maintain करना पड़ता है
- Discourse में
LCPबहुत ज्यादा gamed है;M3 Maxके1Gbpsconnection पर भी Chrome measuredLCP115msथा, लेकिन actual content1.1sमें load हुआ - Bluesky ने
Itel P32पर blank screen दिखाई - Shopify के पहले दो real-world use cases test किए गए demo page से दोनों काफी धीमे थे
- Tumblr में
Itel P32पर JavaScript error आता है, लेकिन उसी वजह से page जल्दी load होता है और scrolling/link click काम करते हैं - MyBB mobile version नहीं देता, जिससे Google में नुकसान हो सकता है, लेकिन slow mobile पर scrolling और taps असल में अच्छी तरह काम करते हैं
- Woo Commerce को सिर्फ initial load performance के आधार पर Shopify से compare करना मुश्किल है, और cart/checkout जैसे real flows तक शामिल करके अलग comparison चाहिए, इसलिए उसे table से बाहर रखा गया
1 टिप्पणियां
Hacker News की रायें
हाल ही में अपेक्षाकृत धीमा Android फोन इस्तेमाल करके देखा, तो टेक्स्ट और इमेज भर दिखने वाले वेबपेज भी लोड होने में सचमुच तकलीफदेह हो सकते हैं
असली bottleneck नेटवर्क नहीं, बल्कि trackers, ads और JavaScript bloat के करीब है
धीमे पुराने फोन पर मोबाइल Firefox जैसा पूरा browser खुद ही बहुत भारी पड़ता है, इसलिए Firefox Focus जैसे हल्के browser का इस्तेमाल करना पड़ता है; लेकिन extensions नहीं चलतीं, इसलिए uBlock Origin भी नहीं चलता और web experience और खराब हो जाता है
कुछ sites “standard” browser न होने पर शिकायत करती हैं और unusable हो जाती हैं, और कंपनियां इसके बजाय app install करने पर मजबूर करती हैं
पहले धीमे devices और connections के लिए simplified versions होते थे, लेकिन वे धीरे-धीरे गायब हो रहे हैं; शायद इसलिए कि JavaScript bloat के बिना ads और tracking network चलाना मुश्किल है
अंतहीन scroll होने वाले pages में random ads ठुंसे हों तो हालत खासकर और खराब होती है
हाल का उदाहरण: Nike webshop ने checkout के दौरान बेकार-सा error दिखाया, और support team ने बस “app try कीजिए” कहा
यूरोपीय airline booking sites भी बड़ी कंपनियों की websites के बार-बार टूटने के प्रतिनिधि उदाहरण हैं
2024 में लगभग असीमित resources होते हुए भी काम करने वाली website न बना पाना brand पर बुरा असर नहीं डालता—ऐसा सोचना अजीब है
उसे हर देश में काम करना था, और सबसे धीमे phones में से कई उसी कंपनी के products थे
वह तेज नहीं है, लेकिन websites इस्तेमाल करने में दिक्कत नहीं होती; नए hardware जितना instant नहीं है, पर पूरी तरह usable है
हालांकि uBlock Origin इस्तेमाल कर रहा हूं
सोचता हूं क्या ये Android devices सच में 11 साल पुराने base-spec MacBook से भी कमजोर हैं
Dan की इस मुख्य बात से मैं काफी सहमत हूं कि हमें दुनिया भर में inequality levels को ध्यान में रखना चाहिए, लेकिन Latin America और Southeast Asia जैसे middle-income देशों को भी शामिल करना चाहिए
उदाहरण के लिए कुछ users के पास महीने का data cap single-digit GB में होता है, और RAM/CPU 10 साल पहले के US flagship स्तर का होता है
ऐसा नहीं कि वे Discourse बिल्कुल इस्तेमाल न कर सकें, लेकिन experience अप्रिय रूप से धीमा होने की संभावना ज्यादा है
मुझे लगता है Dan ने CPU/RAM/disk में incremental improvements से participation measurable तरीके से बढ़ता है, यह मुख्यतः इसी user group की वजह से देखा
Dan के charts से दिखता है कि Itel P32 जैसे सबसे सस्ते devices इस्तेमाल करने वालों को incremental optimization से खास फायदा नहीं मिलता
जो मदद कर सकता है वह है पूरी तरह अलग client architecture: features और polish की कुर्बानी देकर जितना संभव हो उतना पतला code देना, यानी कोई वैकल्पिक lite/basic mode
हालांकि ऐसे approaches अक्सर सफल नहीं हुए, क्योंकि US developers performance के लिए क्या रखना और क्या हटाना है, इसका गलत अंदाजा लगाते हैं—यानी empathy problem फिर सामने आ जाती है
मौजूदा Discourse आखिर PhpBB या DLang forum से ऐसा क्या देता है?
mobile-friendly design छोड़ दें तो, किसी सामान्य दुनिया में responsive CSS की कुछ lines बदलना ही काफी होना चाहिए
महीने का 30GB data $3.64 का है, और minimum wage के हिसाब से करीब 4–6 घंटे के बराबर है
ज्यादा अहम बात यह है कि लोग Western countries की तरह data अंधाधुंध इस्तेमाल नहीं करते
cafés, restaurants, supermarkets, shopping malls—हर जगह free Wi‑Fi है, और ज्यादातर लोग menu से पहले Wi‑Fi password पूछते हैं
मैंने कभी देखा या सुना नहीं कि websites data बहुत जल्दी खत्म कर देती हैं
यह ऐसी चिंता लगती है जो उन लोगों ने बनाई है जिन्होंने विकासशील देशों में सचमुच रहकर नहीं देखा
यहां data खत्म होता है तो वजह TikTok, Instagram, Facebook पर videos देखना है, website bloat नहीं
computer के साथ install होने वाला bloatware भी इसी तरह है
हाल ही में नया laptop खरीदा, तो $50 की “tuning” offer की गई
कल्पना कीजिए कि कोई new car dealer ऐसा offer करे—अजीब लगेगा
signal खराब हो तो समस्या 10 गुना बढ़ जाती है
बात fixed headers और ads की वजह से screen का केवल एक-तिहाई हिस्सा दिखाने वाली complex UI की नहीं है, बल्कि ऐसी website के अपने size की है जिसे जैसे-तैसे तब तक मिलाया गया जब तक वह design document जैसी दिखने न लगे
ठीक से बनाई गई होती तो भी पहले से bloated site धीमे internet connection पर unusable हो जाती है, धीमे hardware की तो बात ही छोड़िए
बताई गई परिस्थितियों में internet इस्तेमाल करना कैसा लगता होगा, इसकी कल्पना करना मुश्किल है; बस उम्मीद है कि वे लोग अपनी bandwidth और devices के अनुकूल local sites इस्तेमाल करते हों और हमें झेलने वाला bloated garbage उन्हें न झेलना पड़े
ज्यादातर websites यातना जैसी हैं
यह दिलचस्प है कि ज़्यादातर लोग सिर्फ़ बॉस या डरावनी बड़ी कंपनियों को दोष देते हैं
डेवलपर यह मानने को तैयार नहीं होते कि कमज़ोर वेब प्रोग्रामर का भी एक बड़ा वर्ग है, जिन्हें efficiency की समझ कम है और वे समझना भी नहीं चाहते लगते
खराब software बनवाने वाले बॉसों या corporate leadership जितने ही, ये लोग भी वेब software की इस दुखद दुनिया के लिए ज़िम्मेदार हैं
जब “output” यानी HTML, CSS, JS के ठोस हिस्सों के बारे में पूछा जाता, तो वे ऐसे देखते जैसे कोई दूसरी भाषा बोली जा रही हो
वे JavaScript framework की दुनिया से आए थे और उसके नीचे बनने वाले output के बारे में ज़्यादा सोचा ही नहीं था
मेरी philosophy लगभग उलटी है: मैं पूछता हूँ कि हाथ से अच्छे से लिखी गई HTML+CSS+JS website जैसा नतीजा देने वाला न्यूनतम maintainable code क्या होगा
आम तौर पर output कई orders of magnitude छोटा हो जाता है
उन्होंने पूछा कि मैंने 1000 table rows को real-time filter करते हुए भी mobile पर तेज़ load और अच्छी तरह काम करने लायक कैसे बनाया; मैंने कहा कि पहले request में पूरा data भेज दिया और filter से match न करने वाले data को बस dynamically hide किया
webserver को बस वही cached data सबको देना था, और site पर चलने वाला JavaScript भी बस इतना ही था, इसलिए उन्हें यह अजीब तरह से तेज़ लगा
उनके framework-based solution में वैसी ही table row HTML देखें तो उसका 80% ऐसा boilerplate था जो इस्तेमाल ही नहीं होता था
web development बहुत जड़ हो गया है, और बहुत से लोग web technology के मूल से बहुत दूर भटक गए हैं
अगर मुख्य target US या EU users हों, तो low-end hardware और unstable low-bandwidth, high-latency connections के लिए बहुत ज़्यादा optimize न करना समझ में आ सकता है
लेकिन अगर target ग्रामीण अफ्रीका हो, तो aggressive optimization स्वाभाविक लगता था
फिर भी homepage 2MB की एक विशाल image load करता था, जिसे CSS से 500×1000 pixels तक घटाया गया था, और उसके बाद हालत और खराब थी
सटीक JS payload size याद नहीं है, लेकिन वह कई MB का था; ज़्यादातर हिस्सा traditional template-based backend app जैसा दिखता था, फिर भी frontend बेहद भारी था
concept अच्छा था इसलिए मैंने apply किया, लेकिन technology भयानक थी
मैं पहले interview stage तक भी नहीं पहुँच पाया, इसलिए नहीं जानता कि ऐसा क्यों था, लेकिन यह कल्पना करना मुश्किल है कि Western Europe के developers को इस पहलू में ठीक से अंदाज़ा था कि वे क्या कर रहे हैं
शुरुआत developer से नहीं, budget से होती है
अगर ऊपर के लोग technical समझ वाले या engineering background से नहीं हैं, तो वे आम तौर पर नई features के लिए budget रखते हैं, लेकिन maintenance और technical debt हटाने के लिए बहुत कम या बिल्कुल budget नहीं रखते
maintenance budget हो भी तो वह लगभग पूरी तरह सस्ती overseas maintenance team को दे दिया जाता है
feature team 6 महीने feature बनाती है, overseas maintenance team के साथ 1 घंटे का “KT session” करती है, और फिर code handover कर देती है
overseas team के पास feature की कुछ जानकारी होती है, लेकिन existing technical debt manage करने लायक नहीं; वे बस आग बुझी रहे, इतना संभालते हैं
organization में यह cycle 100~1000 बार दोहर जाए, तो frontend जो मूल रूप से अधिकतम 250,000 lines का होना चाहिए था, जल्दी ही 2 million lines का हो जाता है
नई feature team में सबसे अच्छे engineers आएँ, तब भी उन्हें पहले से बने box के भीतर ही काम करना पड़ता है
अगर mockup और elements match नहीं करते, तो mockup गलत हो सकता है, UI kit upgrade हुई हो सकती है, या existing UI kit refactoring की ज़रूरत हो सकती है, लेकिन उसके लिए budget नहीं होता
इसलिए team को कहा जाता है कि component copy करो और अपनी feature के हिसाब से modify कर लो
maintenance team को handover करते समय भी नई team existing feature work को छेड़ना नहीं चाहती, इसलिए उसे वैसा ही छोड़ देती है
non-technical management को फर्क पता नहीं चलता, और सालों तक teams नई features फिट करने के लिए copy/paste दोहराती रहती हैं, नतीजतन codebase में “Button” नाम के 50 से ज़्यादा components बन जाते हैं
अगर team में efficiency को महत्व देने वाला skilled developer हो, और वह अधिक efficient site के लिए push करे या शुरुआत से ही ज़्यादा efficient बनाए, तो page बेहतर हो सकता है
लेकिन ज़्यादातर मामला incentives का है
अगर management को परवाह नहीं है, तो programmer के efficiency बढ़ाने में समय लगाने के बजाय आधे समय में बस चीज़ चलाने लायक बनाकर backlog निपटाने को चुनने की संभावना ज़्यादा है
इसलिए धीमे devices कचरे से बचाने वाला बेहतरीन filter हैं
मैंने हाल ही में 6 साल पुराने LG flagship से नए Galaxy पर switch किया, और performance का अंतर बहुत बड़ा था
ऐसा नहीं होना चाहिए
launch के समय वह बहुत high-end device था, इतना पुराना भी नहीं है, और अब भी नया जैसा काम करता है
testing के लिए रखे Galaxy S9 भी वही संघर्ष करते दिखते हैं, तो यह सिर्फ़ मेरे phone की समस्या नहीं है
काश test में Amazon भी शामिल होता
मेरे अनुभव में Amazon website 4 साल से ज़्यादा पुराने mobile devices पर सबसे खराब में से है
अपेक्षाकृत recent high-end mobile hardware पर भी, जिन sites पर मैं नियमित जाता था उनमें यह अकेली site थी जो लगभग इस्तेमाल लायक नहीं थी
LineageOS के साथ Android 14 चलाने वाला OnePlus 5 मैं daily use में रखता हूँ, और non-gaming tasks में user experience काफी ठीक है
इस phone में 6GB RAM है, जो आज के mid-range phones जैसी है
मेरी अकेली शिकायत यह है कि battery बदलनी पड़ी और phone खोलना झंझट है
दूसरी तरफ, वही SoC लेकिन 4GB memory और Samsung modifications वाले stock Android 9 पर चलने वाला Galaxy S8 लगातार अटकता रहता है
2GB memory का फर्क असर डाल सकता है, लेकिन दोनों phones का अंतर रात-दिन जैसा है
मुझे नहीं पता Android 14 की memory management Android 9 से इतनी बेहतर है, या Samsung का धीमा और bloated software device को पीछे खींच रहा है
जो भी हो, यह चिढ़ाने वाली बात है कि कई companies पुराने और low-end devices पर test नहीं करतीं
अगर आप worldwide users को target कर रहे हैं, तो यह देखना चाहिए कि दुनिया के ज़्यादातर लोग latest flagship इस्तेमाल नहीं करते
असल में वह इतना खराब काम नहीं करता
बेशक, मैं सहमत हूँ कि ऐसा करने की ज़रूरत होनी ही नहीं चाहिए
हालांकि Firefox में सारे ad blockers इस्तेमाल कर रहा हूँ, शायद उससे मदद मिलती है
आज की तकनीक तकनीक से परिचित न होने वाले लोगों के प्रति भी बहुत उदासीन है
मुझे लगता है कि smartphone इसका सबसे अच्छा उदाहरण हैं
मैंने सच में बहुत से ऐसे लोगों को देखा है जो अपने device को मुश्किल से इस्तेमाल कर पाते हैं या बिल्कुल नहीं समझते, और उनके लिए यह सब काले जादू जैसा दिखता है
सबसे बड़ी समस्या यह है कि ऐसी gesture navigation पर जरूरत से ज्यादा निर्भरता है, जो दिखाई नहीं देती, इसलिए मानो उसका अस्तित्व ही नहीं
iPhone की gesture bar किसी तरह समझ में आ भी जाए, तो notification center या control center की अवधारणा नहीं होती
ये लोग मूर्ख नहीं हैं, और दूसरे क्षेत्रों में मुझसे कहीं बेहतर हो सकते हैं
तकनीक में समस्या मेहनत की कमी नहीं, बल्कि intuitive interface की कमी है
असली documentation देखने के लिए Apple site के documentation page तक जाना पड़ता है, और थोड़ा और खोजने पर एक page मिलता है जो बस मोटे तौर पर कुछ gestures दिखाता है जिन्हें और गहराई में जाने पर इस्तेमाल किया जा सकता है
कौन सा gesture कब और कहाँ इस्तेमाल करना है, इसके लिए एक-वाक्य के उदाहरण से ज्यादा कुछ नहीं है
यह भी सिर्फ operating system की बात है
मुझे संदेह है कि कितने apps अपने app में gesture features कैसे इस्तेमाल होते हैं, यह समझाने वाली documentation साथ देते हैं
https://support.apple.com/guide/iphone/learn-basic-gestures-...
वे निश्चित रूप से ऐसे devices के आसपास बड़े हुए थे
इसलिए मुझे नहीं लगता कि यह सिर्फ modern technology की गलती है
user को अपने लिए उपयुक्त design और interaction चुनने देने के बजाय, designer या product owner ऐसे व्यवहार करता है मानो वह जानता हो कि सभी users के लिए क्या सबसे अच्छा है
Android से आने के बाद यह मेरी सबसे बड़ी शिकायतों में से एक थी
back button कहाँ है, home button कहाँ है, और button खुद कहाँ हैं, समझ नहीं आता
मुझे Apple का minimalism obsession सच में नापसंद है, और जब यह phone मर जाएगा तो मैं Android पर लौट जाऊँगा
यह लेख desktop पर 48 साल के मेरे लिए मूल रूप से पढ़ना मुश्किल है
developer tools में
bodyमें नीचे वाला जोड़ने पर यह पढ़ने लायक हो गयाfont-size: 18px;line-height: 1.5em;max-width: 38rem;इससे दिखता है कि यह कितना readable और सुंदर हो जाता है
मैं Dan Luu के लेख बहुत पढ़ता हूँ, लेकिन हर बार मुझे इसी तरह बदलना पड़ता है
गंभीरता से कहूँ तो, technologists, page को अधिक readable बनाने में सिर्फ 64 bytes और लगते हैं
वह page लगभग ठीक था, बस CTRL + से zoom करना पड़ा
वह page लगभग pure text है और interaction भी बहुत कम है
आपके पास अपने use case के लिए समाधान है, और मेरे पास मेरा समाधान है
दृष्टिबाधित reader भी अपने समाधान से access कर सकता है
source simple होने की वजह से accessibility solutions भी reasonably simple हो जाते हैं
मुझे लगता है Dan प्रभावी ढंग से communicate करना जानता है
यानी चीजों को simple रखना, और यह assume न करना कि उसे जरूर आँखों से पढ़ा जाएगा
आप display को अपने purpose के हिसाब से आसानी से बदल सकते हैं
अगर यह display style पसंद नहीं है, तो पढ़ने से पहले खुद reformat कर सकते हैं
एक तरह से Dan ने message को आसानी से manipulate किए जा सकने वाले simple text stream के रूप में दिया है
Luu के readers कुल मिलाकर शायद अपेक्षाकृत unstyled approach पसंद करते हैं
user अपनी preference के अनुसार window size, font size, colors आदि बदल सकता है
हर file के लिए अलग-अलग बदलना जरूरी नहीं होना चाहिए, और कई files पर लागू होने वाली user CSS file जोड़कर इस्तेमाल करने की अनुमति होनी चाहिए
यह Firefox के default settings page में है
अगर website
font-size: 18px;force करती है, तो browser में बड़ा font चुनने वाले user के लिए text उल्टा छोटा हो सकता हैहालांकि browser का reader mode भी इस्तेमाल किया जा सकता है, और developer tools में कई steps करने के बजाय यह एक click में हो जाता है
संदर्भ के लिए, Raspberry Pi 3 पर YouTube इस्तेमाल नहीं किया जा सकता
पिछले 1 साल में ऐसा हुआ है; उससे पहले लगभग 10–15FPS पर वीडियो “देखे” जा सकते थे, जो वर्कशॉप में repair videos देखने के लिए पर्याप्त था
जब Raspberry Pi Model B, यानी पहला मॉडल, लॉन्च हुआ था, तब वह repository में मौजूद 1080p वीडियो चला सकता था, YouTube देख सकता था और गेम भी खेल सकता था
YouTube क्या कर रहा है, और बाकी services क्या कर रही हैं, समझ नहीं आता
अगर जलवायु संकट और बदलाव को गंभीरता से लेना है, तो Google और Meta की ऐसी चालों को बहुत सख्ती से जांचना चाहिए
मुनाफे के लिए CPU cycles जलाना—यानी तुरंत अंदाज़ा लगाऊं तो ad tech की वजह से low-power devices पर YouTube का खराब हो जाना—मीडिया में कड़ी आलोचना का विषय होना चाहिए, और भले ही पूरा user experience खराब हो, हमें अधिक efficient services इस्तेमाल करनी चाहिए
Pi3 में x264 hardware acceleration है, लेकिन YouTube ने कुछ समय पहले से दूसरा codec इस्तेमाल करना शुरू कर दिया था
2021 के शुरुआती Intel MacBook Air पर भी मध्यम load में वीडियो randomly रुक जाते हैं, जो पहले नहीं होता था
climate change हल करने के लिए उस हिस्से पर हमला करना plastic straws या plastic bags पर ban लगाने जितना ही बेतुका है
एक और संदर्भ बिंदु के तौर पर, 10 साल पहले का YouTube उस hardware पर भी पूरी तरह ठीक चलता
असली दोषी कुल मिलाकर web bloat है, और ज्यादा specific रूप से JS में आम हो चुके abstraction monsters हैं
जो लोग “climate crisis” में बिल्कुल विश्वास नहीं करते, उनसे भी यह कहा जा सकता है कि समय के साथ craftsmanship और quality गायब हो गई है, जिससे यह अव्यवस्था पैदा हुई
इसलिए मुझे लगता है कि political spectrum के हर हिस्से में लोग इस विषय पर सहमत हो सकते हैं
यह Consumer Reports के तरीके से हो सकता है, या Nielsen ratings की तरह काम करने वाला कोई add-on हो सकता है
वह Discourse वाला व्यक्ति इस बात का typical example है कि product को उस दुनिया के हिसाब से design किया जा रहा है जिसमें वह चाहता है कि वह मौजूद हो, न कि उस वास्तविक दुनिया के हिसाब से जिसमें हम रहते हैं
Qualcomm SoC वाले devices अरबों की संख्या में मौजूद हैं, आगे भी मौजूद रहेंगे और बनते-बिकते रहेंगे
जितनी भी शिकायत कर लें, यह नहीं बदलेगा
इसे स्वीकार करना होगा और उन devices के लिए optimize करना होगा
उन devices के users को developer की शिकायतों से कोई मतलब नहीं; software crash हुआ तो वे बस इसे अक्षम software developer मानेंगे
आम तौर पर Dan Luu के लेख पसंद आते हैं, लेकिन यह लेख निशाने से चूकता लगा
LCP/CPU table अच्छा था, लेकिन उसके बाद बात armchair psychology जैसी हो गई
Discourse founder की कुछ random comments के आधार पर पाठक से software engineers के attitude की कल्पना करने को कहा गया
Knuth को भी single-core बनाम multi-core performance वाले बयान और Itanium से जुड़े बयान के आधार पर घसीट लिया गया, जबकि वह पुरानी academic debate का मुद्दा है
लेख बहुत ढीला लगा, और internet fights पर टिका होने की वजह से ठीक से टिक नहीं पाता
Discourse founder की बात बस बहुत explanatory है
अगर आपने हाल का web इस्तेमाल किया है, तो वह कल्पना से परे bloated हो चुका है, यहां तक कि Google अब Largest Contentful Paint 2.4 seconds को तेज कहता है: https://blog.chromium.org/2020/05/the-science-behind-web-vit...
यह 4 साल पुराना data है, इसलिए अब शायद हालत और खराब हो गई हो
desktop पर YouTube के CSS 2.5MB load करने से लेकर Vercel founder द्वारा जिस site को बहुत तेज बताकर शेखी बघारी गई, वह थोड़ी-सी throttling पर load होने में 20 seconds लेती है—उदाहरण ढूंढने दूर जाने की जरूरत नहीं: https://x.com/dmitriid/status/1735338533303259571
frontend के लिए किसी simple API service का response time 500ms हो तो भी कोई उसका मजाक नहीं उड़ाता
यह भी सवाल है कि कितने engineers को अपनी cloud cost का पता होता है और वे उसकी परवाह करते हैं
आज की parallelism software के 90% में इस्तेमाल नहीं होती, सिवाय specialized use cases या उसी single-thread program को कई data items पर चलाने के
programming languages और hardware दोनों fine-grained parallelism को ठीक से support नहीं करते, और classic software को parallel approach से तेज बनाना बहुत मुश्किल है
Luu ने तो बल्कि काफी उदार होकर लिखा है
Knuth की बात कुछ वैसी थी जैसे दशकों तक चले free lunch के खत्म होने पर शिकायत करना
Jeff Atwood को बस example के तौर पर चुना गया है
बड़े follower base वाले मशहूर web development thinkers लगातार इसी तरह के नजरिए उगलते रहते हैं, और उनके बहुत से followers उसे बस मान लेते हैं
सभी कंपनियों ने परवाह करना बंद कर दिया है, खासकर Google और Apple जैसी कंपनियों ने, जो कभी standards और अच्छे web design practices की अगली कतार में थीं
Google ने हाल ही में HTML Gmail बंद कर दिया, जो 2008 के 256MB RAM वाले Android फोन और पुराने Firefox पर भी तेज़ी से और अच्छी तरह चलता था
जाहिर है नया JavaScript वाला bloated version browser को मार देता है
यह एक चरम उदाहरण है, लेकिन low-end फोन में 2GB RAM होती है, और अब ऐसे devices पर web browse करते हुए reasonable performance की उम्मीद करना मुश्किल है
mobile web बेकार है, और यह users को “native” apps की ओर धकेलने के लिए जानबूझकर किया गया है
क्योंकि Apple और Google जैसी कंपनियों के लिए data collection और ads दिखाना आसान हो जाता है
उनकी sites mobile पर बहुत खराब हैं, और Decathlon तो high-performance न होने वाले desktop पर भी भयानक है
लेकिन वे app को खास तौर पर promote भी नहीं करते, इसलिए लगता है कि इसे बस अक्षमता ही मानना चाहिए
लगता है developers सब कुछ केवल backbone से जुड़े high-end devices पर ही test करते हैं
RIP Google
नया Reddit इस्तेमाल करने लायक नहीं है, और old Reddit बहुत पुराना हो चुका है
Twitch chat और video stream issues की वजह से मुश्किल से usable है
सूची लंबी होती जाती है
अगर आपके पास final formula पहले से है, तो हर बदलाव job security के लिए किया गया खराब बदलाव बन जाता है
किसी दिन इस मिट्टी के ढेले पर मौजूद बंदर समझेंगे कि jobs और money असल में मौजूद नहीं हैं, लेकिन तब तक बहुत देर हो चुकी होगी
नहीं, वह समय अभी है
RIP Humans