The Stackbuilder authoring tool allows you to create a stack blueprint (“program a stack”) by simply dragging and dropping hardware and software blocks into the blueprint area, and then drawing lines (channels) between the input and output terminals of those blocks. Each block has input and output terminals that send or receive messages. Messages can be numbers, characters, strings, binary data, or other data structures like lists (e.g. [ 2, 4, 6, 8] ) and Python dictionaries. The channels you draw define where messages sent from output terminals are delivered. You can draw as many channels in to, or out of, a terminal as you want. In this way, you are defining the asynchronous message flow that will run inside your stack. By allowing multiple stacks to communicate with each other and/or the internet, you can build sophisticated, large scale distributed systems.
You can mix hardware and software blocks in your blueprint. The hardware blocks correspond to the Interstacks hardware modules you purchased. Software blocks can be found in the built-in “Library” tab in Stackbuilder or you can create your own, in the “My Blocks” tab of Stackbuilder, by typing text using the Python programming language.
The Stackbuilder interface has four primary areas:
Blueprint: Main authoring area that displays message flows or the software block editor.
Right rail: To get blocks to drag and drop into the blueprint.
Property Editor: To edit properties for a selected component.
Bottom rail: For context sensitive documentation, the Console trace for message flow debugging, and other functions.
All of these areas have tabs and can be expanded or closed to manage your workspace.
All project edits are immediately saved to your local storage and to your Interstacks cloud account if syncing is enabled in your Stackbuilder preferences.
The blueprint area is the largest authoring area and displays the channels (lines) that define the message flow between blocks. It also can display tabs that contain the software block editor. As projects or other blocks are opened, they appear in tabs in the blueprint area. Simply select the tab to display its content or click the “X” in the tab to close that tab.
In the top right of the blueprint area, there are icons for zooming in and out, and to auto-zoom to fit. You can use your computer’s scroll methods to pan left-right and up-down in a larger blueprint.
To drag and drop a “Hardware”, Software (under “Library”), or “My Blocks” block to the blueprint, select the appropriate tab in the right rail. For the item you want to drag, click and hold on the area in the innermost rectangle, but to the right of the text name, then drag onto the blueprint area, then release the mouse button.
To draw a channel from an output terminal to an input terminal, hover over the output terminal and click and hold. Drag to the input terminal you want, and release the mouse button. To delete channels, hover over the channel and select the red “X” icon. By experimenting with the placement of your blocks in the blueprint, you can get the channel layout to behave differently. The icons in the top right of the blueprint area provide for toggling between different channel layout displays.
You can draw as many channels in to, or out of, a terminal as you want.
In the top middle of the blueprint area are buttons Send to Stack and Run Stack. When you want to test your blueprint in your stack, press the “Send to Stack” button. The Console trace area will expand from the bottom rail. After the blueprint has been saved to the stack, it will reset and start running. A trace of the messages sent will be displayed in the Console area.
The right rail is where you use the following tabs:
Projects: Add and select Projects.
Hardware: Find hardware blocks to drag and drop into the blueprint.
Library: Find built-in software blocks to drag and drop into the blueprint.
My Blocks: Add and find components you made (like software blocks you wrote).
My Data: Get/send data from/to your stack.
The right rail can be expanded and contracted by clicking on the narrow white area between the right rail and the blueprint. Your computer’s normal scroll methods allow you to scroll the contents of the tabs up and down.
Categories in the “Hardware” tab can be opened and closed by clicking on the category name once.
A set of actions are selectable under the ”Blocks” pull down menu. Actions include: “New Project”, “New MyBlocks Software”, “New MyBlocks Dataflow”, “New Collection”, “Duplicate”, “Remove Selected”, “Open”, and “Import”. These actions are also available via the “+” icon in the top right of the right rail palette.
“New Collection” allows you to create a one level hierarchy for items in your “Projects” and “My Blocks” tabs. When you select “New Collection”, a new item in that tab will be created. You can then click on the rightmost area of item entries (the area with the stacked horizontal lines icon), and then drag them onto the newly created hierarchical category. You open and close that category by clicking on its entry once.
To open an existing “Project” or “My Blocks”, you can double click on it and it will appear in a tab in the blueprint area.
Alternatively, you can select it with one click, then select “Open” from the “Blocks” pull down menu.
To drag and drop a “Hardware”, Software (in “Library”), or “My Blocks” to the blueprint, click and hold on the area in the innermost rectangle, but to the right of the text name, then drag onto the blueprint area, then release the mouse button.
To rename an item in a right rail palette, click on the text for the name and use the delete key and text keys to rename. You cannot rename items in the built-in “Hardware” and “Library” tabs.
The bottom rail expands when you click on one of the tabs, and contracts when you click on the white area to the right of the tabs. It contains an area for help documentation, an area for the Console trace which shows the message flow for your connected stack when it is running, Stack Info which shows information about your connected stack, and Sync which can show data stored inside your stack’s non-volatile storage.
The property editor allows you to edit the properties for a component that is selected in your blueprint. Properties are unique for each block and the details are found in the documentation for each block. Properties might be things like settings specific to a hardware block or parameters that customize the behavior of a software block. You click on the “Initial Value” column for the property you want to edit (if the value is a character string you must use quotes e.g. ‘the quick fox’).