1 पॉइंट द्वारा GN⁺ 2025-04-29 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • Windows 7 और Windows Server 2008 R2 में एकरंगी desktop background इस्तेमाल करने पर logon के दौरान Welcome screen अधिकतम 30 सेकंड तक बनी रह सकती थी, और वजह ready signal का छूट जाना था
  • Logon system taskbar, system service components, desktop window, wallpaper display आदि सभी के ready रिपोर्ट करने या 30 सेकंड बीतने तक Welcome screen को switch करता है
  • Wallpaper code केवल bitmap background होने पर ही Report(WallpaperReady) को call करता था, इसलिए bitmap न होने वाले एकरंगी background में waiting condition आखिर तक पूरी होती रही
  • “Hide desktop icons” group policy में भी यही pattern था: अगर Report(DesktopIconsReady) call condition के अंदर बंध जाए, तो icons ready होने की report छूट सकती है
  • वास्तविक logon हमेशा 30 सेकंड लंबा नहीं हुआ था; असल में 5 सेकंड या 25 सेकंड में पूरी हो जाने वाली तैयारी से अलग, Welcome screen 30 सेकंड timeout तक बनी रहती थी

एकरंगी background में Welcome screen लंबे समय तक क्यों रही

  • Logon authentication खत्म होने पर Windows user का desktop environment configure करता है
    • Taskbar बनाना
    • कई system services के जिम्मेदार components को load और initialize करना
    • Desktop window बनाना और icons दिखाना
    • Desktop background window में wallpaper load करके screen पर draw करना
  • Logon system हर component के ready होने की report आने तक इंतजार करता है
    • सभी components ready report कर दें, तो Welcome screen से आगे switch करता है
    • या 30 सेकंड बीत जाएं, तो Welcome screen से आगे switch करता है
  • एकरंगी background की समस्या इसलिए हुई क्योंकि wallpaper ready report bitmap loading code के अंदर थी
    • अगर bitmap background defined हो, तो file खोजकर memory में load की जाती है, screen पर draw की जाती है, और फिर Report(WallpaperReady) call होता है
    • एकरंगी background की तरह bitmap न हो, तो वह code path execute नहीं होता और WallpaperReady report नहीं जाती
    • Logon system उस report का इंतजार करता रहा जो आने वाली नहीं थी, और 30 सेकंड की limit पर पहुंच गया

Group policy में भी ready signal छूटने की वही गलती दोहराई गई

  • संबंधित support document में बताया गया था कि “Hide desktop icons” group policy on करने पर भी 30 सेकंड की देरी हो सकती है
  • Group policy अक्सर मौजूदा code के ऊपर बाद में जोड़ी जाती है, इसलिए उसे “policy अनुमति दे तो execute करें” जैसी condition में wrap कर देना आसान होता है
    • मूल desktop icon initialization code desktop folder से bind करता था, icons enumerate करता था, उन्हें screen पर add करता था, और फिर Report(DesktopIconsReady) call करता था
    • Group policy support जोड़ते समय अगर यह पूरा block policy condition के अंदर चला जाए, तो icons hide करने वाली policy active होने पर ready report भी execute नहीं होती
  • इस behavior का मतलब यह नहीं था कि logon task खुद 30 सेकंड extra ले रहा था
    • System performance के हिसाब से सभी ready reports खत्म होने का मूल समय 5 सेकंड भी हो सकता था और 25 सेकंड भी
    • समस्या होने पर Welcome screen वास्तविक तैयारी के समय से अलग 30 सेकंड timeout तक बनी रहती थी
  • Document timestamp के आधार पर यह issue Windows 7 के जुलाई 2009 में release होने के कुछ महीनों बाद, नवंबर 2009 में fix किया गया
  • Bitmap background से बचने की एक वजह यह भी थी कि पुराने 4MB या 8MB memory environment में सिर्फ wallpaper ही लगभग 0.75MB इस्तेमाल करता था, जो भारी पड़ता था

