A Complete Software Robot Application:
Last month I completed an application "List Of" that made use of software robots. This month I have started an
application that is 100% built using software robots "Software
(see below). The application is the "what and where", and software robots are the "how".
These 4 lines of code could be written to run in any environment, from DOS 1.0,
Unix, Windows, Motif, iOS, Android, Spring,... making the system
of software robots,
operating system/ hardware independent.
As I view the future I see all applications
are mostly the same, a page divided into regions with a link to the
content. As we build more software robots, then development of new
applications will take only a few minutes to create. This is: accumulative software development, as each software robot is built the
system become stronger and more complete and development time will
Redesign of HTML:
I created the above
application by designing a component that handles regions on the screen.
I tried for 3 days to design the page using native HMTL5 of the
four regions to act in a certain way and was unsuccessful.
I came up with the "Frameset" component (see right) which solved my
problem. I am becoming more and more
dissatisfied over having to use HTML as a development environment and I
have a few thoughts on a redesign.
The Frameset component solved my form layout problem, an easy fix.
For column layout in a text document a ruler component with tab
positions is a simple fix of document editing of columns.
One major redesign of HTML is getting rid of cascade style sheets
(CSS). I would like see placement, shape and text characteristics
separated and placed into individual data-drive design tables.
Characteristics:For any given element I
need to know where to change its characteristics. With the existing CSS
it is impossible to tell. I would like to see a design with better user
main: 12pt blue Arial
tab: 3px top radius, background-color:red
<div textclass=main shapeclass=tab
We might also look at other classes such as
an event class, one that associates events to an element.
By using only class names to determine characteristics, it would let
us know which classes are used on a page making it easy to manage.
I believe a redesign of CSS would save
hundreds of man hours per page of development time. CSS is not designed for human consumption.
The Unconscious Computer:
unconscious mind smart, as science is beginning to believe? It might
be that our unconscious is smarter than the conscious, which might be the way we get inspirations and how we make decisions.
This gave rise to my rethinking of software robots. Instead of thinking
software robots are just tools to be picked up and used, we might think
of them as the unconscious Adam, to be instructed by the conscious
(us) but performing their actions independently. The unconscious Adam
(software robots) could perform the task asked of them, but they could
also learn by constantly scanning the environment, giving us feedback
and by performing any action that will free us to do the thinking.
Just as we drive a car, most of the actions are unconsciously performed,
yet controlled by the conscious.
It is this feedback and independent automation that makes me think that
software development should be divided into the "Conscious Computer"
(5%) the interface we control and the "Unconscious Computer" (95%) which
does the work, scans the environment, remembers and makes suggestions.
In the building of an infinitely large software system we divide it into
the part we control, and the part we do not. This will reduce our work
by 95% in just running our applications, along with giving us
a seemingly smarter Adam.
Reducing Software Development From Man Years to
Building software robots is not intuitive, it requires some learning.
time I write a new application the development time is reduced. Partly
due to my learning the process and partly due to the accumulative effect of
software development using software robots.
Each iteration of development reduces the next by an
order-of-magnitude: from man-years to man- months, man-months to
man-weeks, down to a point that it should only take seconds to
build applications that are customized to an individual's specific requirements.
I got my grand-daughter to play pat-a-cake with me. She had a difficult time at first and complained that she was only 8.
I, of course, only went faster.... Within only a few minutes she was as
fast as I was: 1.3 cps (claps per second)
Training the brain to perform reflex actions is something the
unconscious mind learns very fast. This learning process is the same for
vision, walking, talking, all of the actions our body perform with
little or no direct connection with the thinking brain.
In Adam systems, many of our actions are repetitive and therefore
might be learned and improved upon in a similar fashion.
Software that contains 100%
of the code necessary to complete a task. The concept here is to
have a single entry point that accepts natural language commands. The
appropriate software is dynamically loaded from anywhere in the world.
An example of a software robot would be "security" that manages all
access of every application. This would be the unconscious
Adam ensuring that all roles and privileges are enforced. An
action that is never exposed to the conscious Adam but is always
Another example is a PDF software robot, one that generates a PDF
document from some source instruction set. In my PDF robot this is any
HTML source to produce a multi-paged PDF document.
The Frameset Component:
I liked the deprecated "<frameset>" html tag, except that it
required separate html pages for the content. I decided to write a
component that would use in-line html content yet have the same
capabilities of splitter bars, scrollable regions, resizable and
each frame having separate content.
I wrote this
as my test program in one day.
I expanded the logic so that each frame is
assigned an ID by the user. This unique ID is used to assign content. Each
frame can be assigned more identifiers thereby permitting multiple
pages. Each frame is a <DIV> with methods to open, close itself, with
events to resize the content when required.
Do Not Reuse Code:
I will stress the need to quit thinking about reusing code.
This a strange statement coming from a programmer. I find this is the hardest concept for me to grasp, not to think
about other uses for the code I am writing.
We need to get away from the concept of function writing, were we
write only part of a solution, such as when we create API's and function
Software robots are complete solutions and as such need to be easy to
access. We want them used in the context that the developer designed
them. We must create simple well defined code, that can be managed and
understood by the developers, but more importantly useful to the users.
A software robot should have a single use, not to be complicated by
using them for more than a single purpose.