The Beads system in 10 minutes

A Beads program is so compact in its notation, that it is in essence an executable specification.  I estimate half the code (as measured in words) compared to conventional languages like Java, twice the readability (as measured by a new person not the author understanding the program), and ten times more repeatability (in terms of reproducing customer bug reports) compared to existing tool chains. Help me find out how good it is by taking it for a test drive yourself, by comparing your favorite language in an apples-to-apples comparison test.

The purpose of the Beads project is to drastically simplify the task of authoring and maintaining graphical interactive software. At present, the complexity of the current development stack is unbearably high, and there are very low amounts of code re-use happening, which is causing similar programs to be written over and over. The most troubling part of the current software development process is the great difficulty of transferring ownership of a project to new staff members. It is quite common for minor changes from new staff members to have serious repercussions, and as a result software products are endlessly being patched. If you examine the employee counts of the major firms in the software industry, their staffs grow far faster than the number of products, indicating that maintenance costs are consuming an increasing percentage of the total spending on software.

The Beads system, which is based on the Beads language and its surrounding toolchain, is suitable for building the majority of the graphical interactive software that people need in business and industry.  It directly competes with TypeScript, JavaScript, Java, Python, Ruby, PHP, C++, C#, Go, Swift and other similar languages. It delivers a machine-independent virtual computer that can offer a very long lifespan of software, something that the frameworks and tools of today cannot do. It can do this because the language contains a drawing/event/database model inside the language, with almost no external dependencies. Many of the tools and frameworks being used today cannot even deliver 5 years of lifespan before the products built using those tools no longer function properly.

Let's examine a few key features that sets Beads apart from some commonly used tools. Some people will object to including Excel, but Excel contains a programming language inside, and it is used as a programming platform far more than people realize.


Let's discuss the key features briefly:

The first major feature is that Beads programs have what some people call time traveling debugging. 99% of all computers today use either the Intel or ARM instruction set inside the primary CPU chip, which is the master brain of the computer. Intel and ARM computers can only run forwards. They have the ability to stop instantly at a specific point (they call this a "breakpoint"), but neither chip can run backwards. The Beads system creates a virtual computer of a more futuristic kind that can go backwards. Going backwards is very useful, because a computer program that malfunctions is like a train going off the rails, and crashing into the woods; you have to go backwards in time to find the actual source of the problem. The task of debugging which consumes over 80% of all programming effort, is hindered by not having a reverse gear. Debugging is the process of learning the cause from an effect, and mentally the programmer is backing up to where the instructions were incorrect.

Another major problem in software development is the issue of reproducing a problem.  Once a product leaves the safe confines of the developers' lab or the company's quality assurance department, which systematically tests the software product, inevitably it malfunctions on an end user's computer, which has a slightly different state than the one in the lab.  So big companies like Adobe and Apple have gigantic databases of  unresolved customer bug reports. Adobe gets 25,000 bug reports a day by my estimation. A great quantity of the reported problems cannot be reproduced by the development team, which wastes their time, and frustrates the user because their problem doesn't get resolved in a timely manner. The net result is the overall impression by users that software is flaky and somewhat unreliable. Because of the state tracking system that allows Beads to run backwards during development, that same tracking system runs in production version software, and the user can elect to submit their history data for the purposes of error reporting, and the developers can run backwards from the problem state to find the cause. This will be a much appreciated feature.

Automatic sequencing of computation, and automatic refresh of affected areas of the screen greatly reduces the number of errors in a graphical interactive product. Once you have hundreds of controls and pieces of data on the screen, it becomes very difficult to track the dependencies of the interacting items, and the Beads language does this automatically, eliminating a whole category of common errors in software development. 

Beads corrects a longstanding omission in computer languages, which typically lack the ability to store physical units of measurement as a value and a unit (5 kilograms). It is an incredibly common error in Excel to have mismatch in the units because quantities carry no units, and it is up to the programmer of the spreadsheet to remember to either divide by or multiply by some conversion factor The NASA Mars Climate Observer probe was lost due to a units programming error. Beads includes all the common engineering and scientific units of Mass, Length, Time, Energy, etc., and also innovates in arithmetic safety so there is never any undefined behavior, which plagues many other languages. Engineering programmers will greatly appreciate this feature.

Languages like PHP include built-in hooks for connecting to an external relational database such as MySQL. Relational databases are being superseded by graph databases like Neo4J, and given the predicted future trajectory, Beads incorporates a graph database in the language so that you do not depend on an external database system. External databases can't possibly support reverse execution or protected arithmetic, so it was essential to include a database in the language itself. By including the database inside the language, it makes interchangeable parts more feasible, because all programs share the same data structuring methods.

There are many other innovations and improvements in Beads, but these are the most significant differences.  

To author a product, you write a program in the Beads language either by typing in the code or with the assistance of various graphical helper tools, then translate your Beads code into an intermediate form using a compiler. The supported platforms are:

Platform support for version 1 (note that JS server side runs under Node.JS)

Platform support for version 1 (note that JS server side runs under Node.JS)

For the desktop and mobile platforms, the current version of Beads emits Adobe ActionScript3 code, which is then published into native desktop and mobile platform products. For web platforms, the Beads compiler converts Beads language code into JavaScript, which is run on server platforms via Node.JS or similar server tools that run JS.

The Beads language presents to the author a new kind of computer that can draw on the screen, print reports, with the absolute minimum number of operating system functions. For the most part, the operating system is not directly contacted, and you can build a wide variety of application programs without knowing any details of the operating system. The language contains a drawing model (currently 2D only), a graph database, a deductive engine, an event model, and a resource library subsystem. You are programming a computer that has been designed to eliminate most of the common errors of programming.

Beads makes programming much simpler.  Other programmers' code is easier to understand, and it helps usher in a new era of interchangeable parts in software, and will open up programming to a wider variety of personality types.

If the Beads language interests you, please drop me a line. I am conducting a private beta test, and would like to have people from diverse backgrounds take it for a test run. Please include a one sentence summary of the kinds of projects you like to make, and whether you are a Mac or Windows platform user. Send inquiries to All experience levels are welcome.