ലേബൽ പ്രിന്റർ DPI-യെ കുറിച്ച് കള്ളം പറയുന്നു

300 dpi ഉള്ള ഉപകരണമെന്ന് പരസ്യം ചെയ്തിട്ടുള്ള Niimbot-ന്റെ N1 ലേബൽ പ്രിന്റർ യഥാർത്ഥത്തിൽ ഏകദേശം 203 dpi-ൽ മാത്രമേ പ്രിന്റ് ചെയ്യുന്നുള്ളൂ എന്ന് ഒരു ഓപ്പൺ സോഴ്സ് Web Bluetooth ഡ്രൈവർ വെളിപ്പെടുത്തുന്നു.

Niimbot-ന്റെ മൊബൈൽ ആപ്പ് ഉപയോഗിക്കുന്നതിന് പകരം ഒരു വെബ് പേജിൽ നിന്ന് നേരിട്ട് പ്രിന്റ് ചെയ്യുന്നതിനായി ഡെവലപ്പർ ഈ ഡ്രൈവർ നിർമ്മിച്ചു. അദ്ദേഹം പ്രൊപ്രൈറ്ററി പ്രോട്ടോക്കോൾ റിവേഴ്സ് എഞ്ചിനീയറിംഗ് നടത്തി അത് Web Bluetooth API വഴി ബ്രൗസറുകൾക്കായി ലഭ്യമാക്കി. അങ്ങനെ ചെയ്തപ്പോൾ, ഒരു ഫീച്ചർ വിട്ടുപോയത് മാത്രമല്ല, കൃത്യത ആവശ്യമായ ചെറിയ പാക്കേജിംഗ് ജോലികൾ, ഇൻവെന്ററി ടാഗുകൾ അല്ലെങ്കിൽ ഹോബി പ്രജക്റ്റുകൾ എന്നിവയെ തകരാറിലാക്കാൻ സാധ്യതയുള്ള ഒരു അടിസ്ഥാനപരമായ തെറ്റായ വിവരണം (mis-specification) അദ്ദേഹം കണ്ടെത്തി.

ഈ തെറ്റായ വിവരണം എങ്ങനെ പുറത്തുവന്നു

ഓരോ ഇഞ്ചിലും 300 ഡോട്ട്സ് (dots per inch) ഉണ്ടെന്ന് സൂചിപ്പിച്ചുകൊണ്ട് Niimbot N1-നെ ഒരു 300 dpi പ്രിന്ററായി വിപണനം ചെയ്യുന്നു. ഡെവലപ്പർ ഒരു റൂളർ സ്കെയിൽ ഇമേജും നമ്പറുകൾ അടങ്ങിയ ഒരു ടെസ്റ്റ് പാറ്റേണും പ്രിന്റ് ചെയ്യുകയും, തുടർന്ന് ഒരു ഫിസിക്കൽ റൂളർ ഉപയോഗിച്ച് അടയാളങ്ങൾ അളക്കുകയും ചെയ്തു. കണക്കുകൾ നിരന്തരം സൂചിപ്പിച്ചത് അവ 300 dpi അല്ല, മറിച്ച് ഏകദേശം 203 dpi ആണെന്നാണ്.

ഒരു ഹാർഡ്‌വെയർ ഡ്രൈവർ എഴുതിയതിൽ നിന്നുള്ള കഠിനമായ നാല് പാഠങ്ങൾ

  1. ഒരു "വിജയകരമായ" ജോലി ഒന്നും തന്നെ ഉൽപ്പാദിനിച്ചേക്കില്ല. പ്രിന്റർ ഡാറ്റ ബർസ്റ്റുകളായി (bursts) ആണ് കൈമാറുന്നത്. ചില പ്ലാറ്റ്‌ഫോമുകളിൽ ബ്ലൂടൂത്ത് സ്റ്റാക്ക് ഒരു എറർ റിപ്പോർട്ട് ചെയ്യാതെ തന്നെ ഒരു 'റൈറ്റ്' (write) ഒഴിവാക്കിയേക്കാം. ഡ്രൈവർ ജോലി പൂർത്തിയായതായി കരുതുന്നുണ്ടെങ്കിലും, ലേബൽ ശൂന്യമായോ അല്ലെങ്കിൽ അപൂർണ്ണമായോ വരുന്നു. ഒരു ഷീറ്റ് ശരിക്കും ഫീഡ് ചെയ്യപ്പെട്ടോ എന്ന് പരിശോധിക്കാൻ ഡെവലപ്പർ ഇപ്പോൾ ഓരോ ജോലിക്കും ശേഷം പ്രിന്ററിലെ ഫിസിക്കൽ പേജ് കൗണ്ടർ പരിശോധിക്കുന്നു.

  2. ഡോക്യുമെന്റേഷൻ യാഥാർത്ഥ്യമല്ല. 300 dpi എന്ന അവകാശവാദം ഇതിന് വ്യക്തമായ ഉദാഹരണമാണ്. സ്പെസിഫിക്കേഷനുകൾ അമിതമായി പ്രതീക്ഷിച്ചതോ, കാലഹരണപ്പെട്ടതോ അല്ലെങ്കിൽ വെറുതെ തെറ്റായതോ ആകാം. ദൃശ്യപരമായ കൃത്യത (visual fidelity) പ്രധാനമാകുമ്പോൾ ഡെവലപ്പർമാർ നിർണ്ണായകമായ പാരാമീറ്ററുകൾ സ്വയം അളക്കേണ്ടതുണ്ട്.

  3. "ഫിറ്റ്" ടെസ്റ്റുകളേക്കാൾ ഫലപ്രദമാണ് ഫിസിക്കൽ മാർക്കുകൾ. ലേബൽ ഏരിയയിൽ ചിത്രം കൃത്യമായി വരുന്നുണ്ടോ എന്ന് നോക്കാൻ ഒരു ചിത്രം പ്രിന്റ് ചെയ്യുന്നത് റെസല്യൂഷൻ, പ്രിന്റ്ഹെഡ് വീതി അല്ലെങ്കിൽ ഓഫ്‌സെറ്റ് പിശകുകൾ എന്നിവയെ മറച്ചുവെച്ചേക്കാം. അറിയപ്പെടുന്ന ഒരു ജ്യാമിതീയ അടയാളം (geometric mark) പ്രിന്റ് ചെയ്യുകയും അതിന്റെ കൃത്യമായ സ്ഥാനം അളക്കുകയും ചെയ്യുന്നത് ഉപകരണത്തിന്റെ യഥാർത്ഥ പ്രവർത്തനം വെളിപ്പെടുത്തുന്നു.

  4. ഒരു പ്രോട്ടോക്കോൾ വിവരിക്കുന്നത് വ്യാകരണത്തെക്കുറിച്ചാണ്, ഹാർഡ്‌വെയറിന്റെ സ്വഭാവത്തെക്കുറിച്ചല്ല. ഒരേ കമാൻഡ് സെറ്റ് ഉപയോഗിക്കുന്ന രണ്ട് പ്രിന്ററുകൾ വ്യത്യസ്തമായി പെരുമാറിയേക്കാം—ഒന്ന് വേഗത്തിലുള്ള പേജ് റീപ്പീറ്റുകൾ കൈകാര്യം ചെയ്യുമ്പോൾ മറ്റൊന്ന് തടസ്സപ്പെട്ടേക്കാം. പ്രോട്ടോക്കോൾ ഡോക്യുമെന്റേഷനിൽ മാത്രം dựaപ്പെടുത്തിക്കൊണ്ട് ഡ്രൈവർക്ക് ഒരേ പ്രകടനം പ്രതീക്ഷിക്കാനാവില്ല; ഓരോ മോഡലിനും യഥാർത്ഥ ലോക പരീക്ഷണങ്ങൾ ആവശ്യമാണ്.

