Buddy Sytem

Interactive simulation, model validation, and coarse visualization.

Historically the Glue.AI software stack has been used primarily for creating interactive human-like characters, as discussed on the front page of this site.

Inside is what we call a kernel of software that is more generally useful for organizing the work of computers. It is applicable in many cases where changing computation at runtime happens to be desirable, and where the system can be described by a set of authorable cooperating agents.

Another common attribute of applications is that they require a scientific measurement and tuning capacity to function well. They involve projects and products with uncertain elements, which must be managed flexibly and adaptively as the deployed systems grow.

As of 2016 one reality of our kernel is that a researcher or developer must be comfortable with scala coding, and with launching and use of multiple java processes on a desktop, server, or embedded sytem. It is also quite possible to use other languages and platforms, in particular using the multi-language capabilities of Apache Spark. Compatibility can also be built around the TinkerPop graph interop spec. Lower level integrations can be accomplished using RDF, AMQP, and HTTP.

Of particular interest, one focus area of the libraries is in flexible scheduling and routing of computations described by formal symbolic mathematical equations and expressions. We use existing math solvers accessible from the JVM (java virtual machine), such as those included in the Symja stack of math libraries. Note that some pieces of Symja are released under the LGPL license, while others carry an Apache license. See the Symja website and code repositories for details.

We offer flexible plumbing around these math features by applying several primary ideas of modern computer science:

In addition, the software defines a set of nuts and bolts for system launching, control, communication, monitoring, display and interaction which can be used to build different kinds of distributed systems. One particular sweet spot is in deeply interactive systems for exploring knowledge and experimentaion.

Definition of the kernel is generally in the context of a compute fabric, rather than a particular system with boundary.

Complex Glue.AI applications are usually orchestrated using the Glue-ML schemas.