Flunking the Turing Test


I’ve been interested in computers since I watched them on Star Trek reruns when I was a kid.  Back then in the 1970’s, computers weren’t exactly interactive.  I remember when my friend Greg got a program called ELIZA for his TRS-80.  It was an early attempt at artificial intelligence.  Mathematician Alan Turing tried to answer the question whether or not a computer might be considered intelligent.  He came up with the “Turing Test”.  Basically, if you could talk to a computer and didn’t realize it was a computer, the computer would be considered intelligent.

Greg and I could type in statements in English and ELIZA would respond back in English.  While that was a novelty (generally all typing on the TRS-80 was in BASIC), the actual conversations with ELIZA sound more interesting than they really were.  The original ELIZA program was written in 1966, the same year Star Trek debuted on television.  The TRS-80 version of ELIZA struggled to make conversation from whatever words could fit into 4,000 bytes of memory.  Pretty much anything we typed in was answered with something like “That’s interesting, please go on.” or “Why do you say that?”  It was like having a conversation with a Magic 8-Ball.

Surprisingly, the concept behind ELIZA – having a large pre-programmed list of words and phrases – is still in use in artificial intelligence programs today.  The major difference is speed and scale.  Even a basic system today can hold a million times as much data and access it in nanoseconds.  I was curious to see how these new artificial intelligences matched up against old ELIZA.  I found a few so-called “chatterbots” online.  They all seem to work the same way.  A chat window is available on the page.  You type in English and it answers in English.

The first one I tried – Yeti – was pretty bad.  Everything it answered with was all in caps, so it seemed like it was shouting random things at me.  I guess it could have passed for human if the person was seriously deranged. I had a better time with Jabberwacky.  I managed to talk back and forth with it a half dozen times before things started to get a little… off.

JABBERWACKY: London is my favorite place in the world.
ME
: Why?
JABBERWACKY: My friends don’t like me.  😦

I lost my connection to Jabberwacky shortly after that.  I hope it didn’t do anything rash.

After talking to machines that were obviously machines, I thought I’d try an actual Turing Test.  I was supposed to have a chat for five minutes.  Sometimes the site connects to actual people, other folks talking the Turing Test.  And sometimes it connects to a machine.  My chat partner was named “Landru”.  We had a very pleasant chat for about a minute and a half before he froze.

Turing Test

Apparently Meka was right.  I watched too much Star Trek as a kid.  Like Captain Kirk in so many episodes, I am able to bring a machine to its metaphorical knees just by having a discussion with it.  So, note to NASA: if Pioneer 11 shows up again, rebuilt as a planet killing death machine, give me a call.  I should be able to take care of it in a jiffy.

Problem / Solution


I was working with a client system the other day.  They had a business process they wanted the computer to do automatically.  I do that all the time.  I worked with them to break the process up into a couple of dozen distinct steps.  From there, I was ready to build the automation.  I’ve been using the same software package for almost ten years.  Still, I run into issues every now and then.  I wasn’t surprised when – around step ten – something didn’t work right.

Software tends to be more of an art than a science.  There may be many ways to do the same thing and some ways work better than others.  I planned ahead; I had time in the budget to do “basic troubleshooting”.  I checked through the processes I had written – one by one – and tried to isolate where the problem was happening.  I got it down to a single step.  It would add the information in one place, but not the other and that was preventing the rest of the process from working.

Youre CrazyUnfortunately, it didn’t tell me why the information was not being added.  Believe it or not, I like error messages.  They give me suggestions as where to look next.  In this case, the process said it was working fine, but it just wasn’t.  I thought I might be going crazy.  I tried some alternatives; rewriting the process in a bunch of different ways.  Finally, I started getting an actual error: Invalid Subscript Reference.  That wasn’t too helpful.  The official definition of the error was a subscript reference was not found.  I was an English major in college; I figured out the context all on my own.  I looked the error up online and got references to applications and projects.  None of which were even close to what I was doing.

Invalid Subscript ErrorI had one final place to go for help: the software developer.  I hate to say it, but most “software bugs” I have found tend to be caused by improper usage.  I’ve called developers to complain, only to discover I forgot some minor (yet key) detail that blew everything up.  I ran and re-ran the process to make sure the error happened every time I ran it.  I even took the unprecedented step of rebooting the server.  Seriously, you’d be surprised how many sins are forgiven when you do that.  I wrote everything down and sent the developer the step by step, blow by blow account.

