slider,  Stories

Il Programmatore Solitario di Dio

Terry Davis, programmatore, ha trascorso 10 anni della sua vita lavorando allo sviluppo di un sistema operativo che gli permette di parlare con Dio.

Non ho cominciato a lavorare al sistema operativo pensando ad un lavoro per Dio, ma Lui mi ha indicato la strada giusta e continua a dire che questo è il Suo Tempio.”

Scrive così Terry Davis sul sito ufficiale di TempleOS (http://www.templeos.org/). Un matto, penserete. In effetti sì, Davis soffre di schizofrenia, una psicosi cronica caratterizzata dalla persistenza di sintomi di alterazione del pensiero, del comportamento e dell’affettività. Il termine stesso deriva dal greco e significa “scissione della mente“. I sintomi più comuni includono allucinazioni uditive, deliri paranoidi e pensieri o discorsi disorganizzati. È accompagnata da un significativo deficit nella vita sociale e professionale. Ottime basi, direi, per un programmatore di sistemi operativi.

templeos2.png
La schermata iniziale di TempleOS nella sua versione 1.11

Chi è Terry Davis

“Sono il Divino Re Terry, il Terribile, del Sacro Regno Cattolico Romano, AZ / NV.”

Terry Davis è Nato nel dicembre 1969, a West Allis, Wisconsin. Figlio di un ingegnere industriale, era il settimo di otto figli, ma non ha mai avuto un gran rapporto coi fratelli.

Gesù non parlava coi suoi fratelli, non voleva avere nulla a che fare con loro. Io sono come lui“.

Nel 1980 iniziano le sue prime esperienze informatiche con un Apple II e poi un Commodore 64 che, come vedremo, sarà l’ispirazione per il suo “Sistema Operativo di Dio”. Studia programmazione durante il liceo e si laurea alla Arizona State University ottenendo anche un master in Ingegneria Elettrica nel 1994. Dopo la laurea lavora a Tempe in Arizona come programmatore di Sistemi Operativi, finché l’azienda non gli cambia mansione e lo sposta su alcuni progetti di ricerca. Terry non ama il nuovo ruolo e decide di lasciare il lavoro. Aveva 26 anni, una laurea in Ingegneria e voleva usare quella conoscenza. Era cresciuto cattolico, ma durante gli studi, indotto dal proprio materialismo scientifico, ha momentaneamente abbracciato l’ateismo.

“Pensavo che il cervello fosse un computer, e così ho non avuto alcun bisogno di un’anima”.


I Primi Sintomi

Durante il Marzo del 1996 iniziano i primi sintomi di quella che sarebbe poi diventata la sua malattia, o la sua ossessione.

“All’inizio mi intimoriva parlarne, sembrava un po’ come una malattia mentale, e non una gloriosa rivelazione di Dio. Ho cominciato a vedere persone intente a seguirmi con abiti ed altra roba. Mi sembrava ci fosse qualcosa di strano“.

Inizia a credere di essere pedinato da uno dei suoi futuri datori di lavoro e la cosa lo turba fortemente. Nella sua mente collega il pedinamento anche ad un progetto parallelo cui aveva lavorato e che trattava di sistemi di controllo computerizzati.

“Oggi trovo che le persone più simili a me siano degli ateo-scienziati, la differenza è che Dio mi ha parlato, così io sono fondamentalmente come un ateo cui Dio ha parlato”.


La fuga

Davis resta molto spaventato da queste presunte apparizioni, tanto che alla fine decide di scappare e lascia la città, mettendosi alla guida verso Sud senza una chiara destinazione.

Stavo ascoltando la radio e sembrava che la radio mi stesse parlando “.

templeos_logoInizia a pensare che la fine del mondo è vicina, sempre più preso da pensieri di teorie di cospirazione e presagi apocalittici. Abbandona la sua Honda Accord a Marfa, in Texas. Inizia a smontare la sua auto alla ricerca di un dispositivo di localizzazione, finché non butta le chiavi nel deserto del Texas ed inizia a vagare senza una meta. Viene ritrovato dalla polizia, che prova a farlo salire sul sedile dei passeggeri, ma Davis spaventato e preso dalle sue ipotesi di cospirazione si catapulta fuori dalla macchina in movimento, rompendosi la clavicola. Arrivato in ospedale il panico prende nuovamente il sopravvento quando sente i medici parlare di “artefatti”, mentre questi analizzano i suoi raggi X. Gli balena l’idea di essere stato rapito dagli alieni e scappa dall’ospedale, rubando un pick-up per tentare la fuga. Viene arrestato e, dopo una serie di ulteriori comportamenti strani, viene ricoverato in un ospedale psichiatrico. Si rifiuta di mangiare, pensando che il cibo possa essere stato in qualche modo avvelenato. Arriva persino a rompere una finestra con una sedia.


La rivelazione

Dimesso dopo due settimane, cerca di emulare Gesù dando via tutti i suoi averi. Effettua donazioni e compra regali per i figli dei suoi fratelli. Finisce a vivere per le strade.

Nel 1996, decisi di dare un paio di dollari in beneficenza per i non vedenti. Ero stato ateo dal 1990 al 1996 e non avevo mai dato nulla in beneficenza. Forse, quell’atto ha spinto Dio a rivelarsi a me e questo mi ha salvato.

Ha donato circa 10.000 dollari alla Newman Center, per la pastorale universitaria di stato dell’Arizona.

“Nella Bibbia c’è scritto che se tu cerchi Dio, sarà lui a trovare te. Stavo cercando davvero, e stavo cercando ovunque per capire cosa volesse dirmi.”

davis4.png
Terry Davis in una foto dal sito www.templeos.rg


Il ritorno a casa

A luglio del 1996, il suo stato mentale si è assestato abbastanza da poter tornare in Arizona. Vive con l’aiuto delle carte di credito, cercando di racimolare soldi da un suo progetto riguardante una fresatrice a tre assi. Durante i suoi lavori per errore dà fuoco al proprio appartamento e di conseguenza decide di abbandonare il progetto. Alla fine si trasferisce coi suoi genitori a Las Vegas, sperando di risparmiare denaro, mentre lavorava su un libro, un sequel di 1984 di George Orwell. Non l’ha mai finito. Gli episodi maniacali compaiono circa ogni sei mesi, e spesso finisce in un ospedale psichiatrico. Gli viene diagnosticato il bipolarismo e dichiarato schizofrenico. Lui semplicemente chiede quale farmaco deve prendere. La cosa non gli provoca più alcun disagio. Dice di aver imparato non dare di matto.

Per quei pochi primi anni, ero veramente pazzo. Ora non lo sono. Sono pazzo, forse, in un modo diverso“.


Terry Davis

Questa è la storia di Terry Davis. Storia di un personaggio forse matto ma a modo suo carismatico, convinto di quello che sta facendo. Ad oggi ha più volte ha difeso il suo lavoro e le sue posizioni su vari forum di programmatori, dai quali spesso viene bannato (o “hellbanned” come amano dire gli americani) per i suoi toni aggressivi in difesa del proprio lavoro. Viene accusato anche di razzismo. Anche sui social, i sintomi della sua malattia sembrano abbastanza evidenti:

Ma alternati da semplici aggiornamenti del proprio lavoro:


TempleOS, il Sistema Operativo di Dio

Ma cos’è esattamente TempleOS, il sistema operativo di Dio, che precedentemente Davis aveva chiamato SparrowOS e prima ancora LoseThos?

templeos4.gif
TempleOS 2.17 in azione

“God on tap” questo annuncia il testo blu iniziale di TempleOS. La schermata di benvenuto spiega: “Un sistema operativo di pubblico dominio“, prodotto da Trivial Solutions, Las Vegas, Nevada. Trivial Solutions è l’azienda di Davis che, ovviamente, ha un solo dipendente. TempleOS è un sistema operativo gestito interamente con soli 16 colori, alla risoluzione di 640 x 480. Il tutto ricorda lo storico Commodore 64, e risulta tremendamente familiare a chi ha avuto l’onore di lavorare con la storica macchina di Commodore. Sembra di ritornare ai tempi in cui un personal computer era un aggeggio con cui armeggiare e programmare per far funzionare le cose. Davis difenderà la scelta dei 16 colori e della risoluzione ridottissima spiegando che Dio stesso gli ha chiesto di utilizzare questa combinazione, in modo che i bambini potessero utilizzare il suo sistema operativo in maniera più semplice. Direi che come linea difensiva ci siamo.

“È stato Dio a dirmi che la risoluzione di 640 x 480, a 16 colori. È un patto, come la circoncisione, e rende più facile per i bambini fare disegni per Dio.”

C’è uno sparatutto in prima persona basato su sprite chiamato “Castle Frankenstein” e un’icona a forma di dollaro che apre un’applicazione di budgeting. Tutto innocente e banale. Premendo F7 ovunque in TempleOS, viene evocata una “god word” pseudo-random. Cinque F7 potrebbero produrre una frase tipo “flashedt ARE evil madly peacemaker”. Shift-F7 inserisce direttamente un passaggio della Bibbia, giusto per mettere in chiaro che questo è il sistema operativo di Dio. Facciamo un ulteriore tentativo, cinque F7 consecutivi: Il programma Jukebox offre una raccolta di brani in PC-speaker, con testi biblicamente ispirati, come “Lord, there’s a storm upon the sea / Lord, there’s a storm upon the sea / Relax, fellas / (Sea became glass).”

Dieci anni di lavoro

Nonostante tutto, si capisce subito che TempleOS è più di un esercizio di programmazione retrò, o un lavoro di programmazione nudo e crudo. È il frutto — forse il lavoro della vita — di Terry Davis, il fondatore e l’unico dipendente di Trivial Solutions. Per oltre un decennio Davis ha lavorato incessantemente al progetto. Nella sua prima versione, TempleOS era circa 120 mila righe di codice, uno scherzo rispetto ai milioni di righe dei sistemi operativi odierni, ma ricorda che è stato scritto da un’unica persona!

“Per dieci anni ho lavorato alla programmazione di TempleOS a tempo pieno. Ora ho finito, e lo scorso anno ho fatto solo dei piccoli ritocchi qua e là”.

All’interno di TempleOS Devis ha costruito il suo “oracolo” chiamato AfterEgypt, che consente agli utenti di scalare il Monte Horeb tramite un Mosè con tanto di bastone. templeos3.png After Egypt in azione

Ma l’idea di un oracolo digitale è solo una evoluzione del suo modo di parlare con Dio. In un primo momento avrebbe aperto una Bibbia su una pagina a caso. Tuttavia non accettava che la pagina scelta potesse essere una sua volontà: iniziò ad usare i lanci di una moneta per scegliere un numero di pagina, poi ha ampliato la sua tecnica per includere tutti i libri nella sua biblioteca. Fino ad arrivare al suo oracolo digitale, AfterEgypt. Così come gli è stato chiesto da Dio, Davis ha lavorato senza sosta al suo sistema operativo. Beve un sacco di caffeina e vive per lo più su un ciclo di 48 ore.

 “Rimanere sveglio 16 * 2 e dormire 8 * 2“.

Ma ci sono davvero delle idee? È davvero un sistema operativo?


Shell

TempleOS nasconde delle sorprese niente male, a partire dall’installazione: premi Y poche volte e l’installazione è terminata. Semplice ed efficace. In TempleOS esiste un linguaggio di programmazione dedicato, l’HolyC. L’intero sistema operativo è scritto in HolyC. Lo stesso linguaggio è utilizzato anche per la shell. Esatto, puoi esegui i comandi della shell usando un linguaggio simile a C, e inviarlo direttamente al compilatore.

templeos5.png
La Shell di TempleOS

Non esiste un’applicazione calcolatrice incorporata, poiché la shell stessa è una calcolatrice. Inserisci 5 + 7 sulla riga di comando ed ottieni la risposta. Hai un menu che si trova nella tua home directory e che è accessibile in qualsiasi momento premendo Ctrl-M. Modificando questo file, puoi creare qualsiasi tipo di programma di avvio che desideri. La maggior parte dei file si salva automaticamente all’uscita, ma questo no. TempleOS ha un metodo di completamento automatico a livello di sistema. Puoi premere Ctrl-F1 in qualsiasi momento e ottenere un elenco di parole che completano quello che stai scrivendo. Non solo nomi di file, ma anche nomi di simboli.
Tutto il codice sorgente è indicizzato e puoi saltare a qualsiasi funzione da qualsiasi luogo, anche dalla shell. Lo stesso sistema funziona in qualsiasi programma in tutto il sistema operativo. La funzione Type () viene utilizzata per visualizzare file, come il “type” del DOS o il “cat” di Unix. Naturalmente, l’ipertesto è rispettato. Puoi anche usare Type per mostrare i file .BMP direttamente nella shell. Qui viene fuori una interessante osservazione, una sfida interessante per gli altri sistemi operativi: perché le shell devono essere testo puro? Perché non possiamo avere una shell multimediale?


File Explorer

La maggior parte dei sistemi operativi ha qualcosa come Explorer, Nautilus o File Manager per consentire di navigare le directory semplicemente facendo clic. TempleOS non ha un programma File Manager (Ctrl-D), ma è piuttosto un’estensione della shell, e sorprendentemente non ne hai bisogno per la maggior parte delle operazioni. Usando il sistema di collegamento ipertestuale che permea l’intero sistema operativo, la shell stessa può agire come un explorer. Scrivi “dir” per un elenco, quindi è sufficiente fare clic su qualsiasi collegamento ipertestuale della directory per passare a quella directory e ottenere un nuovo elenco, tutto all’interno della stessa shell. Oppure clicca su “..” per salire di livello.


HyperText (DolDoc)

La caratteristica più notevole di TempleOS è il suo sistema ipertestuale onnipresente, DolDoc, che fa da base alla shell e all’editor di testo. A differenza di Unix che rappresenta tutto tramite testo normale, tutto in TempleOS è memorizzato in formato DolDoc. Il formato è in qualche modo simile a RTF, puoi premere Ctrl-T in qualsiasi momento per esaminare direttamente il testo non elaborato.Ma DolDoc non serve solo per il testo. È possibile memorizzare immagini (e anche mesh 3D) direttamente nei documenti. È possibile inserire macro o comandi di collegamento ipertestuale che vengono eseguiti quando si fa clic.
Quindi, se vuoi creare un menu o un programma di avvio, devi solo creare un nuovo documento di testo e inserirvi dei collegamenti. HTML, JSON, XML, script di shell, file di origine, file di testo: TempleOS sostituisce tutti questi elementi tramite una semplice rappresentazione ipertestuale unificata. Puoi premere Ctrl-R in qualsiasi momento per visualizzare l’editor di risorse, che ti consente di disegnare le cose. Gli sprite che disegni sono incorporati direttamente nel documento e puoi fare riferimento a essi usando tag numerati. Non esiste un programma di disegno standalone fornito con il sistema operativo perché ne hai già uno accessibile in qualsiasi momento, da qualsiasi programma. Se vuoi disegnare uno scarabocchio, apri un nuovo documento, disegna e salva.


HolyC

Il linguaggio di programmazione fornito, HolyC, è una versione ragionevolmente completa di C, ma con alcune notevoli estensioni. Non esiste una funzione main() nei programmi TempleOS. Tutto ciò che scrivi in ​​ambito di primo livello viene eseguito mentre scorre nel compilatore. In C ++ puoi fare qualcosa come int a = myfunction(); ma non puoi semplicemente scrivere myfunction(); e basta ed eseguirlo. Ti stai chiedendo perché no? Ogni pezzo di codice in TempleOS (eccetto il kernel / compilatore iniziale) è compilato su richiesta.
Sì, è vero: puoi eseguire un programma senza compilarlo, semplicemente usando un’istruzione #include dalla riga di comando. Puoi taggare una funzione con la direttiva #help_index, e apparirà automaticamente nella documentazione nel posto giusto. E sì, è completamente dinamico. Non è necessario eseguire un processo di ricostruzione, è sufficiente compilare il file e gli aggiornamenti della documentazione. Premi F1 e puoi vedere le tue modifiche riflesse nel sistema di help. Puoi allegare qualsiasi metadata a qualsiasi membro della classe. Il sistema di classi di HolyC implementa il pieno supporto per metadati e riflessione. Data una classe, puoi enumerare ogni membro per ottenere il suo nome, offset, ecc. Ciò che sorprende è che puoi anche allegare qualsiasi metadata personalizzato a qualsiasi membro della classe in fase di compilazione.
Esempi di utilizzo per questo potrebbero includere la memorizzazione del suo valore predefinito, intervallo min / max, stringa del formato printf. Il tuo linguaggio di programmazione supporta tutto questo? La parola chiave speciale lastClass può essere utilizzata come argomento predefinito per le funzioni. Fa sì che il compilatore fornisca il nome del tipo dell’argomento precedente come una stringa, permettendoti quindi di effettuare ricerche di metadati da esso. TempleOS non ha variabili d’ambiente: usi solo variabili regolari.

Ambiente di programmazione

HolyC non ha un sistema di compilazione formale. Basta compilare un file e il gioco è fatto. Se il tuo progetto occupa più di un file, puoi solo includere tutti i file in uno e compilarlo. Il compilatore può compilare 50000 righe di codice in meno di un secondo. Quando si preme F5 nell’editor, il programma viene compilato JIT (Just In Time) ed eseguito. Le istruzioni di livello superiore vengono eseguite a turno e l’attività è ora caricata e pronta. Il tuo IDE attuale supporta collegamenti alla documentazione?
Quanto codice è necessario per aprire una finestra e disegnare della grafica sul sistema operativo che usi? In TempleOS, esiste una corrispondenza uno a uno tra attività e finestre, quindi una singola chiamata a DCAlias ​​è sufficiente per restituire il contesto del dispositivo per la finestra. Puoi farlo appena viene chiamata la tua funzione principale e attingervi. Creare una finestra è sicuramente la cosa più importante per un sistema operativo con finestre – perché deve essere difficile? GDI, X11, DirectX e OpenGL potrebbero imparare qualcosa qui.


Hardware e sicurezza

Non c’è nessun supporto hardware. Con ciò intendo che TempleOS non supporta alcun hardware diverso dal sistema core minimo di un PC. Non c’è supporto per nessuna scheda grafica diversa dalla VGA, non c’è supporto per nessuna scheda audio diversa da quella del PC e non c’è supporto per la rete. TempleOS non utilizza la protezione della memoria. Tutto il codice nel sistema gira su ring 0, il livello di privilegio più alto, il che significa che la scrittura di un puntatore vagante potrebbe facilmente danneggiare l’intero sistema. Questa è una scelta progettuale molto deliberata.

E ‘divertente avere accesso a tutto. Quando ero un adolescente, avevo un libro, Mapping the Commodore 64, che spiegava ogni posizione di memoria della macchina. Mi piaceva copiare la ROM in RAM e curiosare tra le variabili ROM del BASIC. Tutti hanno colpito direttamente le porte hardware.

Questa è la filosofia di Terry, crescendo negli anni ’80, in cui tutte le macchine come il C64 avevano lo stesso approccio. Una piattaforma standardizzata, bastava avviarla e fare le cose localmente, sulla stessa macchina. Il C64 era una macchina molto pratica in cui l’utente era onnipotente. Terry usa la seguente analogia:

Linux è un camion, con 20 marce per funzionare. Windows è più simile a una macchina. TempleOS è una moto. Se ti sporgi troppo, cadi. Non farlo.

Sostiene che Linux è progettato per una modalità d’uso che la maggior parte delle persone non utilizza. Linux, dice, punta ad essere un mainframe degli anni ’70, con 100 utenti connessi contemporaneamente. Se si verifica un crash nei programmi di un utente, questo può bloccare tutti gli altri, ed ovviamente non va bene. Ma per un personal computer, con un solo utente, questo non ha senso. In questo caso il sistema operativo dovrebbe abilitare il singolo utente.
TempleOS non ha permessi sui file. Dopotutto, se c’è un solo utente, a chi altro potresti dare il permesso? Per essere onesti, mi sono chiesto spesso se Unix non sarebbe stato migliore se avessimo fatto in modo che tutta la sicurezza si verificasse a livello di mount, invece di gestire il micromanaging per ogni singolo file. Non ci sono cose come i thread in TempleOS, non ne ha bisogno. Processi e thread sono la stessa cosa, perché non c’è protezione della memoria. Se hai bisogno di qualcosa in parallelo, genera semplicemente un altro processo e lascia che condivida i dati con il tuo.


Conclusioni

In molti modi TempleOS sembra simile a sistemi come Xerox Alto, Oberon e Plan 9; un sistema omnicomprensivo che offusca le linee tra programmi e documenti. In un video, oramai non più disponibile su youtube, Terry offre una breve panoramica di alcune delle caratteristiche più interessanti di TempleOS. Mostra come costruire una piccola applicazione grafica da zero. Ora pensiamo a come lo dovresti fare in Windows per un secondo. Considera un minuto la quantità di codice necessaria per registrare una finestra, creare una finestra, eseguire alcuni comandi GDI, eseguire un messaggio, ecc. È necessario impostare un progetto di Visual Studio e utilizzare l’editor di risorse, incorporare una bitmap o provare a caricarla dal disco in qualche modo. Ora confrontato con il minuscolo frammento di codice che Terry scrive nel video per compiere lo stesso compito, ci fa certamente domandare dove abbiamo sbagliato per andare a finire così male. Guardare TempleOS eseguire la sua suite di test integrata è un’esperienza sbalorditiva.
Non posso fare a meno di essere colpito dal fatto che un gran numero di demo, giochi, calcolatrici grafiche, debugger e compilatori volano sotto i gli occhi. Vedere l’enorme quantità di contenuto che è stato scritto qui nel corso degli anni, vedere un tale sforzo speso per un lavoro d’amore, è meravigliosamente appassionante.Ora non pretendo che disinstalli immediatamente Windows / Linux / OSX e inizi a utilizzare TempleOS come sistema operativo nella tua giornata. Tuttavia, potresti scoprire che se ti concedi del tempo per aprire la tua mente a nuove idee, potresti imparare qualcosa dai posti più inaspettati.


Possiamo quindi imparare qualcosa da Davis e da TempleOS?

Di sicuro la vita di Terry Davis è potrebbe fare da sceneggiatura ad un gran bel film. Tu divertiti pure a definirlo pazzo, ridi pure alle sue elucubrazioni su Dio, ma intanto lui ha avuto una vita a dir poco incredibile. Ha una laurea, un master, ha lavorato, ha vissuto in diverse città, ha viaggiato, è stato ricoverato, è stato arrestato, ha camminato nel deserto, ha fatto beneficenza, ha creato dei prototipi, ha seguito con passione dei progetti e, inutile negarlo, è un piccolo genio della programmazione. Davis vede le cose a modo suo, e non si fa condizionare dai giudizi degli altri. Questo è assolutamente palese in TempleOS. Cosa possiamo imparare, invece da TempleOS, il suo lavoro di una vita? La risposta più bella che mi viene in mente è:

C’è più di un modo in cui le cose possono funzionare.

Solo perché i tuoi strumenti attuali fanno tutte le cose allo stesso modo, non significa necessariamente che sia il modo migliore per farlo. Solo perché per tutta la vita sei stato abituato a fare le cose secondo una modalità, secondo una logica che gli altri ti hanno insegnato, non vuol dire che devi farla per forza così.
Davis è abbastanza distaccato da tutto questo da vedere il computer da un altro punto di vista, in cui il computer è una “macchina con la quale fare cose”. TempleOS sembra semplicemente una bellissima trasformazione di quella macchina con la quale noi stessi anni fa “facevamo le cose”, di quel Commodore che una volta acceso ti presentava un semplice cursore lampeggiante, così come fa oggi TempleOS. TempleOS è stato preso in giro e bistrattato dalla community. Eppure abbiamo visto che ci sono delle idee semplicemente geniali ed altrettanto utili.

C’è qualcosa di utile da trovare in qualsiasi cosa.

È incredibilmente facile presumere che, poiché qualcosa non ha successo o è sviluppato da un solo ragazzo, non c’è nulla da scoprire lì. Ma se qualcuno ha investito 12 anni di lavoro in qualcosa, non è possibile che si possa trovare anche solo un’idea interessante lì dentro? OK, sono 16 colori, è 640×480 e l’autore del sistema operativo è probabilmente il suo stesso peggior nemico.
Ma se scarti tutto nella vita perché non è ciò a cui sei abituato, non ti espanderai mai al di fuori del mondo che già conosci.

Fonti
God’s Lonely Programmer
A Constructive Look at TempleOS
TempleOS: an educational tool for programming experiments
TempleOs Offical Site

 

Leave a Reply