5 पॉइंट द्वारा GN⁺ 2023-11-04 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • एक developer ने रिटायरमेंट के मौके पर 40 साल से अधिक समय में जमा किया गया source code सार्वजनिक किया, जिससे पुराने systems, tools और personal projects को सीधे देखा जा सकता है
  • सार्वजनिक सामग्री में ARM के लिए multi-process/task kernel, 6809 CPU के लिए operating system, Altair 1980 दौर का शुरुआती OS जैसे operating systems और kernels भी शामिल हैं
  • Micro-C Compiler, cross assembler, disassembler, 8052 emulator, debugger जैसे low-level development tools भी साथ दिए गए हैं
  • DOSBox, DOS utilities, file synchronization, ZIP processing, installation package creation, text editor जैसे PC work utilities की विस्तृत range सार्वजनिक की गई है
  • amateur radio, RS-232 infrared remote control, Ethernet TTY, X10 control, 1500 DVDs पढ़ने के लिए बनाया गया robot जैसे personal hardware projects तक शामिल हैं, इसलिए इनका preservation value बड़ा है

सार्वजनिक करने का उद्देश्य और guide documents

  • रिटायरमेंट के मौके पर “मेरे द्वारा लिखी गई चीज़ों” के तौर पर 40 साल से अधिक समय में जमा source code सार्वजनिक किया गया
  • इसका उद्देश्य यह है कि दूसरे लोग इस code का उपयोग कर सकें, या इसके कुछ हिस्सों से सीख सकें
  • सार्वजनिक page के साथ दिए गए documents:

Operating systems, kernels, virtual machines, simulation

  • ARMOS: ARM के लिए multi-process/task kernel
  • CUBIX: 6809 CPU के लिए operating system
  • DMF: Altair 1980 दौर का शुरुआती OS
  • DVM: Dunfield Virtual Machine
  • SIMSYS: Altair, D6809, H8, Horizon, Mod8 से जुड़े systems
  • MONITORS: कई embedded processors के लिए monitors
  • 8051ICE: EMILY का उपयोग करने वाला in-circuit emulator
  • EMILY52: 8052 emulator

Compilers, assemblers, debuggers, development helper tools

  • MICRO-C: Micro-C Compiler
  • MCSAMPLE: Micro-C example programs
  • XASM: cross assembler और tools
  • DISASM: cross disassembler
  • DMS: Dunfield MicroScope debugger
  • DESMO: Debug Scripting Monitor
  • DDSIDE: Dunfield Development Systems IDE
  • BLDTOOL: build tasks में मदद करने वाला tool
  • PUBSRC: public source section maintenance tool
  • HFC: Help File Compiler
  • ESL: Extensible Script Language

DOS, files, disks, editing, packaging utilities

  • DBBD: DosBox boot floppy disk
  • DBUTIL: DosBox utilities
  • DD_DBSRC: DosBox source code tree
  • DOSUTIL: कई DOS utilities
  • FDI: Floppy Disk Image
  • IMDSRC: ImageDisk
  • EDT: EDT text editor
  • ELF: long filenames editing tool
  • FTOOLS: file work के लिए कई tools
  • SYNC: दो directory trees को synchronize करना
  • ZDIR: ZIP के अंदर files list करना और touch
  • MAR: installation files को compress करने वाला MicroARchiver
  • MKPKG: single .exe package installation file बनाना
  • ESP: executable file string patching
  • PT: PaperTape tool
  • MICROCAD: बहुत छोटा CAD drawing program

Hardware, communication, control, personal projects

  • DARC: Dunfield Amateur Radio Controller
  • HTX242: RS HTX-242 amateur transceiver control
  • ICOMCIV: amateur radio के लिए ICOM CI-V interface code
  • IR232: RS-232 serial infrared learning remote control
  • ETTY: Ethernet TTY
  • SNIFF: Ethernet sniffer
  • DLM: Data Line Monitor
  • ITS: Interactive Terminal Switch
  • DDLINK: COM, LPT, NET file transfer के लिए DavesDataLink
  • SERCNCT: एक COM port पर कई devices switch करना
  • DBOX: Sony VCR controller
  • DVDROBOT: 1500 DVDs पढ़ने के लिए बनाया गया robot
  • EPROM: EPROM programmer
  • 8031DWG: 8031-based design sample
  • X10CTRL: PC से X10 devices control करना
  • RINGSW: phone line distinctive ring switch
  • PC100: VT-100 terminal emulator
  • LABTOOLS: कई lab/test tools
  • CAM: developmentally disabled children के लिए project
  • MACMON: बच्चों के network usage की monitoring/logging
  • TRANZTCL: Verifone TRANZ PointOfSale development tool

