|
| 1 | +--- |
| 2 | +title: "In-person Hackathon and Design Dialog 2025" |
| 3 | +description: | |
| 4 | + On August 13-14 in Berkeley CA, a group of ~25 dedicated geospatial professionals had a |
| 5 | + meeting of the minds. We worked together on code, design, and big-picture strategy! |
| 6 | +date: "2025-08-20" |
| 7 | +image: "group-photo.jpg" |
| 8 | +author: |
| 9 | + - name: "GeoJupyter Hackathon participants (see below)" |
| 10 | +categories: |
| 11 | + - "Events" |
| 12 | +--- |
| 13 | + |
| 14 | +When 25 geospatial professionals gathered in Berkeley for a |
| 15 | +[2-day intensive hackathon event](https://events.geojupyter.org/hackathons/202508-berkeley/), |
| 16 | +we didn't just write code, we reimagined what JupyterGIS could become. |
| 17 | + |
| 18 | + |
| 19 | +{.lightbox} |
| 20 | + |
| 21 | + |
| 22 | +:rainbow: With backgrounds and skills all over the spectrum, everyone had something to teach and |
| 23 | +something to learn, creating a multiplier effect where our diversity amplified |
| 24 | +each other's contributions. |
| 25 | + |
| 26 | +Four distinct working groups quickly emerged: |
| 27 | + |
| 28 | +* infrastructure developers exploring containers and development environment setup, |
| 29 | +* documentation specialists filling in gaps and testing tutorials with fresh eyes, |
| 30 | +* API developers working on Python integration and data manipulation workflows, and |
| 31 | +* strategists zooming out to question JupyterGIS' fundamental purpose. |
| 32 | + |
| 33 | +Each team made valuable contributions and wrote a summary of their activities: |
| 34 | + |
| 35 | + |
| 36 | +## :building_construction: Development infrastructure team |
| 37 | + |
| 38 | +* Worked together to set up development environments for the first time |
| 39 | +* Explored using devcontainers to reduce startup burden for new contributors |
| 40 | + |
| 41 | + > This is an interoperable development container that automates the dev environment |
| 42 | + > setup for JupyterGIS development. |
| 43 | + > It works both on Hub infrastructure and on VSCode / Codespaces without any |
| 44 | + > additional tinkering! |
| 45 | + > This means that users, regardless of their host OS, can build and iterate on |
| 46 | + > JupyterGIS either locally (using Docker or Docker + VSCode) or in the cloud (on |
| 47 | + > managed Hub infrastructure or GitHub codespaces). |
| 48 | + > A byproduct of this work was the development of a |
| 49 | + > [Dev Container Feature](https://github.com/GondekNP/devcontainer_jupyterhub_interoperator) |
| 50 | + > that provides a way for Jupyter-based images to play nice with `devcontainer`-based |
| 51 | + > tools without fuss, something I have been annoyed with for some time. |
| 52 | +
|
| 53 | +* Discussed the potential of using a JupyterHub for developing on JupyterLab extensions |
| 54 | + |
| 55 | + |
| 56 | +## :books: Documentation team |
| 57 | + |
| 58 | +> Our hackathon topic brought together a diverse set of backgrounds and personas of |
| 59 | +> potential JupyterGIS users to test out and improve existing documentation and |
| 60 | +> tutorials. |
| 61 | +> Several pull requests, bug reports and feature suggestions were created and the |
| 62 | +> JupyterGIS project gained another 9 testers. |
| 63 | +> Repeating this experiment by giving this task to different types of user working |
| 64 | +> groups is one great way to help build a roadmap and envision the future of this |
| 65 | +> project. |
| 66 | +
|
| 67 | +* Tested JupyterGIS and reported bugs |
| 68 | + ([#869](https://github.com/geojupyter/jupytergis/issues/869)) |
| 69 | +* Suggested new features |
| 70 | + ([#871](https://github.com/geojupyter/jupytergis/issues/871), |
| 71 | + [#876](https://github.com/geojupyter/jupytergis/issues/876)) |
| 72 | +* Updated the structure of the JupyterGIS examples with a "guided tour" feel |
| 73 | + ([#872](https://github.com/geojupyter/jupytergis/pull/872), |
| 74 | + [#878](https://github.com/geojupyter/jupytergis/pull/878) |
| 75 | + [#875](https://github.com/geojupyter/jupytergis/issues/875)) |
| 76 | +* Tested JupyterGIS tutorials for accuracy and clarity, and submitted fixes |
| 77 | + ([#873](https://github.com/geojupyter/jupytergis/pull/873)) |
| 78 | +* Reviewed documentation prose and inline documentation (like docstrings) for clarity |
| 79 | + and errors, and submitted fixes! |
| 80 | + ([#874](https://github.com/geojupyter/jupytergis/pull/874), |
| 81 | + [#867](https://github.com/geojupyter/jupytergis/pull/867), |
| 82 | + [#868](https://github.com/geojupyter/jupytergis/pull/868), |
| 83 | + [#873](https://github.com/geojupyter/jupytergis/pull/873), |
| 84 | + [#864](https://github.com/geojupyter/jupytergis/pull/864)) |
| 85 | + |
| 86 | + |
| 87 | +## :snake: Python API ergonomics team |
| 88 | + |
| 89 | +> We worked on getting data out of the map layer, manipulating the data and making |
| 90 | +> updates to the map. |
| 91 | +> We showed this was possible through two different workflows: toggling layer visibility |
| 92 | +> and getting GeoJSON from the layer source and turning it into a geopandas object. |
| 93 | +
|
| 94 | +Please see [#877](https://github.com/geojupyter/jupytergis/pull/877) for this team's |
| 95 | +prototype! |
| 96 | + |
| 97 | + |
| 98 | +## :world_map: Strategy team |
| 99 | + |
| 100 | +> We followed a detailed user story focused on biodiversity and identified some gaps and |
| 101 | +> opportunities. |
| 102 | +> We thought about what problems JupyterGIS should and should not try to solve and |
| 103 | +> identified overlap with things Notebooks are good at and many researchers are |
| 104 | +> comfortable doing in Notebooks -- analysis. |
| 105 | +> By focusing more on visualization, an area where many practitioners already struggle |
| 106 | +> and a reason they open QGIS, we feel we can more quickly deliver a product that can be |
| 107 | +> used in daily work. |
| 108 | +> We also identified a robust STAC search implementation and GUI as something |
| 109 | +> alternatives do not excel at, and a possible "killer feature". |
| 110 | +
|
| 111 | + |
| 112 | +* What should JupyterGIS be? What should JupyterGIS _not be_? |
| 113 | + * Should focus on the areas where users need the most help. |
| 114 | + For example, visual exploration is the most broadly-reported challenge. |
| 115 | + * Should not focus on drawing users away from Jupyter Notebook analysis workflows |
| 116 | + that are working for them and are well-served by Notebooks. |
| 117 | + For example, providing utilities in the visual environment that serve Notebook |
| 118 | + workflows: drawing or calculating areas of interest and moving those back over to |
| 119 | + the Notebook, synchronizing changes in Python data objects over to the map. |
| 120 | + **Not** trying to reimplement the QGIS/ArcGIS model builders unless we have a |
| 121 | + strong value-add. |
| 122 | + |
| 123 | +  |
| 124 | + |
| 125 | +* Why do people leave QGIS? |
| 126 | + * Scaling analyses or performing analysis on big datasets |
| 127 | + * Repeatability & reproducibility with a Notebook or script |
| 128 | +* Why do people come back to QGIS? |
| 129 | + * Exploring results |
| 130 | + * Making a map to share or tell a story |
| 131 | + |
| 132 | + |
| 133 | +## :heart: Thank you :bow: |
| 134 | + |
| 135 | +Thank you _so much_ to our wonderful hackathon participants for bringing a collaborative |
| 136 | +energy and creating a supportive atmosphere that made it fun and safe to take on hard |
| 137 | +problems! |
| 138 | + |
| 139 | +Infinite thanks to our fantastic team of facilitators from the |
| 140 | +[Berkeley Institute for Data Science (BIDS)](https://bids.berkeley.edu) and the |
| 141 | +[Schmidt Center for Data Science and Environment (DSE)](https://dse.berkeley.edu) |
| 142 | +who curated equipment and a comfortable environment, solved problems, provided delicious |
| 143 | +caffeine and meals, expertly facilitated discussions, and more. |
| 144 | + |
| 145 | +Finally, thanks to the [Berkeley Institute for Data Science |
| 146 | +(BIDS)](https://bids.berkeley.edu) for hosting us at their wonderful |
| 147 | +[AI Futures Lab](https://bids.berkeley.edu/news/announcing-ai-futures-lab-visionary-partnership-between-bids-and-uc-investments) |
| 148 | +space on day 1! |
| 149 | +What a view :star_struck: :bridge_at_night: |
| 150 | + |
| 151 | + |
| 152 | +## :mega: Call to join the community |
| 153 | + |
| 154 | +We want to work with :index_pointing_at_the_viewer: **you**! |
| 155 | +With your collaboration, we can build less frustrating and more joyful and rewarding |
| 156 | +ways of working with geospatial data. |
| 157 | +Here's how: |
| 158 | + |
| 159 | +:open_book: [Share a story about a workflow that needs improvement](https://github.com/geojupyter/jupytergis/issues/new?template=0-user-story.yml)! |
| 160 | + |
| 161 | +:calendar: [Join a hackathon or community meeting](https://geojupyter.org/calendar)! |
| 162 | + |
| 163 | +:left_speech_bubble: [Chat with us on Zulip](https://jupyter.zulipchat.com/#narrow/channel/471314-geojupyter)! |
| 164 | + |
| 165 | +:test_tube: [Try JupyterGIS](https://jupytergis.readthedocs.io/)! Where does it (not) |
| 166 | +meet your needs? |
| 167 | + |
| 168 | +:sunglasses: Share your rad vibes and leadership! |
| 169 | + |
| 170 | +:love_letter: Get in touch with our community manager: |
| 171 | +[Zulip](https://jupyter.zulipchat.com/#narrow/channel/471314-geojupyter), |
| 172 | +[GitHub ](https://github.com/mfisher87), [email ](mailto:[email protected]) |
| 173 | + |
| 174 | + |
| 175 | +--- |
| 176 | + |
| 177 | +_This post co-created by hackathon participants: |
| 178 | + Arjun Verma, |
| 179 | + Brianna Pagan, |
| 180 | + Brookie Guzder-Williams, |
| 181 | + Ciera Martinez, |
| 182 | + Fernando Pérez, |
| 183 | + James Colliander, |
| 184 | + Jason Grout, |
| 185 | + Jon Atkins, |
| 186 | + Kevin Koy, |
| 187 | + Kirstie Whitaker, |
| 188 | + Kristin Davis, |
| 189 | + Lucia Layritz, |
| 190 | + Maryam Hosseini, |
| 191 | + Maryam Vareth, |
| 192 | + Matt Fisher, |
| 193 | + Maxwell Taniguchi-King, |
| 194 | + Maya Weltman-Fahs, |
| 195 | + Maya Zomer, |
| 196 | + Michele Tobias, |
| 197 | + Min RK, |
| 198 | + Nick Gondek, |
| 199 | + Qiusheng Wu, |
| 200 | + Shane Grigsby, |
| 201 | + Stace Maples, |
| 202 | + Tyler Marino_ |
0 commit comments