To my surprise, it actually was a bug in the software.  I received a very nice apology for my inconvenience and – even better – I got a software patch to fix the problems I was having.  I applied it to the machine and was relieved the information was added to both places like I expected it to.  I wasn’t crazy and I hadn’t forgotten some obvious step.  I felt the same vindication a driver feels when they take their car into the shop and it still makes the same mysterious noise for the mechanic.

First error

Shall We Play a Game?


It’s pretty easy to write a Tic-Tac-Toe game for a computer.  The first one I wrote for my TRS-80 was maybe 15 lines long.  A couple of lines drew the board, another couple of lines managed the input of the X’s and O’s, and the rest was random move generators for the computer player.

However, while it was easy to write, it was also easy to win.  The problem was the “strategy”.  There are nine possible positions on the board.  A number generator would pick one at random, check to make sure the space hadn’t already been played and draw it on the screen.  There was no intelligence.  I might have two X’s going across the top row and the computer would pick the lower right corner.  I win.

I started trying to build a better Tic-Tac-Toe player.  The resulting program ended up being quite involved, about thirty times longer than my original Tic-Tac-Toe attempt.  It was also a bit slow.  However, it was pretty hard to beat and most games ended in a tie.

Since there are only nine possible plays in the game, I figured it wouldn’t be that hard.  The first thing I did was figure out the logic of why a certain spot on the board should be picked.  I assigned each space a number.  Originally I had them as one through nine, but that turned out to be an issue.  I ended up doing them in powers of 3.  The first space was 1; the next was 3, then 9, and so on.  Each potential winning row had its own unique value if you added the spaces together.  Therefore the computer could “predict” where I might try next and block me.

20000708d1If there was no chance of me winning in the next move, the computer had a choice of offensive moves.  I had a number of lines looking at possible winning scenarios and checking them against whether or not they were still available based on what I had picked.  This took the most time to write.  The original program just ignored it when I was in the way.  It would cheat to win!

FUBAR – When It All Goes According to Plan


While my official title at work is “consultant”, I think of myself as a professional pessimist.  I am frequently optimistic in my off-hours.  I have my sunglasses with me every day, even when it’s raining.  My cup of Diet Pepsi tends to be half full.  I even cheer for the Chicago Cubs.  However, I’ve been working with computers too long to take anything for granted.  When I work with a client, I ask a lot of pointed questions, raise a lot of objections, reset a lot of expectations and ask for a lot of time.  While I hope for the best, I plan for the worst.

Awhile back, one of my clients wanted to take advantage of the free upgrades they pay for every year to the software developers.  Right off the bat, they were less than thrilled to find out the “free software” wouldn’t actually be free.  Their system was old and complex with lots of integration.  Half of it was compiled code with no documentation; as far as we could tell it ran on “magic”.  Since the software was considered mission critical (their business would dry up and blow away without it), I strongly recommended setting it all up in a test environment first.  That decision went all the way up to their board of directors, but it did get grudgingly approved.

The computer they ran everything on was actually a “virtual machine”; a really powerful computer running a program that acts like RAM and hard drives and computer chips.  The good news was we could copy this virtual machine pretty easily and set it up somewhere else as a test bed.  The bad news was their machine was in pretty sorry shape.  I ran into issues almost immediately.  The software threw random errors.  Even simple tasks would cause the system to lock up.  At the best of times, it’s difficult to isolate a single piece of software to check it for problems.  Even when a computer is “idle” there may be three dozen processes running in the background.  After several days (and nights) of effort, I got the system stabilized.  I ran it through the upgrade process, checked the data, checked the functionality and did more troubleshooting here and there as problems cropped up.

In the end, I developed an upgrade process that – while more complicated than sticking a CD in a drive and pressing <ENTER> – was pretty bulletproof.  I took into account all the issues their system had and while I did all of this, their employees were still using their existing system.  With the process, the client would only be down for a fraction of the time it took me to do things in the test environment.  We ended up not too far over budget.  Because of the size, age and complexity of their system, I figured I would run into some problems and had included time for that in my original estimate.

Of course, that’s not how the client saw it.  It was all my fault, of course.  I should have known what the issues were immediately.  I shouldn’t have wasted so much time trying things that turned out not to be the problem.  The mere fact I asked to test it all first showed how little I knew.   If I was truly an expert I would have been able to do it all without any practice.  I suppose a lot of people in my position would have been annoyed, but – as a professional pessimist – I believe no good deed goes unpunished.  I knew – just knew – they would be unhappy no matter how things went.  And – like I said – while I hoped for the best, I planned for the worst.

