2 पॉइंट द्वारा GN⁺ 2025-09-03 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • iPhone के अलार्म ऐप में समय चुनने का तरीका गोल डिज़ाइन नहीं है
  • ऊपर से देखने पर यह rotation-style interface जैसा दिखता है, लेकिन वास्तव में यह एक लंबी list से बना है
  • यह उपयोगकर्ता को स्क्रॉल करते समय ऐसा महसूस कराता है मानो इसका कोई अंत न हो
  • डेवलपर्स और UX डिज़ाइनरों के लिए यह UI illusion के एक उदाहरण के रूप में ध्यान खींच रहा है
  • इसकी वास्तविक implementation को समझना app development के लिए उपयोगी संदर्भ बन सकता है

iPhone अलार्म ऐप के time picker की संरचना

  • iPhone के अलार्म ऐप में समय सेट करने वाला picker सतह पर देखने में गोल (scroll wheel) जैसा लगता है
  • लेकिन वास्तव में यह picker शुरुआत और अंत वाली एक बहुत लंबी list के रूप में implement किया गया है
  • जब उपयोगकर्ता स्क्रॉल करता है, तो यह ऊपर या नीचे लगातार घूमते रहने जैसा भ्रम देता है
  • इस तरह की implementation का मकसद सीधे circular interface लागू किए बिना भी वैसा ही user experience देना है
  • डेवलपर्स ने infinite-scroll style list का उपयोग करके ऐसा user interface डिज़ाइन किया है जो गोल जैसा दिखाई देता है

डेवलपर और UX डिज़ाइन के नज़रिए से

  • इस तरीके से सिर्फ एक साधारण list के जरिए भी जटिल circular interface की जगह ली जा सकती है
  • वास्तव में list के दोनों सिरों पर विपरीत दिशा में जाना संभव नहीं होता, लेकिन items इतने अधिक होते हैं कि उपयोगकर्ता के लिए उसकी सीमा तक पहुँचना कठिन हो जाता है
  • इस तरह का डिज़ाइन UI illusion का उपयोग करके उपयोगकर्ता को अपेक्षित अनुभव देता hai
  • app development में सिर्फ list implementation के जरिए circular उपयोगिता और usability हासिल करने का यह एक उदाहरण है

निष्कर्ष

  • iPhone अलार्म ऐप का time picker एक लंबी list को घुमाने के तरीके से circular effect देता है
  • यह डेवलपर्स और UI/UX डिज़ाइनरों को सहज और कुशल interface design की दिशा दिखाता है

