Menu

OneTruePath

Mark Rosenblitt-Janssen

...For those who wish to be a Master (see below the horizontal line if you
need money or are out of high school):

Find a graveyard 386, 586, or DEC Alpha computer. You can get such a machine
for free (or nearly free) at a computer-repair shop or recycling yard. Try a
university computer service center for the latter. Make sure the machine has a
hard disk light -- it's the last vestige of the old days where computer
lights lit up a machine room and will be your sole source of feedback of what
the OS is doing with your hardware. Prefer a two-state (dual-throw) power
button
(mechanically visible on/off) and a reset button in case you lose
software-level control (being able to use Ctrl-C or Ctrl-Break to stop a
program). Your challenge will be to make this machine faster than a modern one
for meaningful tasks.

Open up the box. Despite the hardware lines and fancy hardware, you will
come to find that inside there is something elegantly simple. All of that
complexity is solely for speed, better reliability, and your ergonomic biases
(like video screens). You could build an equivalent computational device out
of a roll of paper, a device to read/translate/write symbols onto each square,
and a motor that can move the paper back and forth under the head.

In any case, write down all the hardware in the machine and remove anything
you don't need
. When there are fewer parts, there are fewer questions when
problems arise. Find the model of your motherboard, CPU, video card,
harddrive(s), bus types, RAM configuration, IRQ pin settings (if any),
harddisks (watch for master/slave settings), and the disk geometry for the
hard disk (look for the sticker on the harddrive), and write it all down.
If you don't know how to do this, go to the second section ("alternate
options").

IRQ's interrupt the CPU with whatever it's doing and are limited in number.
Different hardware should be on a different IRQs. Note how you assign these
(or have been assigned). Ensure all cables are secure and all cards are seated
properly and then put it back together. You can use the data you just
retrieved to get the technical documents from the manufacturer's website to
understand your hardware better.

Start up your machine and enter the BIOS setup screen. Note the vendor and
version of your BIOS. Check all settings to ensure that they match your
hardware sheet and are at their optimum for performance. The BIOS is the
"operating system" before the real wiki:OperatingSystem is
loaded.

