In this phase of the project, I have somewhat fallen prey to the purveyors of SERIOUSNESS.
Creating a machine system that can be used with the same sort of ease and effectiveness as a good mental system is not easy. And though many are working on it, you could almost say it’s stupid. Why try to perfect a machine system when we have a mental system that already works so much better? All the mind really needs is a few “tweaks” and it could replace all these stupid machines entirely!
These are the sort of thoughts that go through the head of a Scientologist working with MEST technologies. The sense that there are other games probably much more worth playing, if only one could gain access to them, becomes very palpable after listening to the whole PDC plus the Phoenix Lectures!
But working with computers does give one some insight into how mental systems were developed in the first place… An insight many IT professionals undoubtedly miss.
Why Use a Database?
If the ultimate goal is to really have the file system and its contents become the database, why bother to develop a separate one?
The simple answer is that I’m just not that close yet. I have too many lessons to learn about how data can be linked together before I can try applying a relational model directly to my files.
And this has a lot to do with what some people call “semantics.”
Semantics: study of the meanings of speech forms, or contextual meaning.
In semantics, the correct concept for the word “hot” depends on the context it is used in. This is particularly true of acronyms or simple symbols that have no real meaning, but could mean almost anything depending on their context.
And so it is necessary in an information system to link some data, or a name for it, to a context. And that linking is accomplished mechanically (or mathematically, you could say) using a relational database.
The world has settled on a basic system for communicating with database management software called “SQL.” According to ANSI, the letters S-Q-L no longer stand for anything. They are just traditional letters used to describe the most common way for communicating to database management systems.
I actually learned about databases on a “non-relational” (or “flat file”) system called Lotus 1.0. It was a great system, and it had commands, but they weren’t SQL, even though they were similar.
Access is a commonly-used Microsoft database application that also doesn’t use SQL. Except that it really does. It just tries to hide it all from you. To do this it comes up with all sorts of clever graphical ways to help you write SQL without realizing it. I think it’s better just to learn SQL.
Unfortunately, each major database management system on the market implements SQL a little differently. So you have to learn how to use it for each different DBMS you use. Bummer.
A “real” relational database implements ways to define the relationships between its various tables. This is cool but makes system development a bit more complicated. MS SQL Server is a good example of this type of system. Oracle is another. MySQL on the other hand, started out without this capability. It is available from Oracle in an open source version and thus is the only good DBMS within my reach. It is very widely used in web-based applications.
Web-Based Database Applications
The way the web works totally enforces on the application developer the client-server model used by all modern DBMS software. So you can use your application to enforce your table relationships, rather than programming them into the tables themselves.
In order to do this, you populate a menu control in a form with data from the table that links to the field that you will use that form to fill. Follow?
So if I have a table that links a name to an occupation (I do), then I fill that table from a form that contains a list of all the possible names (from my table of names) and all the possible occupations (from my table of occupations).
In my particular case, I also have a third linking field: Context.
Context is a way to simplify a relational system. This makes for some interesting possibilities. For example, people know me, if they do, by my name, Larry. But that name, even it were unique in the set of all known proper names (which of course it isn’t) is actually being used to refer to at least three separable things, or distinct contexts. It refers to my body. When my body dies, “Larry” will be “dead.” But it also refers to my mind, or to the idea of Larry. And when my body dies, that idea will continue on. On top of that, it is being used as a temporary moniker for ME. The being currently known as “Larry.” And when that body dies, that being will go on and pick up a new body and begin inventing a whole new idea of “Larry”. Except that the idea will have a new name attached to it. (See what happened to James Leininger for an example of what happens when you get a name you’ve had before.) The bodies are only related by me having occupied them. The ideas are related by their potential continuity in my own mind, and the beings are related by being the same.
So I give Larry the context of “be-human” which signifies that we are only talking about the current being-mind-body complex and what it can manage to remember about itself. If I were treating only the subject of my body, which I normally would not in my particular system – might in a medical system, then that data would be in context “be-animal.” I also have a context for beings, though I don’t use it much, as data in this area is thin and unreliable. It is called “be-free.” And so it goes.
Class versus Object
In computer programming we have the terms “class” and “object.” A class defines a framework that can be used to create a unique object. This concept is useful so I have implemented it in my system.
As it turns out, in the world of biology we almost always talk about classes and seldom about objects. Each blade of grass is an object, but who cares? They are almost impossible to tell apart and there isn’t much utility in thinking of them as separate. So from the grand scheme of biological phyla down to every distinct species and variation, it’s still all classes we are talking about; no objects involved at all. On the other hand, I consider a distinct person to be an object.
Classes are subject to great overarching theories about this that and the other thing. But it can take just one object to prove all those theories wrong. So I try to keep objects and classes separated in my system, except to link each object to the class (or classes) which supposedly define all its basic actions and characteristics.
Classes exist in a hierarchical system. Each lower class inherits the actions and characteristics (methods and attributes) of its parent classes. I wanted to store this data in just one table. That table, using words as it does (one could make a graphical database; would be an interesting exercise) also requires a context field. I decided, after studying object-oriented programming a bit, that I would only need four other fields in this table: parent (a name gotten from a table of names), aspect (just a few choices relating to graph theory), type (corresponding roughly to the parts of speech) and name (gotten from that same table of names, or words, really).
The hierarchy can only be extracted from this table by relating names and parents within the same context. In this application, “context” “language” and “thought system” are seen to almost equate, which is one of the interesting results of doing this. This rough conceptual equivalence, by the way, has been noted in psycho-linguistics. Look up the work of Lera Boroditsky.
Filling the Tables
I had two important tables to fill, and that is a work in progress.
I wanted to base their contents on the actual contents of my computer, and I remembered a great little freeware application called YourDir that can create a text listing of every single file path on your computer, or various subsets of this, so I used that to make my context list. It’s an odd list. It has about 500 entries.
In a similar manner I filled my list of proper names (objects – almost all human individuals).
I have yet to attack my list of names, which will be the longest. It could easily have 100,000 entries. But if I make it that big I will have to find ways to limit the number of choices that come up in my form for filling in the linking table.
But with a list of proper names and contexts done, I figured I was ready to start linking those names to categories, in this case, occupations (or “hats”). The first words, then, in my long table of words, describe occupations.
Writing applications (in PHP) to fill a linking table with data to be linked is not super-simple. But I did have the code I wrote for my school assignments along with what I did on my last job, so it wasn’t too bad. This is a whole subject that we just started to touch on in my programming classes. There are methods you can use to help you design a web application of this type. I have not found it written up anywhere, so I am developing it as I go along.
One thing I have noticed about programmers is their tendency to go straight from the head to the computer. It’s a very direct approach, but it can waste a lot of time. I would never think of building an electronic circuit without sketching it out first. But I have not found a programming analog to the electronic engineer’s schematic. There is the “program flow chart.” But I seldom see it used by programmers. And it is really only good for demonstrating logical algorithms. What we really need is a graphical way to show how functional blocks are attached together, just like they do in electronics schematics. I’m working on it.