Kyle Barron
@kylebarron.dev
Creating the next generation of geospatial data tools for Python & the browser with GeoArrow, GeoParquet & GeoRust @developmentseed | he/him 🌈
Released Lonboard v0.13!
- New layer types: H3, S2, Geohash, A5 and fixed HeatmapLayer
- Render data layers beneath Maplibre text labels
- Map UI controls: scale, fullscreen, navigation
- Significant performance improvements: fixing earlier regressions
developmentseed.org/lonboard/lat...
- New layer types: H3, S2, Geohash, A5 and fixed HeatmapLayer
- Render data layers beneath Maplibre text labels
- Map UI controls: scale, fullscreen, navigation
- Significant performance improvements: fixing earlier regressions
developmentseed.org/lonboard/lat...
November 5, 2025 at 9:26 PM
Released Lonboard v0.13!
- New layer types: H3, S2, Geohash, A5 and fixed HeatmapLayer
- Render data layers beneath Maplibre text labels
- Map UI controls: scale, fullscreen, navigation
- Significant performance improvements: fixing earlier regressions
developmentseed.org/lonboard/lat...
- New layer types: H3, S2, Geohash, A5 and fixed HeatmapLayer
- Render data layers beneath Maplibre text labels
- Map UI controls: scale, fullscreen, navigation
- Significant performance improvements: fixing earlier regressions
developmentseed.org/lonboard/lat...
I'm happy to announce I've been promoted to an Apache Arrow Committer, meaning I'm authorized to merge code patches into Arrow repositories!
I join this list of amazing people: arrow.apache.org/committers/
I join this list of amazing people: arrow.apache.org/committers/
Committers
List of project-management committee (PMC) members and committers on the Apache Arrow project.
arrow.apache.org
October 9, 2025 at 6:31 PM
I'm happy to announce I've been promoted to an Apache Arrow Committer, meaning I'm authorized to merge code patches into Arrow repositories!
I join this list of amazing people: arrow.apache.org/committers/
I join this list of amazing people: arrow.apache.org/committers/
New blog post! kylebarron.dev/blog/fast-py...
This dives into performance pitfalls of Python bindings, why projects like Lonboard are so fast, and why I care about Apache Arrow so much. The post is high level and you don't need to know C/C++/Rust to understand it!
This dives into performance pitfalls of Python bindings, why projects like Lonboard are so fast, and why I care about Apache Arrow so much. The post is high level and you don't need to know C/C++/Rust to understand it!
October 7, 2025 at 2:05 PM
New blog post! kylebarron.dev/blog/fast-py...
This dives into performance pitfalls of Python bindings, why projects like Lonboard are so fast, and why I care about Apache Arrow so much. The post is high level and you don't need to know C/C++/Rust to understand it!
This dives into performance pitfalls of Python bindings, why projects like Lonboard are so fast, and why I care about Apache Arrow so much. The post is high level and you don't need to know C/C++/Rust to understand it!
Reposted by Kyle Barron
Our SIGMOD paper with our friends at Tsinghua + @wesmckinney.com + @pateljm.bsky.social on creating a next generation open-source data file format is out. F3 is a future-proof file format avoids the mistakes of Parquet.
📄 Paper: db.cs.cmu.edu/papers/2025/...
📁 Code: github.com/future-file-...
📄 Paper: db.cs.cmu.edu/papers/2025/...
📁 Code: github.com/future-file-...
October 1, 2025 at 1:49 PM
Our SIGMOD paper with our friends at Tsinghua + @wesmckinney.com + @pateljm.bsky.social on creating a next generation open-source data file format is out. F3 is a future-proof file format avoids the mistakes of Parquet.
📄 Paper: db.cs.cmu.edu/papers/2025/...
📁 Code: github.com/future-file-...
📄 Paper: db.cs.cmu.edu/papers/2025/...
📁 Code: github.com/future-file-...
Reposted by Kyle Barron
Last week Apache Sedona announced SedonaDB...and now I finally get to write about it! Here I use SedonaDB to demonstrate the explore/iterate/visualize cycle...SedonaDB's CRS support + @kylebarron.dev's `lonboard` is 👌 for exploring new data!)
dewey.dunnington.ca/post/2025/st...
dewey.dunnington.ca/post/2025/st...
Stream network traversal with SedonaDB | Dewey Dunnington
Last Wednesday the Apache Sedona project announced SedonaDB. There’s also a great post on the Whereobots blog that has a bit more context, or if you’re like me and you just want to see the code you ca...
dewey.dunnington.ca
September 29, 2025 at 3:20 PM
Last week Apache Sedona announced SedonaDB...and now I finally get to write about it! Here I use SedonaDB to demonstrate the explore/iterate/visualize cycle...SedonaDB's CRS support + @kylebarron.dev's `lonboard` is 👌 for exploring new data!)
dewey.dunnington.ca/post/2025/st...
dewey.dunnington.ca/post/2025/st...
New Lonboard release and new demo! Integrating marimo and Apache DataFusion to visualize the NYC taxi dataset. developmentseed.org/lonboard/lat...
September 18, 2025 at 8:02 PM
New Lonboard release and new demo! Integrating marimo and Apache DataFusion to visualize the NYC taxi dataset. developmentseed.org/lonboard/lat...
Published a new version of parquet-wasm: github.com/kylebarron/p...
- Update to latest version of Rust parquet crate
- Workaround to read Parquet data containing Arrow string view/binary view types
- Streaming writes
- Comparison between parquet-wasm and hyparquet, a pure-JavaScript Parquet reader
- Update to latest version of Rust parquet crate
- Workaround to read Parquet data containing Arrow string view/binary view types
- Streaming writes
- Comparison between parquet-wasm and hyparquet, a pure-JavaScript Parquet reader
Release v0.7.0 · kylebarron/parquet-wasm
What's Changed
Streaming Writes implementation by @H-Plus-Time in #305
Expose schema on ParquetFile by @H-Plus-Time in #599
Small doc fixes by @severo in #762
Bump to arrow/parquet 56 by @kylebarr...
github.com
September 17, 2025 at 3:47 PM
Published a new version of parquet-wasm: github.com/kylebarron/p...
- Update to latest version of Rust parquet crate
- Workaround to read Parquet data containing Arrow string view/binary view types
- Streaming writes
- Comparison between parquet-wasm and hyparquet, a pure-JavaScript Parquet reader
- Update to latest version of Rust parquet crate
- Workaround to read Parquet data containing Arrow string view/binary view types
- Streaming writes
- Comparison between parquet-wasm and hyparquet, a pure-JavaScript Parquet reader
Published arro3-core v0.6 with wider dtype support for converting numpy ndarrays to Arrow. It now additionally supports:
- datetime64
- timedelta64
- fixed-width strings/bytes
- variable-width strings
- object arrays of str/bytes
And the Python wheel is still just 2.5MB!
github.com/kylebarron/a...
- datetime64
- timedelta64
- fixed-width strings/bytes
- variable-width strings
- object arrays of str/bytes
And the Python wheel is still just 2.5MB!
github.com/kylebarron/a...
Release py-v0.6.0 · kylebarron/arro3
arro3-core
Breaking Changes 🔧
No breaking changes.
New features ✨
Expanded dtype support in Array.from_numpy. It now additionally supports datetime64, timedelta64, fixed-width strings and bytes, v...
github.com
August 22, 2025 at 5:23 PM
Published arro3-core v0.6 with wider dtype support for converting numpy ndarrays to Arrow. It now additionally supports:
- datetime64
- timedelta64
- fixed-width strings/bytes
- variable-width strings
- object arrays of str/bytes
And the Python wheel is still just 2.5MB!
github.com/kylebarron/a...
- datetime64
- timedelta64
- fixed-width strings/bytes
- variable-width strings
- object arrays of str/bytes
And the Python wheel is still just 2.5MB!
github.com/kylebarron/a...
New GeoArrow-Rust release (& Python bindings) with a dedicated FlatGeobuf reader and writer:
- Fast bounding box queries, pushed down to the original file format
- Sync/async data reading through obstore
- Fully Rust with no GDAL means easy installation
geoarrow.org/geoarrow-rs/...
- Fast bounding box queries, pushed down to the original file format
- Sync/async data reading through obstore
- Fully Rust with no GDAL means easy installation
geoarrow.org/geoarrow-rs/...
FlatGeobuf - geoarrow-rust
Python bindings to Rust implementation of GeoArrow
geoarrow.org
August 8, 2025 at 5:08 PM
New GeoArrow-Rust release (& Python bindings) with a dedicated FlatGeobuf reader and writer:
- Fast bounding box queries, pushed down to the original file format
- Sync/async data reading through obstore
- Fully Rust with no GDAL means easy installation
geoarrow.org/geoarrow-rs/...
- Fast bounding box queries, pushed down to the original file format
- Sync/async data reading through obstore
- Fully Rust with no GDAL means easy installation
geoarrow.org/geoarrow-rs/...
New blog post on Obstore, fast, multi-provider cloud storage access for Python:
developmentseed.org/blog/2025-08...
developmentseed.org/blog/2025-08...
We Needed Better Cloud Storage for Python so We Built Obstore — Development Seed
Obstore solves the friction we kept hitting in cloud-native workflows.
developmentseed.org
August 4, 2025 at 4:11 PM
New blog post on Obstore, fast, multi-provider cloud storage access for Python:
developmentseed.org/blog/2025-08...
developmentseed.org/blog/2025-08...
New example notebook on visualizing Spatially-Partitioned GeoParquet with Lonboard, Obstore, and GeoArrow-Rust, using Overture Maps Foundation data! developmentseed.org/lonboard/lat...
July 22, 2025 at 1:35 PM
New example notebook on visualizing Spatially-Partitioned GeoParquet with Lonboard, Obstore, and GeoArrow-Rust, using Overture Maps Foundation data! developmentseed.org/lonboard/lat...
When the Delta Lake Python bindings take a required dependency on your library 😅. 2.6M downloads a month! 😱 Guess I'll never be making a breaking release now!! pypistats.org/packages/arr...
arro3-core is 15x smaller in your environment than pyarrow! kylebarron.dev/arro3/latest/
arro3-core is 15x smaller in your environment than pyarrow! kylebarron.dev/arro3/latest/
July 12, 2025 at 5:06 PM
When the Delta Lake Python bindings take a required dependency on your library 😅. 2.6M downloads a month! 😱 Guess I'll never be making a breaking release now!! pypistats.org/packages/arr...
arro3-core is 15x smaller in your environment than pyarrow! kylebarron.dev/arro3/latest/
arro3-core is 15x smaller in your environment than pyarrow! kylebarron.dev/arro3/latest/
Reposted by Kyle Barron
not every decade-old tech post holds up, but this one does: macwright.com/2012/06/13/p...
Gravity Always Wins
On how software naturally degrades as time goes on, and maybe we should embrace that.
macwright.com
July 9, 2025 at 8:37 PM
not every decade-old tech post holds up, but this one does: macwright.com/2012/06/13/p...
I'll be speaking at the NYC DataFusion meetup in September on geospatial support for DataFusion! lu.ma/qkcyycg0
DataFusion is a Rust-based query engine for building fast OLAP data processing systems. Compared to DuckDB, DataFusion is more modular and is designed to be embedded in larger systems.
DataFusion is a Rust-based query engine for building fast OLAP data processing systems. Compared to DuckDB, DataFusion is more modular and is designed to be embedded in larger systems.
New York City Apache DataFusion Meetup · Luma
Welcome to the New York City Apache DataFusion Meetup!
Join us for an evening of talks, panel discussion, and community discussion celebrating 50 releases of…
lu.ma
July 10, 2025 at 8:35 PM
I'll be speaking at the NYC DataFusion meetup in September on geospatial support for DataFusion! lu.ma/qkcyycg0
DataFusion is a Rust-based query engine for building fast OLAP data processing systems. Compared to DuckDB, DataFusion is more modular and is designed to be embedded in larger systems.
DataFusion is a Rust-based query engine for building fast OLAP data processing systems. Compared to DuckDB, DataFusion is more modular and is designed to be embedded in larger systems.
Reposted by Kyle Barron
🆕 #CNG2025 session recording
@kylebarron.dev from @developmentseed.org introduces Obstore, a python library he wrote to access data on the cloud. Watch his talk to hear about the motivations for writing Obstore & its details
▶️ youtu.be/Wxh1G2oCZiU
@kylebarron.dev from @developmentseed.org introduces Obstore, a python library he wrote to access data on the cloud. Watch his talk to hear about the motivations for writing Obstore & its details
▶️ youtu.be/Wxh1G2oCZiU
[CNG 2025] Fast Cloud Storage Operations with Obstore – Kyle Barron
YouTube video by Cloud-Native Geospatial Forum
youtu.be
July 8, 2025 at 5:06 PM
🆕 #CNG2025 session recording
@kylebarron.dev from @developmentseed.org introduces Obstore, a python library he wrote to access data on the cloud. Watch his talk to hear about the motivations for writing Obstore & its details
▶️ youtu.be/Wxh1G2oCZiU
@kylebarron.dev from @developmentseed.org introduces Obstore, a python library he wrote to access data on the cloud. Watch his talk to hear about the motivations for writing Obstore & its details
▶️ youtu.be/Wxh1G2oCZiU
Published v0.4 of the Rust GeoParquet crate:
- Read all GeoParquet 1.1 files, including spatial filtering
- Easier integration with upstream parquet crate read options
- Support for adding bbox column when writing files
- Sync and async for both reading and writing
github.com/geoarrow/geo...
- Read all GeoParquet 1.1 files, including spatial filtering
- Easier integration with upstream parquet crate read options
- Support for adding bbox column when writing files
- Sync and async for both reading and writing
github.com/geoarrow/geo...
Release rust-v0.4.0-geoparquet · geoarrow/geoarrow-rs
This is the tag for the v0.4 release of the geoparquet crate, which was delayed compared to the 0.4 release of the other crates.
0.4.0 (geoparquet crate) - 2025-07-08
New standalone geoparquet crat...
github.com
July 8, 2025 at 3:57 PM
Published v0.4 of the Rust GeoParquet crate:
- Read all GeoParquet 1.1 files, including spatial filtering
- Easier integration with upstream parquet crate read options
- Support for adding bbox column when writing files
- Sync and async for both reading and writing
github.com/geoarrow/geo...
- Read all GeoParquet 1.1 files, including spatial filtering
- Easier integration with upstream parquet crate read options
- Support for adding bbox column when writing files
- Sync and async for both reading and writing
github.com/geoarrow/geo...
✨New Python bindings to GeoArrow and GeoParquet in Rust!
This wrapper exposes a *full rewrite* of the GeoArrow Rust library, including support for the new Geometry(Collection) array types.
It also supports reading and writing GeoParquet files, with spatial filtering.
geoarrow.org/geoarrow-rs/...
This wrapper exposes a *full rewrite* of the GeoArrow Rust library, including support for the new Geometry(Collection) array types.
It also supports reading and writing GeoParquet files, with spatial filtering.
geoarrow.org/geoarrow-rs/...
LinkedIn
This link will take you to a page that’s not on LinkedIn
lnkd.in
July 1, 2025 at 3:38 PM
✨New Python bindings to GeoArrow and GeoParquet in Rust!
This wrapper exposes a *full rewrite* of the GeoArrow Rust library, including support for the new Geometry(Collection) array types.
It also supports reading and writing GeoParquet files, with spatial filtering.
geoarrow.org/geoarrow-rs/...
This wrapper exposes a *full rewrite* of the GeoArrow Rust library, including support for the new Geometry(Collection) array types.
It also supports reading and writing GeoParquet files, with spatial filtering.
geoarrow.org/geoarrow-rs/...
Obstore v0.7 is out! The simplest Python cloud storage interface, powered by Rust
- Anonymous connections to GCS
- Obspec compatibility
- Improvements to NASA Earthdata credential provider
- Fixed creation of AzureStore from HTTPS URL
- Improved documentation
developmentseed.org/obstore/late...
- Anonymous connections to GCS
- Obspec compatibility
- Improvements to NASA Earthdata credential provider
- Fixed creation of AzureStore from HTTPS URL
- Improved documentation
developmentseed.org/obstore/late...
Releasing obstore 0.7! - obstore
The simplest, highest-throughput Python interface to S3, GCS & Azure Storage, powered by Rust.
developmentseed.org
June 25, 2025 at 9:23 PM
Obstore v0.7 is out! The simplest Python cloud storage interface, powered by Rust
- Anonymous connections to GCS
- Obspec compatibility
- Improvements to NASA Earthdata credential provider
- Fixed creation of AzureStore from HTTPS URL
- Improved documentation
developmentseed.org/obstore/late...
- Anonymous connections to GCS
- Obspec compatibility
- Improvements to NASA Earthdata credential provider
- Fixed creation of AzureStore from HTTPS URL
- Improved documentation
developmentseed.org/obstore/late...
Introducing Obspec: A Python protocol for interfacing with object storage
Obspec is an alternative to fsspec. It defines a minimal Python interface to read, write, and modify data on object storage while acknowledging that object storage is *not* a filesystem.
developmentseed.org/obspec/lates...
Obspec is an alternative to fsspec. It defines a minimal Python interface to read, write, and modify data on object storage while acknowledging that object storage is *not* a filesystem.
developmentseed.org/obspec/lates...
Introducing Obspec: A Python protocol for interfacing with object storage - obspec
Object storage interface definitions for Python.
developmentseed.org
June 25, 2025 at 2:36 PM
Introducing Obspec: A Python protocol for interfacing with object storage
Obspec is an alternative to fsspec. It defines a minimal Python interface to read, write, and modify data on object storage while acknowledging that object storage is *not* a filesystem.
developmentseed.org/obspec/lates...
Obspec is an alternative to fsspec. It defines a minimal Python interface to read, write, and modify data on object storage while acknowledging that object storage is *not* a filesystem.
developmentseed.org/obspec/lates...
Lonboard v0.11 is released!
- Choose between a tooltip and side panel for inspecting data
- Supports GeoArrow box arrays from 0.2 spec
- fixes some DuckDB and CSS bugs
- Ensures compatibility with geoarrow-pyarrow v0.2
See full changelog: github.com/developments...
- Choose between a tooltip and side panel for inspecting data
- Supports GeoArrow box arrays from 0.2 spec
- fixes some DuckDB and CSS bugs
- Ensures compatibility with geoarrow-pyarrow v0.2
See full changelog: github.com/developments...
Release v0.11.0 · developmentseed/lonboard
Breaking changes 🔨
Require Python 3.9 or higher by @kylebarron in #743
New features ✨
feat: Reinstate tooltip by @vgeorge in #736.
You can now turn on the tooltip by passing show_tooltip=True to...
github.com
June 17, 2025 at 9:52 PM
Lonboard v0.11 is released!
- Choose between a tooltip and side panel for inspecting data
- Supports GeoArrow box arrays from 0.2 spec
- fixes some DuckDB and CSS bugs
- Ensures compatibility with geoarrow-pyarrow v0.2
See full changelog: github.com/developments...
- Choose between a tooltip and side panel for inspecting data
- Supports GeoArrow box arrays from 0.2 spec
- fixes some DuckDB and CSS bugs
- Ensures compatibility with geoarrow-pyarrow v0.2
See full changelog: github.com/developments...
Published version 0.4 of the GeoArrow Rust library! It's been fully rewritten from scratch, has a much more stable core, and supports all of the GeoArrow 0.2 specification. geoarrow.org/geoarrow-rs/...
GeoArrow Rust crates - geoarrow-rs
A Rust implementation of GeoArrow
geoarrow.org
May 28, 2025 at 3:46 PM
Published version 0.4 of the GeoArrow Rust library! It's been fully rewritten from scratch, has a much more stable core, and supports all of the GeoArrow 0.2 specification. geoarrow.org/geoarrow-rs/...
Really excited for version 0.2 of GeoArrow! This has been years in the making and adds:
- Geometry, GeometryCollection, Box types. We can now represent mixed-type geometries in an array
- New ways to represent CRS.
See the release post for more information: geoarrow.org/news/release...
- Geometry, GeometryCollection, Box types. We can now represent mixed-type geometries in an array
- New ways to represent CRS.
See the release post for more information: geoarrow.org/news/release...
May 27, 2025 at 7:25 PM
Really excited for version 0.2 of GeoArrow! This has been years in the making and adds:
- Geometry, GeometryCollection, Box types. We can now represent mixed-type geometries in an array
- New ways to represent CRS.
See the release post for more information: geoarrow.org/news/release...
- Geometry, GeometryCollection, Box types. We can now represent mixed-type geometries in an array
- New ways to represent CRS.
See the release post for more information: geoarrow.org/news/release...
Reposted by Kyle Barron
We found similar results when we first benchmarked #icechunk. Our conclusion: doing IO with a Rust backend is much faster than Python.
👇Really exciting to see @kylebarron.dev's Obstore backend for Zarr-Python ship today.
👇Really exciting to see @kylebarron.dev's Obstore backend for Zarr-Python ship today.
With today's Zarr Python release, switch to the new obstore-based backend for **3x faster** reading from S3, Google Cloud Storage, and Azure than the default fsspec backend.
zarr.readthedocs.io/en/stable/us...
developmentseed.org/obstore/late...
zarr.readthedocs.io/en/stable/us...
developmentseed.org/obstore/late...
April 21, 2025 at 4:52 PM
We found similar results when we first benchmarked #icechunk. Our conclusion: doing IO with a Rust backend is much faster than Python.
👇Really exciting to see @kylebarron.dev's Obstore backend for Zarr-Python ship today.
👇Really exciting to see @kylebarron.dev's Obstore backend for Zarr-Python ship today.
With today's Zarr Python release, switch to the new obstore-based backend for **3x faster** reading from S3, Google Cloud Storage, and Azure than the default fsspec backend.
zarr.readthedocs.io/en/stable/us...
developmentseed.org/obstore/late...
zarr.readthedocs.io/en/stable/us...
developmentseed.org/obstore/late...
April 21, 2025 at 2:28 PM
With today's Zarr Python release, switch to the new obstore-based backend for **3x faster** reading from S3, Google Cloud Storage, and Azure than the default fsspec backend.
zarr.readthedocs.io/en/stable/us...
developmentseed.org/obstore/late...
zarr.readthedocs.io/en/stable/us...
developmentseed.org/obstore/late...