शब्दों के नीचे लाल और हरी लहरदार रेखाएँ छोड़ जाने वाले Tony Krueger को श्रद्धांजलि
(devblogs.microsoft.com)- Tony Krueger ने Microsoft Word में spelling और grammar समस्याओं को लाल और हरी लहरदार रेखाओं से तुरंत दिखाने वाली सुविधा पर काम किया, जिससे उन्होंने ऐसा UI निशान छोड़ा जिसे लगभग हर उपयोगकर्ता ने देखा है
- शुरुआती Word में spelling check उपयोगकर्ता को खुद चलाना पड़ता था, और Auto Spell Check भी save या exit जैसे foreground कामों को रोक देने वाला blocking task था, इसलिए कई उपयोगकर्ता इसे बंद कर देते थे
- Krueger ने जाँच को ऐसा कम दखल देने वाला तरीका बनाया जो उपयोगकर्ता को रोके नहीं, और समस्या मिलते ही अलग से चलाने का इंतज़ार किए बिना शब्द के नीचे संकेत दिखा देता था
- उन्होंने Word 1.0, 1.1, 2.0, Word for OS/2, Word for Mac, Word 6.0 और उसके बाद के कई versions पर काम किया, और Chip’s Challenge का Windows port भी संभाला
- आज लाल के साथ-साथ हरी और नीली लहरदार रेखाएँ भी word processors और दूसरे software में फैल चुकी हैं, और Krueger का काम रोज़मर्रा के editing feedback UI के रूप में बना हुआ है
Tony Krueger और Word का लहरदार-रेखा UI
- Tony Krueger ऐसे व्यक्ति थे जिनका काम व्यापक रूप से जाना गया, लेकिन उनका नाम अपेक्षाकृत कम जाना गया
- Wikipedia में उन्हें Windows Entertainment Pack के लिए Chip’s Challenge को Windows पर port करने वाले व्यक्ति के रूप में दर्ज किया गया है
- यह port MS-DOS version के source code के बिना reverse engineer करके फिर Windows के लिए दोबारा implement किया गया था
- लेकिन उससे भी अधिक लोगों तक पहुँचा उनका code Microsoft Word की spelling और grammar marking feature था
कई Word versions पर उनका प्रभाव
- Krueger ने Word के कई versions के development में भाग लिया
- Word 1.0
- Word 1.1
- Word 2.0
- Word for OS/2
- Word for Mac
- Word 6.0 और उसके बाद के कई versions
- उन्हें संभवतः “सबसे अधिक Word versions ship करने वाले व्यक्ति” के रूप में भी उल्लेख किया गया है
शुरुआती spelling check असुविधाजनक क्यों था
- शुरुआती Word का Spell Check ऐसा feature था जिसे उपयोगकर्ता को स्पष्ट रूप से चलाना पड़ता था
- उपयोगकर्ता को तब तक इंतज़ार करना पड़ता था जब तक program सभी संभावित typos न ढूँढ ले, फिर हर शब्द को एक-एक करके देखकर तय करना पड़ता था कि क्या करना है
- Word ने उपयोगकर्ता के idle होने पर पहले से spelling check चलाने वाला Auto Spell Check पेश किया
- इसका उद्देश्य यह था कि उपयोगकर्ता जब Spell Check button दबाए तो परिणाम पहले से तैयार हों
- लेकिन Auto Spell Check भी फिर भी उपयोगकर्ता के अगले काम को रोक देने वाला blocking task बना रहा
- यही वजह थी कि कई उपयोगकर्ता इस feature को बंद रखते थे
- अगर document save करके बंद करने के समय spelling check शुरू हो जाता, तो जाँच खत्म होने तक इंतज़ार करना पड़ता था
लाल और हरी लहरदार रेखाओं की शुरुआत
- Krueger ने spelling check को foreground काम में बाधा डाले बिना कहीं अधिक कम दखल देने वाले तरीके में बदल दिया
- समस्या मिलते ही, उपयोगकर्ता के Spell Check चलाने का इंतज़ार किए बिना, संभावित typo के नीचे तुरंत लाल लहरदार रेखा खींच दी जाती थी
- बाद में संभावित grammar errors के लिए हरी लहरदार रेखा इस्तेमाल होने लगी
- यह तरीका आज लगभग हर word processor में दिखता है, और word processor के बाहर भी अक्सर इस्तेमाल होता है
- सिर्फ लाल ही नहीं, हरी और नीली लहरदार रेखाएँ भी व्यापक रूप से इस्तेमाल होती हैं
इस feature को याद रखने वाले लोग
- Krueger जादू और कॉमेडी duo Penn and Teller के शुरुआती प्रशंसक थे
- एक दोस्त और सहकर्मी ने शो के बाद दोनों से Tony के लिए signed photo माँगी और बताया कि वह Word की लाल और हरी लहरदार रेखाओं वाली टीम में थे
- Penn Jillette ने इतनी ऊँची आवाज़ में प्रतिक्रिया दी कि पूरा थिएटर सुन सके: “The red and green squiggles!? I love the red and green squiggles!” और Teller ने भी चुपचाप सहमति जताई
- Krueger को जन्मदिन पर वह signed photo मिली, और यह स्पष्ट नहीं था कि वे photo से अधिक खुश थे या इस बात से कि Penn and Teller को उनका feature पसंद था
- बाद में “Weird Al” Yankovic के parody video Word Crimes में Word की लाल लहरदार रेखा एक पल के लिए दिखी, और उसी दोस्त ने उस screenshot पर भी sign करवाया
बचा हुआ निशान
- लाल लहरदार रेखा उपयोगकर्ता की गलतियों को पकड़ने वाले रोज़मर्रा के editing feedback के रूप में बनी हुई है
- Krueger ने जो काम पहले किया, वही बाद में कई software में text error indication के तरीके के रूप में फैल गया
2 टिप्पणियां
Hacker News की राय
अगर आप कंपनी में software बनाने वाली industry में बने रहते हैं और source code में अपना नाम छोड़ जाते हैं, तो कभी न कभी किसी बिल्कुल अप्रत्याशित product या feature की वजह से याद किए जाते हैं
जिन चीज़ों को आपने सबसे ज़्यादा मेहनत से बनाया था और जिनके लिए पहचाने जाना चाहते थे, वे समय के साथ भुला दी जाती हैं। कुछ बनाने की प्रक्रिया पूरी तरह आपके नियंत्रण में होती है, लेकिन किस चीज़ के लिए जाने जाएँगे, यह पूरी तरह नियंत्रण के बाहर होता है
Amiga के Prowrite में Word से पहले real-time spell check था
उससे पहले भी शायद यही feature वाले और program रहे हों, लेकिन Prowrite गलत शब्दों के नीचे लाल लहरदार underline दिखाता था
https://www.atarimagazines.com/compute/issue123/P215_1_REVIE...
उस feature का screenshot भी नहीं मिला। अगर AmigaOS 1.x color palette देखें तो standard colors काला/सफेद/नीला/नारंगी थे, इसलिए लहरदार रेखा शायद लाल नहीं बल्कि नारंगी रही होगी। AmigaOS 2 के बाद 3D effect के लिए काला/सफेद/धूसर/नीला हो गया था, तो highlight color शायद नीला होना चाहिए था
कई भाषाओं में काम करने वाले माहौल में लहरदार underline अक्सर बेकार हो जाती है
system मेरे लिखे text की भाषा का अनुमान लगाने की कोशिश करता है, लेकिन ज़्यादातर गलत होता है, और नतीजा यह कि वह visual noise बन जाता है जिससे लड़ना पड़ता है या उसे नज़रअंदाज़ करना पड़ता है। हर interaction पर language setting हाथ से बदलना भी बहुत असुविधाजनक है
character style होने की वजह से यह current cursor position पर भी लागू होती थी और selected range पर भी। अगर पहले से सेट करना भूल जाओ और एक लाइन में ढेर सारी लहरदार रेखाएँ आ जाएँ, तब भी संभाला जा सकता है। या पूरे text की proofing language को None पर सेट करके spell check और grammar diagnostics पूरी तरह हटाए जा सकते हैं
दिलचस्प बात यह है कि Chen की post में Tony Krueger ने port किया था, इसके सबूत के तौर पर Wikipedia page की ओर इशारा किया गया है
लेकिन latest version में उस entry का source फिर से Chen की post पर लौटने वाला link है
Chen की post में लिखा है, “Tony Krueger को Wikipedia में … को port करने वाले व्यक्ति के रूप में याद किया जाता है”, फिर एक footnote जोड़कर कहा गया, “यह बात शायद उतनी व्यापक रूप से documented नहीं है कि उसने यह काम source code के बिना किया। उसने MS-DOS version को reverse engineer किया और फिर Windows के लिए दोबारा implement किया।” बाद में Wikipedia article ने इसी अतिरिक्त जानकारी के लिए Chen की post को cite किया। इसमें सब ठीक और उचित है, और मैंने अभी citation फिर से साफ़ दिखे ऐसा edit कर दिया है
edit से पहले game खुद Tony और Ed Halley को developers के रूप में दिखाने का source था, लेकिन Chen blog की reverse engineering वाली कहानी जोड़ने वाले व्यक्ति ने sentence तोड़ दिया, जिससे developer names के लिए citation गलती से सिर्फ दूसरे व्यक्ति पर लागू होने लगा
https://en.wikipedia.org/w/index.php?title=Chip%27s_Challeng...
वह सिर्फ यह दिखा रहे हैं कि Wikipedia में उसे उसके सबसे प्रसिद्ध काम के रूप में क्या बताया गया है, और फिर Krueger के बारे में एक और उल्लेखनीय बात, यानी लहरदार underline, जोड़ते हैं। Chen की पूरी post पढ़ें तो नीचे port से जुड़ी details भी जोड़ी गई हैं, इसलिए उन्हें यह तथ्य साफ़ तौर पर पता है। इस post को port के source के रूप में इस्तेमाल करना ठीक है। Wikipedia में इस तरह की circular sourcing chain सच में बन जाती है, लेकिन यह मामला वैसा नहीं लगता
मुझे ऐसे लेख पसंद हैं। अनगिनत संभावित शाखाओं में से आख़िरकार लहरदार रेखा चुनी गई, और वह भी एक व्यक्ति के तात्कालिक फैसले से, लेकिन उसने अंत में दुनिया को पूरी तरह बदल दिया
मुझे लहरदार underline हमेशा पसंद नहीं आती, लेकिन UI pattern के रूप में इसे मानना पड़ेगा
“इस शब्द में कुछ गड़बड़ है” दिखाने वाले visual indicators में यह सबसे सहज और आसानी से पहचाने जाने वालों में से एक है
submission title और microsoft.com domain देखते ही हमेशा समझ जाता हूँ कि यह Raymond की post है। मैं उनका बहुत बड़ा प्रशंसक हूँ
“उसने यह काम source code के बिना किया” — अरे, बिल्कुल। यह HN है, यहाँ किसे source code की ज़रूरत है
लेकिन reverse engineering की जगह मैं होता तो शायद emulator ढूँढता या बनाता। क्योंकि बाद में दूसरे software को भी “port” करने के लिए कहा जा सकता है। यह सच में दुख की बात है कि हम ज़्यादातर नहीं जानते कि हमारे इस्तेमाल के software की अच्छी और बुरी features के लिए कौन ज़िम्मेदार था। फिल्मों में अंत में लंबी credits दिखाने की परंपरा है, और मुझे उन्हें ध्यान से पढ़ना पसंद है। software development में भी ऐसी संस्कृति होनी चाहिए। कुछ games ऐसा करते हैं, और कुछ Easter eggs भी वही काम निभाते हैं
काश spell check को पूरी तरह बंद किया जा सकता
मुझे पता है यह बहुत niche पसंद है, लेकिन मैं अपनी गलतियों के साथ रह सकता हूँ, और slang, technical terms, abbreviations जैसी चीज़ों को हर बार “learn” नहीं करवाना चाहता। मैं अक्सर सोचता हूँ कि non-standard English में लिखने वाले लोग आजकल कैसे काम चला रहे हैं। यह कल्पना करना मुश्किल है कि James Joyce को यह पसंद आता
मैं native speaker भी नहीं हूँ, इसलिए यह मेरे लिए निश्चित ही मददगार हो सकता था, लेकिन जानबूझकर लिखी गई strings पर शिकायत करना या auto-correct करना मुझे भी पसंद नहीं
मुझे याद है कि Larry Constantine को लहरदार underline सच में बहुत नापसंद थी
उनके शब्दों में, लिखते समय आपको हमेशा अगले शब्द के बारे में सोचना चाहिए, लेकिन लहरदार रेखा आपका ध्यान पहले से लिखे हुए शब्दों की ओर खींच ले जाती है। जैसे वह चिल्ला रही हो, “अरे, सुनो! क्या तुम्हें सच में spelling आती है? अभी जो ‘fatouos’ लिखा है वह आखिर है क्या?” और तब तक परेशान करती रहती है जब तक आप रुककर उस लहरदार underline वाले शब्द पर click करके उसे ठीक न कर दें। यह असल में Clippy का आदिम रूप है
अगर Word में vi की तरह दो modes होते तो इसका हल निकल सकता था। writing mode में कुछ भी बाधा न डाले और बस लिखने दे, फिर edit mode में जाने वाला button दबाते ही लहरदार रेखाएँ और AI suggestions जितनी चाहो उतनी दिखने लगें
Lobste.rs प्रतिक्रियाएँ
और यह फ़ुटनोट काफ़ी शानदार है: “शायद यह बात ज़्यादा जानी नहीं गई, लेकिन उन्होंने [Chip's Challenge port] बिना source code के किया। MS-DOS version का reverse engineering करने के बाद उसे Windows के लिए फिर से implement किया।”
अभी देखा तो Tony ने 1989 से Microsoft में आख़िर तक काम किया, और अगर हिसाब सही है तो उन्होंने 37 साल से थोड़ा ज़्यादा समय वहाँ बिताया
लेकिन फिर ध्यान आया कि 90 के दशक की शुरुआत में RAM शायद 4~8MB होती थी, इसलिए अंग्रेज़ी शब्दों की पूरी सूची को बस memory में लोड करके रखना संभव नहीं रहा होगा। ऊपर से, 90 के दशक की शुरुआत में C++ में multithreading की स्थिति कैसी थी, यह तो नहीं पता, लेकिन 2000 के दशक के आख़िर तक भी यह काफ़ी परेशान करने वाली थी, इसलिए संभव है कि यह काफ़ी कठिन समस्या रही हो
dictionary के आकार की बात करें तो, शुरुआती spell checker में से एक ने 1970 के दशक के आख़िर में अंग्रेज़ी dictionary को 64KB RAM में फिट करने में सफलता पाई थी (Jon Bentley की Programming pearls देखें)। DAWG का इस्तेमाल करने पर 1 लाख शब्दों वाली मध्यम आकार की अंग्रेज़ी dictionary को 400KB तक compress किया गया था, और spelling suggestions की खोज भी तेज़ थी: https://www.strchr.com/ternary_dags