1 टिप्पणियां

 
GN⁺ 2025-09-03
Hacker News राय
  • अलार्म ऐप में सचमुच का परेशान करने वाला bug (या पता नहीं यह feature है) यह है कि AM/PM सेटिंग ठीक से लागू होने के लिए आपको time dial के उछलकर रुकने तक इंतज़ार करना पड़ता है। अगर बस swipe करके save दबा दें, तो पिछली setting वैसी की वैसी रह जाती है, और फिर महत्वपूर्ण 7am अलार्म 7pm पर ही सेट रह जाता है, जिससे दफ़्तर के लिए देर हो जाती है
    • आजकल तो लगता है लोग menu coding भी ढंग से नहीं कर पाते। उदाहरण के लिए macOS Reminders ऐप की main list screen में time dropdown menu चुनते समय, अगर आप मनचाहे समय पर mouse button छोड़ें और flash animation चल रही हो, फिर cursor को हल्का सा ऊपर-नीचे हिलाएँ, तो अचानक कोई दूसरा समय चुन लिया जाता है। यह macOS में 1984 से चले आ रहे व्यवहार से बिल्कुल मेल नहीं खाता। मैंने कुछ साल पहले bug report किया था, लेकिन शायद इससे ज़्यादा ज़रूरी काम उनके पास होंगे
    • इस bug की वजह से कई बार परेशान होने के बाद मैंने आखिरकार अपने सभी devices पर पूरी तरह 24-hour format अपना लिया। रोज़ इस्तेमाल होने वाले interface के हिसाब से iOS का vertical scroll dial UI usability और aesthetics दोनों में बहुत खराब है। फिर भी, dial के बीच में tap करने पर number keypad आ जाता है, यह feature आ जाना सच में राहत की बात थी। keypad से समय दर्ज करने का तरीका बहुत अच्छी तरह डिज़ाइन किया गया है और काफ़ी efficient है
    • मुझे लगा था यह सिर्फ़ मेरे साथ है, लेकिन ऐसा नहीं निकला। इतना लंबा समय बीत गया और Apple अब तक एक ढंग का alarm भी नहीं बना पाया
    • Android से iPhone पर आने के बाद यह मेरी सबसे बड़ी समस्या रही है। लेकिन इससे भी ज़्यादा गुस्सा इस बात पर आता है कि जब आप developers या programmers से ऐसे issues की बात करते हैं, तो वे हमेशा "शायद तुम सही से नहीं कर रहे", "इतनी बड़ी बात भी क्या है?" जैसी बात कहकर टाल देते हैं। (अरे, महत्वपूर्ण है, तभी तो मैं oversleep नहीं करना चाहता, और तभी ऐसी बातचीत हो रही है!) हम 100k डॉलर से ज़्यादा की salary लेते हैं और ऐसे छोटे bugs भी जल्दी ठीक नहीं कर पाते, यह बहुत निराशाजनक है। थोड़ा गर्व भी होना चाहिए और आसान bugs को बेझिझक ठीक करना चाहिए। फिर भी, इस दुनिया में UX लगातार और जटिल होता जा रहा है। सादगी की बात होती है, लेकिन alarm और timer के UI अलग हैं और सिर्फ़ देखने में मिलते-जुलते हैं, या duplicate calendar events जिन्हें एक line regex से हटाया जा सकता है वे खुलेआम पड़े रहते हैं, या same-name contacts ढूँढ नहीं पाते, manual merge process छिपी रहती है, और बड़ी मुश्किल से merge करने पर एक extra birthday event जुड़ जाता है जिसे हटाया भी नहीं जा सकता। (यह मेरा असली अनुभव है।) मुझे लगता है हम सब मिलकर software को और खराब बना रहे हैं। AI productivity बढ़ाकर jobs नहीं ले रहा, बल्कि हमने quality bar ही बहुत नीचे गिरा दी है। अब तो सिर्फ़ इस बात पर हैरानी होती है कि चीज़ें Perl या Brainfuck में नहीं लिखी जा रहीं
    • इसी लिए sleep/wake alarm feature है। इसका UI सच में अच्छा है। इसमें weekly schedule सेट कर सकते हैं, और alarm time adjust करते समय circular clock UI यह भी visually दिखाता है कि आप कितना और सो सकते हैं
  • कम-से-कम 10 साल पहले अच्छे smartphone alarm apps ऐसे दिखते थे। Nokia N9 alarm clock UI देखें। और इस पर एक Hacker News discussion भी है
    • Google Clock ऐप भी इसी तरह की सुविधा देता है। main screen पर slider, circular time picker (मुझे व्यक्तिगत रूप से पसंद नहीं), और alarm में कितना समय बचा है यह बताने वाला toast notification होता है। बस daily/disabled option नहीं है
    • Android clock ऐप काफ़ी अच्छा है और Nokia N9 alarm ऐप जैसा ही दिखता है। इस साल की शुरुआत में iPhone पर switch किया, लेकिन तरह-तरह की UI समस्याएँ बहुत खलती हैं। धीमे घूमने वाले dial से तंग आ चुका हूँ, और alarm सेट करने के बाद Android का "alarm तक x घंटे बचे हैं" जैसा confirmation message बहुत याद आता है। खासकर number spinner तो सच में बहुत खराब है। Hilton ऐप में जब भी बच्चों की उम्र सेट करनी पड़ती है, यह number dial घुमाते-घुमाते चिढ़ हो जाती है। समझ नहीं आता iOS की reputation जादुई, आनंददायक और intuitive होने की कैसे बन गई। अब फिर से Pixel पर लौटने का मन करता है
    • मज़ेदार बात यह है कि iOS में Health ऐप के ज़रिए खुलने वाली sleep schedule setting screen, Nokia N9 alarm clock से बहुत मिलती-जुलती दिखती है
    • एक सही मायने में अच्छा smartphone होना बहुत महत्वपूर्ण है। Nokia ने अपने सबसे बेहतरीन products के तुरंत बाद business छोड़ दिया, यह सच में अफ़सोस की बात है
    • आजकल बहुत से युवा analog clock पढ़ना नहीं जानते, इसलिए अगर आप mass audience को target कर रहे हैं तो इस बात पर भी विचार करना चाहिए
  • कम-से-कम minutes/seconds को छोटी list में सेट किया जा सकता, ताकि एक बार में जल्दी से 00 तक पहुँचा जा सके। PalmOS के BigClock ऐप में हर digit के ऊपर tap करने पर वह 1 बढ़ता था और नीचे tap करने पर 1 घटता था, जिससे बहुत तेज़ और predictable input मिलता था। scroll wheel के bounce जैसे visual feedback के बिना भी मनचाहा समय चुनना आसान था। BigClock परिचय1, BigClock परिचय2
    • बस keyboard होनी चाहिए (on-screen keypad भी चलेगी, physical keypad भी), ज़्यादा से ज़्यादा चार input में काम ख़त्म
  • iOS Clock ऐप सच में बहुत खराब है। अब iOS 26 में AlarmKit आने वाला है, इसलिए अपना custom alarm ऐप बना सकूँगा, यह सोचकर बहुत खुशी है। "repeat alarm को बनाए रखते हुए सिर्फ़ कल के लिए बंद करना" जैसी बिल्कुल सामान्य सुविधा तक नहीं थी, और calendar-linked alarms जैसी चीज़ें भी नहीं थीं
    • अगर आप sleep feature इस्तेमाल करें, तो सामान्य alarm की जगह यह "सिर्फ़ कल के लिए बंद" सुविधा कई सालों से पहले ही मिल रही थी। sleep schedule बदलते समय यह पूछता है कि पूरी schedule बदलनी है या सिर्फ़ एक बार बंद करना है
    • Apple का सीधे alarm app बनाने की permission खोलना security की बड़ी खामी जैसा लगता है
    • sleep schedule इस्तेमाल करने पर आप सिर्फ़ अगला alarm skip कर सकते हैं, या दिन के हिसाब से अलग wake-up times रख सकते हैं। यह सब सामान्य alarm वाली ही जगह से सेट किया जा सकता है
    • मुझे यह इतना बुरा नहीं लगता, बल्कि इसकी simplicity एक default app के रूप में समझ में आती है
  • सोचता हूँ क्या यह code लिखे जाने के बाद सच में कभी दोबारा देखा ही नहीं गया, या rewrite के बाद भी बचा रह गया। पुराने iPhone alarms की बदनामी थी कि timezone गड़बड़ हो जाए या daylight saving time बदले तो वे ठीक से नहीं बजते थे iPhone alarm bug – timezone/daylight saving issue
    • यह timezone या Clock ऐप की समस्या से अलग है। मुझे लगता है यह limitation system-level UI component UIPickerView में पैदा होती है। मेरे ऐप में भी ऐसा ही एक "bug" है
    • मुझे लगता है यह organic growth का नतीजा है। शुरू में शायद यह AZ list रही होगी, लेकिन फिर किसी ने इसे rotational बनाना चाहा, और UI level पर सबसे आसान समाधान finite list को कई बार repeat करना रहा होगा, इसलिए यही तरीका बना रह गया। उदाहरण के लिए HTML में finite list बनाना बहुत आसान है, लेकिन virtualized JS infinite list को framework बदलते हर बार फिर से port करना पड़ेगा (जैसे SwiftUI पर जाना)
    • एक ही कुछ components को दोहराकर circular, infinite list बनाना इतना कठिन है कि सीधे (0..60).times(50).flatten() जैसा डरावना code, 1% effort में 99% problem हल कर देता है। अगर QA में issue सिर्फ़ list के आख़िर तक scroll करने पर दिखे, तो Product ही शायद इसे issue बनाएगा। किसे फ़र्क पड़ता है
  • custom widget development से बचने के लिए यह एक शानदार hack है। किसी random engineer के लिए तालियाँ
  • 10 साल से ज़्यादा समय तक यह तरीका छिपा रहा। अब असली समाधान के बारे में सोचना चाहिए
    • मुझे लगता है pragmatism, perfectionism से बेहतर है
  • मुझे इसमें एक और दिलचस्प बात यह लगती है कि timer और alarm की implementation एक-दूसरे से काफ़ी अलग है। alarm में minutes cycle होते हैं, लेकिन timer में नहीं। समझ नहीं आता कि interface मिलता-जुलता होने के बावजूद इन्हें अलग तरह से क्यों बनाया गया। यह circular भी नहीं है, जो और भी अजीब है। मुझे यह बेवजह complexity बढ़ाने वाला code लगता है
  • यहाँ comments में बहुत लोग iOS alarm bugs से तंग आने की बात कर रहे हैं, तो ऐसे लोगों के लिए एक tip छोड़ता हूँ। Sharp कई सस्ते और अच्छे alarm clocks बेचता है। 5–12 डॉलर में आप इन bugs से हमेशा के लिए छुटकारा पा सकते हैं। बोनस यह है कि सुबह सबसे पहले जिस device को हाथ लगाएँगे वह दिमाग़ खराब करने वाला smartphone नहीं होगा। मेरे हिसाब से Walmart से खरीदा हुआ Sharp Twin Bell model सबसे महँगा था, फिर भी सिर्फ़ 12.63 डॉलर का
    • मैं भी वही model इस्तेमाल करता हूँ। पुराने digital alarm में जो चीज़ कभी नहीं मिली, वह इसकी सबसे बढ़िया खूबी है: आपको हर रात alarm खुद सेट करना पड़ता है। alarm में सिर्फ़ on/off switch है, और एक बार बजना शुरू हो जाए तो उसे बंद करना पड़ता है, फिर कम-से-कम 12 घंटे बाद ही दोबारा चालू करना चाहिए (वरना शाम 8 बजे भी बज सकता है)। इसलिए हर रात schedule देखकर alarm switch on करने की आदत बन गई, और अब छुट्टी वाले दिन या जल्दी उठने वाले दिन alarm लगाना भूल जाने की चिंता नहीं रहती। और इसकी आवाज़ सच में इतनी तेज़ है कि alarm सुनकर फिर कभी दोबारा नहीं सोया
  • समझ नहीं आता alarm और timer में snooze और stop button की जगह उलटी क्यों है। किसी में stop button screen के बीच में होता है, किसी में नीचे। समझ नहीं आता ऐसी चीज़ standardize क्यों नहीं की गई
    • सुबह आधी नींद में फ़ोन टटोलते समय, आदत के मुताबिक़ उसी जगह बड़ा चमकीला नारंगी snooze button मिलता है और आसानी से दब जाता है। लेकिन पूरी तरह जागकर alarm बंद करना हो तो अलग जगह वाले धूसर stop button को दबाना पड़ता है, तभी जाकर alarm रुकता है। अगर alarm settings में snooze बंद कर दें, तो timer की तरह बीच में बड़ा नारंगी stop button इस्तेमाल किया जा सकता है। लेकिन सुना है कि यह design इतना intuitive था कि iOS 26 में सिर्फ़ इसलिए हटाया जा रहा है क्योंकि दोनों buttons एक-दूसरे से अलग दिखते हैं। अब alarm में सबसे ज़रूरी चीज़ उसका सुंदर दिखना रह गया है, यह सच में अफ़सोस की बात है
    • भाई, सच में तुम्हारा बहुत शुक्रिया कहना चाहता हूँ। ऐसे छोटे details की कमी की वजह से मैं कई सालों से बहुत परेशान था