---
title: "GeoJupyter virtual hackathon 2025-06-25"
description: |
A GeoJupyter virtual hackathon. Open to all!
date: "2025-06-25"
image: "/assets/images/hackathon.jpg"
author:
- name: "The GeoJupyter community"
categories:
- "Hackathons"
tags: [hackathons]
---
# GeoJupyter virtual hackathon 2025-06-25
Please add new agenda items under the `New agenda items` heading!
- [Join us on Zoom](https://berkeley.zoom.us/j/92451699568)
- [What time is the meeting in my time zone?](https://dateful.com/convert/utc?t=2pm)
- [Notes from previous hackathons](https://geojupyter.org/blog/#category=Hackathons)
- [GeoJupyter](https://geojupyter.org) handy links:
- [GitHub org](https://github.com/geojupyter)
- [Community calendar](https://geojupyter.org/calendar.html)
- [Zulip chat](https://jupyter.zulipchat.com/#narrow/channel/471314-geojupyter)
## Sign in!
Your name / GitHub ID / affiliation
* Kristin Davis / @kpdavi / Schmidt DSE
* Martin Renou / @martinRenou / QuantStack
* Matt Fisher / @mfisher87 / Schmidt DSE
* Kirstie Whitaker / @KirstieJAne / Berkeley Institute for Data Science
## Agenda & notes
### ⚡ (5 minutes) Lightning intros
Tell us about you in 30 seconds or less!
### 🌐 (5 minutes) Lightning demo
What's new? Show & tell.
Post on Zulip to request a show & tell slot;
by default, QuantStack will demo awesome JupyterGIS progress each meeting!
### 💡 (5 minutes) What will we hack on?
* **What do you want to work on today**?
* For ideas, check out the [hackathon](https://github.com/geojupyter/jupytergis/labels/hackathon)
and [good first issue](https://github.com/geojupyter/jupytergis/labels/good%20first%20issue)
labels on the JupyterGIS project!
* **Add your ideas to the “ideas” list below**.
* **Add your favorite emoji or a `+` next to ideas you’re excited about**.
* Press the colon (:) key on your keyboard or navigate to “Insert > Emoji” in the menu bar to open the emoji browser.
#### Ideas
* [Symbology menu overhaul](https://github.com/geojupyter/jupytergis/pull/754)
* Idea 2
* Idea 3
### 🪄 (all the minutes) Hack together!
Form teams from the ideas generated in the step above!
#### Breakout rooms
* Lobby: Symbology
### 💬 (10 minutes) Share out
Think about:
What exciting things did you accomplish?
What loose ends remain?
Big questions? Big ideas?
Please write for people who don’t have full context; link to related issues and documentation!
* Symbology
* Plan to use [Vega Expressions](https://vega.github.io/vega/docs/expressions/) instead of OpenLayers in the vectorlayer.json - open an issue for this!
* Could use the descriptions around symbology information developed / described by [Sam (software engineer at DSE)](https://interactivedatascience.courses/) to inform how the schema is structured and / or described
* Let Sam know his data visualization class slides are 404ing
* Have some example project files bundled with the project and want to validate that they're obeying the schemas in CI - every time a PR is opened, want to make sure those aren't broken
* Need to improve heatmap schema - maybe in the next PR
* Think about the schema levels of abstraction -- should we extract symbology schemas into their own schema sub-directory instead of bundling them with the layers schemas? This will be especially important once we start discriminating between point, line, and polygon sub-types of vector layers because we'll have an explosion of schema possibilities and we'll want to drive the form generation more from the schema and less from the JavaScript.
* How to do JSONSchema definitions and reference them _across files_?
* Consider `creationform.tsx` -> `layerCreationForm.tsx`?
* Next steps:
* Create new form class that inherits from baseform, symbologyForm.
* Move logic from symbologyDialog -> the new symbologyForm base component.
* A starting point may be to use BaseForm in the SymbologyDialog module.
* Look at creationform and debug/log to see what we pass to LayerForm on line 220 to better understand the implementation.
* MAY need to register our schema in the formSchemaRegistry!
* There's a `registerSchema` function, but it seems we never call it? Is it dynamically called in the generated code?
* TODO: Form property `syncData` -> `submitCallback`?
* TODO: Docs on schema -> TS/Py types generation
* Share out 2
* ...