In the beginning there was Star Trek, (and then Radio Shack sold the TRS-80.) When I was 4 years old Kirk embarrassed me kissing those alien babes. I couldn't imagine what my sister saw in this show (but it was strangely compelling.)
After years of watching it though, I learned to like their attitude. These people were flying all over the galaxy having sex with aliens and meeting god-like super beings on a regular basis, but when things got tough, they had to rely on their ingenuity to get out of a jam in time for the last commercial. They also had a positive outlook to the future.
Star Wars came out somewhere around the same time my dad bought our first computer. He had a TV repair shop and a Radio Shack dealership so we had first dibs at getting one. It was a strange device, a keyboard and a little black-and-white TV screen, and it didn't speak English! You had to learn BASIC if you wanted to do anything with it. But C3P0 had this great personality and hell, R2D2 was just some little tractors, a garbage can, and some LED's. Why couldn't I do that?
I wasn't just interested in making a movie (though my friends all got turns being video taped in my adaptions of Woody Allen plays.) I felt deep inside that C3P0 was waiting for me in a dark alley somewhere in the future so I got started.
My first program in BASIC was named DOC. DOC started with no knowledge whatsoever so it had to learn what nouns were, what verbs were, what hello means, and everything in a program that could occupy no more than 16K or RAM. Needless to say, DOC never graduated from high school.
But when I was 15, I started another program, this time called Artie. Artie had 48k of RAM and a floppy drive to live in! Artie used some key-word techniques to make chat as I had just discovered ELIZA and thought "why couldn't I do that?" So I did, but it was pretty boring so I decided to integrate DOC and Artie into one program, but what to call it?
My girlfriend at the time, an older woman of 16, agreed that Fred was a good name so that was it. Fred was able to learn responses to the things that people said to it in a most annoying way. Every time you said something it had never heard before, which was just about every time, Fred would start asking "is DOG a noun?" and so on until we'd get tired and turn it off.
Later, when I was 16, I started joint enrollment at Floyd college while I was still in high school. I already knew BASIC so that was an easy class. I continued to experiment with my chat programs in BASIC, but it would be some time before the Columbia PC would bring the hard drive to my arsenal.
Some time passed while I went to college for a few years at the University of Georgia and studied computer science and mathematics. Then I came back to Cedartown, Georgia and got a job as a data entry clerk at a prefabricated building manufacturer. The work was numbing and dull, but left me lots of time to daydream and imagine what the ultimate computer would be like. You could talk to it, ask it what the weather forecast was, and maybe it could give advice, or have questions of its own. My terminal burned MPR data into the screen as the old minicomputer sat humming.
I went back to school again, this time fired up about Pascal and the things I could write with it. This was back when "structured programming" was the new hot thing. (no more goto) By this time I had seen the whole Star Wars trilogy and the prospects of getting on at NASA were looking slim for me so I started a company with my father and my sister and called it Robitron Software Research, Inc.
Robitron is an 8 letter word which for many of us has special significance as our operating systems limited us to an 8 letter filename root. Robitron was the filename for a database program that I had written in BASIC. From there I went on to write things like inventory control and point-of-sale software for our Radio Shack store. Eventually we got so busy writing software that we sold the retail store and started writing municipal accounting software in the form of a general ledger package that could handle encumberance accounting. This is about when we started using DataFlex (serial number 651) a 4th generation OOP language.
DataFlex allowed us to quickly develop fairly large scale applications with a great deal of reusable code. The programs were also very portable between diferent hardware and operating systems. We were writing software on PC's that would replace mainframe systems used by water billing companies and other county and city government applications.
We had been doing custom programming for 3 or 4 years and then started packaging these applications for re-sale. In 1989, I travelled to Philadelphia at the request of Honeywell-Bull to port our software to their line of minicomputers running UNIX. We had a PC running xenix so I knew most of the commands I needed. Some guys in New Jersey told me how to load my DOS files to a UNIX machine over the phone. I got them all to compile, ran them and shook hands with a lot of guys in suits. This lead to some trade shows in Pittsburg and a few meetings in Cherry Hill New Jersey, but what has this to do with FRED?
Well, the following year, IBM had started selling DataFlex since they sported a host of applications that worked not only in UNIX but in AIX (IBM's brand of UNIX) So I went to Dallas with about 30 diskettes and 1 of them contained a program called FRED, written in DataFlex.
I compiled FRED on the IBM RS/6000 along with some utilities billing applications and saw that it was good. It talked *real* fast on that RS/6000! I told them that someday this would be like a BBS and people could call up and ask it for help. They looked at me funny, and we shook hands. I was wearing a suit myself this time.
Then I started making variations on FRED that involved various search algorithms for finding sentences based on only pieces of them. By 1994, I had created a somewhat responsive help system and we got to install our utilities billing software for METRO Seattle, WA.
FRED never saw duty as a Utilities Billing droid, but about that time I saw a post on the FringeWare mailing list about this contest where they were offering $2000.00 for a computer that could converse like a human. I thought "why couldn't I do that?"
So I entered the contest. There were a lot of details to work out involved with getting it all set up and working, and then the day of the contest came. I got 3rd! Can you believe it? My program didnt come in last! I was elated.
The following year, Data Access Corporation, the makers of DataFlex, agreed to grant me a UNIX DataFlex license, so that I could put FRED on the internet. FringeWare.com was an ideal host and soon Paco, Jim, and I began putting our first web bot in place. He would be called Max Headcold. I couldn't wait to see what *real* people would say to it.
Well, you've heard of the old 80-20 rule in business and software engineering. What people mostly said to it was crap. In this case, people given no real reason to talk to it, would say nearly anything just to see what it would do. But we were listening!
We recorded thousands of conversations that people had with Max. I waded through them nearly every day teaching Max a response to go with everything anyone said to it, even some of the crap. This provided a stockpile of canned responses as they are want to be called. The catch here is that you can never predict everything that somebody might say to it, so what do you do?
Our next bot was a bold step for me. I wanted to write something portable so I could run it on a PC or a bigger computer, but it had to be fast and extensible. I chose C++ to write it in. Only problem was that I didn't even know C. So I went back to college.
I wrote a chatterbot named Barry in C++ using the FRED stimulus/response database, but added some Eliza style "hole fillers", and an encyclopedia and search engine. Paco Nathan wrote some cool Perl scripts to tie Barry to the web page and provide all kinds of interesting information about the person talking to Barry. (among other things)
FRED23 was also written in summer 1997 as a stand-alone C++ application. FRED23 was released as shareware.
Albert One won the 1998 Loebner Prize Contest and proved that persistence pays off. Albert One got the Loebner Prize for most human computer again in 1999. I did not compete in the 2000 Loebner Contest.
After years of watching human beings communicating with machines, I have made a few observations. If a person expects little from a machine, they are impressed when it blurts out the answer to 5+3. If a person expects C3P0, they are disappointed when they get something closer to Eliza, but here's the rub:
If people know they are talking to a machine, they treat it with the same respect as a public restroom. If they think they are talking to a human being, they are afraid to say the kinds of things a lot of people say to bots like Barry.
What people expect and what they need are imbalanced too. People who think Barry should be more like William F. Buckley tend to need help programming a VCR. What people need is a program that can "interpret" their language into something the computer can digest and then do the same in reverse when the computer does something unexpected. What we need is a program that understands human language and tells the computer what to do for us. What we need is a combination of R2D2 and C3P0, it doesnt have to walk like I do. It doesnt even need to talk like I do. I just have to be able to get along with it and have fun. I can do that!