Goals Document
Goals Outlined
For the time being, I am literally going back to the Basics. I need to play with the toys of the past! Also, I need to remember an important aspect of the "democracy" of computing that Basic dialects brought about at the end of the Twentieth Century.
However, my future goal, over a period of five years, is to develop a greater facility for implementing the philosophy of "software freedom" and ameliorating my personal tendency towards instantiating the "device paradigm".
I will obtain my goal by gaining and increasing the knowledge and skills required to operate on the Linux/Unix Programming Interface sufficiently well to be able to create a program that, at a minimum:
- Reproduces the functionality of the standard Unix editor, Ed(1).
- Reproduces the functionality of the Python-based Zim Wiki.
When I have successfully achieved my goal, I will be able to complete each of these tasks in the following languages:
- Python
- C Programming Langauge
- Free Pascal (& Lazarus)
- AWK Programming Language
- Nim
- Lua
- Dlang
- Rust
- Lisp
- Assembly
I will document the process on linuxenlivens.com with the assistance of members of, at least, the Melbourne Linux Users Group (MLUG) and the Linux Users of Victoria (and any equivalent local Unix groups), as well as acquaintances gained through my membership at SDF.org and Soviet.Circumlunar.Space.
Finally, I will use what Dr. Chuck Severence referred to as the "junior developer" capacity of AI programs such as ChatGPT-4 to assist me and prevent me from becoming too discouraged when I am unable to solve a coding problem or overcome a conceptual barrier.
"IT IS BETTER THAN DOING CROSSWORD PUZZLES TO STAVE OFF PARKINSON'S DEMENTIA!"
Proposed Timeline
Year One
Introduction to computer through Python and C Intro
Year Two
Complete basic C language preparation using aids such as:
- Ed Mastery (Lucas)
- Programiz
- W3S
- The C Book (Kernighan)
- Dr. Chuck Severence's C course
- Small, Sharp, Software Tools (Hogan)
- How Software Works (Spraul)
- Understanding The Machine 2nd Ed (Hyde)
- Classic Shell Scripting (Robbins)
- Introduction to Computation and Programming Using Python (Guttag) & MIT Course
- Learning Python (Lutz)
- Python Programming Exercises, Gently Explained (Sweigart)
- The Hitchhiker's Guide to Python (Various)
- Little Books of C, Pointers, Recursion (Collingbourne)
- Raspberry Compote_ Low-level Graphics on Raspberry Pi
- D is for Digital (Kernighan)
- Graph Algorithms the Fun Way (Kubica)
- The GNU Make Book (Graham-Cumming)
- Learning Awk Programming (Kalkhanda)
- Beginning Linux Programming (Matthew & Stones)
- Lua Quick Start Guide (Szauer)
- Build Your Own Lisp: Learn C and build your own programming language (Holden)
- The Cathedral and Bazaar (Raymond)
- The Art of Community (Bacon)
Year Three
Begin and complete intermediate language and interface study by engaging:
- Software Tools in Pascal and Unix Programming Environment (Kernighan)
- Millions, Billions, Zillions (Kernighan)
- The Computer User as Toolsmith (Greenberg)
- Various collected Pascal language learning tools
- Linux Programming Interface (Ihekaine)
- Linux Programming Unleashed (Wall, Watson, Whitis)
- GDB Pocket reference (Robbins)
- The Art of Debugging (Matloff)
- Programming Python (Lutz)
- Serious Python (Danjou)
- A Unix Primer (Ed) (Lomuto)
- Inside the Machine (Stokes)
- Introducing Unix System V (Ed) (Morgan)
- Absolute OpenBSD (Lucas)
- Programming in Lua (Ierusalimschy)
- Learning Computer Architecture with Raspberry Pi (Upton)
- Datastructures the Fun Way (Kubica)
- Effective Awk Programming (Robbins)
- Comparing & Assessing Programming Languages: Ada, C, Pascal (Feuer & Gehani, eds)
- Crafting Interpreters (Nystrom)
- Land of Lisp (Conrad Barski)
- Managing Projects with GNU Make (Mecklenberg)
- Design and Implementation of the FreeBSD Operating System 2nd Ed.(McKusick)
- The Mythical Man-Month (Brooks)
Year Four
Begin and complete advanced language and interface study engaging:
- Building an Editor on Linux/Unix (Why The Lucky Stiff tutorial)
- The Art of Unix Programming (Raymond)
- The Linux Programming Interface (Kerrisk)
- Advanced Unix Programming (Rochkind)
- Lions' Commentary on UNIX 6th Edition--with source code (Lions)
- Learning Assembly on Raspberry Pi (Smith)
- Programming Pearls (Bentley)
- Effective Python (Slatkin)
- Introduction to Computer Organization (Plantz)
- Dive Into Systems (Matthews, Newhall & Webb)
- Computer Graphics from Scratch (Gambetta)
- Writing a C Compiler (Sandler) (using Nim Programming Language Made Easy, Julie Smith)
- Refactoring Ed(1) in C23 (Effective C, Seacord)
- Lazarus Training and Advanced Pascal study
- Lua Programming Gems (de Figueiredo)
- Rewriting Ed(1) in Pascal
- The Rust Programming Language (Klabnik)
- Loving Lisp (Watson)
- The Practice of Programming (Kernighan)
- Understanding the Digital World (Kernighan)
Year Five
Begin extensive rewriting of the Zim Wiki and Ed(1) while getting up to speed in:
- Advanced Unix Programming Environment (Stevens)
- Unix Network Programming (Stevens)
- The AWK Programming Language, 2nd Ed. (Aho, Weinberger, Kernighan)
- Fluent Python (Ramalho)
- Python Cookbook (Beazley & Jones)
- More Programming Pearls: Confessions of a Coder (Bentley)
- Hardcore Programming for Mechanical Engineers (Orbaiceta)
- Complete Developer (Krause)
- Design of the Unix Operating System (Bach)
- The Psychology of Computer Programming (Weinberg)
- Expert C Programming: Deep C Secrets (van der Linden)
- Rust for Rustaceans (Gjengset)
- The Book of I2C (Hyde)
- Mastering Nim: A Complete Guide to the Programming Language (Andreas Rumpf)
- Mastering Lua Programming (Smith)
- Dlang (Programming in D: Tutorial and Reference, Ali Çehreli)
- Paradigms of Artificial Intelligence Programming: Case studies in Common Lisp (Norvig)
- Practical Common Lisp (Seibel)
- x64 Assembly Language Step-by-Step: Programming with Linux (Duntemann)
By the time I have accomplished my goal, I will be in my mid to late 70s at this rate. Actually, everyday that I action the steps, I am reaching my goal!