रिटायरमेंट पर 40 साल से अधिक समय में जमा किया गया source code सार्वजनिक किया
(dunfield.themindfactory.com)- एक 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
.exepackage 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 टिप्पणियां
Hacker News की राय
DOSUTIL.ZIP पर नज़र डाली तो उसमें मौजूद सरल और सुंदर C programs सचमुच अच्छे लगे
काफ़ी हिस्सों में standard C
#includeसिर्फ़ 1–2 lines हैं, और 20 हज़ार lines के C code में केवल 24#ifहैं—यह भी काफ़ी प्रभावशाली हैऐसा codebase पढ़ने का अनुभव Cosmopolitan Libc पर काम शुरू करते समय प्रेरणा बना
#ifmacros बहुत कम किए जा सकते हैंफिर भी समान तुलना करें तो
usestatements सिर्फ़ 2 ही हैं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 खराब हो जाना क्या आम था
यह तय करना होगा कि failure में कौन-सी branch को सुरक्षित मानकर चलाना है, हर condition के bits गिनने हैं और अगर 1s, 0s से ज़्यादा हों तो उसे true मानना है या नहीं, और error correction के बिना bit flip हुआ तो log करना है या operator को alert करना है या नहीं
Error-detecting codes के उपयोगी use cases हैं, लेकिन true को 7 तय कर देने भर से काम नहीं चलता
फिर भी style document पढ़ना अच्छा लगा, और यह सब public कर दिया गया है—यह बात पसंद आई। किसी न किसी के लिए इसमें बिल्कुल सही tool ज़रूर होगा
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 करना चाहिए
बेशक अगर ये “free” services बंद हो जाएँ तो दिक्कत होगी, इसलिए self-hosting भी उपयोगी है
उस समय TSR जादू जैसा लगता था। शायद माँ के घर के basement में पड़े floppy disks में कहीं मौजूद हो
लेखक ने 2019 में लगभग मरते-मरते बचने की जो बात लिखी है, वह भी पढ़ने लायक है: https://dunfield.themindfactory.com/2019.htm
Test results इतने खराब थे कि एक doctor ने इलाज करने से मना कर दिया, क्योंकि उन्हें डर था कि वे consultation के दौरान कभी भी मर सकते हैं
लेकिन वे आज भी ज़िंदा हैं, सामान्य जीवन जी रहे हैं, और हर Saturday beach पर दौड़ते भी हैं। Test results बेहतर नहीं हुए और वे हमेशा सांस फूलने की शिकायत करते हैं, लेकिन वे ऐसे इंसान लगते हैं जो बस मरने से इनकार कर रहे हों
Link में doctor ने जो कहा, “कागज़ों में लिखे से कहीं बेहतर दिखते हैं”, वैसा ही
लेख में एक हिस्सा था कि “बच्चों को गले लगाना, अपने बिस्तर में सोना, खाना खाना, और हाथों से थोड़ा काम करना” तक सब नकार दिया गया था; जब मेरे पिता leukemia और pneumonia से ठीक नहीं हो रहे थे और breathing tube नहीं हट पा रही थी, तब doctors ने भी बहुत ज़ोर देकर यही कहा था कि उन्हें जीवनभर disability रहेगी
सचमुच बढ़िया। कई बार सोचा है कि किसी दिन मैं भी कुछ ऐसा ही करना चाहूँगा
यह कुछ-कुछ दादा-दादी से विरासत मिलने जैसा है। असली रत्न और अजीबोगरीब चीज़ें कबाड़ और कचरे के बीच मिली-जुली होंगी, लेकिन वह पूरा संग्रह समृद्ध और दिलचस्प जीवन जी चुके वास्तविक लोगों की कहानियाँ दिखाता है
सिर्फ कुछ highlights उस जीवन को ठीक से समेट नहीं सकते
खुशकिस्मती से 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 के ढेर सारे निशान दिखाएगा जिन्हें “आजकल कोई इस्तेमाल नहीं करता”
यह अच्छे या बुरे की बात नहीं, बस अपने समय का प्रतिबिंब है
आजकल प्रचलित 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 साल बाद
रिटायरमेंट से ठीक पहले आखिरी bug fix वाले मजाक के तौर पर, micro-cad देखने की कोशिश की तो 404 आया
URL: https://dunfield.themindfactory.com/dnld/sc/MICROCAD.ZIP
अपेक्षित behavior यह है कि
.zipfile download हो सकेMCSAMPLEzip में साथ में शामिल हैबेहतरीन। किसी खास भाषा या automation work के लिए मैंने हमेशा पास रखने वाली कुछ निजी “bibles” इकट्ठी की हैं, और HN से सीखे हुए organization methods भी काफी हैं
बस वे मेरी सोचने की प्रक्रिया से बहुत निजी और specialized लगती थीं, इसलिए उन्हें public करने के बारे में कभी नहीं सोचा था
लेकिन ऐसी materials देखकर प्रेरणा मिली। सचमुच शानदार idea है, और संभव हो तो retirement project के लिए आभार के रूप में financial support भी देना चाहूँगा
और यह भी जानना चाहूँगा कि आपने कौन-से organization methods सीखे। दूसरों की productivity tips या software सीखने में मेरी हमेशा दिलचस्पी रहती है
अगर दिलचस्पी हो तो files आपस में exchange करना चाहूँगा। लगता है आपकी materials से बहुत कुछ सीखने को मिलेगा। मेरा Gmail username HN username जैसा ही है