1 टिप्पणियां

 
GN⁺ 2023-11-04
Hacker News की राय
  • DOSUTIL.ZIP पर नज़र डाली तो उसमें मौजूद सरल और सुंदर C programs सचमुच अच्छे लगे
    काफ़ी हिस्सों में standard C #include सिर्फ़ 1–2 lines हैं, और 20 हज़ार lines के C code में केवल 24 #if हैं—यह भी काफ़ी प्रभावशाली है
    ऐसा codebase पढ़ने का अनुभव Cosmopolitan Libc पर काम शुरू करते समय प्रेरणा बना

    • अगर build target सिर्फ़ एक हो, तो #if macros बहुत कम किए जा सकते हैं
    • पुराने C compilers कई तरह की गलतियों को चुपचाप जाने देते थे, जिन्हें modern C compilers ठीक से पकड़ लेते
    • Rust side में एक simple HTTP listener लिखा था जिसमें सिर्फ़ एक route था, लेकिन Cargo ने build करने के लिए लगभग 105 dependencies खींच लीं
      फिर भी समान तुलना करें तो use statements सिर्फ़ 2 ही हैं
    • इसके उलट C में सिर्फ़ macros से implemented hash table भी है। काफ़ी शानदार: https://troydhanson.github.io/uthash/
  • STYLE.TXT में True=7 वाली convention अपरिचित लगी
    Low-level code और hardware experience की वजह से “low level पर जो गलत हो सकता है उसे कम से कम करने” के लिए, C में 0==FALSE, !0==TRUE होने का फायदा उठाकर 1 के बजाय 7 को true के रूप में इस्तेमाल किया जाता था—ऐसा लिखा है
    यह आदत के तौर पर चुना गया विकल्प था कि 1-bit difference से 3-bit difference बेहतर है, लेकिन अगर सच में ऐसी 1-bit hardware error हो तो system का ज़्यादातर हिस्सा टूट जाएगा, इसलिए लेखक खुद भी इसे मूर्खतापूर्ण मानते हैं
    सोचता/सोचती हूँ कि पहले random bit flips से conditionals खराब हो जाना क्या आम था

    • मान भी लें कि ऐसा होता था, तब भी हर conditional को 3-state boolean की तरह नहीं सोचा जा सकता
      यह तय करना होगा कि failure में कौन-सी branch को सुरक्षित मानकर चलाना है, हर condition के bits गिनने हैं और अगर 1s, 0s से ज़्यादा हों तो उसे true मानना है या नहीं, और error correction के बिना bit flip हुआ तो log करना है या operator को alert करना है या नहीं
      Error-detecting codes के उपयोगी use cases हैं, लेकिन true को 7 तय कर देने भर से काम नहीं चलता
    • लेखक ने भी असल में इसे मूर्खतापूर्ण आदत ही माना है, और उल्टा intention कम स्पष्ट हो जाता है
      फिर भी style document पढ़ना अच्छा लगा, और यह सब public कर दिया गया है—यह बात पसंद आई। किसी न किसी के लिए इसमें बिल्कुल सही tool ज़रूर होगा
    • Serial data line काम कर रही है या नहीं यह check करते समय 0xA5(1010 0101) का इस्तेमाल करके थोड़ी बदली हुई alternating bit pattern भेजी जाती है
      मकसद एक बार में जितनी ज़्यादा failure possibilities हो सकें, उन्हें check करना है
    • अगर चिंता इस स्तर की है, तो TRUE=7 कोई वास्तविक solution नहीं है
      Boolean variable हो तो हर condition में if (var == TRUE), else if (var == FALSE), और बाकी values के लिए क्या करना है—यह सब handle करना पड़ेगा, और वह handling code खुद crash नहीं होना चाहिए
      ऊपर से bit flips switch में इस्तेमाल variable, if (i > 17) जैसी conditions, pointers, stack के return address, और code itself को भी affect कर सकते हैं
      अधिक से अधिक यह बहुत partial solution है, और implement करना भी मामूली नहीं, इसलिए इसे standard convention कहना मुश्किल है
    • यह आम समस्या कम और “हो भी सकता है, इसलिए आसान जगहों पर रोकने की कोशिश करें” जैसा ज़्यादा है
      निजी तौर पर शायद मैं -1 इस्तेमाल करता/करती
  • पुराना code ठीक से संभालकर न रखने का बहुत अफ़सोस है
    पहला non-trivial program यानी snake game, assembly में बनाई पहली utility, Centronics printer के लिए पहला device driver, और university assignment के लिए भारी hangover में एक घंटे में Pascal में बनाया perpetual calendar—सबको मामूली और संभालकर रखने लायक नहीं माना
    नतीजा यह कि 1990s के आख़िर से पहले का कोई code बचा ही नहीं। युवा developers को अपना code अच्छी तरह archive करना चाहिए

    • आजकल बच्चे Git और कई hosting hubs इस्तेमाल करते हैं, इसलिए code गायब होना दुर्लभ है; इस लिहाज़ से यह समस्या शायद हमारी पीढ़ी तक ही सीमित रहेगी
      बेशक अगर ये “free” services बंद हो जाएँ तो दिक्कत होगी, इसलिए self-hosting भी उपयोगी है
    • पुराना code तो बहुत है, लेकिन इतना शर्मनाक है कि दोबारा देखना नहीं चाहता/चाहती
    • मेरे साथ भी कुछ ऐसा ही है। मैंने DOS spreadsheet program भी बनाया था, modeX charts और formulas भी थे, कुछ games और कुछ viruses भी बनाए थे
      उस समय TSR जादू जैसा लगता था। शायद माँ के घर के basement में पड़े floppy disks में कहीं मौजूद हो
  • लेखक ने 2019 में लगभग मरते-मरते बचने की जो बात लिखी है, वह भी पढ़ने लायक है: https://dunfield.themindfactory.com/2019.htm

    • ज़बरदस्त था। 2015 में heart attack के बाद 90% heart damage झेल चुके अपने father-in-law याद आ गए
      Test results इतने खराब थे कि एक doctor ने इलाज करने से मना कर दिया, क्योंकि उन्हें डर था कि वे consultation के दौरान कभी भी मर सकते हैं
      लेकिन वे आज भी ज़िंदा हैं, सामान्य जीवन जी रहे हैं, और हर Saturday beach पर दौड़ते भी हैं। Test results बेहतर नहीं हुए और वे हमेशा सांस फूलने की शिकायत करते हैं, लेकिन वे ऐसे इंसान लगते हैं जो बस मरने से इनकार कर रहे हों
      Link में doctor ने जो कहा, “कागज़ों में लिखे से कहीं बेहतर दिखते हैं”, वैसा ही
    • समझ नहीं आता doctors ऐसा क्यों करते हैं
      लेख में एक हिस्सा था कि “बच्चों को गले लगाना, अपने बिस्तर में सोना, खाना खाना, और हाथों से थोड़ा काम करना” तक सब नकार दिया गया था; जब मेरे पिता leukemia और pneumonia से ठीक नहीं हो रहे थे और breathing tube नहीं हट पा रही थी, तब doctors ने भी बहुत ज़ोर देकर यही कहा था कि उन्हें जीवनभर disability रहेगी
    • अजीब तरह से H. P. Lovecraft की The Shadow Out of Time याद आ गई
    • उदास है, लेकिन आखिर में happy ending जैसा दिखता है
  • सचमुच बढ़िया। कई बार सोचा है कि किसी दिन मैं भी कुछ ऐसा ही करना चाहूँगा
    यह कुछ-कुछ दादा-दादी से विरासत मिलने जैसा है। असली रत्न और अजीबोगरीब चीज़ें कबाड़ और कचरे के बीच मिली-जुली होंगी, लेकिन वह पूरा संग्रह समृद्ध और दिलचस्प जीवन जी चुके वास्तविक लोगों की कहानियाँ दिखाता है
    सिर्फ कुछ highlights उस जीवन को ठीक से समेट नहीं सकते

    • यह सिर्फ रिटायर होने के बाद ही क्यों करना चाहिए? अभी तुरंत क्यों नहीं?
    • काश 40 साल की programming में बनाई गई चीज़ों में से कुछ बचाकर रखी होतीं, लेकिन हर बार नई नौकरी पर जाते समय सब कुछ पीछे छोड़ आया
      खुशकिस्मती से 90 के दशक के अंत में बनाया गया commercial memory allocator अब भी बचा है। वह single-threaded था और सिर्फ Metrowerks CodeWarrior और पुराने MacOS को support करता था, लेकिन Mac पर सबसे तेज़ और bug-free allocator था
      MacOS X आने के बाद वह बेकार हो गया, और अब किसे इसमें दिलचस्पी होगी, पता नहीं
      जैसा कल कहा था, Trapeze source code खो गया है(https://en.wikipedia.org/wiki/Trapeze_(spreadsheet_program)). शायद मैंने कभी यह सोचा ही नहीं कि अपने काम को संभालकर रखूँ ताकि बाद में, जब किसी को फर्क न पड़े, उसे share कर सकूँ
  • वाकई शानदार। मेरे code history की आगे चलकर जो शक्ल दिखेगी, उससे तुलना करें तो यह काफी शुद्ध code जैसा लगता है
    2040 में मेरा code शायद ऐसी libraries और frameworks के ढेर सारे निशान दिखाएगा जिन्हें “आजकल कोई इस्तेमाल नहीं करता”
    यह अच्छे या बुरे की बात नहीं, बस अपने समय का प्रतिबिंब है

    • अगर उन dependencies को खुद साथ में archive करके नहीं रखते, तो बाद में कोई भी code को ठीक से पढ़ या build नहीं कर पाएगा
      आजकल प्रचलित development practices हैरान करने वाली हद तक क्षणिक और fragile हैं। अभी के projects में शायद ही कोई ऐसा हो जो unattended 10 साल टिक सके, 40 साल तो और भी मुश्किल हैं
    • ये सब pip install और npm install बेकार हो जाएँगे
  • सबसे प्रभावशाली utility मुझे ImageDisk लगती है
    IBM PC का उपयोग करके अलग-अलग तरह के computers से आए floppy disks को preserve करने में इसका इस्तेमाल हुआ, और bitsavers.org और archive.org पर मौजूद बहुत-सा पुराना software इसी tool से recover किया गया

  • Vernor Vinge की A Deepness in the Sky में हजारों साल बाद का मानव समाज दिखता है, जहाँ लगभग सारा software पहले ही लिखा जा चुका है और समस्या बस उसे खोजने की है
    इसलिए programmer-archaeologists archives खंगालते हैं, और जरूरत पड़े तो emulator के अंदर emulator के अंदर emulator में code चलाते हैं: https://garethrees.org/2013/06/12/archaeology/
    आप भी ऐसे खजाने के ढेर में योगदान दे रहे हैं जिससे कोई न कोई लाभ उठाएगा, चाहे कल हो या 5,000 साल बाद

    • Vinge को पसंद करने वाले engineers को खास तौर पर वह हिस्सा पसंद आता है जहाँ आम तौर पर माना जाता है कि आधुनिक, यानी बहुत दूर भविष्य का calendar मानवता की पहली चंद्रमा landing पर आधारित है, लेकिन असल में वह Unix Epoch पर आधारित होता है
  • रिटायरमेंट से ठीक पहले आखिरी bug fix वाले मजाक के तौर पर, micro-cad देखने की कोशिश की तो 404 आया
    URL: https://dunfield.themindfactory.com/dnld/sc/MICROCAD.ZIP
    अपेक्षित behavior यह है कि .zip file download हो सके

    • लगता है पूरा package MCSAMPLE zip में साथ में शामिल है
    • मुझे भी वही 404 मिला। मूल CAD program ज्यादा नहीं हैं, इसलिए मैं इसे जरूर देखना चाहता हूँ
  • बेहतरीन। किसी खास भाषा या automation work के लिए मैंने हमेशा पास रखने वाली कुछ निजी “bibles” इकट्ठी की हैं, और HN से सीखे हुए organization methods भी काफी हैं
    बस वे मेरी सोचने की प्रक्रिया से बहुत निजी और specialized लगती थीं, इसलिए उन्हें public करने के बारे में कभी नहीं सोचा था
    लेकिन ऐसी materials देखकर प्रेरणा मिली। सचमुच शानदार idea है, और संभव हो तो retirement project के लिए आभार के रूप में financial support भी देना चाहूँगा

    • यहाँ “bibles” से आपका ठीक-ठीक मतलब क्या है, यह जानना चाहूँगा
      और यह भी जानना चाहूँगा कि आपने कौन-से organization methods सीखे। दूसरों की productivity tips या software सीखने में मेरी हमेशा दिलचस्पी रहती है
    • मेरे पास भी ऐसी कई bibles हैं
      अगर दिलचस्पी हो तो files आपस में exchange करना चाहूँगा। लगता है आपकी materials से बहुत कुछ सीखने को मिलेगा। मेरा Gmail username HN username जैसा ही है