Product Updates

What's new at HASH?

Latest changes

hCloud Early Access

We’re currently inviting users of HASH to the early access program for hCloud. To date all simulation in HASH has been done client-side, in-browser, meaning models have been constrained to the resources made available to them by users’ browsers. This is great for prototyping, but doesn’t scale well to millions of agents, or extremely long-running simulations. Apply for Early Access to hCloud

More Experiment Options

There are now more ways to set up and run experiments. Check out the updated docs.

In addition, we’re running office hours to help users get started. Book in and swing by to ask us any questions you might have about building models in HASH.

Something to look forward to

Eagle-eyed users may have spotted that their project URLs have changed in hCore. This is part of migration work we’re doing to move all simulations into their own Git repositories. In the next few weeks the fruits of this labor will become more visible, with functionality such as proper forking and PR reviews coming to the platform.

Older changes

Experiment Support

Support for experimentation has landed in Core! It’s now possible to run multiple simulations simultaneously. This unlocks a faster and more powerful workflow for exploring all the possible outcomes of a scenario. We anticipate this to be extremely useful for exploring search spaces, optimizing designs, and making better informed decisions from data.

To make experimentation easier, we’ve added a handful of utility functions for generating distributions and parameter sweeps. These include

  • linspace – vary a single parameter within a range
  • arange – vary a parameter based on an increment
  • values – manually enter values for a specific parameter
  • monte-carlo – generate random numbers according to a distribution
  • group – group together multiple experiment types into a single experiment

Read more about experiments at https://docs.hash.ai/core/experiments/

Explore the power of experiments at: https://core.hash.ai/simulation/5f3b1634b8704b52ad8b0197/city-infection-model

More Massive Simulations

Along with experiment support, we’ve made some tweaks that should enable much larger simulations in the web browser! Check out our financial ABBA Financial Model, which simulates regulatory capital reserve in the banking system which now easily scales to thousands of agents.

https://hash.ai/index/5f3abdc3ceaba2057e929dc5/abba-financial-model

Under the hood

  • Use a lot of shared behaviors? We’ve added, dependencies.json , a way of tracking HASH Index Package use in projects.
  • We’ve fixed the Step Explorer to ensure it properly updates when switching between multiple simulation runs.
Older changes

GPT-3 Initial State Generation

We are excited to announce integration with OpenAI’s GPT-3 natural language model to quickly build initial state conditions for simulations. Simply enter your desired initial state with natural language, and GPT-3 will generate a custom init.json with agents and corresponding properties.

Hotkeys

We’ve introduced hotkey support for starting, stopping, stepping, and creating new simulations.

  • ctrl/cmd + enter starts and stops the simulation
  • alt + enter pauses and reset the simulation
  • ctrl/cmd + shift + enter single steps the simulation

We expect this to make it easier to iterate faster and simulate with more precision than before.

Simulation Template

With this new version, it’s now possible to create new simulations from two templates

  • A completely empty template for advanced users
  • A starter template for beginners

The starter template includes everything it takes to get up and running with a new simulation and demonstrates how to use tools like neighbors, configuration, and shared behaviors

Other improvements

  • We’ve upgraded the simulation engine to be both faster and to scale to larger simulations
  • The 2D viewer has been upgraded and with some bugs fixed
  • Agents can now be hidden from the 3D and geospatial views by setting their ‘hidden’ field to true
  • We’ve added a “single-step” button to increment the simulation with more precision.

Older changes

Simulations

We released two very exciting simulations that showcase the incredible versatility and real-world application of multi-agent simulations possible with HASH Core.

Both of these address solving real-world challenges and serve as a solid foundation to solve operational problems with multi-agent modeling.

Editor Improvements

Search and replace across the entire simulation has landed! It’s now possible to mercilessly refactor large models with a search and replace experience that should feel natural for VSCode users. Project-wide search and replace supports wildcards, regex, and even a diff-view for precise refactoring.

New Rust Behavior

We’re happy to bring a new built-in Rust behavior for users interested in modeling kinematics and dynamics in their simulations. The vintegrate behavior is the new tool of choice for modeling moving objects – agents need the expected properties:

agent: {
   position:  [0,0,0],
   velocity:  [0,0,0],
   force:     [0,0,10],
   behaviors: ["@hash/vintegrate.rs"]
}

This new behavior is fast, and can bring large kinematics simulations to life very quickly. Check it out in action here.

Stdlib updates

We are now very excited to support the generation of statistical distributions for JavaScript behaviors. Today, it’s now possible to generate nearly any distribution of agents and parameters. This is enabled by re-exporting the entire jStat library via hash_stdlib.

