Svelte से बना UI घनत्व प्रयोग
(cybernetic.dev)- Grid एक ऐसा प्रयोग है जिसमें उपयोगकर्ता UI density को समायोजित करके देख सकते हैं, और इसका नया version अभी बन रहा है
- इसके बाद वाला Matrix और अधिक UI density के लक्ष्य के साथ S&P 500 और NASDAQ-100 correlation matrix दिखाता है
- S&P500 के constituent stocks चुनने पर यह 2.5 लाख से अधिक cells और 3 करोड़ से अधिक data points के correlations को संभालता है
- कुछ features नीचे दिए गए preview में शामिल नहीं हैं; उन्हें समझने के लिए Matrix full-screen UI खोलना होगा
- साइट की सामग्री केवल जानकारी देने के उद्देश्य से है, इसे investment advice या securities खरीदने-बेचने की recommendation नहीं माना जा सकता
Grid से Matrix तक का UI density experiment
- Grid user-configurable UI density का एक experimental project है, और इसका नया version बन रहा है
- Matrix UI density को और आगे बढ़ाने वाला एक प्रयोग है, जो बड़े पैमाने पर S&P 500 और NASDAQ-100 correlation matrix उपलब्ध कराता है
- नीचे दिए गए preview में Matrix का कुछ हिस्सा देखा जा सकता है, लेकिन कुछ features केवल Matrix के full-screen UI में ही उपलब्ध हैं
Matrix जिन data scale को संभालता है
- यदि S&P500 constituent stocks को dataset के रूप में चुना जाए, तो इसमें 250,000 से अधिक cells शामिल होते हैं
- यह 30,000,000 से अधिक data points के correlations की गणना करता है
- Matrix experiment के About page पर अतिरिक्त जानकारी देखी जा सकती है
- home page वर्तमान में उपलब्ध सभी data visualization experiments का overview देता है
Preview में उपलब्ध control elements
- Dataset selection options में S&P500 और NASDAQ100 हैं
- Horizon में 1M और 1Y चुने जा सकते हैं
- data preprocessing option के रूप में Detrend Data checkbox है
- sorting से जुड़े options इस प्रकार हैं
- Sort By: Cluster, AvgCorr, MedCorr, Name
- Cluster Method: Avg, Complete, Ward
- Sort Direction: Asc, Desc
- preview UI में Minimap, Search, Rolling Correlation Chart, cell hover और click guidance शामिल हैं
- दिखाए गए state में Symbols 101, Correlations 5,050, Cells 10,201 दिखाई देते हैं
उपयोग करते समय ध्यान देने योग्य बात
- वेबसाइट की सामग्री केवल जानकारी देने के उद्देश्य से है; यह investment advice या securities खरीदने-बेचने की recommendation नहीं है
1 टिप्पणियां
Hacker News की राय
आजकल मैं sorting और display के बीच experiments कर रहा हूं। अगर Jira से लाया गया कोई issue blocked है, तो सोचता हूं कि sorting/filtering के लिए अलग boolean column चाहिए या किसी दूसरे column (जैसे elapsed time) पर सिर्फ style लगा देना काफी है। 100 से ज़्यादा rows वाली table में एक cell के orange, red, bold red values से ही यह पहचाना जा सकता है या नहीं कि अभी किस item पर action चाहिए, यह देख रहा हूं
इस experiment के table view में जो चीज़ें पसंद आईं वे हैं real-time updates, कई columns पर stable sorting, mouse over पर row highlight, पीछे के zeros को fade करना, overdone न लगने वाले colors (मूल रूप से करीब तीन pairs), और 24H Low/High column में sparkline जैसे graphs। जो कमियां लगीं वे हैं लगभग न दिखने वाला horizontal scrollbar, graph लगा हुआ चौड़ा vertical scrollbar, 24H Low/High असल में कैसे sort होता है यह unclear होना, और filtering न होना। मेरी reports से तुलना करने पर यह भी दिखता है कि values की width में variation बहुत बड़ा नहीं है। सिर्फ numbers के बजाय text मिला हो तो column width manage करना ज़्यादा मुश्किल होता है
helix पढ़ने में मुश्किल और बहुत उपयोगी नहीं लगा। ऐसे graphs उस periodic data के लिए बेहतर हैं जिसकी period पूरे data range से बहुत छोटी हो
cube ने curiosity जगाई, लेकिन उसके फायदे साफ नहीं दिखे। आम तौर पर 3D visualization, उसी चीज़ को तीन 2D graphs (यहां तीन scatter plots) में दिखाने की तुलना में कम effective होती है। 3D से 2D में project होने पर distortion पैदा होता है, और position comparison को लेकर इंसानों की basic sense भी उलझ जाती है। उत्सुकता है कि यहां intended effect क्या था
past को जितना हो सके natural तरीके से देखने देते हुए recent data को बड़ा दिखाने का तरीका सचमुच genius है। यकीन करना मुश्किल है कि यह idea पहले क्यों नहीं आया
Google ने जिस "Material Design" को practically दफना दिया, उसके बाद bloatedness, white space, excessive spacing और “airiness” जैसी बर्बादी बहुत ज़्यादा हो गई थी
सपना तो देख ही सकते हैं
कंपनियां हर platform के लिए दो बहुत अलग UI design नहीं करना चाहतीं, और आम तौर पर users चाहते हैं कि एक platform पर सीखा हुआ usage दूसरे platform पर भी चले
accessibility भी तब आसान होती है जब design में बड़े fonts के लिए room हो और precise motor control की जरूरत न हो। अपने पिता को साफ तौर पर उम्रदराज़ होते देखते हुए, मुझे समझ आ रहा है कि जो apps spacious लगते हैं वे भी इस नजरिए से काफी नहीं हैं
जब तक वे forces नहीं बदलते जिन्होंने शुरुआत में हमें उस दिशा में धकेला, मुझे समझ नहीं आता कि information-dense design की तरफ कैसे लौट सकते हैं
ये screens single-size fixed-width font इस्तेमाल कर रही हैं। 1980s के text mode UI जैसा retro feel है, और अगर वही intended constraint था तो ठीक है
लेकिन अगर typeface और sizes में सही hierarchy रखी जा सके, तो screen में कहीं ज़्यादा information डाली जा सकती है
basic example के तौर पर, “About” box अभी phone screen का लगभग 1/4 हिस्सा घेरता है। छोटे proportional-width font में बदलने पर phone पर readable रहते हुए भी यही information आधी जगह में आ सकती है
Edward Tufte जैसे बेहतरीन information designers के काम देखें तो वे अक्सर typography को सही सेट करने पर बहुत ध्यान देते हैं। उनकी किताबें visualizations के बाहर के body text में भी कई typography elements और scales इस्तेमाल करती हैं
उत्सुकता है कि focus performance, visualization, या किसी और चीज़ से जुड़ी density पर है
निश्चित रूप से उस से काफी प्रभावित महसूस होता है
React से मिलती-जुलती UI बनाने की कोशिशें खराब performance की वजह से ज़्यादातर नाकाम रहीं। स्वीकार्य rendering performance पाने के लिए data table में React को पूरी तरह bypass किया गया। फिर भी browser rendering खुद असहनीय रूप से धीमी न हो जाए, इसके लिए हर row में DOM elements की संख्या न्यूनतम रखनी पड़ी
WinForms अब भी शायद मेरा सबसे पसंदीदा UI framework है। यह निश्चित रूप से एक भोंडा tool है, लेकिन इसे मनचाहे तरीके से इस्तेमाल किया जा सकता है। बेहद flexible, इस्तेमाल में काफ़ी आसान, काफी तेज़, और बुरी तरह बदसूरत
कोई भी arbitrary Object डाल दें, यह बस काम करने लगता है। PropertyGrid के अंदर PropertyGrid nest कर सकते हैं, object collections तक expand कर सकते हैं, controls को जितनी गहराई तक चाहें nest करके बना सकते हैं। UI जिस object से जुड़ता है, उसकी internal structure को छूने या उसकी चिंता करने की ज़रूरत नहीं होती (हालाँकि सीमाएँ हैं)
मेरे लिए WinForms UI framework का Platonic ideal है। अगर मैं design करता, तो शायद बिल्कुल ऐसा ही बनाता
information density मुझे सचमुच बहुत पसंद है
मैं पुराने अखबार collect करता हूँ, और उस समय information density कहीं ज़्यादा थी। अगर आप कोई शानदार coffee table book ढूँढ रहे हैं, तो "nytimes complete front pages" search करके देखें। fold के ऊपर सचमुच बहुत सारी मुख्य जानकारी होती थी
मेरे हिसाब से high information density, high intelligence जैसी है। sorting priority को सही ढंग से तय करना बहुत मूल्यवान और महत्वपूर्ण है
पिछले कुछ सालों में web उल्टी दिशा में जाता दिखा, इसलिए अच्छा लगता है कि अब भी कुछ लोग दूसरी तरफ़ नाव चला रहे हैं
एक और उदाहरण के तौर पर, मेरा blog zoom in/out के ज़रिए लगभग 20 साल की posts एक साथ दिखाने के लिए design किया गया है (https://breckyunits.com/)
साथ ही, high information density वाली cheatsheets को promote करने और उन्हें बनाना आसान बनाने का काम भी जल्द publish करने वाला हूँ। नाम Leet Sheet रखने का मन बना रहा हूँ (https://pldb.io/blog/leetSheets.html)
यह मेरे vision और visual comprehension के बारे में कुछ साबित करता है, इसलिए दिलचस्प है
"Grid" view पूरी तरह ठीक है। "Table" view इस्तेमाल करने लायक नहीं है
इस तरह लंबी line के पार scan करते समय मैं अक्सर खो देता हूँ कि किस line पर हूँ। मुझे एहसास हुआ कि ऐसा शायद gaze move करते समय right eye dominance के हल्के shifting की वजह से होता है। मेरी दोनों आँखों की alignment subtly mismatch है, जिसके लिए prism correction ले रहा हूँ, और prism correction में हाल की change से यह स्थिति बेहतर हुई है
इस presentation में low/high columns की marker positions accidental row shifts (जो हमेशा ऊपर की ओर होते हैं) को और बदतर बना देती हैं
मेरे लिए बेहतर होगा कि line graph cell का background हो या cell के नीचे हो। rows में subtle striping भी चाहिए
एक तेज़ और proficient reader के तौर पर, जिसे कोई visual या cognitive disability नहीं है, सबक यह है कि ऐसे tables में यह मानकर न चलें कि चौड़ी line के पार information रखना ठीक है। users को horizontal scan करते समय row को पकड़कर रखने के cues देने चाहिए। पतली separator lines काफी नहीं हैं, और mouse-over background change touch devices पर काम नहीं आता
अभी की स्थिति में, जब मैं ऐसा कुछ देखता हूँ तो window को maximize से हटाकर उसकी height घटा देता हूँ और scroll करते हुए window के bottom या किसी दूसरी window की title bar को लगातार “edge” की तरह इस्तेमाल करके data देखता हूँ। iPad इस्तेमाल करते समय मैंने कभी-कभी कागज़ या card भी इस्तेमाल किया है
पहला, जैसा बताया गया, mouse hover या highlighted row और बाकी rows के बीच contrast बहुत कम है। मेरी eyesight ठीक है, फिर भी देखना मुश्किल है
दूसरा, readability के लिए table rows या columns में दो या अधिक high-contrast colors से striping होनी चाहिए। उदाहरण के लिए सफेद, काला, सफेद, काला। यह table शुरू से आखिर तक पूरा काला है
तीसरा, table borders का contrast इतना कम है कि वे लगभग दिखते ही नहीं। single row/column color के साथ मिलकर यह readability को और खराब करता है
संक्षेप में, table खुद ठीक है, colors बेकार हैं
यहाँ UI elements बहुत शानदार दिखते हैं, लेकिन यह भी जानना चाहूँगा कि experiment क्या था और कौन-से conclusions निकले
सिर्फ़ interactive elements की संख्या के हिसाब से देखें, तो मेरे अनुभव में (Svelte 4) interaction से पहले rendering अक्सर समस्या पैदा करती है। यानी element interactive है या नहीं, इससे फर्क नहीं पड़ता—उतनी ही संख्या के elements पर performance problem आती है। जैसे इस page के कुछ हिस्सों में implement किया गया है, solution canvas पर जाना है
Svelte canvas पर भी draw कर सकता है। Threlte भी है: https://threlte.xyz/
Svelte की internal performance के संबंध में, मुझे नहीं लगता कि unnecessary re-rendering रोकने के लिए React जितनी ज़रूरत Jotai जैसी चीज़ की पड़ती है
Svelte को Phaser जैसे शानदार WebGL framework के साथ मिलाने पर बहुत तेज़ graphics rendering संभव है: https://phaser.io/news/2024/03/official-phaser-3-and-svelte-...
वह helix chart सचमुच आकर्षक है। असल में इस्तेमाल किया जा सकेगा या नहीं, यह पक्का नहीं, लेकिन देखने में बेहद शानदार है
अगर यह एक प्रयोग था, तो निष्कर्ष क्या था?