swell-tag: a surfer’s spatial database
2026-11-03 –, Gardenia

swell-tag is a swell database built with duckdb, sqlmesh, open data, and stoke!
Representing swell signatures as vectors indexed by space and time, swell-tag keeps you psyched on surfing while you're stuck at your computer not surfing.


GitHub repo -> https://github.com/maxgrossman/swell-tag/tree/main

swell-tag has been my summer 2026 side project, inspired by a desire to see if I could take duckdb and its data wrangling and spatial extensions to build a dataset using a data warehouse at the scale of ~1TB.

The end dataset is an archive of 'swell vectors’ across space and time, where each vector holds the parts of a swell that I and other obsessive surfers use to describe how good the waves are - wave size, swell direction, wave period, wind speed, wind direction, and tide. This datasets spans January 2000 - June 2026.
These vectors, with the help of duckdb's vector similarity search extension, enable answering questions like, 'I have this photo with EXIF metadata and want to know when the waves have been like they are in this photo.' Or, 'The waves really stunk this summer. Were they unusually bad, or am I misremembering, and the surf has never actually been good at home?'

This talk will speed run sharing the lessons learned building this dataset, give an overview of the architecture of the data pipelines that build swell-tag, and offer a fast demo for answering some of the questions described above.

Specifically, this means sections that will
- discuss how duckdb is a swiss army knife and makes it possible to smush together 25 years of ERA5 netcdf wind data, NOAA NDBC text file bouy readings, and the the UH Sea Level Center’s tidal csv archive into a final, queryable dataset. Key here is that I can show most of the work being done with just one stinking tool that you can iterate with on your computer - that's really powerful!
- a brief discussion on how all these sources get normalized into an analytical table. This is a worthwhile discussion, as it’s where the particularly spatial questions are. Sampling, and in some cases interpolating, these sources into a uniform set of space-time keys was a very fun spatial question to solve.
- a demo showing off the kinds of things we can do with swell-tag. This will include showing how my own surf photos that have associated EXIF metadata show me 'similar swell signatures’ and some year-over-year comparison of swell where I grew up surfing in New Jersey!

Today, these demos live on my machine. I have a script that extracts photos' EXIF and queries the database. Or, in the the year-over-year comparison, the idea lives in my head and I am looking forward to implementing it.

The data pipelines mentioned above that I am actively working on will get the full archive into a clouflare r2 bucket. I’ll be taking the exif script and the year of year comparison and brining these to life on static webpage on GitHub Pages.


Topics: Select 1–3 areas of interest that best describe your proposal.: Cloud-Native Geo, Open Data, Open Geospatial Tools, Research & Education

Max got his geography degree from GW almost ten years ago and has been maintaining or writing geospatial software and data tools ever since. He also loves to surf.