Emekli olurken 40 yılı aşkın süredir biriktirdiği kaynak kodlarını yayımladı
(dunfield.themindfactory.com)- Bir geliştirici, emekliliği vesilesiyle 40 yılı aşkın süredir biriktirdiği kaynak kodlarını yayımlayarak eski sistemleri, araçları ve kişisel projeleri doğrudan incelenebilir hale getirdi
- Yayımlanan kapsam, ARM için çoklu proses/görev çekirdeği, 6809 CPU için işletim sistemi, Altair 1980 dönemine ait erken bir OS gibi işletim sistemleri ve çekirdekleri de içeriyor
- Micro-C Compiler, cross-assembler, disassembler, 8052 emülatörü ve debugger gibi düşük seviye geliştirme araçları da birlikte sunuluyor
- DOSBox, DOS yardımcı araçları, dosya senkronizasyonu, ZIP işleme, kurulum paketi oluşturma, metin editörü gibi PC iş yükü yardımcı araçları geniş kapsamda yayımlandı
- Amatör radyo, RS-232 kızılötesi uzaktan kumanda, Ethernet TTY, X10 kontrolü, 1500 DVD okumak için yapılmış bir robot gibi kişisel donanım projeleri de yer alıyor ve arşiv değeri taşıyor
Yayımlama amacı ve rehber belgeler
- Emeklilik vesilesiyle, “benim yazdıklarım” kapsamına giren 40 yılı aşkın sürede birikmiş kaynak kodları yayımlandı
- Amaç, başkalarının bu kodu faydalı biçimde kullanabilmesi veya bazı bölümlerinden bir şeyler öğrenebilmesi
- Yayımlama sayfasında birlikte sunulan belgeler:
İşletim sistemleri, çekirdekler, sanal makine, simülasyon
- ARMOS: ARM için çoklu proses/görev çekirdeği
- CUBIX: 6809 CPU için işletim sistemi
- DMF: Altair 1980 dönemine ait erken bir OS
- DVM: Dunfield Virtual Machine
- SIMSYS: Altair, D6809, H8, Horizon, Mod8 ile ilgili sistemler
- MONITORS: çeşitli gömülü işlemciler için monitörler
- 8051ICE: EMILY kullanan in-circuit emulator
- EMILY52: 8052 emülatörü
Derleyiciler, assembler'lar, debugger'lar, geliştirme yardımcı araçları
- MICRO-C: Micro-C Compiler
- MCSAMPLE: Micro-C örnek programları
- XASM: cross-assembler ve araçları
- DISASM: cross-disassembler
- DMS: Dunfield MicroScope debugger
- DESMO: Debug Scripting Monitor
- DDSIDE: Dunfield Development Systems IDE
- BLDTOOL: build işlerini destekleyen araç
- PUBSRC: açık kaynak bölümünü bakımda tutma aracı
- HFC: Help File Compiler
- ESL: Extensible Script Language
DOS, dosya, disk, düzenleme, paketleme yardımcı araçları
- DBBD: DosBox önyükleme disketi
- DBUTIL: DosBox yardımcı araçları
- DD_DBSRC: DosBox kaynak kod ağacı
- DOSUTIL: çeşitli DOS yardımcı araçları
- FDI: Floppy Disk Image
- IMDSRC: ImageDisk
- EDT: EDT metin editörü
- ELF: uzun dosya adı düzenleme aracı
- FTOOLS: dosya işlemleri için çeşitli araçlar
- SYNC: iki dizin ağacını senkronize etme
- ZDIR: ZIP içindeki dosyaları listeleme ve
touch - MAR: kurulum dosyalarını sıkıştırmak için kullanılan MicroARchiver
- MKPKG: tek bir
.exepaket kurulum dosyası oluşturma - ESP: çalıştırılabilir dosya string patch aracı
- PT: PaperTape aracı
- MICROCAD: çok küçük bir CAD çizim programı
Donanım, iletişim, kontrol, kişisel projeler
- DARC: Dunfield Amateur Radio Controller
- HTX242: RS HTX-242 amatör alıcı-verici kontrolü
- ICOMCIV: amatör radyo için ICOM CI-V arayüz kodu
- IR232: RS-232 seri kızılötesi öğrenebilen uzaktan kumanda
- ETTY: Ethernet TTY
- SNIFF: Ethernet sniffer
- DLM: Data Line Monitor
- ITS: Interactive Terminal Switch
- DDLINK: COM, LPT, NET dosya aktarımı için DavesDataLink
- SERCNCT: tek bir COM portunda birden çok cihaz arasında geçiş
- DBOX: Sony VCR denetleyicisi
- DVDROBOT: 1500 DVD okumak için yapılmış robot
- EPROM: EPROM programlayıcı
- 8031DWG: 8031 tabanlı tasarım örneği
- X10CTRL: PC üzerinden X10 cihaz kontrolü
- RINGSW: telefon hattı distinctive ring anahtarı
- PC100: VT-100 terminal emülatörü
- LABTOOLS: çeşitli laboratuvar/test araçları
- CAM: gelişimsel bozukluğu olan çocuklara yönelik proje
- MACMON: çocukların ağ kullanımını izleme/günlükleme
- TRANZTCL: Verifone TRANZ PointOfSale geliştirme araçları
1 yorum
Hacker News görüşleri
DOSUTIL.ZIP’e göz gezdirince sade ve zarif C programlarını gerçekten beğendim
Çoğunun standart C
#includesatırlarından yalnızca 1-2 tane kullanması ve 20 bin satırlık C kodunda sadece 24 tane#ifolması da etkileyiciBöyle bir kod tabanını okuma deneyimi, Cosmopolitan Libc üzerinde çalışmaya başlarken ilham olmuştu
#ifmakrolarını epey azaltabilirsinizYine de aynı ölçütle karşılaştırırsak yalnızca 2
useifadesi vardıSTYLE.TXTiçindekiTrue=7geleneği bana yabancı geldiDüşük seviye kod ve donanım deneyimi nedeniyle “düşük seviyede yanlış gidebilecek şeyleri en aza indirmek” için, C’de
0==FALSE,!0==TRUEolmasından yararlanıp doğru değer için1yerine7kullanabildiğini anlatıyor1 bitlik fark yerine 3 bitlik farkın daha iyi olduğu yönünde alışkanlık haline gelmiş bir tercih; ama gerçekten böyle 1 bitlik bir donanım hatası varsa sistemin çoğu bozulacak olduğundan kendisi de bunun aptalca olduğunu kabul ediyor
Eskiden rastgele bit flip’lerin koşullu ifadeleri bozması yaygın mıydı, merak ediyorum
Hata durumunda hangi dalın güvenle çalışacağını varsayacağınızı, her koşuldaki bit sayısını sayıp 1’ler 0’lardan fazlaysa doğru mu kabul edeceğinizi, hata düzeltme olmadan bir bitin döndüğünü loglayıp operatöre haber verip vermeyeceğinizi de belirlemeniz gerekir
Hata tespit kodlarının işe yaradığı yerler var, ama doğruyu 7 olarak belirlemek tek başına yeterli değil
Yine de stil belgesini okumak keyifliydi; her şeyi böyle açıkça yayımlamış olması da hoşuma gitti. Birileri için mutlaka tam aradığı araç vardır
0xA5(1010 0101) kullanıp biraz değiştirilmiş alternatif bit dizisi gönderilirAmaç tek seferde mümkün olduğunca çok arıza olasılığını kontrol etmektir
TRUE=7gerçek bir çözüm değilBoolean değişkense her koşulda
if (var == TRUE),else if (var == FALSE)ve başka bir değer olduğunda ne yapılacağını ele almak gerekir; üstelik bu işleme kodunun kendisi de çakılmamalıAyrıca bit flip,
switchiçinde kullanılan değişkenleri,if (i > 17)gibi koşulları, pointer’ları, yığındaki dönüş adresini ve kodun kendisini de etkileyebilirOlsa olsa çok kısmi bir çözüm ve uygulaması da önemsiz değil; bu yüzden standart bir gelenek saymak zor
Şahsen ben
-1kullanırdımEski kodlarımı düzgün saklamamış olmama çok üzülüyorum
İlk önemsiz olmayan programım olan Snake oyunu, assembly ile yaptığım ilk yardımcı araç, Centronics yazıcı için ilk aygıt sürücüm, üniversite ödevi olarak ağır akşamdan kalma halde bir saatte Pascal ile yaptığım kalıcı takvime kadar hepsini sıradan ve saklamaya değmez görmüştüm
Sonuçta 1990’ların sonundan önceki kodlarımdan hiçbiri kalmadı. Genç geliştiriciler kendi kodlarını iyi saklamalı
Elbette bu “ücretsiz” hizmetler kapanırsa sorun olur; bu yüzden self-hosting de işe yarar
O zamanlar TSR sihir gibi görünüyordu. Belki annemin evinin bodrumundaki floppy disklerin bir yerlerinde duruyordur
Yazarın 2019’da neredeyse ölmek üzere olduğu dönemi anlattığı yazı da okunmaya değer: https://dunfield.themindfactory.com/2019.htm
Test sonuçları o kadar kötüydü ki bir doktor, muayene sırasında her an ölebileceğinden korkup tedaviyi reddetmişti
Ama hâlâ hayatta, normal şekilde yaşıyor ve her cumartesi sahilde koşuyor. Test sonuçları düzelmedi ve sürekli nefes nefese kalıyor, ama sanki ölmeyi reddeden biri gibi
Bağlantıdaki doktorun söylediği “kâğıt üzerinde görünenden çok daha iyi görünüyorsun” sözüne benziyor
Yazıda “çocukları kucağına almak, kendi yatağında uyumak, yemek yemek, elleriyle biraz çalışmak” gibi şeylerin bile tamamen reddedildiği bir kısım vardı; babam lösemi ve zatürreden iyileşmeyip solunum tüpünden ayrılamadığında da doktorlar aynı şekilde ömür boyu engelli kalacağını güçlü biçimde söylemişti
Gerçekten iyi. Bir gün benzer bir şey yapmayı birkaç kez düşündüm
Büyük ebeveynlerden miras almak gibi. Gerçek mücevherler ve tuhaf eşyalar ıvır zıvırla çöplerin arasına karışmış olacaktır; ama bütün olarak, zengin ve ilginç hayatlar yaşamış gerçek insanların hikâyelerini gösterir
Birkaç öne çıkan parça, o hayatı hakkıyla yansıtamaz
Neyse ki 90'ların sonunda yaptığım ticari bellek ayırıcı hâlâ duruyor. Tek iş parçacıklıydı ve yalnızca Metrowerks CodeWarrior ile eski MacOS'u destekliyordu, ama Mac'teki en hızlı ve hatasız ayırıcıydı
MacOS X çıkınca işe yaramaz hâle geldi; şimdi kimin ilgisini çeker bilmiyorum
Dün söylediğim gibi Trapeze kaynak kodunu kaybettim(https://en.wikipedia.org/wiki/Trapeze_(spreadsheet_program)). Sanırım ileride kimsenin umursamadığı bir zamanda paylaşmak için çalışmalarımı saklama fikri aklıma hiç gelmemişti
Gerçekten harika. Benim kod geçmişimin ileride nasıl görüneceğiyle karşılaştırınca epey saf kod gibi hissettiriyor
2040'ta benim kodum, “artık kimsenin kullanmadığı” bir sürü kütüphane ve framework kullanmış olmanın izlerini gösterecek gibi
Bu iyi ya da kötü meselesi değil, sadece dönemin bir yansıması
Günümüzün popüler geliştirme pratikleri şaşırtıcı derecede geçici ve kırılgan. Şu anki projelerden 10 yıl sahipsiz kalıp ayakta durabilecek olanı bile neredeyse yok; 40 yıl çok daha zor
pip installvenpm installişlerinin hepsi işe yaramaz hâle gelecekEn etkili yardımcı aracın ImageDisk olduğunu düşünüyorum
IBM PC kullanarak çeşitli bilgisayar türlerinden çıkan disketleri korumak için kullanıldı; bitsavers.org ve archive.org'daki birçok eski yazılım bu araçla kurtarıldı
Vernor Vinge'in A Deepness in the Sky adlı eserinde, binlerce yıl sonrasının insan toplumu anlatılır; neredeyse tüm yazılımlar zaten yazılmıştır ve sorun yalnızca onları bulmaktır
Bu yüzden programcı-arkeologlar arşivleri karıştırır ve gerekirse kodu emülatör içindeki emülatör içindeki emülatörde çalıştırır: https://garethrees.org/2013/06/12/archaeology/
Siz de yarın ya da 5.000 yıl sonra birilerinin faydalanacağı bir hazine yığınına katkıda bulunmuş oluyorsunuz
Emeklilikten hemen önceki son hata düzeltmesi şakası olarak, micro-cad'e bakmaya çalıştım ama 404 verdi
URL: https://dunfield.themindfactory.com/dnld/sc/MICROCAD.ZIP
Beklenen davranış,
.zipdosyasının indirilebilmesiMCSAMPLEzip'inin içinde birlikte yer alıyorHarika. Belirli bir dil ya da otomasyon işi yaparken hep yanımda tuttuğum birkaç kişisel “İncil” biriktirdim; HN'den öğrendiğim epey düzenleme yöntemi de var
Yalnız düşünce sürecime fazla kişisel ve özel geliyordu, bu yüzden yayımlamayı hiç düşünmemiştim
Ama bu tür materyalleri görünce ilham aldım. Gerçekten harika bir fikir; mümkün olursa emeklilik projesine teşekkür olarak maddi destek de vermek isterim
Ayrıca hangi düzenleme yöntemlerini öğrendiğinizi de bilmek isterim. Başkalarının üretkenlik ipuçlarını ya da yazılımlarını öğrenmeye her zaman ilgi duyuyorum
İlgilenirseniz dosyaları karşılıklı değiş tokuş etmek isterim. Sizin materyallerinizden öğrenecek çok şeyim var gibi. Gmail kullanıcı adım HN kullanıcı adımla aynı