Mar 2018
May 2018
The perfect system:

My vision for a new software development foundation. Before starting, the system: there can only be one, only one language, one data format, one communication protocol, one convention, one authority, one way to do things, one version. It should also have zero limitations and zero assumptions.

A new compiler as a natural language. A Work Piece Indicator should be applied to the complete programming language, as an indicator to the correctness of each line of code. Just as a craftsman tuning a piano has immediate feedback to his work. A programmer should have absolute confidence as he types each character. We must remove all assumptions on logic. The language should strive for completeness in logic, that is, handle all knowledge and logic that is already known. We already know about numbers, characters, text, images, video, graphics, math, units, use, transfer, storage, and forms so these are handled by the compiler completely, thus removing the need for training or documentation in the basics.

The language must handle all information flow. The complete use, transfer, and storage is handled by the system. A single hardware interface for all devices is used, therefore every information packet to all devices is handled from a single "Jane" implemented device driver. I will get rid of all 3rd party device drivers.

All digital information is application independent. Therefore the system allows for any size of binary numbers, from one to infinite any number of bits is permitted. A one bit integer ranges from -1 to 0, and a one bit counting number ranges from 0 to 1. The compiler has integers -infinity to +infinity, and counting numbers from 0 to +infinity.

The system will handle all knowledge as a single language.  Language we already have, just as I can read any book because of a commonly accepted used of words, the system will also take advantage of this already known knowledge.  How many words would it take to tell the computer to "fire on the Klingons", I'm not sure what the people are there to do.


"damn it Jim, I'm a programmer not a writer" -- Clif

"Idealism is fine, but as it approaches reality, the costs become prohibitive." -- William F. Buckley, Jr.

"The first responsibility of a leader is to define reality. The last is to say thank you. In between, the leader is a servant." -- Max de Pree

"A goal without a plan is just a wish." -- Larry Elder

"Do what you say you're going to do. And try to do it a little better than you said you would." -- Jimmy Dean

"Normal is an illusion, What is normal for the spider is chaos for the fly" -- Morticia Addams


Software Sucks...

Over the past few years, I have been asked a few times to look at heading up projects to redesign a major company's complete software systems or some of their major products. I look at the history of the existing products, and it always comes down to the foundation that was used to build the products, in its inability to be changed to meet new expectations.

I started looking into all software development foundations, to see if there are alternatives in which to build a new systems.  I also looked at trying to fix the existing systems. I concluded that the only way to build the type of systems people want is to first build a better software development foundation.  I'd would be a fool to think that I could build a better product using the same tools the designers and users of the original system used. The flaws are not in the people (at least not all of it) or the approach, but in the tools.  

All the sub-systems that developers relay on the write software products all use the same basis. So before I start I must determine is any of that base is useful. I am looking into projects that exceed four hundred man-years of effort. Anything under this can always be brute force coded.

I looked at the cost and purpose at every character used and every man-hour required when using all the popular software compilers, assemblers, scripts, and commercial-off-the-shelf (COTS) packages. The cost of product development is an exponential curve based on line-of-codes with a limit at manageability.

This cost curve is directly relayed to the capabilities of the existing development foundation. By changing the foundation the shape of the curve could be linear with very little slope. I believe the slope will approach zero over time, and no limit on manageability.

The cost of changing the foundation is almost nothing.  My estimate is twenty man years to create a foundation that would be obvious to anyone as a workable system. Unlike building a boat, which is easy to envision, software is a somewhat more difficult. It is not that we cannot envision the end product, but rather we cannot envision the steps needed to built it, this is due to the complexity of using the current foundation, far too many assumptions and partial solutions.

The customer envisions the product, a developer  envisions the steps. I find that as long as I do not change the customer's vision and he does not try to change mine, the work progresses at a study pace.

I was on the review of FORTRAN-90 in 1985. I quit because of the same dislikes I see happening to JavaScript. More instead of less, we get pipes, arrow functions, ... stupid changes with absolutely no benefit. Actually they are harmful because it allows for more variations to programming style, thus less compatibility between individuals.  I thought Assembler, FORTRAN and JavaScript could have been great if... fixed, but amateurs wanting fame or something... I see no vision in the changes that are being made.


The dollar cost of software development is really not the question, but rather the cost to technology due to our software development environment.

Tragedy and greed holding the reigns of technology, every thing from birth to death. It is the simple things that hold back technology, not the complex. The inability to access information, from the characters we type, to basic numbers, we use are locked out from their use and access.  Characters, Fonts, Real Numbers, Dates, Images, Video, Maps, Graphics, Equations, Units, Graphs, Memory, Screen, Mouse, Keyword, and Hardware are just a few with restrictions that have throttled down computer technology.

Impossible to access information... how stupid, lossy Images how stupid..., no access to the hardware how stupid..., limited character representations how stupid..., fixed bit size numbers how stupid...,  fuzzy dates (utc) how stupid...,  limited dates (expires in 2034) how stupid..., 4Gig limit how stupid, no case insensitive text compare how stupid..., time only to milliseconds how stupid..., no units how stupid..., no database how stupid..., fix these and 98% of the human effort in software development goes away.

I remember when transparency could set in ms-Paint. When we could insert a form-feed into text files to page break printouts. When we could read the mouse. When we could write our own editors. When we could trust numbers, When we thought someone would move forward. But we are moving backwards for the sake of 4 lines of code someone found a profit in.

Yes "programmers" are having a lot of fun, but it is not fun I'm after. Quit wasting time on the trivial, student's research wasting 80% of their effort on software. Teacher, doctors, engineers, I don't care about lawyers, companies, wildlife, crops, the environment all could be improved.

The dark ages were a direct result of the church's control on society. So is it presumptuous of me to think that control of information is any less devastating. I remember the first attempts at the PC, (before the Apple) I was all excited about the Altair and Heathkit, and other attempts at motherboards in kit form. I thought it would change the world... I am not sure any of my initial excitement has been satisfied. My real desire was for more direct access to hardware during the time when I was programming the Honeywell 6600. Time has gone by and now I have even less access to hardware and information than I had in 1976 on the Honeywell.

Author: Clif Collins
Houston, Texas
April 1, 2018