ഈ ഡ്രൈവർ പ്രധാനമാകുന്നത് എന്തുകൊണ്ട്

ഈ ഡ്രൈവർ എല്ലാം അറിയാമെന്ന് ഒരിക്കലും നടിക്കില്ല. പ്രിന്ററിൽ നിന്ന് നേരിട്ട് വായിക്കുന്നതിന് പകരം ഒരു മൂല്യം ഊഹിച്ചെടുക്കുമ്പോഴെല്ലാം, അത് ആ ഫീൽഡിനെ ഒരു 'ഊഹം' (guess) എന്ന് അടയാളപ്പെടുത്തുന്നു. ഈ സുതാര്യത, മണിക്കൂറുകളോളം ഡീബഗ്ഗിംഗിനായി ചെലവഴിക്കേണ്ടി വരുന്ന നിശബ്ദമായ പിശകുകളെ തടയുന്നു.

ഡ്രൈവർ എങ്ങനെ ലഭിക്കും

ഈ ഡ്രൈവർ Chrome അല്ലെങ്കിൽ Edge-ൽ പ്രവർത്തിക്കുന്നു. ഇതിന് ബ്ലൂടൂത്ത് സൗകര്യമുള്ള ഒരു ഉപകരണവും സപ്പോർട്ട് ചെയ്യുന്ന ഒരു Niimbot പ്രിന്ററും മാത്രം മതിയാകും. ലൈവ് ഡെമോ ഇവിടെ പരീക്ഷിക്കാം:

https://iscarelli.github.io/niimbot-web-bluetooth/demo/

ഇതിന്റെ സോഴ്സ് കോഡ് GitHub-ൽ ലഭ്യമാണ്, അവിടെ കമ്മ്യൂണിറ്റിക്ക് മോഡൽ ഡാറ്റ നൽകാനോ, ബഗുകൾ പരിഹരിക്കാനോ, അല്ലെങ്കിൽ മറ്റ് ബ്രൗസറുകൾക്കായി ഡ്രൈവർ മാറ്റം വരുത്താനോ സാധിക്കും:

https://github.com/iscarelli/niimbot-web-bluetooth

Niimbot ഉടമകൾക്ക് മോഡൽ ഡാറ്റാബേസ് പൂരിപ്പിക്കാൻ സഹായിക്കാനാകും; ഇതിനായി ഏകദേശം പത്ത് മിനിറ്റും രണ്ട് ലേബലുകളും മതിയാകും.

വിപരീത വാദം

കമ്പനി ഈ വ്യത്യാസം വ്യക്തമാക്കുന്നത് വരെ, ഡെവലപ്പർമാർ അളന്നെടുത്ത മൂല്യം ഉപയോഗിച്ച് തന്നെ പ്രവർത്തിക്കേണ്ടി വരും.

ഇതിലെ പാഠം ലളിതമാണ്: ഒരു വെബ് പേജിൽ നിന്ന് നിങ്ങൾ ഉപയോഗിക്കുന്ന ഹാർഡ്‌വെയർ അതിന്റെ സ്പെക് ഷീറ്റ് വാഗ്ദാനം ചെയ്യുന്നതുപോലെ പ്രവർത്തിച്ചേക്കില്ല. നിർണ്ണായകമായ പാരാമീറ്ററുകൾ പരിശോധിക്കുക, നിശബ്ദമായ പരാജയങ്ങൾ പ്രതീക്ഷിക്കുക, കൂടാതെ അനിശ്ചിതത്വം മറച്ചുവെക്കുന്നതിന് പകരം അത് വെളിപ്പെടുത്തുന്ന ഡ്രൈവറുകൾ തിരഞ്ഞെടുക്കുക.