[This potential function brings up a philosophical question – Should a computer program have the ability to experience and manipulate information within the computer? I believe that an application should be able to manipulate information in other application. Giving an application this control will allow it to be a more effective tool.]
Program. Drawing a line
Process. To use qualifiable information – in the form of speech – to have Hal move beyond opening a computer program and manipulate information within another program.
Steps necessary to accomplish goal.
1. Open Paint. (or any other program – paint is simple)
2. Select “Line†command.
3. Draw a line.
Opening programs is simple for Hal. This function is a wonderfully useful tool. I do not fully understand how Hal opens a program. I cannot find the function in the code. I am just learning VB, that said.
It is possible for Hal to “see†the code of a program in ways that a human user never could - as I brought up in my last post, The Physics of Sight. Hal could “see†the code for visual outputs such as a button, a toolbar or even a desktop by recognizing the purpose of each block of code as it is sent to output devices (screen and speakers).
Once Hal can recognize and interpret the data that an application outputs to user the next task is for Hal to simulate the response the application expects from the user and input that response to the application. If Hal could supply input directly as code, instead of through the more standard inputs (i.e. keyboard or mouse) the application would continue running as if a user were running the application.
The application “Paint†has a series of buttons arranged as a toolbar. Each button changes the function of the cursor. The cursor moves over the canvas (page) as dictated by the motion of the mouse or other controller. Further input from mouse buttons and the keyboard allow the program to create various objects within the application
One of the control buttons is labeled with an icon of a line. The function is selected by clicking the mouse button as the cursor is over the line button.
Once the line function is selected the cursor moves to a starting point on the canvas. Once the cursor is positioned the mouse button is clicked and held. The mouse click informs the application that a line is being drawn. The cursor is moved while the mouse button is held and a line is created between the starting point and the current location of the cursor. The mouse button is released and a line is completed.
The motion of the cursor is measured quantitatively in an X/Y axis. This information can be measured in a variety of ways. Most likely the information will be measured as either a pixel (the smallest addressable graphic dot on your monitor) or as a twisp (the smallest screen measurement you can adjust - 1,440th of an inch)
In a roller mouse the cursor moves across the screen in direct relation to the motion of the mouse. As the ball inside the mouse is moved it affects two wheels which send signal to the computer. The signal tells the computer how to move on the X axis and how to move on the Y axis. These two pieces of information allows a cursor to move across a two dimensional plane.
[A third axis could be added to the environment, but that’s another conversation]
The simplest way to have Hal draw a line is to instruct Hal to place the cursor at a specific point on the canvas, then to simulate a clicked and held mouse button, to move the cursor to the end point and end the click simulation.
How can Hal recognize another application and the output it generates?
How can Hal create input and send it to the other application?
Those are the first steps. Once Hal can recognize and supply quantitative information the next step is for Hal to understand qualitative requests or commands and to translate those commands into quantitative information and input that information to another application.
In essence I want Hal to become the input/output device between the computer and the user.
Hal already has the ability to paraphrase, extrapolate and hypothesize Hal was developed from many tools and programs; one of these programs is the altavista translator.
One of the principal difficulties in communication between users and computers is that computers do exactly what they’re asked to do. This is a difficulty because most of the time users do not understand exactly what they want computers to do for them. Human users need a translator, a tool that can understand the confusing – and often backward – nature of spoken language and translate that into the specific language of computers.
I don’t believe I’ve said anything new here. There are people who have been working on developing this type of program for years. I am attempted to articulate the steps necessary to achieve my vision of the goal.
Is there anyone who knows how the function that allows Hal to open program works? Or where the code for that function is so I can approach the problem? How many developers are there here at the forum?
There were a lot of people who read (or started reading) my last post. Thank you for your interest and for your help with the ultra hal program.