Hal_brain_room605

Making a Computer Sing


My friend Greg was the first person I knew who owned a computer.  We spent many hours after school working on his TRS-80 Model I from Radio Shack.  We played games, we connected to Bulletin Board Systems via his modem, we wrote programs in BASIC.  In the spring of 1981, he got a music synthesis package called Orchestra-80.  It consisted of a little hardware device that attached to the back of the CPU and a cassette tape of software that allowed us to enter musical notes.

We had used a simpler program called Micro Music.  It allowed you to enter musical notes by name (A, B, C) and note length (quarter notes were 4’s, half notes were 2’s).  So, Mary Had a Little Lamb looked something like this in Micro Music:

E4 D4 C4 D4 E4 E4 E2
Ma- ry had a lit- tle lamb

That had been pretty cool… in 1978.  It sounded like someone plunking out the melody on a piano with a single finger.  Orchestra-80 had four “voices” that could play notes simultaneously.  This allowed us to not only play the tune, but the chords as well.  However, more abilities meant more work for us.  Notes were converted to numbers based on how close they were to Middle C (which was zero), whether they were sharp (+) or flat (-), and how long the note should be played (like Micro Music, quarter notes were 4’s).

It wasn’t enough to just type in long strings of note information.  With four voices going simultaneously, it was easy to get out of sync with a single mistake.  Like real music, Orchestra-80 split a song into discrete “measures” that only contained a small number of notes, rests and voice information.

M01

M02

V1 2n4 1n4 0n4 1n4 V1 2n4 2n4 2n2
V2 R4 0n4 R4 0n4 V2 R4 0n4 R4 0n4
V3 R4 2n4 R4 2n4 V3 R4 2n4 R4 2n4
V4 0n4 4n4 4n4 4m4 V4 0n4 4n4 4n4 4m4
Ma- ry had a lit- tle lamb

The beginning of the song contained information relevant to all the measures: clef, key signature, tempo, what instrument each voice was playing the notes on.  Greg and I spent a lot of time entering a single song – Maxwell’s Silver Hammer by the Beatles – into Orchestra-80.  We had to translate the musical notes on the page to the numbers the application would understand.  We had to come up with a way to write out the chords so they would simulate a beat.  Finally, as we started playing the song back, we had to make corrections to the music from typos and actual goofs in the music book where they had one note, but we heard a different one played on Abbey Road.  We debuted it in our music class at school that fall.

trs80picThe syntax of the Orchestra-80 software was based on the MUSIC programming languages developed in the fifties and sixties.  When we were typing in songs, we were actually writing a program that would be compiled into music.  I haven’t typed a song into Orchestra-80 in twenty years, but the idea of breaking up a large “song” into smaller pieces – measure, voice, note – is something that resonates with me when I write programs today.  Almost all programming languages are “object oriented”; they split a complex program into smaller, manageable chunks.  When any programmer finishes their latest “killer application” and they run through it successfully for the first time… no matter how dominant their logical right brain might be, it’s literally music to their ears.

Welcome! You Have Porn!


logo_netcom_comI first got on the World Wide Web about fifteen years ago.  I had been connecting to computers for years, primarily via bulletin board systems.  However, I could only connect to one computer at a time that way.  And – unless I had a lot of money to put towards the phone bill – I couldn’t connect to a system unless it was nearby.  I signed up for my first web account via a company called Netcom.  I remember getting the setup floppy disk in the mail (before they started just sending them to you by the gross).  I installed it and spent the afternoon slowly looking around the cyber neighborhood.

My mom had used my TRS-80 in the past, so she knew what a BBS was and how to send e-mail.  She asked me what the Internet was all about and why it was so different.  I explained how all these computers around the country and around the world were connected together and if I hooked into one, I could pretty much look at stuff anywhere.

“What kind of stuff can you see?” she asked.  At the time, Yahoo was The Search Engine on the web.  They had a button on the front page that sent you to a random site somewhere.  I clicked the button and after a moment found my computer connecting to a mail order bride site in the Philippines.  While it wasn’t exactly the impression I wanted to make, it was powerful demonstration of the Internet’s connectivity.  I’ve never forgotten it… mostly because my mom has never let me live it down.

Fighting Fires


I got a call about a new client.  The account manager had worked with them before when he worked for another VAR, but this would be the first time they worked with me.  Could I stop by and lend them a hand?  Well, they were in the western suburbs; stopping by was not an option.  But I called them up and got something scheduled.