1 टिप्पणियां

 
GN⁺ 2025-04-29
Hacker News की रायें
  • एकरंगी background पसंद करने वाले के तौर पर, यह हमेशा हैरान करता है कि इतनी साधारण पसंद अक्सर कैसे अजीब rabbit holes में ले जाती है
    नए macOS में अगर custom solid-color background सेट करने की कोशिश करें, तो बस चकाचौंध सफेद screen दिखती है: https://discussions.apple.com/thread/256029958?sortBy=rank
    GNOME ने solid-color background सेटिंग UI पूरी तरह हटा दिया है, लेकिन कई setting keys को manually बदलें तो technically अब भी संभव है, और वे keys भी version दर version बेतरतीब ढंग से बदलती लगती हैं: https://www.tc3.dev/posts/2021-09-04-gnome-3-solid-color-bac...
    आखिरकार यह कुछ users के लिए आधा-अधूरा छोड़ा गया feature जैसा दिखता है, और इसे ठीक से support करना या साफ-साफ हटा देना बेहतर होगा। मैं बस RGB values डालना चाहता हूं, लेकिन मौजूदा हालत में अस्थिर background-color logic से बेहतर मुझे एक अच्छी तरह maintain किया गया wallpaper system लगता है

    • KDE में जांचकर देखा, wallpaper settings में wallpaper type: plain color चुनें तो color picker से रंग तय कर सकते हैं
      किस screen पर apply करना है यह भी दिखाता है, और सभी screens पर एक साथ apply करने के लिए boolean option भी है
    • आखिरी बार जब मैंने Android Galaxy phone इस्तेमाल किया था, पूरी तरह काला background लगाने के लिए Galaxy Store जैसी जगह से black image डाउनलोड करनी पड़ती थी
      आधुनिक phone displays पर power के लिहाज से भी यह समझदारी है और देखने में भी ठीक है, लेकिन जो चीज default option या settings में one-tap switch होनी चाहिए थी, वह अविश्वास, खोज और हार मानने से गुजरने वाला छोटा-सा काम बन गई
    • GNOME में solid-color background UI हटाकर सिर्फ settings keys को manually बदलने का रास्ता छोड़ना सचमुच GNOME जैसा experience का चरम है
    • हाल के macOS में भी मैंने solid color सेट किया था, लेकिन यह कई बार default forest photo पर वापस चला गया
      पुराने OS X में यह feature 20 साल से ज्यादा समय तक ठीक चलता था, इसलिए लगता है कि इसका संबंध System Preferences rewrite से है
    • मैं भी solid color पसंद करता हूं, लेकिन लगा कि बदलने का ज्यादा मतलब नहीं है
      desktop shortcuts का पीढ़ियों से जरूरत से ज्यादा इस्तेमाल होने के कारण desktop दिखाना screen space की बर्बादी बन गया है, और सावधानी बरतने पर भी अंत में यह बिखरा हुआ मैदान बन जाता है। Windows में खासकर ऐसा है, और मुझे बस desktop को किसी काम में न लाने और कई monitors पर windows हमेशा खुले रखने की आदत हो गई है
  • पिछले 25 साल Windows की दुनिया से बचने के बाद, हाल के वर्षों में corporate environment में लौटकर देखा तो Microsoft tools में यह pattern लगातार दिखता है
    security issue की वजह से Teams load नहीं होता, लेकिन notifications में message का पूरा content दिख जाता है; या Word cloud version में कुछ words type करने या पूरा document paste करने के बाद ही security check पीछे से आता है और sensitivity label सेट करने को कहता है
    यह Microsoft के web app software architecture के बहुत खराब होने का संकेत लगता है, और desktop apps भी अपवाद नहीं दिखते

    • यह सिर्फ Microsoft की समस्या नहीं है। याद है कि पुराने Google Photos में app के पास photos access permission नहीं थी, फिर भी उसने मेरी photos से बने AI-generated album preview का notification भेजा था
      बाद में permission request आई, और उसे deny करने पर preview गायब हो गया
    • Microsoft products को मैं अक्सर मजाक में 80% complete कहता हूं
      obvious use cases में वे बहुत अच्छी तरह काम करते हैं, लेकिन जैसे ही कोई uncovered edge case आता है, तुरंत अजीब समस्या सामने आती है। developers कमजोर हैं ऐसी reputation तो नहीं है, इसलिए यह corporate culture या काम करने के तरीके की वजह हो सकता है, और विशाल user base में 80% business के लिहाज से optimum भी हो सकता है। फिर भी बाहरी developer के तौर पर संभव हो तो Microsoft products से बचने का मन करता है
    • सबसे irritate करने वाली बात यह है कि Windows machines ने deep sleep की क्षमता खो दी है
      5 साल पहले जो laptops बिल्कुल ठीक से sleep हो जाते थे, अब वे 24-hour zombies बन गए हैं जिनमें CPU, fan और hard disk लगातार चलते रहते हैं
      मुझे यकीन है कि article में बताई गई वैसी ही किसी बेवकूफी भरी change ने ठीक-ठाक काम करने वाला feature खराब किया, और कोई इसे इसलिए नहीं ठीक कर रहा कि कहीं यह उस नए बकवास विचार में बाधा न डाल दे जिसमें 10 साल पुराना laptop sleep के दौरान भी AI चलाकर सुनी हुई बातों के आधार पर ads suggest करे
  • यह उस दौर में शुरू हुई लगने वाली practice से जुड़ता है: splash screen को सिर्फ एक तय समय तक दिखाना, फिर software पूरी तरह start होने से पहले ही user environment दिखा देना
    शक था कि operating systems और apps दोनों ऐसा इसलिए करते थे ताकि “app बहुत समय ले रहा है” वाली धारणा से बच सकें। अब software सच में load हुआ है या नहीं, यह इस्तेमाल करने से पहले अनुमान लगाना पड़ता है

    • enterprise information systems environment में कई security/monitoring systems के memory scan करने, block करने और cloud में detailed logs छोड़ने तक इंतजार करना पड़ता है
      उसके बाद ही नीचे का software पूरा load होने का खाली इंतजार करता हुआ unresponsive UI thread दिखाई देता है
    • इस 30-second timeout का इरादा साफ लगता है
      loading screen में हमेशा के लिए फंसकर किसी दूसरे OS में boot करके fix करने की स्थिति से बेहतर है कि desktop आधा टूटा हो, फिर भी किसी तरह इस्तेमाल करने लायक हो
    • “software पूरी तरह start होने से पहले user environment दिखाने” का तरीका आजकल web apps में पहुंच गया है
      कुछ करें तो UI loading/progress wheel दिखाता है, लेकिन असल में अंतहीन चलता रहता है; और webpage शुरू होते समय blank screen पर placeholder bars या धुंधली color images दिखती हैं। इसे ही कथित तौर पर responsive design कहते हैं
    • ऐसे मामलों में अगर 30 सेकंड बाद “loaded मान लो” वाला timeout न हो, तो bug में फंसा user loading screen में हमेशा के लिए अटक जाएगा
      कभी-कभी system को सच में load हो चुका है ऐसा optimistically handle करना user के लिए बेहतर होता है
  • मैंने लगभग हर जगह default settings इस्तेमाल करना सीख लिया है
    customizations को maintain करना इतना झंझट भरा है कि बस उन पर ध्यान न देना सबसे आसान है। अपवाद VS Code settings की करीब 50 lines हैं, जो कहीं किसी रहस्यमय file में sync होती हैं—शायद GitHub servers पर, लेकिन ऐसी किसी जगह नहीं जहाँ मैं देख सकूँ

    • जिन tools पर निर्भर हूँ वे बस कुछ ही हैं—emacs, vim, lf, mpv, fish, foot वगैरह—इसलिए उन्हें configure करने में समय लगाकर Git repository में डाल देता हूँ, ताकि हर जगह sync हो जाएँ
      अपने personal computer पर stow इस्तेमाल करता हूँ, और remote machines पर copy-paste करता हूँ। अच्छा यह है कि ये tools इतने stable हैं कि Debian stable पर जाने पर भी ठीक रहते हैं
    • क्या customizations को maintain करना सचमुच इतना झंझट है? ज़्यादातर चीज़ें अपनी पसंद से set करने के बाद सचमुच सालों तक वैसे ही छोड़ देता हूँ
      कई साल पुराना Sublime Text backup सीधे restore करूँ, तब भी मेरी user settings अभी भी काम करती हैं
    • reproducible और self-contained configuration bug reports में भी अधिकतर वही फायदे देती है
      नियमित reminder की तरह कहें तो, nix सचमुच अच्छा है
      आप कह सकते हैं: “एक bug है, और nixos-rebuild build-vm --flake "github:user/repo#test-vm" && ./result/bin/run-*-vm से reproduce करने वाली VM मिल सकती है।” उस VM को बनाने वाला code भी कोई security nightmare जैसा binary blob नहीं, बल्कि साधारण nix expression है जिसे कोई भी पढ़ सकता है, और नई machine पर लागू करना भी एक ही command में हो जाता है
    • खराब defaults इस्तेमाल करना भी झंझट है, और customizations maintain करने से कहीं ज़्यादा बार इससे पाला पड़ता है
    • एक professor कहा करते थे, “defaults शायद उन लोगों ने रखे हैं जो उस software को तुमसे बेहतर जानते हैं”
      अगर आप समझते हैं कि defaults क्या करते हैं, तो दुनिया के सारे options छेड़ना अक्सर ज़्यादा झंझट भरा होता है
  • “comfort food” वाली अभिव्यक्ति मजेदार है। AIX से Linux पर आने के बाद भी मैं अब भी motif window manager के साथ steelblue4 desktop और wheat xterm background इस्तेमाल करता हूँ
    1989 में university के दिनों में पहली बार जिन defaults से सामना हुआ था, वही थे, और उसके बाद कुछ बेहतर हुआ है ऐसा महसूस नहीं होता। GNOME, KDE जैसी चीज़ें तो उल्टी जैसा एहसास कराती हैं

    • इस लेख में “comfort food” का मतलब यह एहसास है कि team चाहे कितनी भी बड़ी और sophisticated हो, हर कोई production में सचमुच बेवकूफी भरे changes भेज देता है
      scope थोड़ा ज़्यादा चौड़ा हो गया patched if() wrapper इसका classic उदाहरण है
    • bb4win को लेकर nostalgia है। university में इसके बारे में पता चला था, और वही Linux से पहली मुलाकात का कारण बना
      nostalgia एक ताकतवर दवा है
    • सोचता हूँ, अगर 4K monitor इस्तेमाल करने का मन हुआ तो क्या करोगे
      तंज नहीं कर रहा, सच में जानना चाहता हूँ कि motif में HiDPI सचमुच काम करता है या नहीं
  • बहुत पहले, जब मैं hobby के तौर पर Windows इस्तेमाल करता था, मैंने एक खास Windows registry key की value edit करके explorer.exe को cmd.exe से बदल दिया था
    तब Windows explorer.exe चलाकर wallpaper और icons वाला desktop नहीं दिखाता था, और UNIX window manager की तरह solid-color background पर हर window Microsoft cmd.exe shell के रूप में खुलती थी। classic Windows वाली काली box, नीली title bar और पतले grey border के साथ, और command prompt से C:\windows\system32 के taskmgr.exe जैसे apps चला सकते थे
    मुझे यह explorer.exe इस्तेमाल करने की तुलना में कहीं तेज और मजबूत लगा, और निश्चित रूप से हल्का था। बाद में Arthur Whitney के एक लेख की तस्वीर में Windows desktop पर सिर्फ cmd.exe की एक window खुली देखी थी; मैं कोई इशारा नहीं करना चाहता, लेकिन वह हमेशा याद रह गई
    हाल में Microsoft docs में भी यह देखा: https://learn.microsoft.com/en-us/windows/configuration/shel...

    • Windows Server में ऐसा mode है या था
      याद है कि IoT या embedded के लिए सस्ते/free Windows में भी कोई version था जो explorer के बिना cmd-only mode में चलता था
  • ऐसी चीज़ें उस category में आती हैं जिसे मैं systemic bug या “type bug” कहता हूँ
    अगर login component को token pass किया जाता, और token का destructor अपने-आप process completion mark कर देता, तो यह bug लिखना लगभग असंभव होता
    इसके बजाय runtime ने इसे “components को यह याद रखना होगा” जैसा बना दिया, इसलिए code structure खुद bug की गुंजाइश देता है
    कुछ साल पहले Facebook में भी ऐसा ही bug था: notification count दिखाता था कि notifications हैं, लेकिन click करने पर कुछ नहीं होता था। count update path और list insertion path अलग थे, इसलिए वे mismatch हो गए; जब दोनों को system के एक ही हिस्से से manage करवाया गया, तो वह bug हमेशा के लिए गायब हो गया

    • Reddit पर भी गलत notification icon हमेशा आता रहता है
      मैं हमेशा सोचता रहा हूँ कि वजह खराब caching है
  • थोड़ा meta है, लेकिन Raymond Chen के लेखों के लिए “Why did happen with” जैसे title की उम्मीद होने लगी है
    हमेशा दिलचस्प होते हैं

    • The Old New Thing Windows की अजीबताओं का शानदार collection है
      बचपन से Windows computing को लेकर जो अंधविश्वास थे, उन्हें सच में समझाने वाला यह अकेला blog रहा है
  • वह code मुझे मेरे पसंदीदा Kubernetes bugs में से कई की याद दिलाता है
    if (request.authenticationData) { ok := validate(etc); if (!ok) { return authenticationFailure; } }
    वही meme दशकों को पार करते हुए चलता आ रहा है

    • यह “validate मत करो, parse करो” वाले सिद्धांत का अच्छा उदाहरण है
      जिन functions को कोई permission चाहिए, उन्हें वही permission argument के रूप में लेने दें; उदाहरण के लिए void doFoo(PermissionToDoFoo permission, ...){...} जैसा लिखें, और call सिर्फ उस path से संभव हो जो authentication data से permission हासिल करता है
      तब permission के बिना Foo perform करने वाली invalid state को represent करना ही असंभव हो जाता है
    • उस bug के बारे में कहाँ पढ़ सकते हैं? यह भी जानना है कि bug ठीक-ठीक क्या था
      क्या authenticationData न होने पर default रूप से authenticated मान लिया जाता था?
    • software बनाने का तरीका दशकों से नहीं बदला है
  • विषय से थोड़ा हटकर, लेकिन लॉगिन स्क्रीन पर अपने-आप refresh होने वाले Windows Spotlight wallpapers मुझे बहुत पसंद थे
    इसलिए मैंने उन्हें desktop wallpaper के साथ sync करने वाला script भी लिखा था। लेकिन मेरे Windows 10 पर वह बिना किसी वजह के रुक गया, इसलिए मैंने इसके बजाय Bing Image of the Day download करने वाला script लिखा: https://blog.est.im/2025/stdout-03

    • Windows 11 में Spotlight को desktop wallpaper के रूप में set किया जा सकता है
    • इसके लिए आधिकारिक Bing Wallpaper App(https://www.bing.com/apps/wallpaper) है, लेकिन इसमें default browser को Edge में बदलवाने की झुंझलाहट और dark patterns तरह-तरह से भरे हुए हैं
    • KDE Plasma में यह built-in feature है