jStat provides more functions than most libraries, including the weibull, cauchy, poisson, hypergeometric, and beta distributions. For most distributions, jStat provides the pdf, cdf, inverse, mean, mode, variance, and a sample function, allowing for more complex calculations.

These are accessible via the stats parameter in the editor:

const { stats } = hash_stdlib;
const { diff, stdev, coeffvar, chisquare } = stats;

Older changes

HASH Stdlib

The beginnings of a HASH standard library has landed! We’ve added three utility functions to make working with vector components in HASH easier:

  • randomPosition: uses the simulation’s topology layout to generate random positions
  • normalizeVector: normalizes any 3-wide vector in HASH (position and direction)
  • distanceBetween: find the distance between any two agents with 4 different distance functions

Read the docs to learn more about how to use these functions in behaviors. Let us know on Slack or in the forum what you’d like to see included!

Multicast Agent Messaging

We’ve improved how message sending works – now it’s possible to send messages to entire groups of agents with Agent Names. Messages sent with a specified “to” will be delivered to all agents with a corresponding Agent Name. The following code will deliver a message to all agents named “ants.”

agent.set("messages", {
    to: "ants",
    data: {
        message: "ping"
    }
});

We’re excited to see what new simulations you will build with these features!

Other fixes and improvements

  • Improved ergonomics around analysis — and plots tab is now scrollable
  • File naming modals have been improved

Older changes

Typings on behaviors

Flipping between docs and an editor when writing new behaviors is always a pain. To make it easier to develop quickly, we’ve enhanced autocomplete in the hCore behavior editor. When writing JavaScript behaviors, both state and context have type annotations and will show you any available methods. We expect this to be very helpful when accessing built-in fields you never even knew existed. Comparable Python support is coming soon.

Improved ergonomics

Set/get is now more ergonomic to use. We’ve improved the workflow and added helpful warnings around the set/get interface for modifying the properties of agents. Now, when trying to .set() or .get() a property, warnings will be thrown if there are too few arguments, which should make for a more intuitive experience. Also added is the “addMessage” feature, which should make it easier and more performant to send messages between agents. Now, to send a message, just call state.addMessage(to, type, data: {})

Make sure to take a look through the docs for more information and tips on how to use these new features.

Bug fixes and other improvements

We’ve fixed over a dozen bugs, including a particularly nasty issue blocking the use of shared behaviors in Safari.

We spent a good part of the last two weeks improving our internal product analytics framework so that we can collect more accurate usage information around the hCore editor. We hope this will help us proactively get ahead of bugs, and better anticipate user needs.

Older changes

Onboarding and stability updates

We’ll be announcing HASH publicly later this week. We’ve been focusing primarily on improving stability, onboarding, and our docs this last week, but a few new things shipped to speak of…

Improved step explorer

Undo/redo operations are now supported within the step explorer, and a number of enhancements have shipped (most notably improving the experience around scatterplots).

Other new things

  • Users can now create their own orgs
  • We’ve launched a public Slack and forum. We’ll be providing live support on Slack and posting slightly longer form guides, tutorials and explainers on the latter.
Older changes

Visual globals

globals.json files now auto-generate a user interface with sliders, dropdowns and other easy components for altering your simulation’s global variables and assumptions. This is an early step towards creating more easily shareable models whose simulations can be controlled by non-technical users.

Other fixes and improvements

  • Specify cover images for Index listings which appear inline and in social media previews
  • Simulation previews now work in Safari, too
  • Support for more dataset types
  • Changelog can now be found at hash.ai/updates
Older changes

HASH Step Explorer

Step explorer

We heard from a lot of users that our analysis view was hard to use, and many of you wanted the ability to explore the breakdown of your simulated world on individual given steps, as opposed to merely over the lifetime of the entire run. We’ve introduced the ability to visually construct charts and explore steps.

Other fixes and improvements

  • Simulation previews in Index listings
  • View panes can now be opened and closed as needed allowing simulations to run even faster in-browser
  • Even more COVID-19 simulations at hash.ai/coronavirus
Older changes

Dataset previews

Now you can preview your data inside of hCore. Importing data can help with rapid instantiation of agents based on real-world data, and allow for backtesting and comparison. Now you can view that data inside of HASH. Further data exploration and filtering tools remain on our roadmap.

Better Python performance

Our experimental compilation and running of Python simulations in browser has undergone some major improvements. Whilst still significantly slower, we believe it’s now at a point where prototyping and execute basic Python sims in hCore is now feasible. For real-world Python simulation please register an interest in hEngine or H-Cloud.

Other fixes and improvements

  • Rust behaviors now available via hIndex
  • New docs site at docs.hash.ai
  • Users of old/unsupported browsers are now alerted
  • hIndex descriptions can now contain markdown
  • Various hCore stability and hIndex search improvements

Discover New Features Planned

Product Roadmap