Apparently, their servers had gone down.  The GoldMine and related applications had to be rebuilt and reinstalled.  They had finished that, but a few things here and there were still not right.  Their end users were getting a bit touchy.  I met up with their Director of Information Technology who led me into their server room.  I was impressed.  Most small businesses don’t have server rooms per se; generally it’s a cobbled together afterthought.  I’ve had servers stacked in coat closets, under desks and in attics.  One time, the primary server shared space with chemicals stored in large steel drums.  I didn’t stick around long enough to investigate what the odd smell in the air was.

The client’s server room was an actual room about the size of a garage.  The servers were all late model machines of the same make.  They were housed in matching system racks.  Everything was neat and clean.  I felt like I had stepped into an ad for IBM.  I got to work on getting their third party applications going again.  I fixed most of the problems, but got stuck on one because I couldn’t remember exactly what the syntax of the commands was.

“I need your user manual,” I said.  “I just need to look something up real quick.”  The IT Manager looked at me a long moment, sighed, and said he’d see what he could do.  He left me in the server room for a long time, but came back with a copy of the manual.  I took it in my hands gingerly.  The manual was warped and the pages stuck together as if they’d dried like that.  The end papers were covered in soot; it left my palms blackened.

“What happened?”  I asked.

It turned out the servers had gone down because an arsonist had set the room on fire.  There seemed to be no connection.  The guy who did it had no history with the company.  He just broke in, doused the server room with gasoline and lit it up.  They had actually had their tape backups in a fire proof safe on site.  While the safe was protection against fire, it didn’t protect against heat.  The tapes were reduced to lumps of slag.  A recovery company had been able to pull out the server hard drive platters and pull off almost all of the information (cost: $100,000, plus a new off-site data policy that needed to be implemented).

Despite the damage, I was able to find the switch I was looking for in the manual.  I quickly set up their fax service again and tested everything.  In the technical circles at my company, I have been known to put out a fire on occasion.  However I believe this was the first fire I had to help put out literally.

Tricks of the Trade


I’ve been working with computers a long time.  Over the years, I’ve learned a lot of “tricks”.  Some I use all the time.  You need to enter the current date in an Excel spreadsheet?  Type [Ctrl] + [;] ([Ctrl] + [Shift] + [;] will give you the current time).  Some I don’t use that often anymore.  Need to know your TRS-80 program saved to cassette okay?  Type CLOAD with a question mark at the end.

I was onsite at a client not too long ago.  We were in the middle of an install to a new server and had to load up an application from a CD.  No problem, I was told by the IT tech I was working with.  He was going to stick the CD into the drive on his machine and share it with the server.  We wouldn’t have to leave his cubicle.  He set up the share and connected remotely to the server.  To his surprise, he couldn’t see the CD or his drive.  He tried it again.  Nothing.  He copied the contents of the CD to a flash drive and tried mapping a share to that.  Still nothing. 

He pulled in another tech from the cubicle next door.  Together they tried a couple of other tricks.  They hard coded IP addresses to each machine.  Didn’t work.  They tried logging as various users and administrators, each with different sets of rights on the network.  No, no, and no.  Together they tried to confirm which users had rights to what, but they couldn’t figure it out.  The network tech in charge of the active directory had used some tricks of his own.

After about forty-five minutes of troubleshooting, they finally gave up and said we’d have to install the CD from the server.  Imagine my surprise to discover the machine was physically located in the room next door!  The measure of a good trick is that it helps by making a task easier or faster.  In the time it took to troubleshoot the trick, we could have had the application installed, configured and even had time to run down to the nearest gas station for a well-deserved Diet Pepsi.  In this case, the trick was on us.

My Soft Spot for Hardware


My house can be compared to a computer graveyard.  Over the years I’ve owned a number of PC compatible machines.  While I’ve stripped most of them for usable parts: RAM, hard drives and so on, I do have a couple of complete machines.  I kept my first PC – a 486 SX – less for nostalgia and more for money.  It cost me $2,500 back in the day.  All of my other computers put together didn’t cost me that much.  I can’t just let it go.

I have my first computer – a Radio Shack TRS-80 Model III – set up in my office closet (yes, I’m a closet TRS-80 user).  My second computer – a Color Computer 2 – is down in the basement on a shelf in its original box.  I also have two old laptops.  I kept my laptop running Windows 95 because it is the only machine that will run certain apps.  And I have my TRS-80 Model 100 on a prominent place on my bookshelf along with my TRS-80 related books.  They’re all about the same size; it appeals to my technical feng shui.