Install GNU/Linux [without the new GNOME v3] on your machine. Keep a
partition of 100MB for DOS/Windows and one for SWAP that is equal to the size
of your RAM (RAM x (1 + #of_users) if your making a multi-user machine). Use
LILO if you can, which is entirely sufficient for the task, but GRUB is fine.
Command line is going to be your best friend. You are on the journey to become
the wiki:MasterOfTheMachine -- you will make something designed to do
computation become boundlessly valuable (some might say _omnipotent
). Why?
To distinguish yourself as the master race , of course.

Mastering the Shell

Firstly, you have to start from the right beginnings. You need four core CLI
functionalities to do everything
: menu and user i/o processing, text-file
processing, OS interfacing (processes, users, files-on-disk, network, etc),
and hardware interfacing/querying.

Next, imagine the perfect name for every command or micro-app you
build, so that that can be a clear ontology of commands on which to build
further. Each name should be as potent as can be -- compact yet full of
meaning. User verbs that mutate the system, and nouns for those which don't.
If you can't think of a good name, no one else will understand your command-
line app either. It might mean that you already have the commands you need,
built by others, or it may mean that you don't yet have the perfect idea of
how to accomplish what you want. So, step back, and meditate on it a little.
This is the secret for making apps simple and self-documenting , and
together these mean re-useable.

First task: a menu shell-script. It takes a file as input. This input file
consists of a up-menu file (if any), text menu items, a tab, and command-line
that will be executed if that selection is chosen. Use tab-delimited fields
for everything
, and a enhanced "more" command that allows you to set the
spaces between tabs when needed. The menu command will automatically display a
letter for the choice if you've written the text lines with a caPital, or a
number and auto-capitalize the first word if you didn't. If the user, hits the
"?" key, it will re-display the list with the command-lines used. If no
filename is given, it will look and use a file called "home.ch".

Design every shell command to accept and expect piped input from other shell
commands.
This will make your apps work-well with others. If you're using
tons of parameters to change the behavior of your app, you aren't architecting
your code and apps right. Break it down into modular components; i.e. smaller
commands. This is the secret to making apps scalable and re-useable.

These will put you on the right zen path. There is no other. No GUI will
come close to this for some time. Consider removing it from your system to
make more room for your CLI experiments and ecosystem. Build some peer-2-peer
cloning apps, and you've now made your unix system viral.

With regards to a GUI, consider it like an elephant moving into your house.
Choose a minimal manager (generally twm), if you must, but remember it will be
some time before the 2d and 3d environment are as perfected as the CLI.
Customize your LILO software configuration for dual-boot and install DOS v3.3
or v5.0 (those are the best versions) if you can (on your non-linux
partition). Windows 95/98/98SE if you want.

Tuning your machine

Do all your system administration from the command line. This will make
you proficient on any machine regardless of windowing applications are
installed. Understand what your computer is doing. Find the sequence of
events that begins the bootup process once you press the power button.
Get a
disassembler which can read memory addresses and translate BIOS code into
assembly or request the assembly code of your BIOS chip (IBM PC Technical
Reference has full BIOS source and hardware schematics), print it out, and
figure out at which point does the core or "kernel" of your operating system
actually start. Intel CPUs use interrupt vectors , otherwise known as
"pointers", that tell the machine what program code to jump to on any given
interrupt (like your keyboard). You're going to have to find books for these.
Do it. Do it until you understand the relationship between the hardware
and the bits that just exist on the page.

The OS sits at a layer above your hardware, while your applications sit above
the OS, then there is you. That is the basic separate of power between you and
your hardware. Below that is simply physics.

When you see the difference between the kernel and the rest of the operating
system running in wiki:UserSpace, customize your kernel
($make menucmonfig) and compile it to your exact hardware. You can find
procedures under the linux HOWTO's. This is called treating your hardware
well
. You want to be tight: you can't do that with the generic kernel which
will also soak up more precious RAM than you want.

Find what programs/daemons are started after boot. Understand what they
do. Remove everything you don't need or use. Check your free memory to see
how much progress you're making with each removal ("ps" and "top" are your
friends), so you can get a sense of how intensive various tasks are. This is
called respecting memory.

Now you are worthy of programming the computer. First learn C (gcc on
linux). C translates into machine code quite cleanly. You don't have to suffer
through assembly anymore. Your Operating System is written in it. Make a
program to list all prime numbers
[2]
http://www.rci.rutgers.edu/~cfs/472_html/Intro/TinkertoyComputer/TinkerToy.html

Leveling Up

Option #2 to the above method(s), is this:

Priority 1:

  • Get a job as a computer technician , repairing and building computers (preferably at a small shop). You won't get paid much, but you get exposed to a lot of hardware, some of which you'll be able to nab for little or no cost. OR

  • Build your hardware toolkit. You want a small toolkit that you can keep with you. Small flat and phillips-head screwdrivers, a long magnet or claw grabber for getting dropped screws, small closable tube for holding screws and random bits, a penlight for seeing. These are some of the main tools of the hardware tech that will always serve you well. [DRAFT]

  • Assemble your system. You're going to build your "deck" to serve you in your journeys through CyberSpace. Evaluate these primary elements:
    • CPU (clock speed, wordsize are the primary elements)
    • Main memory (bus width, quantity, and cache sizes)
    • Buses (bus width measured in bits, and bus clock)
    • Graphics (color depth and resolution)
    • Storage options (primarily size and access times are the factor here)

Priority 2:

  • Collect the best parts that eventually shift through all the mass of parts you'll be exposed to, regardless of how old... Good architecture will use less energy, last longer, and will be able to trade speed for usefulness easily.
  • Always use GNU/Linux. Linux is designed close to the machine and will be able to make best use of all those very specific parts you have and you might even find a way to optimize and contribute to the codebase.

  • If you get several boxes you can consider how to use RPC's, Beowolf clustering and such to make good use of it all. Set up UUCP and even do net news.

  • You really owe it to yourself to investigate BulletinBoardSystems, and early network culture. Read "Hackers" by StevenLevy. Check out BYTE magazine, 2600, Phrack, and early Wired for when the Internet culture really got lit.

Option #3:

Priority 1:

  • Get a job as a system administrator , managing some Unix server for a university or business. You'll get to be the king, but don't let it go to your head. Since you will undoubtedly learn things superior to your superiors, educate and defer to your boss, unless you are willing to drop your intellectual investments and move to another company or university. Save that risk proposition for salary negotiations.
  • Build your software toolkit , that will make your job easy. This is where shell script clevery pays off. Make use of the console, print logs, and disk logs.
  • Assemble your system , automate jobs to let you know when YOU need to wake up.
    • Disk usage -- disk getting full, disk thrashing,
    • processing anomalies -- when something`s running abnormally (CPU above norm), process table getting filled,
    • networking alerts -- intrusion detection and misuse of network
  • Make your tools general and publish techniques to the sysadmin community (sometimes DevOps).
  • Keep steering your installed software towards the best to help your whole institution. Since you'll probably be working with tech support staff of software companies, you'll get to know who knows what they're doing and who doesn't. In lieu of that, use [Free] software until you can afford the best. Mediocre software makes the next guy`s job especially hard.

Priority 2:

  • If you administer several boxes, you can consider RPCs and other tools to put your machines on the edge of appearing self-aware -- where they act intelligently by themselves. This is an arena where clevery has not been fully-exploited. Think fortunes that use data from other places on the campus. The challenge here will be to do this in a manner that is so subtle that it doesn't make you appear unprofessional or immature. That means not giving all your techniques away and keeping the mystique of the guru alive. :^D
  • Keep a connection to the Internet [zeitgeist] -- there's always somewhere, someone who knows the true value of the net is still untapped. If you're at a University, you're on the backbone of it -- find the community where things are happening or make one.

In closing...

Remember, money is power in this world because they don't know how to
assess intelligence or creativity beyond reptilian. Getting a job will help
you earn money and keeping a job will gain you respect and hardware or
internet access. In the meantime, minimalism your mainline;
that is, purify your Right Livlihood so you're not trampling
harshly through the world. Find [Lonny Zone] and live on next to nothing
(Top Ramen, roasted nuts, cheap bananas made frozen, macaroni and cheese go a
long way) to save up for something worthwhile and definitive.

Also, keep this in mind: Atheism is not science. A black sheep is still a
sheep. A scientist doesn't form a conclusion based on no evidence. Keep
the question alive (ex. agnostic) -- it is one of the most important on the
planet. Without knowing who you are, you can hardly lead anyone else with
much legitimacy.

After you assemble your great pieces of hardware and have gotten your machines
optimized well (compiled and tuned it to your machine), here's what next:

  • You must realize the nature of data ; that apart from NULL and RND information, it relates to something from RealLife, put into the machine. It has its own Nature.
  • Then , you must realize that wiki:AllDataRelatesToOtherData since the world itself is interconnected. Your windowing system is a crude way to interact with that data. You have a file system as a neutral mediator between applications.
  • Next, you must imagine the right environment for such a data universe. For that, follow [Wiki Nature] to [Zen Code].

...Tasks to consider: Enroll at a University in Computer Science or
Engineering. If you followed the sysadmin path, consider a Graduate degree.
Understand the simplicity of a Turing Machine and, then, how that abstraction
relates to the underlying (concrete) hardware. Understand mathematical graphs,
Venn diagrams (set membership), and fuzzy logic. [Mesh networking] and self-
organizing systems will do you well also. Perhaps you will finish NetHack and
ascend.


And then, when you're ready, create a Node on the Pangaia World
Game
(now the Pangaia World Game ), written:
"Xer0Dynamite". Post it on the Board, and wait...


Related

Wiki: Home
Wiki: Zen Code