01प्रोजेक्ट का अवलोकन
Kyndsy एक मोबाइल ऐप है जो एक सवाल का जवाब देती है जिसे अधिकांश लोग अपने बारे में नहीं दे सकते: मैं वास्तव में कैसे बोलता हूँ? यह अपने मालिक की आवाज़ को एक सामान्य बातचीत के दौरान सुनता है और मोटे शब्दों, शिष्ट शब्दों, भराव शब्दों और उन क्षणों की गिनती करता है जब स्वर तेज़ हो जाता है। यह दिनों और हफ्तों में प्रवृत्ति दिखाता है। और फिर यह रुक जाता है - यह व्यक्ति को यह नहीं बताता कि यह उन्हें किस प्रकार का इंसान बनाता है।
इसका आधार यह है कि आत्म-सुधार ऐप्स ज्यादातर आपकी अपनी राय का चार्ट बनाते हैं। आप अपने दिन की रिपोर्ट करते हैं, वे रिपोर्ट को दृश्य रूप में प्रस्तुत करते हैं। Kyndsy कुछ ऐसा शुरू करता है जिस पर बहस करना कठिन है: वास्तव में कहे गए शब्द, जो उस समय गिने जाते हैं जब व्यक्ति जीने में व्यस्त होता है न कि बैठकर विचार करने में।
यही चीज़ उत्पाद को कठिन बनाती है। भाषण की गिनती का मतलब है एक माइक्रोफोन, और एक माइक्रोफोन का मतलब है कि व्यक्ति को ऐप पर भरोसा करना होगा जो वे फोन पर लगभग किसी और चीज़ पर करते हैं। इसलिए पूरा उत्पाद एक वादे के चारों ओर बनाया गया है जो संरचनात्मक होना था: ध्वनि कभी भी रखी नहीं जाती, शब्द कभी भी लिखे नहीं जाते, दूसरों की आवाज़ों का विश्लेषण नहीं किया जाता, और इसके लिए कोई खाता नहीं होता है।.
हमने पूरे चीज़ को डिज़ाइन और बनाया: iOS और Android के लिए ऐप, इसकी सामग्री तीस भाषाओं में, हल्का बैकएंड, स्टोर रिलीज़ पथ और उत्पाद साइट। नीचे समस्या, निर्णय और वे भाग हैं जिन्हें हमने जानबूझकर बनाने से मना कर दिया।
02संदर्भ और समस्या
एक ऐप जो सुनता है, एक श्रेणी है जहां स्पष्ट कार्यान्वयन भी गलत है। कार्य को अनपैक करने से एक सेट बाधाएँ उत्पन्न हुईं जिन्होंने इसके बाद सब कुछ आकार दिया।
- विश्वास उत्पाद है।एक ऐप जो भाषण को मापता है, उसके पास केवल एक संपत्ति होती है, और वह एल्गोरिदम नहीं है। यदि कोई व्यक्ति संदेह करता है कि ऑडियो फोन से बाहर जा रहा है, तो सटीकता का कोई भी स्तर मायने नहीं रखता - वे इसे अनइंस्टॉल कर देते हैं।
- अन्य लोगों ने सहमति नहीं दी।एक कमरे में एक माइक्रोफोन उस व्यक्ति को पकड़ता है जो उसमें है। मालिक के चारों ओर के लोगों का विश्लेषण करना पूरी तरह से एक अलग ऐप होगा, और एक बहुत ही खराब ऐप।
- एक व्यक्ति के बारे में एक संख्या खतरनाक है।कोई भी एकल स्कोर जो एक मानव को संक्षेपित करने का दावा करता है, एक ऐसा दावा है जिसे उत्पाद ईमानदारी से नहीं कर सकता — और एक ऐसा जिसे लोग एक निर्णय के रूप में पढ़ेंगे चाहे कोई अस्वीकरण हो।
- कच्ची गिनतियाँ झूठ बोलती हैं।"आपने आज नौ बार शपथ ली" चुप्पी को पुरस्कृत करता है। एक व्यक्ति जो कुछ नहीं कहता, वह एक ऐसा व्यक्ति लगता है जिसने सुधार किया है।
- शब्द अस्पष्ट होते हैं।एक ही शब्द एक मजाक, एक उद्धरण, एक आत्म-निर्देशित शिकायत या एक वास्तविक अपमान हो सकता है, यह टोन और संदर्भ पर निर्भर करता है। केवल स्ट्रिंग की गिनती करने से ऐसे नंबर मिलते हैं जिन्हें कोई भी अपने दिन के रूप में पहचानता नहीं है।
- लोग एक ही भाषा में बात नहीं करते।वे वाक्य के मध्य में स्विच करते हैं। एक काउंटर जो केवल उनमें से एक का अनुसरण करता है, हर बार जब उसका मालिक कोड-स्विच करता है, तो एक संदिग्ध रूप से शांत दिन की रिपोर्ट करता है।
- दुकानों के नियम हैंमाइक्रोफोन के उपयोग, स्वास्थ्य और मनोविज्ञान के दावों, और यह कि एक सदस्यता क्या गेट कर सकती है — और ये सब सबमिशन पर लागू होते हैं, न कि लॉन्च के दिन।
इन सभी को एक फोन पर, बैकग्राउंड में, बैटरी या व्यक्ति की धैर्य को बिना खत्म किए रखना था।
03प्रोजेक्ट के लक्ष्य
- डिवाइस पर भाषण मापें।विश्लेषण फोन पर होता है; ऑडियो कभी भी संग्रहीत नहीं किया जाता और न ही अपलोड किया जाता है।
- केवल मालिक की आवाज।अन्य आवाजें विश्लेषित करने के बजाय हटा दी जाती हैं, और किसी अन्य व्यक्ति की ओर ऐप इंगित करने का कोई मोड नहीं है।
- कोई खाता नहीं, कोई नाम नहीं।कुछ भी लीक करने के लिए नहीं, क्योंकि लीक करने के लिए कुछ भी एकत्रित नहीं किया गया है।
- दरें, कच्ची गिनतियों नहीं।बोली गई हर हजार शब्दों के लिए सब कुछ, इसलिए एक शांत दिन एक शांत दिन है और कोई उपलब्धि नहीं।
- तीस भाषाएँ, जिसमें मिश्रित भाषण शामिल है— शब्दकोशों को एक साथ सभी में मौजूद होना चाहिए, अन्यथा संख्या उन लोगों के लिए गलत है जो स्विच करते हैं।
- शेड्स को अलग करें।व्यंग्य, व्यंग्यात्मकता, एक मजाक और एक वास्तविक तीखी टिप्पणी को अलग-अलग पहचानें और अनुमान के रूप में लेबल करें, कभी भी निर्णय के रूप में नहीं।
- माइक्रोफोन के बिना उपयोगी।डायरी, मूल्य कम्पास, परीक्षण और शाम के प्रश्न अपने आप काम करते हैं।
- प्रेरणा जिसे गेम नहीं किया जा सकता।चलन, स्तर और कार्यक्रमों का मूल्यांकन माप द्वारा किया जाता है न कि ऐप खोलने द्वारा।
- व्यक्ति का कोई समग्र स्कोर नहीं।संस्करण एक में नहीं और न ही बाद में।
04हमने क्या किया
ऐप चार स्थानों के रूप में बनाया गया है, प्रत्येक एक अलग प्रश्न का उत्तर देता है, साथ ही उन हिस्सों के जो उन्हें सहारा देते हैं:
- आज — क्या अभी हुआ: भाषण स्कोर, दिन के लक्ष्य और एक एकल सुझाव, कभी भी छह की सूची नहीं।
- प्रगति — क्या यह कहीं जा रहा है: रन, स्तर, कार्यक्रम और साप्ताहिक रिपोर्ट।
- कंपास — व्यक्ति ने किस पर ध्यान केंद्रित करने का निर्णय लिया: तीन से पांच मूल्य जो उन्होंने स्वयं चुने, और उन पर आगे बढ़ना।
- आप — जो केवल उनके लिए है: आत्म-चेक परीक्षण, परिवार की पहुंच, उनका डेटा और समर्थन।
नीचे वे टुकड़े हैं जो उन चारों को ईमानदार बनाते हैं: डिवाइस पर भाषण विश्लेषण, तीस भाषाओं के लिए शब्दकोश और नियम, छाया वर्गीकरणकर्ता, वह गणना मॉडल जो कुल के बजाय दरों में काम करता है, एक हल्का बैकएंड जो लगभग कुछ नहीं जानता, और एक सेटिंग्स रजिस्ट्री जो उत्पाद को बिना स्टोर रिलीज के बदलने देती है।
05कोड के रूप में गोपनीयता, न कि कॉपी
साइट पर गोपनीयता के दावे विपणन की प्रति नहीं हैं जिसे बाद में एक अनुकूलन चुपचाप अमान्य कर सकता है। ये निर्माण की विशेषताएँ हैं, और परियोजना किसी भी परिवर्तन को जो इनमें से किसी को भी असत्य बनाता है, एक दोष के रूप में मानती है न कि एक व्यापारिक समझौते के रूप में।
- ध्वनि कहीं भी नहीं लिखी जाती है — न तो एक फ़ाइल में, न ही डिस्क पर एक अस्थायी बफर में, न ही एक लॉग में। न ही एक डिबग निर्माण में, क्योंकि डिबग निर्माण ही है जिससे ये चीजें बच निकलती हैं।
- केवल मालिक की आवाज़ का विश्लेषण किया जाता है।दूसरों के भाषण को शब्द बनने से पहले ही छोड़ दिया जाता है।
- कुछ भी लिप्यंतरित नहीं किया जाता।ऐप काउंटर उत्पन्न करता है, पाठ नहीं; लीक, समन या गलती से समन्वयित करने के लिए कोई संग्रहीत वाक्य नहीं है।
- एक सत्र केवल तब शुरू होता है जब कोई व्यक्ति इसे शुरू करता है।रिबूट के बाद कोई ऑटो-स्टार्ट नहीं, बैकग्राउंड में चुपचाप फिर से शुरू करने का कोई विकल्प नहीं।
- वॉयस प्रोफ़ाइल कभी भी फोन को नहीं छोड़ती और डिवाइस बैकअप से बाहर है — यह बायोमेट्रिक डेटा है, और बैकअप वह एक जगह है जहाँ लोग भूल जाते हैं कि यह यात्रा कर सकता है।
- बैकएंड को चार बातें बताई जाती हैं और कोई और नहीं: सेटिंग्स के लिए एक अनुरोध, एक बार का मॉडल डाउनलोड, यदि व्यक्ति ने एक लिखा हो तो एक समर्थन संदेश, और एक सदस्यता रसीद। कोई खाता नहीं है।
- एक व्यक्ति यादृच्छिक संख्याओं का एक जोड़ा है जो उनका अपना फोन बनाता है। हम उन्हें जारी नहीं करते और न ही उनकी गिनती करते हैं — जिसका मतलब है कि हमें नहीं पता कि कितने इंस्टॉलेशन हैं, और यह एक जानबूझकर मूल्य था।
- साइन इन करना वैकल्पिक है और कुछ भी अनलॉक नहीं करता। यह एक सदस्यता और इतिहास को नए फोन पर स्थानांतरित करने के लिए है। इसे अनिवार्य बनाना एक वास्तविक पहचान से लिंक बनाने का कारण बनता जहाँ आज कोई नहीं है।
यह अंतिम बिंदु उस पर ध्यान देने योग्य है। मालिक की आवश्यकता थी कि वह केवल एक गुमनाम आईडी के बारे में कुछ न जाने — और इसे संतुष्ट करने का लुभावना तरीका एक अनिवार्य लॉगिन है जिसे हम फिर वादा करते हैं कि हम नहीं पढ़ेंगे। हमने इसके विपरीत किया: बिल्कुल कोई खाता नहीं, और एक वैकल्पिक साइन-इन जो टोकन से ठीक एक फ़ील्ड पढ़ता है और इसे हैश करता है।
06ऐप वास्तव में क्या गिनता है
चार बातें: खुरदुरी अभिव्यक्तियाँ, विनम्र अभिव्यक्तियाँ, भराव शब्द और एक ऊँची या तेज़ आवाज़. इनमें से सभी की रिपोर्ट की जाती है प्रति हजार बोले गए शब्द, कभी भी कच्ची कुल संख्या के रूप में नहीं — क्योंकि कच्ची गिनती चुप्पी को प्रगति की तरह दिखाती है, और एक ऐसा ऐप जो अपने मालिक को न बोलने के लिए इनाम देता है, उसने अपने काम को गलत समझा है।
दिन का शीर्षक है एक सम्मानजनक भाषण सूचकांक, और इसके चारों ओर के नियम संख्या की तरह ही विचारशील हैं:
- यह पूर्ण रूप से छिपा हुआ है जब तक पचास शब्द नहीं सुने जाते।एक शांत सुबह पर शून्य एक आरोप के रूप में पढ़ा जाता है, न कि गायब डेटा के रूप में।
- पचास शब्दों के तहत दिन दिखाए जाते हैं लेकिन गिने नहीं जाते — अच्छे दिन होने का दिखावा करने के बजाय खाली के रूप में दिखाई देते हैं।
- विनम्रता इसे अधिकतम दस अंक तक बढ़ा सकती है।और आगे बढ़ने पर, स्कोर को शिष्टाचार के साथ खेलना सस्ता होगा बजाय इसके कि तेज़ न होने से कमाया जाए।
- कोई भी एकल घटना गलत के रूप में चिह्नित की जा सकती है, और ऐसा करने से संख्या बदल जाती है न कि केवल सूची से एक रेखा को पार करना।
उस पर दृश्य सामान्य रूप में और विवरण में सावधानीपूर्वक होते हैं: एक सात-दिन का रुझान, दिन का एक घंटे-दर-घंटे का चित्र, एक तीस-दिन का ग्रिड जिसमें प्रति दिन एक वर्ग होता है। घंटे का दृश्य "सबसे खराब घंटा" घोषित करने से इनकार करता है जब तक कि इसके पास दस घटनाएँ न हों; तीस-दिन का ग्रिड शांत दिनों को बेज छोड़ देता है बजाय उन्हें शांत के रूप में रंगने के। पतले डेटा पर आत्मविश्वास से भरे चार्ट एक माप उत्पाद को पाठक का विश्वास खोने का कारण बनते हैं — आमतौर पर हमेशा के लिए।
07भाषण के रंग: विडंबना, एक मजाक, एक तंज
एक मजाक और एक अपमान एक ही शब्द नहीं होते। Kyndsy विडंबना को एक वास्तविक तेज टिप्पणी से, एक मजाक को एक तंज से, एक उद्धरण को उस चीज़ से अलग करता है जिसका व्यक्ति मतलब रखता है — और यह दिखाता है कि यह क्या सुनने की कोशिश कर रहा है, शब्दों में, घटना के बगल में।
दो नियम उस विशेषता को ईमानदार रखते हैं। पहले, इसे इस रूप में प्रस्तुत किया जाता है एक अनुमान, न कि एक निर्णय: ऐप कहता है "संभवतः विडंबना" या "एक मजाक — नहीं गिना गया" और दिखाता है कि इस पर यह क्या आधारित था। दूसरा, और अधिक महत्वपूर्ण, छाया वर्गीकरण कभी भी सूचकांक को नहीं हिलाता. यह व्यक्ति को सूचित करता है; यह चुपचाप उनके स्कोर को समायोजित नहीं करता। एक आत्मविश्वास-भारित संख्या किसी के लिए भी जांचना असंभव होगी और चुपचाप उत्पाद की सबसे विवादित विशेषता बन जाएगी।
संदर्भ पर वही देखभाल लागू होती है: एक ही शब्द किसी व्यक्ति द्वारा किसी को उद्धृत करते समय, अपने बारे में बात करते समय, या एक तर्क के बीच में अलग-अलग गिना जाता है। और क्योंकि कोई भी शब्दकोश यह नहीं जान सकता कि किसी विशेष व्यक्ति के शब्द उनके लिए क्या मतलब रखते हैं, वे अपनी खुद की सूचियाँ रख सकते हैं।
08तीस भाषाएँ — और मिश्रण
ऐप तीस भाषाओं में काम करता है — अंग्रेजी, स्पेनिश, पुर्तगाली, जर्मन, फ्रेंच, इतालवी, डच, स्वीडिश, डेनिश, नॉर्वेजियन, फिनिश, पोलिश, चेक, क्रोएशियाई, रोमानियाई, हंगेरियन, ग्रीक, तुर्की, रूसी, यूक्रेनी, बेलारूसी, हिब्रू, अरबी, हिंदी, इंडोनेशियाई, वियतनामी, थाई, चीनी, जापानी और कोरियाई — और इनमें से कई में एक साथ, क्योंकि यही तरीका है जिससे बहुत से लोग वास्तव में बोलते हैं।
तीस भाषाएँ इंटरफेस के तीस अनुवाद नहीं हैं। यह तीस शब्दकोशों के सेट हैं - मोटे अभिव्यक्तियाँ, विनम्र सूत्र, भराव - और उन्हें एक साथ उतरना हैएक ही समय में। एक भाषा जिसका शब्दकोश अधूरा है, वह जोर से विफल नहीं होती; यह एक शांत दिन की रिपोर्ट करती है। व्यक्ति एक अच्छा नंबर देखता है और उस पर विश्वास करता है, जो एक त्रुटि संदेश से भी बदतर है।
इस परियोजना से एक पाठ सीखना इसे उससे कहीं अधिक सामान्यीकृत करता है: एक विशेषता जो पाठ के आकार से पता लगाई जाती है, वह पहले भाषा पर टूट जाती है जो अलग तरीके से लिखी जाती है। "एक वाक्यांश" को "एक स्ट्रिंग जिसमें एक स्पेस है" के रूप में मानना तब तक काम करता है जब तक जापानी, चीनी और थाई नहीं आते, जो बिना स्पेस के लिखे जाते हैं - और वहाँ ऐप कुछ भी नहीं पाता, चुपचाप, जबकि ऐसा लगता है कि यह काम कर रहा है। भाषा का व्यवहार भाषा के अपने डेटा से आना चाहिए, और इसे सभी तीस भाषाओं में चलने वाले परीक्षण द्वारा कवर किया जाना चाहिए।
09कंपास और डायरी
भाषण केवल उत्पाद का आधा हिस्सा है। दूसरा आधा वह है जो व्यक्ति ने लक्ष्य बनाने का निर्णय लिया: वे सात में से तीन से पांच मान चुनते हैं - सम्मान, ईमानदारी, आत्म-नियंत्रण, जिम्मेदारी, देखभाल, निष्पक्षता, विश्वसनीयता - और ऐप दिखाता है कि वह उनकी ओर बढ़ रहा है, बल्कि किसी और के अच्छे व्यक्ति के विचार की ओर।
आंदोलन दो स्रोतों से खींचा जाता है: भाषण माप, और व्यक्ति की अपनी डायरी जिसमें उन्होंने जो किया — वादा निभाया, माफी मांगी, किसी पर चिल्लाए, नुकसान की मरम्मत की। दिन के अंत में तीन प्रश्न, जब वे उन्हें चाहते हैं।
और वहाँ है कोई समग्र नैतिकता स्कोर, न तो अब और न ही बाद में। यही एकमात्र चीज है जिसे उत्पाद गणना करने से इनकार करता है। यह भी कारण है कि कंपास काम करता है: एक व्यक्ति केवल ईमानदार मूल्यों को चुनेगा एक ऐप के लिए जो उन्हें परिणाम पर ग्रेड नहीं करेगा।
इस आधे में सब कुछ काम करता है बिना माइक्रोफोन के. डायरी, कंपास, परीक्षण और शाम के प्रश्न अपने आप में खड़े होते हैं, इसलिए एक व्यक्ति बाद में वॉयस भाग सेट कर सकता है, या कभी नहीं, और फिर भी ऐप से कुछ प्राप्त कर सकता है। यह एक उत्पाद निर्णय था जिसका वास्तविक परिणामों पर प्रभाव पड़ा, और हम इसे फिर से करेंगे — पहले स्क्रीन पर एक अनुमति प्रॉम्प्ट वह जगह है जहां एक गोपनीयता-संवेदनशील ऐप उन लोगों को खो देता है जिनके लिए इसे बनाया गया था।
10प्रोग्राम, रन और साप्ताहिक रिपोर्ट
इस ऐप में प्रेरणा को दो सामान्य धोखाधड़ी से प्रतिरक्षित होना था: ऐप को बार-बार खोलना, और कुछ नहीं कहना। तो:
- कार्यक्रम7 से 30 दिनों तक एक लक्ष्य और एक संख्या के साथ चलें - सात दिन बिना कठोर शब्दों के, एक पखवाड़े के लिए नरम उत्तर, एक महीने में कम भराव। यह काम किया या नहीं, यह माप से तय होता है, न कि एक बॉक्स को टिक करने से।
- एक रन उन दिनों की गिनती करता है जब व्यक्ति वास्तव में स्तर को बनाए रखता है।मौन दिन न तो इसे तोड़ते हैं और न ही बढ़ाते हैं — फोन को दूर रखना जीतने का तरीका नहीं है।
- स्तर दिनों द्वारा अर्जित होते हैं, ऐप खोलने से नहीं: देखना, नियंत्रण, शांत भाषण।
- शील्ड एक गलती को कवर करते हैं, एक बिंदु तक, और एक टूटे हुए दिन को वापस खरीदा जा सकता है - लेकिन चार खरीदे गए दिनों के साथ तीस दिनों का एक रन तीस दिनों का रन नहीं है, इसलिए उन्हें अलग से गिना और दिखाया जाता है।
- साप्ताहिक रिपोर्ट स्पष्ट रूप से कहती है जब तुलना करने के लिए पर्याप्त नहीं होता।एक सारांश जिसमें कुछ हमेशा बेहतर होता है, तीसरे सप्ताह में पढ़ना बंद कर देता है।
एक जानबूझकर विषमता का नाम लेना उचित है: मुफ्त स्तर यह सीमित करता है कि कितनी इतिहास है दिखाया गया, न कि कितनी है गिनी जाती है। केवल दृश्य विंडो पर एक रन की गणना करने से एक तीस-दिन का रन सात के रूप में प्रदर्शित होता — यह मुफ्त योजना की एक सीमा नहीं है बल्कि व्यक्ति के बारे में एक गलत बयान है।
11सौ आत्म-चेक परीक्षण
मापों के साथ एक सौ संरचित आत्म-चेक परीक्षण हैं: प्रत्येक में पच्चीस बयान, लगभग चार मिनट, पांच पहलुओं में अलग-अलग स्कोर किए गए ताकि उत्तर कभी एक सपाट संख्या न हो। वे भाषण, भावनाएँ, आपके करीब के लोग, काम, खुद, आदतें और ऑनलाइन जीवन को कवर करते हैं।
वे स्पष्ट रूप से नैदानिक नहीं हैं और न ही व्यक्तित्व माप हैं — वे संरचित आत्म-प्रतिबिंब हैं, और ऐप ऐसा कहता है जहाँ एक व्यक्ति इसे पढ़ेगा न कि सेटिंग्स स्क्रीन में। उत्तर फोन पर अन्य सभी की तरह रहते हैं।
यहां इंजीनियरिंग का बिंदु यह है कि सौ परीक्षणों को सौ हस्तलिखित स्क्रीन के रूप में बनाए नहीं रखा जा सकता। वे एक संसाधन हैं, कोड नहीं: स्रोतों से उत्पन्न, निर्माण समय पर मान्य, और यदि किसी परीक्षण में उसके पूर्ण सेट के बयान और पहलू नहीं हैं तो उसे अस्वीकार कर दिया जाता है। यह जांच ही है जो उन्हें सौ की संख्या में संभव बनाती है, और यही कारण है कि उनके अनलॉक नियमों को लगातार वितरित किया जा सकता है न कि हाथ से छिड़का जा सकता है।
इनमें से आधे उपयोग के माध्यम से खुलते हैं, आधे खरीद के माध्यम से। भुगतान किए गए आधे के पीछे के स्टोर उत्पाद जानबूझकर कम हैं न कि प्रत्येक परीक्षण के लिए एक — कोई भी सौ स्टोर लिस्टिंग हाथ से नहीं बनाता, और कोई भी उनमें से सौ का तीस भाषाओं में अनुवाद नहीं करता। बेचा गया उत्पाद एक अनलॉक है; व्यक्ति ऐप के अंदर इसे किस परीक्षण पर खर्च करना है, यह चुनता है, खरीद की पुष्टि के बाद।
12सदस्यता, परिवार और दुकानें
भुगतान किया गया स्तर एक सदस्यता है, और एक परिवार योजना इसे साझा करती है — एक वर्ष के लिए छह स्थान, खरीदार सहित। जो महत्वपूर्ण है वह है जो परिवार साझा करता है और जो साझा नहीं करता है: एक परिवार अधिकार साझा करता है, डेटा नहीं. कोई भी किसी और के नंबर, घटनाएँ या डायरी नहीं देखता, और जिसने भुगतान किया है वह केवल मुफ्त स्थानों और तारीखों को देखता है, न कि उनमें कौन है।
यह छोटे प्रिंट में एक पंक्ति नहीं है; यह इस तरह से बनाया गया है। दूसरों के माप सर्वर पर बिल्कुल नहीं हैं, इसलिए परिवार की स्क्रीन में गलती से उजागर करने के लिए कुछ भी नहीं है। एक कोड में प्रवेश करना एक सदस्यता साझा करने पर सहमति देने का मतलब है, पहचानने पर सहमति देने का नहीं।
इस भाग से दो कार्यान्वयन नियम विशेषता से अधिक समय तक जीवित रहे हैं। पहले, सदस्यता और परिवार का अधिकार एक ध्वज हैं ऐप में: "या शायद वे एक परिवार में हैं" के रूप में एक दूसरा प्रश्न ठीक उसी जगहों पर भुला दिया जाएगा जहाँ यह महत्वपूर्ण है। दूसरे, सर्वर से चुप्पी अधिकार को रद्द नहीं करती है — नेटवर्क अक्सर एक सदस्यता समाप्त होने की तुलना में अधिक बार गिरता है, और एक ऐप जो एक भुगतान करने वाले ग्राहक को ट्रेन में लॉक करता है, उसने एक स्पष्ट विकल्प को खराब तरीके से बनाया है।
स्टोर नीति ने यहाँ की सतह को बहुत आकार दिया: एक माइक्रोफोन ऐप क्या दावा कर सकता है, एक भुगतान किए गए स्तर को कैसे प्रस्तुत किया जा सकता है, और तथ्य यह है कि एक टूटे हुए निर्माण को हॉटफिक्स के साथ वापस नहीं खींचा जा सकता। यही कारण है कि संस्करण नीति — न्यूनतम समर्थित संस्करण, मजबूर अपडेट, रखरखाव मोड और संदेश जो दिखाया गया है, परियोजना की सभी भाषाओं में एक साथ — एक सर्वर-साइड सेटिंग है न कि कुछ संकलित किया गया।
13वास्तुकला: ऐप, बैकएंड, रजिस्ट्रि
संरचना गोपनीयता वादे से निकलती है: फोन पर जितना संभव हो उतना, सर्वर पर जितना संभव हो उतना कम।
- ऐप विश्लेषण करता है, इतिहास रखता है और आवाज़ प्रोफ़ाइल का मालिक है। यह पूरा उत्पाद है; सर्वर एक सहायक भूमिका में है।
- एक हल्का बैकएंड चार प्रकार के अनुरोधों का उत्तर देता है — सेटिंग्स, एक बार का मॉडल डाउनलोड, समर्थन संदेश और सदस्यता रसीदें। इसमें कोई उपयोगकर्ता तालिका नहीं है, क्योंकि इसमें डालने के लिए कोई उपयोगकर्ता नहीं है।
- एक कॉन्फ़िगरेशन रजिस्ट्री वह सब कुछ रखती है जो अन्यथा ऐप में हार्ड-कोडेड होता: पैकेज पहचानकर्ता, एपीआई पता, साइन-इन पैरामीटर, भाषा सूची, फ़ीचर फ़्लैग और संस्करण नीति। मान स्रोत में उत्पन्न होते हैं न कि वहां टाइप किए जाते हैं, और उत्पन्न फ़ाइल को संपादित न करने के लिए चिह्नित किया गया है क्योंकि एक हाथ से संपादन अगली पीढ़ी में खो जाता है।
- एक प्री-फ्लाइट चेक हर निर्माण को गेट करता है: यह अस्वीकार करता है यदि पैकेज पहचानकर्ता रजिस्ट्री से भटक गया है, यदि संस्करण पिछले भेजे गए से अधिक नहीं है, यदि ऐप का सर्वर उत्तर नहीं दे रहा है, यदि किसी भी परियोजना की भाषाओं में शब्दकोश अधूरा है, यदि स्थैतिक विश्लेषण साफ नहीं है, यदि परीक्षण विफल होते हैं, या यदि स्रोत में किसी भी चीज़ के समान एक कुंजी पाई जाती है। यह एक गैर-शून्य निकासी कोड लौटाता है, जो इसे किसी भी CI में गेट के रूप में उपयोगी बनाता है।
- भुगतान किया गया स्तर एक फ़्लैग के पीछे है जिसे बिना पुनर्निर्माण और बिना नए स्टोर संस्करण के बंद किया जा सकता है।
यह साइट एक छोटा PHP एप्लिकेशन है जिसमें अपने स्वयं के समर्थन पत्राचार के अलावा कोई डेटाबेस नहीं है - वही सिद्धांत एक स्तर बाहर लागू होता है।
14प्रौद्योगिकी स्टैक
- फ्लटर एक कोडबेस से iOS और Android के लिए - कोड में एक डिज़ाइन सिस्टम के साथ, इसलिए रंग, स्थान और त्रिज्या एक ही स्थान पर घोषित किए जाते हैं न कि प्रत्येक विजेट पर।
- डिवाइस पर भाषण पहचान और डिवाइस पर विश्लेषण: मॉडल एक बार डाउनलोड किए जाते हैं और स्थानीय रूप से चलाए जाते हैं, जिसमें मैनिफेस्ट उन्हें फ़ाइलों से बनाया जाता है न कि हाथ से लिखा जाता है।
- PHP 8.4 ऐप बैकएंड और साइट के लिए, जिसमें केवल समर्थन पत्राचार के लिए एक छोटा डेटाबेस उपयोग किया जाता है।
- एक कॉन्फ़िगरेशन रजिस्ट्री ऐप सेटिंग्स के लिए सत्य का स्रोत, उत्पन्न कोड और एक प्री-फ्लाइट गेट के साथ।
- तीस भाषा पैक ऐप के लिए और साइट के लिए तीन, जिसमें शब्दकोश समानता परीक्षणों द्वारा लागू की जाती है न कि समीक्षा द्वारा।
- एक सख्त सामग्री सुरक्षा नीति साइट पर — कोई इनलाइन स्टाइल बिल्कुल नहीं, गणना की गई मानों को एक स्टाइलशीट में संकलित किया गया है, और एक स्वयं-होस्टेड फ़ॉन्ट, ताकि गोपनीयता के बारे में पृष्ठ एक भी तृतीय-पक्ष संसाधन को न लाए।
15डिजाइन और UX
दृश्य भाषा एक गहरे रंग की थीम है, जो उत्पाद साइट से ली गई है ताकि जो एक आगंतुक को वादा किया गया है वही वे खोलें। एक दूसरी हल्की थीम टोकनों में लिखी गई थी और जानबूझकर नहीं भेजी गई: दो थीमों का मतलब है दो सेट स्क्रीनशॉट और उतनी ही जगहें जहां लेआउट अनजान तरीके से टूटता है।
रंग, स्थान और त्रिज्या एक डिज़ाइन फ़ाइल में रहते हैं, और एक चिंताजनक रंग और एक शांत रंग के बीच संक्रमण एक गर्म पीले रंग के माध्यम से — सीधे इंटरपोलेट करना एक जैतून की कीचड़ देता है, जो ऐसा लगता है जैसे लापरवाही और वास्तव में एक गायब वेपॉइंट है।
ऐप में एक चरित्र है, और इसके चारों ओर के नियम ईमानदारी के साथ-साथ आकर्षण के बारे में हैं: मूड सिल्हूट से पढ़ा जा सकता है, केवल रंग से नहीं, इसलिए एक रंग-अंधा व्यक्ति वही चीज़ देखता है जो बाकी सभी देखते हैं; मूड एक निरंतर पैमाना है जो मानों के बीच एनिमेटेड होता है न कि पांच निश्चित चित्रों के बीच, क्योंकि एक कूद एक अलग चित्र के रूप में पढ़ी जाती है न कि वही दोस्त; और चिंतित अंत पर भौंहें अंदर के अंत पर ऊपर जाती हैं, क्योंकि नीचे और अंदर होना गुस्सा है पर देखने वाले व्यक्ति।
अन्य जगहों पर इंटरफेस उत्पाद के केंद्रीय नियम का पालन करता है: जो मापा गया है उसे दिखाएं, कहें कि जब कहने के लिए पर्याप्त नहीं है, और कभी भी किसी व्यक्ति को एक एकल संख्या में न बदलें।
16हमने कैसे काम किया
- पहला वादा। हमने लिखा कि ऐप कभी क्या नहीं करेगा - ऑडियो रखना, अन्य लोगों का विश्लेषण करना, आप कौन हैं पूछना, आपको एक व्यक्ति के रूप में स्कोर करना - किसी भी चीज़ को डिजाइन करने से पहले, क्योंकि ये निर्णय आर्किटेक्चर को सीमित करते हैं न कि इसके अनुसार चलते हैं।
- मापन का मूल। डिवाइस पर विश्लेषण, दरों में गिनती मॉडल, सूचकांक इसके थ्रेशोल्ड के साथ और पतले डेटा पर प्रकट होने से इनकार।
- भाषा कार्य।तीस शब्दकोश और नियम, जिनमें सभी पर एक साथ परीक्षणों द्वारा समानता लागू की गई है।
- दूसरा आधा।कंपास, डायरी, कार्यक्रम, रन, साप्ताहिक रिपोर्ट — सब कुछ जो माइक्रोफोन के बिना काम करता है।
- संसाधन के रूप में परीक्षण।एक सौ आत्म-चेक परीक्षण उत्पन्न और मान्य किए गए, जिनकी अनलॉक सीढ़ी जनरेटर द्वारा वितरित की गई।
- मुद्रीकरण।सदस्यता, परिवार, स्टोर उत्पादों का छोटा सेट, और एक ध्वज के पीछे एक भुगतान स्तर।
- रिलीज़ पथ।पंजीकरण, उत्पन्न कॉन्फ़िगरेशन, प्री-फ्लाइट गेट, निर्माण पंजीकरण और संस्करण नीति।
- साइट।तीन भाषाएँ, एक सख्त सामग्री सुरक्षा नीति और एक लैंडिंग पृष्ठ जो ऐप की असली स्क्रीन दिखाता है।
निर्माण के दौरान दो बातें बार-बार सामने आईं, और दोनों अब नियम हैं। इंटरफ़ेस द्वारा किसी व्यक्ति के व्यवहार के बारे में जो कुछ भी कहा जाता है, उसे एक माप के खिलाफ जांचा जा सकता है, और ऐप द्वारा गोपनीयता के बारे में जो कुछ भी वादा किया जाता है, उसे कोड द्वारा लागू किया जाना चाहिए न कि किसी दस्तावेज़ में नोट द्वारा — एक साझा समझ ठीक उसी समय तक जीवित रहती है जब तक अगला व्यक्ति जो इसे नहीं पढ़ता।
17परिणाम
जो निकला वह एक माप उत्पाद है जिसके लिए लोग आमतौर पर केवल अनुमान लगाते हैं, इसे इस तरह से बनाया गया है कि मापने से उनकी गोपनीयता की कीमत नहीं चुकानी पड़ती।
- डिवाइस पर भाषण विश्लेषण: कुछ भी रिकॉर्ड नहीं किया गया, कुछ भी प्रतिलिपि नहीं बनाई गई, अन्य आवाजें हटा दी गईं।
- हर हजार शब्दों पर सब कुछ रिपोर्ट किया गया, इसलिए चुप्पी को प्रगति के रूप में नहीं समझा जाता।
- विडंबना, व्यंग्य और मजाक अलग-अलग बताये जाते हैं - और इसे एक अनुमान के रूप में लेबल किया जाता है जो कभी भी स्कोर को नहीं हिलाता।
- तीस भाषाएँ जिनके शब्दकोश एक साथ आते हैं, सभी पर परीक्षणों द्वारा कवर किया गया।
- एक मूल्य कम्पास, एक डायरी, कार्यक्रम और एक साप्ताहिक रिपोर्ट जो स्वीकार करती है जब इसकी तुलना करने के लिए बहुत कम होता है।
- एक सौ आत्म-चेक परीक्षण जो मान्य संसाधनों के रूप में हैं, भुगतान किए गए आधे के पीछे एक छोटा, बनाए रखने योग्य स्टोर उत्पादों का सेट।
- एक पारिवारिक योजना जो सदस्यता साझा करती है और कुछ नहीं, क्योंकि डेटा साझा करने के लिए सर्वर पर नहीं है।
18सीखने योग्य बातें
Kyndsy वह परियोजना है जहाँ सबसे कठिन इंजीनियरिंग सीमाओं में थी। डिवाइस पर विश्लेषण, कोई ट्रांसक्रिप्ट नहीं, कोई खाता नहीं, कोई समग्र स्कोर नहीं, कोई विश्लेषण करने वाले दर्शक नहीं - इनमें से प्रत्येक ने निर्माण को कठिन बना दिया और उत्पाद को संभव बनाया। इस ऐप का एक संस्करण जिसमें सर्वर-साइड पाइपलाइन और लॉगिन होता, उसे लिखना तेज होता और यह किसी के माइक्रोफोन के लायक नहीं होता।
हम जो पाठ आगे बढ़ाते हैं वह यह है कि वादे कैसे निभाए जाते हैं: एक दस्तावेज़ में रहने वाली गारंटी एक गारंटी है जब तक अगला परिवर्तन नहीं होता जिसे कोई इसकी जांच नहीं करता।. यहाँ जो रखे गए हैं वे कोड के रूप में व्यक्त किए गए हैं और परीक्षणों द्वारा कवर किए गए हैं — तीस भाषाओं में समानता, संख्या के रूप में जांच की गई, स्क्रीनशॉट के बजाय मूल्यों द्वारा गति की पुष्टि की गई, एक निर्माण गेट जो चेतावनी देने के बजाय अस्वीकार करता है।
यदि आप एक मोबाइल उत्पाद बना रहे हैं जहाँ गोपनीयता विशेषता है न कि अस्वीकरण, कुछ ऐसा जो एक साथ कई भाषाओं में काम करना है, या एक ऐप जिसके नंबरों पर लोग अपने बारे में भरोसा करने वाले हैं, तो यह वह प्रकार का काम है जिसे हम विचार से स्टोर तक ले जाते हैं।