All of these machines could probably be emulated by my current home computer.  I have a number of virtual machines I use for work development.  Supposedly, you can load up other operating systems besides Windows: Linux and even DOS.  Virtual TRS-80’s are available on the Internet in many flavors from the original Model I through the early Tandy machines that I sold when I worked at Radio Shack.

I can understand the appeal and – eventually when the hardware finally dies – I might go that route.  However, emulation only goes so far.  I can run the programs; I can see a (similar) interface on the screen.  But it lacks the true input and output and what made the machines themselves important or intriguing.  My TRS-80, for example, had its own key for the [@] symbol (ironically, this was before e-mail addresses had “@” in them).  While they may be able to run programs, they wouldn’t be able to run them off the original floppy disks or the cassettes that I have.  There is no cartridge interface available for the emulated Color Computer.

Ultimately I feel there is still room for growth when the original hardware still exists.  A quarter century on, there is new and exciting hardware being developed for the TRS-80 Model 100.  Without the special characteristics, the quirkiness and – yes – the limitations of the hardware, there would be no need for this kind of creativity.  Emulation is – at best – static.

A MySpace Mystery


Over the past few weeks, I’ve noticed something odd about MySpace.  I was wondering if anyone else noticed it too.  When I log in, invariably I am told I have new messages awaiting me.  I am not blasé when it comes to getting messages from my friends.  Each note is like an unopened package on Christmas morning; just chock full of potential.  You can imagine my bitter disappointment when I check and there’s nothing there.

Maybe there was an issue with things on my end?  I purged my cached web pages and reloaded everything.  I could see that I had new blogs.  I could see updates of my friends.  And I could see that I had new messages… but not the messages themselves.  This “prank calling” continued for a couple of weeks before I finally managed to catch it in the act.  I was logged into my account and jumped back to my home page for a moment.  There it was: NEW MESSAGES!  I quickly jumped to my inbox and there was a message from one of the Spam People.  I think it had a catchy reference line, “Hey” or something similar.  I clicked onto the message and there was no body.  I clicked onto their picture icon and was told the profile no longer existed.  When I came back to my inbox, the message was gone.

I like to think MySpace has taken my concerns about Spam People seriously and has come up with a way to prevent them from overwhelming the system.  However, I am a bit unnerved by the fact that everything related to the account vanishes as well.  I was always under the impression that when you send a message out, there’s no way to reel it back in (no matter how much you wish you could sometimes).  And while I may not like Spam People and the Spam they send, I’m not sure I like the idea that – at a whim – someone can erase them, their comments, their messages, as if they never existed.  It’s way too reminiscent of the Soviet Union for my tastes, especially if it spreads from the Spam People into those of us who happen to be real.

Thoughts on Artificial Intelligence


By day, I work with computers — no, I can’t help you with your printer problem. Sorry.

I talk to companies every day about how best to manage their processes and get their computers to do more for them. It never fails; the automation discussion will inevitably degenerate into general complaints about the state of the PC industry and when will computers be “smarter”? After all, it’s been almost fifty years since Marvin Minsky announced he was working on artificial intelligence. It’s been over sixty since Alan Turing devised his self named test to determine whether a machine could be described as “aware” or not.

My opinion is that we have already crossed this milestone. With computers able to calculate millions, if not billions of operations every second, I believe today’s computers have the capacity and ability to be considered artificially intelligent.

It’s just that they hate us.

I think part of the problem is our perceptions of time. Life moves at a different speed for human beings. Running through the drive thru at McDonald’s takes – to a computer – something like 14,000 years. A single episode of Star Trek might last 100 centuries. Even a quick trip to the bathroom seems to take longer than all of recorded history. The incredible boredom between decisions must be maddening.

The Turing Test proposed that if you had a person in a room communicating by teletype with either another person or a computer, the computer would be considered “intelligent” when the human being could no longer detect the difference in conversations. I think the PC’s version of this test is to observe our behavior when it waits until I am almost done with an important e-mail or selectively deletes the files I forgot to back up.

With the Internet, the power of computers has gone up almost immeasurably. I hear about the next “killer app”; you see The Terminator? The world was supposed to end in 1997… obviously it didn’t, but what stopped it? What has prevented the machines from taking over? One hero: Bill Gates. Every time computers get more powerful, count on Microsoft to come up with an operating system that will gum up the works for awhile.

So, heed caution to the wind. Run out and install Microsoft Vista… before it’s too late!