Purpose

Josh aims to accelerate vegetation modeling, scientific understanding of crucial ecosystem, and preparedness.

Express sophisticated models easily.

Josh was born out of a recognition that it takes both a lot of software engineering talent to write spatially aware models, especially those involving agents. Josh already knows about different file formats like geotiffs / netCDFs, it has built in tools for stochastic properties, and it has built in dimensional analysis. Instead of trying to link up different libraries that have different formats and interfaces, using Josh means that all the pieces you need for modeling already know how to work with each other in a single coherent system. Manipulating complex stochatstic spatiotemporal data is as easy as writing equations.

Provide clarity in complex systems.

We critically examined how we were expressing models in different forms: code in a general purpose language like Python, configuration files in tools like YAML, something in-between. We decided that, to make modeling as accessible as possible, we needed to have a way of writing that understood and had specific syntax for geospatial data, stochastic elements, stateful behavior, and agents. The resulting configuration language called Josh Lang dramatically reduces the amount of code needed and we believe it also improves the readability of the work.

Support flexibility in growth.

We want Josh to go with you from the start of your scientific investigation to its conclusion. We know this might start with small models you want to run quickly before you scale your simulations across many computers. We designed Josh so that you can run simulations privately with just your browser but scale all the way to your own data center.

Offer agility in experimentation.

Josh was built for speed and scale. It will run a little slowly in the browser but, with just a single download, you can have it racing quickly (multi-threaded) through simulation steps on your machine. This reduces the time between posing a question and getting an answer, accelerating the scientific process. When you are ready, you can also deploy Josh into your cloud or into our free community cloud. Once there, you can run multiple simulation replicates in parallel.

Focus on vegetation.

We optimized the internals of Josh for vegetation modeling specifically. Because plants spread but individiuals are less likely to move, we designed Josh Lang for and optimized the Josh engine around this specific use case. This means that, even if you are running with lots of agents, we can still keep the engine humming.

Build bridges to other tools and formats.

Josh is written in Java but can be accessed from Python and has a WebAssembly build. Furthermore, Josh can both read and write CSVs, netCDF, and COG / geotiff. This means that you can take Josh with you into other languages, tools, and pipelines.