Product Updates

What's new at HASH?

Latest changes

Behavior Key Autocompletion

Behavior keys define the expected data type of the fields that a behavior accesses on an agent’s state. Defining them unlocks a number of runtime optimizations that HASH can apply to run simulations much faster, and is required to run experiments in hCloud. A few months back we introduced the ability in JavaScript and Python to autosuggest behavior key typings for behaviors. This process dramatically reduced the amount of time it took to create highly-performant behaviors that leveraged the full power of Apache Arrow in HASH, but still required file-by-file autosuggestion and acceptance.

This week we introduced autocomplete for behavior keys. Where multiple behaviors use the same field, it now only has to be defined in one, and will be auto-filled across other behaviors in a project. Subsequent changes to the behavior key definition will be automatically reflected in all other behaviors utilizing it. Because behavior keys now only need defining once, the burden of maintaining complex simulations with large numbers of behaviors has been vastly reduced, allowing users to more easily benefit from hCloud’s high-performance runtime optimizations.

Older changes

Better Networks Visualization

Edges between nodes in a network are now rendered automatically in the default 3D simulation viewer. Directional relationships between nodes are rendered with arrows. Hover or select an agent to highlight its edges, and see how they evolve over the course of a simulation. Read more about modeling with networks >

Older changes

Optimization Experiments

It’s now simple, quick, and inexpensive to compute-efficiently determine the optimal set of values within a simulation for any given problem. Optimization experiments provide a fast mechanism for determining the best possible values for one or more parameters, with any number of objectives in mind.

Optimization experiments are an hCloud-only feature, meaning they can be created programmatically, or via the “Create Experiment” graphical wizard in hCore, but can only be executed in the hCloud environment (and not client-side in-browser). The resulting analysis plots, and simulation runs (rendered in any view, for example 3D or geospatial) can still be streamed back down to the client and inspected in-browser with ease, but actual computation takes place in the cloud.

To get started with optimizations in HASH, open a simulation project, click the “Experiment” button in the menubar at the top of the page, and select “Create an experiment”. Choose “Optimization” from the dropdown type menu, and input the values to minimize or maximize alongside any constraints.

All HASH accounts come with 10-hours per month free hCloud h1 compute credit sufficient to get started. Learn more about optimization experiments >

Programmable Initial States

You can now use an init.js or file (in lieu of the currently universal init.json file) to initialize a simulation in HASH. This gives much greater control and flexibility when instantiating agents and teeing up simulations. Read more about programming initial states in the docs >

Older changes

Networks library

Our new networks library allows you to define networks of agents who have access to each other as if they were neighbors. This library is suitable for varied use cases such as social network, and epidemiological modeling. The library can also be used to:

  • connect agents in less obvious scenarios, such as linking agents to form pendulums;
  • import properly formatted datasets as HASH Networks;
  • generate different types of random networks using NetworkX.

Quality of life improvements

  • Improved diffing related to merge request conflicts
  • Added a new forklifts package to the materials handling library
  • You can now switch targets between running an experiment locally or on hCloud via the experiments wizard, at the point of creation
  • The process modeling tab now appears in embedded simulations, and can be set as the default view when embedding (see it in action)
  • Keyboard shortcuts now appear in menubar dropdowns within HASH
Older changes

Merge requests

It’s now possible to merge changes into HASH projects directly within hIndex. We’ve introduced a viewing and approvals process that will be familiar to anybody who’s used GitHub or GitLab before, and provides an accessible means to users who haven’t utilized version control systems previously to manage contributions from colleagues and the HASH community.

Older changes

Process modeling plugin

Building on the process modeling behaviors released in January, we’ve released a process model builder for HASH, which can be used to easily and quickly create process models that run within HASH. This is now enabled by default in all HASH projects. To use it, select View > Process Chart from the hCore menubar at the top of the screen.

