August 13, 2020

101 Things You Can Do With the Visionary Render API

API
Visionary Render
Barry King
Barry King
Product Architect

From time to time I hear “What can the Visionary Render API do? “or I hear “We didn’t think that could be done with the API”. A passing comment became a challenge, ”Name 101 things that the API can do!”

An interface, plainly put, is a way for something to observe or affect something else on the other side of an otherwise impassable barrier.

Visionary Render has two interfaces; a user interface, UI, and an Application Programming Interface, API. The user interface is most familiar, a set of widgets allows a user to interact with the application, the Application Progamming Interface on the other hand makes Visionary Render programmable. Just as the UI allows the user to pass the barrier, and observe and control the application, the API makes Visionary Render an open and re-useable computer system component. The components of a greater system can now reach inside Visionary Render and drive its functionality.

What can you program?

Visionary Render has been designed from the bottom-up as an extendable and programmable system. It achieves this by using an internal, high performance, visualisation database that can be introspected, observed, and updated by Visionary Render’s many internal modules, which are called Actors. Just as Visionary Render’s actors use this database, so clients of it’s API can also. This enables an API client to discover data, create new objects, manipulate properties and respond to changes. From this basic premise it’s possible to build Visionary Render into a myriad of solutions.

The API can be directly invoked in two ways; by Lua script and by binary linking. Visionary Render contains a Lua programming language interpreter which enables scripts to be invoked directly from the UI, Lua can also be used to create plugins to the application. Lua is a general purpose programming language with a strong supporting environment which enables it to perform typical program tasks such as reading files, interacting with a network and manipuating data. Binary linking enables any language that can invoke compiled function calls to use the API, almost all mainstream programming languages include this facility. Finally Lua or binary linking can be used to expose Visionary Render as services to a network or they can implement adapters so that other languages can exploit the functionality.

101 Things The API Can Do

Clearly there are many, many things that can be acheived with the Visionary Render API. As an excercise I choose to create a mind map of 101 uses whilst strictly limiting the time spent to 1 hour. The following diagram was created with Microsoft Excel and Neo4j, to enable it to be viewed in Visionary Render in glorious holographic 3D I also used the API to generate a 3D visualisation. Because the time was strictly limited to 1 hour this list barely scrapes the surface of what is possible, speech-to-text is missing, as is so much more!

Below are the results visualised with GraphViz / Neato ( https://graphviz.org/ )

Here are the results in Neo4j

Source data

topics.csv is the original brain dump in text form. To import the data into Neo4j, run a temporary webserver (for example using Python or Node etc)  and then from the cypher console run

LOAD CSV WITH HEADERS FROM ‘http://localhost:8080/topics.csv’ AS line CREATE (:TOPIC { name: line.Node, parent: line.Parent } )

MATCH (a:TOPIC), (b:TOPIC {name: a.parent}) CREATE (a)->[:parent]->(b)

things101-dot.txt is the data transformed to GraphViz DOT format. To generate an image using neato run neato -Tpng things101-dot.txt > things101.png