> I think this needs to go even a little further back. This
> software is heavily based on Lists. It might help to first
> define this fundamental concept. Why is this the "front page"
> feature? What do we intend to do with lists? With that
> information, people will have some idea as to why they're
> creating a list in the first place, and we can move forward from
> there.
I'll give you a little background on how the mvToolbox came into
existence. I started working in Pick back in 1983 or 1984, and I
thought what a slick thing active select lists were. As I continiued
to work in mv, I also began to see some of the weaknesses. The active
select list only contained half the information needed - record id.
The first step of the mvToolbox was when I came up with the idea of an
enhanced list. The enhanced list had not just the record id, but it
also contained the file name also. With the enhanced list, I was able
to create programs that would act on the enhanced list the same way
that normal Pick utilities worked with select lists. The main
difference was that my list was not active in memory somewhere and
only accessible using READNEXT, etc. My lists were data in
themselves.
Over time, I wrote a number of utilities that would use the enhanced
list the same way as an active select list. But since my lists were
actual data, I was not limited to going forward in the list and losing
the last id used. I wrote the utilities so that they could modify the
lists and pass them along. Since they all existed on disk, there was
no loss of information. One utility would use the list, and pass it
on to the next utility. This began to grow as the number of utilites
grew that could use the enhanced list.
A list is mankind's main method of organizing things. The
functionality grew and the lists began to be useful as data
themselves, a means of organizing work.
About this time, I began to see that the programming environment
resembled a universe made up of programs, data, rules, and
connections. Connections became important. All programs and data are
interconnected. I saw that the universe could be "surfed" like one
would surf the internet. Everything is connected. let me give you
some examples. A program is not a list of disconnected lines of
code. It is a structure full of connections. Every read or write is
actually a connection over to another part of the universe. Paragraph
names are interconnected by GOTO's, GOSUB's, and RETURNS.
I saw that there was an immense amount of information available to the
programmer that he was just no aware of. I began to program the links
between what was on the screen. Each I/O verb connects to a universe
of data. Every subroutine was a room behind a door. When I wrote my
editor, VGER, (anybody know the reference?) I made it so if I clicked
on something, I would interpret that click to do or go somewhere.
In VGER, if you click on a Call, VGER goes out and brings in that
subroutine in a new editing session instantly. If I click on a GOTO,
VGER takes me to that paragraph, even if it is in a separate INCLUDE.
If I click on file, I can instantly look at the dictionary or a list
of the file and any dictionary items I want to see. The entire
universe represented by all the programs and all the data became one
click away. It is amazing. Those who have taken the time to learn
just the basics can do in minutes what would normally take days.
I had one user, and IBM'er, who was assigned a task reconciling two
versions of a 15,000 line program. He asked for the mvToolbox. He
had estimated a long weekend to finish, but after installing the
mvToolbox and a short learning curve, he finished the entire project
in less than an hour.
I had hired Eugene to help me with a client in Philadelphia. The
project was slated for 6 months. With the aid of the mvToolbox, he
did it in 3.
The design philosphy has always been "use what you see". I wrote my
tools to use all the information on the screen as links to other
things.
Well, those are the two underlying principles of the mvToolbox. The
enhanced list not as vaporware, but real data. And take advantage of
every connection on the screen.