This is our first plugin for HASH, and it demonstrates one type of tool that can be built with the HASH API. In this case it is a visual interface for more easily building models within hCore, but it could live independently of the hosted HASH platform as well, for example privately (for internal-only use), or embedded within another product.

Better iFrame embedding

HASH simulations are now supported by, meaning your models can be embedded natively on any website that supports (e.g. Medium, Reddit, Trello, Disqus, Coursera, DuckDuckGo and more).

For example, when writing a Medium post, simply paste a link to your simulation, and hit enter. Check out this example on Medium.

Older changes

Unified activity history

Experiment, edit and release history now all exists in one place, in the newly unified activity history sidebar in hCore. From here, it’s easy to see how models change over time, and revisit models as they existed at a given point in the past (such as the moment an experiment was run which led to a decision being made).

This improves the chain of provenance around model development, and makes hCore unique amongst simulation development environments in providing a complete, accessible record of all actions ever taken within a simulation.

Older changes

Fork, create and edit schemas

We’re extending support for schemas in HASH. In addition to drawing on definitions, you can now fork and edit these, as well as create their own schemas from scratch.

Write access tokens

Users participating in our pre-release program can now generate write access tokens that allow non-logged in users to save changes to simulations. This unlocks the development of external user interfaces useful for interacting with HASH.

If you’d like access, contact us to discuss your use-case and receive an invite to our pre-release program to test-drive this feature.

Analysis improvements

  • Fields in the analysis wizard will now be auto-suggested from behavior keys
  • Introduced 32 additional new error and warning messages around incorrect analysis metrics and plot configurations, each accompanied by helpful hints as to how to fix

Stdlib updates

Open sourcing: we’ve open-sourced HASH’s standard library (stdlib) under the permissive Apache 2.0 license. You can find this on GitHub in the engine/stdlib folder of our packages monorepo.

New utilities: we’ve also added two new functions to the HASH stdlib—

  • state.behaviorIndex() (JavaScript) and state.behavior_index() (Python) can now be used to retrieve the position of a behavior in an agent’s behavior execution chain. This is particularly useful in the creation of process models. Read more >
  • context.step() has been introduced which allows access to the current timestep in the simulation. This allows easily changing how the simulation behaves how the simulation behaves after a given number of steps (for example, stopping production at a factory on weekends). Read more >

Other improvements

  • We’ve reduced CPU demand whilst idle on Intel processors by upwards of 95%, resulting in a much snappier overall feel for hCore.
  • We’ve also shipped major speed improvements to hIndex, so project search and loading are faster.
  • Fixed an issue that could cause hCore to error whilst switching projects after using project-wide search.
Older changes

More analysis chart types

In addition to time series plots, we now support histograms, line, area, scatter, bar and box charts being produced for any metrics in a simulation within hCore‘s analysis view. These can be generated via the analysis wizard in hCore, or by writing out the raw JSON. Read more in the docs >

Materials handling library

Conveyors, cranes and racks! (With forklifts coming soon) We now have a number of official libraries for handling materials within HASH simulations, useful in the design of logistics and manufacturing facilities. Learn how to use these in the docs >

Older changes

Geospatial improvements

The appearance of agents in the geospatial viewer can now be customized.

  • Resize agents with geo_radius
  • Set their color independent of their appearance in the 3D viewer with geo_color
  • Modify their transparency with geo_opacity

To ensure an agent shows in the geospatial viewer, make sure a lng_lat field has been set on the agent. Read more about geospatial simulation in HASH >

Searchable schemas

Schemas are now searchable in hIndex, exposing HASH’s full schema library for the first time.

Other improvements

  • Launched the HASH API in private beta. Find out more >
  • Improved error messages provided for incorrect Python and JavaScript behaviors
  • Rectified a bug that could cause certain local datasets to fail to parse in hCloud
  • Fixed an issue that could cause the 3D viewer to sometimes display too small in Safari
  • Solved a problem that could cause the grid in the 3D viewer to render overly-large