Six ways to use Fused
Fused is a powerful and versatile tool that can do nearly anything with just Python. Its versatility is its strength, but it is also an obstacle. It's easy to walk about wondering: what, concretely, can Fused do for me?
Here are six concrete ways you can use Fused today.
If you've ever worked with geospatial data, you've likely quickly run into the need to scale your workflows. Given its broad coverage of Earth, geospatial data often tends to be large.
However, scalable data processing is notoriously challenging and the added complexities of geospatial data can make this task overwhelmingly difficult.
Enter Fusedβ
Fused promises to solve this exact problem by offering a serverless engine and a toolkit built specifically for geospatial applications.
Like many others, I've been excited about Fused ever since its initial release. After playing around with it, I was impressed. Fused is fast and easy to use and provides a host of integrations and ready-to-use components.
These are six ways I think about Fused.
1. Github for geospatial UDFsβ
When I want to share my code with the world, I will, without a doubt, go to Github.
One use-case of Fused that is immediately visible is its function as a repository of reusable geospatial functions.
Want to find out wildfire ignition types for a location? Quickly obtain publicly available Sentinel data? Calculate isochrones given a location? You donβt need to write any of this β all this functionality is already written for you.
Unlike Github, Fused will also run these functions for you. At a click of a button, you can get your function as an HTTP endpoint, visualise it on an interactive map, or wrap it in a Streamlit app.
As Fused grows, so will its library of UDFs. The community that develops around Fused could be an invaluable resource in and of itself.
2. Easy-to-use & faster Daskβ
For many in the geospatial world, Dask is the go-to tool for scalable data processing.
The core of Fused is its serverless execution environment that enables scalable data processing. To quote the Fused docs:
βif Python could run on any size datasets and distributed compute was fun.β
I'm a big fan and frequent user of Dask. But to use it effectively, one needs to set up the necessary infrastructure, know how to use its APIs and diagnose performance problems.
Fused abstracts most of that away entirely.
Simply write your function, decorate it with @fused.udf
and run your function over the whole globe.
Fused also addresses a common difficulty around serverless computing β the developer experience. Its workbench makes it easy to debug your code and at any point visualize its results on a map.
3. Platform-agnostic Snowparkβ
Snowpark provides a serverless computational layer on top of Snowflake, a popular data platform.
With its quickly growing list of integrations (getting data in and out) Fused is becoming a powerful glue layer for all of geospatial.
As an example, I've recently been able to embed an interactive map to a Notion page. The map downloads Landsat data from Element 84's STAC catalog, computes a 6-month NDVI composite and displays it to the user. This all happens on the fly, as the user pans around.
4. Mapbox on steroidsβ
I'll admit, this one is a bit of a tongue-in-cheek. Mapbox is a powerful platform and Fused is not on a mission to replace it.
However, it does get the point across: Fused can power a web map that obtains data from any source and processes the data on the fly as the user pans the map. With its caching layer, the user can get the results of previously computed locations almost instantaneously.
Since any Fused UDF automatically serves raster and vector tiles, Fused can also be used with Mapbox GL JS.
Example from How Pachama creates maps on-the-fly with Fused
5. Geospatial Streamlitβ
Streamlit is a Python library that helps you create and deploy web apps with a few lines of code.
Streamlit is also the best first-time-user experience I've had with a library. Without prior experience, I could immediately go from a Python script straight to an interactive web app.
With Fused's App Builder, any UDF can be turned into an interactive Streamlit app. Fused also automatically serves the app for you. While the app itself runs in the browser using Pyodide, it can call any Fused UDF, processing the data using the Fused engine.
6. Geospatial-first IDEβ
Of the six, this is the most aspirational use case. It's also potentially the most impactful.
Fused provides the Workbench, a great web-based IDE. Working with it started changing how I think of developing geospatial applications.
Today, there are two worlds.
-
On one side, the software engineer uses test-driven-development to develop well-designed code in quick iterations.
-
On the other side, the data scientist develops code directly against real data using notebooks and visualizations.
Fused can bring these worlds together. Simply annotating your function as @fused.udf
gives you the ability to immediately visualize the results with real data, over any geographic region.
Fused Workbench does this, but you could equally develop in VSCode and switch to QGIS to immediately inspect the results.
By developing your code as a web of stateless UDFs and utilizing @fused.cache
, you gain the ability to develop automatically cached pipelines whose results can be inspected in tools like Felt or served with an HTTP endpoint without any added work.
Often the greatest cost of data pipelines is developer time. Fused has the potential to tighten the development feedback loop and catch errors early, reducing the time needed to develop robust data pipelines.
Conclusionβ
This article gave six concrete examples of how you can use Fused today.
However, the possibilities of Fused are not limited to these examples. With its powerful execution engine, visual IDE, growing host of integrations, and just-copy-the-link app deployment, Fused is generic enough to enable use cases not even the team behind it has thought of.
I'm excited about the future of Fused. I wouldn't be surprised to see it become a ubiquitous tool in the geospatial world.