October 2022

Perfection In Software:
The end of perfection starts with another set of hands.  Everyone has one...  We cannot leave software development in the hands of humans. The computer does not need laws (standards). It simply needs to perform the actions that we request.


Context:
Communication only happens in context.  Therefore a shift from made-up computer terms to explicit human terms is required. We shift the learning away from the human to the input of common knowledge into the computer. 

The computer does not learn, it simply knows what we tell it. "This is a list of Boy Names", "Here is how to determine when Easter occurs", and "There are 12 inches in a foot".  When we provide knowledge, we must supply all related knowledge applicable to all context that is realistically going to be used.  "Top 100 Boy Names in Mexico?"

In general (i.e. by default) the language that Jane understands must always be in context. "Binary Tree", "AVL Binary Tree", "Tree as in Oak Tree", "String as an array of characters".  Individual users of Jane can build their own context dictionaries "when I use the word tree, in this document, I mean binary tree".

 

 


"Never underestimate human stupidity." -- Pittacus Lore

"Style is the perfection of a point of view." -- Richard Eberhart

"The maxim, "Nothing prevails but perfection," may be spelled PARALYSIS." -- Winston Churchill

"Her bare feet whispered across the floor as she approached him with the sort of stealth that only small children and trained killers possess." -- Obie Williams,

"The last rule was to make enumerations so complete, and reviews so comprehensive, that I should be certain of omitting nothing." -- René Descartes

"Never give up on what you really want to do. The person with big dreams is more powerful than one with all the facts." -- Albert Einstein

"There isn't anything that should ever be considered permanent, as everything is evolving or changing in some way." -- Steven Redhead

"Education: the path from cocky ignorance to miserable uncertainty." -- Mark Twain

"Spoon feeding in the long run teaches us nothing but the shape of the spoon." -- E.M. Forster


 

Out Damn Human:
The spot upon perfection is the human wishing to make things better, especially when they do not understand the problem. We must get the human out of the management and creation of software. To remove the humans from software development requires that the computer must know what we know and have the ability to use that knowledge on its own. The human and the computer must have a stable language in which to communication.  The human must have complete confidence in the actions of the computer. When understanding is accomplished no documentation will ever be required.


Complete Knowledge Transfer:
All knowledge must be maintained when transferring information. The application that stores or transfers data must ensure that all knowledge about how to access and use the information is also transferred.

Information is therefore considered application independent. This includes derived knowledge in the form of logic that also must be supplied.  The objective it to move information from one application to another and back without any loss of functionality.  The structure can be augmented at any time by any application, as long as the original structure remains intact.

Fortunately application independent information is the foundation of Jane. Therefore this requires no input from the human, it just naturally happens.


Process Steps:
When dealing with software there can be any number of steps required to produce a desired result. Each of these sub-processes is handled by Jane as an independent process. All the knowledge about the sub-process is remembered by Jane. Therefore the source, logic and result of each step can be used, validated, reproduced, queried, and tested at any time by any application.

The important thing is that no human interaction is required in the management, construction, or running of Jane's memory system. Keeping the details of all sub-process details is handled by Jane.


Reproduction of Machines:
Current Software development technology only produce standalone products (i.e. Applications). The applications created cannot reproduce. They do not retain any information of their own creation. They do not pass along any knowledge that they might learn to other applications.

Biological DNA works, It is the most compact encoding scheme that has ever been devised. It works for a reason, to allow children to change to their environment.

Instead of one programmer, in a closed environment developing a static application, what if I produce Application DNA then we would have seven billion programmers adjusting every application to their own unique environment constantly.

 

Software Leaks, Human Thumbs:
There are leaking in perfection of software where humans are required to plug the hole.

The Cascade Style Sheet (CSS) of HTML is an excellent example of leaks in software perfection. These stupid Johnny come lately HTML5 changes of taking out the <center> tag and replacing it with a practical solution of a "text-align" style qualifier. A simple solution was replaced by a convoluted one.  The "text-align" not only aligns text but the also the elements within the block.

HTML5 moved some (i.e. valign, align, ...) but not all (width, rows,...) element qualifiers into CSS. I can only think that someone left themselves some work so they could keep getting paid to make more stupid changes.

Every application is full of holes that require human involvement.  From the operating system (i.e. turn off the caps lock key) to creating Pivot Tables to entering a date to adding numbers.



Conclusion:
Current software development technology is designed for the human. All the knowledge of how an application functions is in the mind of the human. It is up to the human to create, change, validate and control all of our applications. This technology is of no value because it can never remove the human from this process.

 More basic knowledge is required to allow the computer to take over the job of application develpment. Simply put: we need a new technology.

Knowledge is never wasted. To have the computer to know only one opcode at a time is as stupid as a computer can get.

Characteristics of logic should be encoded as computer DNA.  Something as simple as a base pair of "unique values in an array" or "unique counted values in an array".  


Side Note:
I am finding that we have no way of moving information out of memory with all knowledge attached. We need eveything, "is the property hidden, writeable, locked?", "is this a system value?", "is this a recursive structure?".  Much of the information is not available, it is "lost in translation"

We must have ALL INFORMATION, so it can be reproduced exactly, without special code. There should never be any memory value that cannot be transferred to storage and then restored. We have dumb programmers writing our systems, rich but dumb.


by: Clif Collins