<?xml version="1.0" encoding="UTF-8"?>
<rss  xmlns:atom="http://www.w3.org/2005/Atom" 
      xmlns:media="http://search.yahoo.com/mrss/" 
      xmlns:content="http://purl.org/rss/1.0/modules/content/" 
      xmlns:dc="http://purl.org/dc/elements/1.1/" 
      version="2.0">
<channel>
<title>GeoJupyter</title>
<link>https://geojupyter.org/blog/</link>
<atom:link href="https://geojupyter.org/blog/index.xml" rel="self" type="application/rss+xml"/>
<description></description>
<generator>quarto-1.5.57</generator>
<lastBuildDate>Wed, 03 Sep 2025 00:00:00 GMT</lastBuildDate>
<item>
  <title>In-person Hackathon and Design Dialog 2025</title>
  <dc:creator>GeoJupyter Hackathon participants (see below)</dc:creator>
  <link>https://geojupyter.org/blog/20250903-inperson-hackathon-and-design-dialog/</link>
  <description><![CDATA[ 




<p>When 25 geospatial professionals gathered in Berkeley for a <a href="https://events.geojupyter.org/hackathons/202508-berkeley/">2-day intensive hackathon event</a>, we didn’t just write code, we reimagined what JupyterGIS could become.</p>
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><a href="group-photo.jpg" class="lightbox" data-gallery="quarto-lightbox-gallery-1" title="A group photo of the in-person hackathon participants"><img src="https://geojupyter.org/blog/20250903-inperson-hackathon-and-design-dialog/group-photo.jpg" class="img-fluid figure-img" alt="A group photo of the in-person hackathon participants"></a></p>
<figcaption>A group photo of the in-person hackathon participants</figcaption>
</figure>
</div>
<p><span class="emoji" data-emoji="rainbow">🌈</span> With backgrounds and skills all over the spectrum, everyone had something to teach and something to learn, creating a multiplier effect where our diversity amplified each other’s contributions.</p>
<p>Four distinct working groups quickly emerged:</p>
<ul>
<li>infrastructure developers exploring containers and development environment setup,</li>
<li>documentation specialists filling in gaps and testing tutorials with fresh eyes,</li>
<li>API developers working on Python integration and data manipulation workflows, and</li>
<li>strategists zooming out to question JupyterGIS’ fundamental purpose.</li>
</ul>
<p>Each team made valuable contributions and wrote a summary of their activities:</p>
<section id="development-infrastructure-team" class="level2">
<h2 class="anchored" data-anchor-id="development-infrastructure-team"><span class="emoji" data-emoji="building_construction">🏗️</span> Development infrastructure team</h2>
<ul>
<li><p>Worked together to set up development environments for the first time</p></li>
<li><p>Explored using devcontainers to reduce startup burden for new contributors</p>
<blockquote class="blockquote">
<p>This is an interoperable development container that automates the dev environment setup for JupyterGIS development. It works both on Hub infrastructure and on VSCode / Codespaces without any additional tinkering! This means that users, regardless of their host OS, can build and iterate on JupyterGIS either locally (using Docker or Docker + VSCode) or in the cloud (on managed Hub infrastructure or GitHub codespaces). A byproduct of this work was the development of a <a href="https://github.com/GondekNP/devcontainer_jupyterhub_interoperator">Dev Container Feature</a> that provides a way for Jupyter-based images to play nice with <code>devcontainer</code>-based tools without fuss, something I have been annoyed with for some time.</p>
</blockquote></li>
<li><p>Discussed the potential of using a JupyterHub for developing on JupyterLab extensions</p></li>
</ul>
</section>
<section id="documentation-team" class="level2">
<h2 class="anchored" data-anchor-id="documentation-team"><span class="emoji" data-emoji="books">📚</span> Documentation team</h2>
<blockquote class="blockquote">
<p>Our hackathon topic brought together a diverse set of backgrounds and personas of potential JupyterGIS users to test out and improve existing documentation and tutorials. Several pull requests, bug reports and feature suggestions were created and the JupyterGIS project gained another 9 testers. Repeating this experiment by giving this task to different types of user working groups is one great way to help build a roadmap and envision the future of this project.</p>
</blockquote>
<ul>
<li>Tested JupyterGIS and reported bugs (<a href="https://github.com/geojupyter/jupytergis/issues/869">#869</a>)</li>
<li>Suggested new features (<a href="https://github.com/geojupyter/jupytergis/issues/871">#871</a>, <a href="https://github.com/geojupyter/jupytergis/issues/876">#876</a>)</li>
<li>Updated the structure of the JupyterGIS examples with a “guided tour” feel (<a href="https://github.com/geojupyter/jupytergis/pull/872">#872</a>, <a href="https://github.com/geojupyter/jupytergis/pull/878">#878</a> <a href="https://github.com/geojupyter/jupytergis/issues/875">#875</a>)</li>
<li>Tested JupyterGIS tutorials for accuracy and clarity, and submitted fixes (<a href="https://github.com/geojupyter/jupytergis/pull/873">#873</a>)</li>
<li>Reviewed documentation prose and inline documentation (like docstrings) for clarity and errors, and submitted fixes! (<a href="https://github.com/geojupyter/jupytergis/pull/874">#874</a>, <a href="https://github.com/geojupyter/jupytergis/pull/867">#867</a>, <a href="https://github.com/geojupyter/jupytergis/pull/868">#868</a>, <a href="https://github.com/geojupyter/jupytergis/pull/873">#873</a>, <a href="https://github.com/geojupyter/jupytergis/pull/864">#864</a>)</li>
</ul>
</section>
<section id="python-api-ergonomics-team" class="level2">
<h2 class="anchored" data-anchor-id="python-api-ergonomics-team"><span class="emoji" data-emoji="snake">🐍</span> Python API ergonomics team</h2>
<blockquote class="blockquote">
<p>We worked on getting data out of the map layer, manipulating the data and making updates to the map. We showed this was possible through two different workflows: toggling layer visibility and getting GeoJSON from the layer source and turning it into a geopandas object.</p>
</blockquote>
<p>Please see <a href="https://github.com/geojupyter/jupytergis/pull/877">#877</a> for this team’s prototype!</p>
</section>
<section id="strategy-team" class="level2">
<h2 class="anchored" data-anchor-id="strategy-team"><span class="emoji" data-emoji="world_map">🗺️</span> Strategy team</h2>
<blockquote class="blockquote">
<p>We followed a detailed user story focused on biodiversity and identified some gaps and opportunities. We thought about what problems JupyterGIS should and should not try to solve and identified overlap with things Notebooks are good at and many researchers are comfortable doing in Notebooks – analysis. By focusing more on visualization, an area where many practitioners already struggle and a reason they open QGIS, we feel we can more quickly deliver a product that can be used in daily work. We also identified a robust STAC search implementation and GUI as something alternatives do not excel at, and a possible “killer feature”.</p>
</blockquote>
<ul>
<li>What should JupyterGIS be? What should JupyterGIS <em>not be</em>?
<ul>
<li>Should focus on the areas where users need the most help. For example, visual exploration is the most broadly-reported challenge.</li>
<li>Should not focus on drawing users away from Jupyter Notebook analysis workflows that are working for them and are well-served by Notebooks. For example, providing utilities in the visual environment that serve Notebook workflows: drawing or calculating areas of interest and moving those back over to the Notebook, synchronizing changes in Python data objects over to the map. <strong>Not</strong> trying to reimplement the QGIS/ArcGIS model builders unless we have a strong value-add.</li>
</ul>
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><img src="https://geojupyter.org/blog/20250903-inperson-hackathon-and-design-dialog/jupytergis-notebook-venn.jpg" class="img-fluid figure-img"></p>
<figcaption>A Venn diagram illustrating overlap with Jupyter Notebooks</figcaption>
</figure>
</div></li>
<li>Why do people leave QGIS?
<ul>
<li>Scaling analyses or performing analysis on big datasets</li>
<li>Repeatability &amp; reproducibility with a Notebook or script</li>
</ul></li>
<li>Why do people come back to QGIS?
<ul>
<li>Exploring results</li>
<li>Making a map to share or tell a story</li>
</ul></li>
</ul>
</section>
<section id="thank-you" class="level2">
<h2 class="anchored" data-anchor-id="thank-you"><span class="emoji" data-emoji="heart">❤️</span> Thank you <span class="emoji" data-emoji="bow">🙇</span></h2>
<p>Thank you <em>so much</em> to our wonderful hackathon participants for bringing a collaborative energy and creating a supportive atmosphere that made it fun and safe to take on hard problems!</p>
<p>Infinite thanks to our fantastic team of facilitators from the <a href="https://bids.berkeley.edu">Berkeley Institute for Data Science (BIDS)</a> and the <a href="https://dse.berkeley.edu">Schmidt Center for Data Science and Environment (DSE)</a> who curated equipment and a comfortable environment, solved problems, provided delicious caffeine and meals, expertly facilitated discussions, and more.</p>
<p>Finally, thanks to the <a href="https://bids.berkeley.edu">Berkeley Institute for Data Science (BIDS)</a> for hosting us at their wonderful <a href="https://bids.berkeley.edu/news/announcing-ai-futures-lab-visionary-partnership-between-bids-and-uc-investments">AI Futures Lab</a> space on day 1! What a view <span class="emoji" data-emoji="star_struck">🤩</span> <span class="emoji" data-emoji="bridge_at_night">🌉</span></p>
</section>
<section id="call-to-join-the-community" class="level2">
<h2 class="anchored" data-anchor-id="call-to-join-the-community"><span class="emoji" data-emoji="mega">📣</span> Call to join the community</h2>
<p>We want to work with <span class="emoji" data-emoji="index_pointing_at_the_viewer">🫵</span> <strong>you</strong>! With your collaboration, we can build less frustrating and more joyful and rewarding ways of working with geospatial data. Here’s how:</p>
<p><span class="emoji" data-emoji="open_book">📖</span> <a href="https://github.com/geojupyter/jupytergis/issues/new?template=0-user-story.yml">Share a story about a workflow that needs improvement</a>!</p>
<p><span class="emoji" data-emoji="calendar">📆</span> <a href="https://geojupyter.org/calendar">Join a hackathon or community meeting</a>!</p>
<p><span class="emoji" data-emoji="left_speech_bubble">🗨️</span> <a href="https://jupyter.zulipchat.com/#narrow/channel/471314-geojupyter">Chat with us on Zulip</a>!</p>
<p><span class="emoji" data-emoji="test_tube">🧪</span> <a href="https://jupytergis.readthedocs.io/">Try JupyterGIS</a>! Where does it (not) meet your needs?</p>
<p><span class="emoji" data-emoji="sunglasses">😎</span> Share your rad vibes and leadership!</p>
<p><span class="emoji" data-emoji="love_letter">💌</span> Get in touch with our community manager: <a href="https://jupyter.zulipchat.com/#narrow/channel/471314-geojupyter">Zulip</a>, <a href="https://github.com/mfisher87">GitHub</a>, <a href="mailto:matt.fisher@berkeley.edu">email</a></p>
<hr>
<p><em>This post co-created by hackathon participants: Arjun Verma, Brianna Pagan, Brookie Guzder-Williams, Ciera Martinez, Fernando Pérez, James Colliander, Jason Grout, Jon Atkins, Kevin Koy, Kirstie Whitaker, Kristin Davis, Lucia Layritz, Maryam Hosseini, Maryam Vareth, Matt Fisher, Maxwell Taniguchi-King, Maya Weltman-Fahs, Maya Zomer, Michele Tobias, Min RK, Nick Gondek, Qiusheng Wu, Shane Grigsby, Stace Maples, Tyler Marino</em></p>


</section>

 ]]></description>
  <category>Events</category>
  <guid>https://geojupyter.org/blog/20250903-inperson-hackathon-and-design-dialog/</guid>
  <pubDate>Wed, 03 Sep 2025 00:00:00 GMT</pubDate>
  <media:content url="https://geojupyter.org/blog/20250903-inperson-hackathon-and-design-dialog/group-photo.jpg" medium="image" type="image/jpeg"/>
</item>
<item>
  <title>Community Insight: 💃 The GIS Bounce 🕺</title>
  <dc:creator>Matt Fisher</dc:creator>
  <link>https://geojupyter.org/blog/20250410-community-insight-gis-bounce/</link>
  <description><![CDATA[ 




<p><a href="https://qgis.org/">QGIS</a> is a widely-loved, free, and open source graphical desktop environment for geospatial visualization and analysis. In contrast with the broad and deep ecosystem of programming-based geospatial tools, QGIS is simple to use and empowers practitioners to focus on their goals.</p>
<p>In GeoJupyter’s <a href="../../interviews">user interviews</a>, geospatial data practitioners identified a pattern of <strong>bouncing between a scripting environment for analysis and a graphical environment for data validation</strong>, like QGIS.</p>
<p>We call this pattern <span class="emoji" data-emoji="woman_dancing">💃</span> <strong><em>The GIS Bounce</em></strong> <span class="emoji" data-emoji="man_dancing">🕺</span>.</p>
<p>This pattern of transferring data between environments was represented by users as a point of repeated friction. We think we can improve on this with a tightly integrated collaborative GIS environment in JupyterLab, <a href="https://github.com/geojupyter/jupytergis"><strong>JupyterGIS</strong></a>.</p>
<section id="how-do-i-do-the-gis-bounce" class="level2">
<h2 class="anchored" data-anchor-id="how-do-i-do-the-gis-bounce"><span class="emoji" data-emoji="shrug">🤷</span> How do I do <span class="emoji" data-emoji="woman_dancing">💃</span> <strong><em>The GIS Bounce</em></strong> <span class="emoji" data-emoji="man_dancing">🕺</span> ?</h2>
<p>There are many variations on this general workflow. One example we heard several times looked something like this:</p>
<ol type="1">
<li>Open Jupyter Notebook in JupyterHub cloud computing environment for analysis</li>
<li>Open QGIS on local machine for validation</li>
<li>Set up QGIS project for validation:
<ol type="1">
<li>Create a new project</li>
<li>Add a basemap</li>
<li>Set projection</li>
</ol></li>
<li>Write some analysis code in the Jupyter Notebook</li>
<li><span class="emoji" data-emoji="woman_dancing">💃</span> <strong>Bounce</strong> <span class="emoji" data-emoji="man_dancing">🕺</span> to QGIS for validation
<ol type="1">
<li>Write some code to save analysis output to disk in an interoperable geospatial file format</li>
<li>Download the geospatial data file to the local machine</li>
<li>Add the geospatial data file to QGIS as a new layer</li>
<li>Use the <strong>Identify Tool</strong> and/or <strong>Attribute Table</strong> to validate the data</li>
</ol></li>
<li><span class="emoji" data-emoji="woman_dancing">💃</span> <strong>Bounce</strong> <span class="emoji" data-emoji="man_dancing">🕺</span> back to JupyterLab to repeat step 4-5 until analysis is complete</li>
</ol>
<section id="thats-a-lot" class="level3">
<h3 class="anchored" data-anchor-id="thats-a-lot"><span class="emoji" data-emoji="astonished">😲</span> That’s a lot!</h3>
<p>Yeah! <span class="emoji" data-emoji="sweat_smile">😅</span></p>
<p>Users expressed frustration with the number of repeated steps needed to complete a common and vital task: checking their work.</p>
</section>
</section>
<section id="why-not-just-use-insert-software-package-here" class="level2">
<h2 class="anchored" data-anchor-id="why-not-just-use-insert-software-package-here"><span class="emoji" data-emoji="nerd_face">🤓</span> Why not “just” use <em>&lt;insert software package here&gt;</em>?</h2>
<p>There are many distinct tasks involved in data validation. For example:</p>
<ul>
<li>Confirming that the data is correctly geolocated</li>
<li>Spot-checking attributes of specific features based on their shape and location</li>
<li>Spot-checking a value of raster grid cells corresponding with landmarks</li>
</ul>
<p>Keeping up with programming-language-specific ecosystems of tools and features needed to accomplish these objectives is often not aligned with the goals of the practitioner. Using tools like QGIS helps researchers do research, helps educators educate, without unnecessary complexity getting in their way.</p>
</section>
<section id="can-we-do-better-without-leaving-jupyterlab" class="level2">
<h2 class="anchored" data-anchor-id="can-we-do-better-without-leaving-jupyterlab"><span class="emoji" data-emoji="sparkles">✨</span> Can we do better without leaving JupyterLab?</h2>
<p>We’re trying! <span class="emoji" data-emoji="muscle">💪</span></p>
<p>We are currently building <a href="https://github.com/geojupyter/jupytergis/issues/513">a workflow to reduce steps 2, 3, and 5 to one line of code</a> (not including imports <span class="emoji" data-emoji="grin">😁</span>). For example, to view an analysis output in a <a href="https://geopandas.org/en/stable/docs/reference/api/geopandas.GeoDataFrame.html">GeoDataFrame</a>:</p>
<div class="sourceCode" id="cb1" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb1-1"><span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">from</span> jupytergis <span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">import</span> show_in_jgis</span>
<span id="cb1-2"></span>
<span id="cb1-3">show_in_jgis(my_geodataframe)</span></code></pre></div>
<p>After writing this line of code, JupyterGIS would open in a new JupyterLab window with a basemap and the analysis output loaded as layers. JupyterGIS would then allow users to verify geolocation and validate feature attributes and grid cell values, all under one roof. After validating, users would have the option to save their JupyterGIS project for future reuse!</p>
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><a href="jgis_explore.jpg" class="lightbox" data-gallery="quarto-lightbox-gallery-1" title="Doing the 💃 The JGIS Bounce 🕺"><img src="https://geojupyter.org/blog/20250410-community-insight-gis-bounce/jgis_explore.jpg" class="img-fluid figure-img" alt="Doing the 💃 The JGIS Bounce 🕺"></a></p>
<figcaption>Doing the 💃 The <strong><em>JGIS</em></strong> Bounce 🕺</figcaption>
</figure>
</div>
<div class="callout callout-style-default callout-important callout-titled">
<div class="callout-header d-flex align-content-center">
<div class="callout-icon-container">
<i class="callout-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Important
</div>
</div>
<div class="callout-body-container callout-body">
<p>This is just an example. This is a work in progress and may look different when it’s done cooking.</p>
</div>
</div>
<section id="what-about-collaboration" class="level3">
<h3 class="anchored" data-anchor-id="what-about-collaboration"><span class="emoji" data-emoji="handshake">🤝</span> What about collaboration?</h3>
<p>Collaboration is critical to our vision for the future of geospatial data practice.</p>
<p>Because <a href="https://jupyterlab-realtime-collaboration.readthedocs.io/en/latest/"><code>jupyter-collaboration</code></a> provides <a href="https://youtu.be/0e8IQ76sulI">architecture for real-time collaboration</a> out of the box, and because <a href="https://quantstack.net">QuantStack</a> designed JupyterGIS’ architecture for the same, all of the workflow described above can be built to work collaboratively! Have you ever wanted a Google Docs-like collaborative experience when working on a geospatial project? Now you can!</p>
<div class="quarto-video ratio ratio-16x9"><iframe data-external="1" src="https://www.youtube.com/embed/FzHYYCvWyu0" title="" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen=""></iframe></div>
</section>
</section>
<section id="i-want-to-help" class="level2">
<h2 class="anchored" data-anchor-id="i-want-to-help"><span class="emoji" data-emoji="raised_hand">✋</span> I want to help!</h2>
<p>That’s amazing, you’re the greatest!</p>
<p>The GeoJupyter community is committed to building free and open source software that’s owned by its users. That’s you! <span class="emoji" data-emoji="index_pointing_at_the_viewer">🫵</span> You can participate by <a href="https://geojupyter.org/interviews/sign-up.html">signing up for an interview to share your expertise</a>, <a href="https://github.com/geojupyter/jupytergis/issues">opening GitHub issues to request features or report problems</a>, <a href="https://jupyter.zulipchat.com/#narrow/channel/471314-geojupyter">chatting with us in Zulip</a>, <a href="https://geojupyter.org/calendar">working directly with other community members in a virtual hackathon</a>, and/or submitting code changes as GitHub Pull Requests.</p>
<p>We are looking forward to seeing you! <span class="emoji" data-emoji="smile">😄</span></p>


</section>

 ]]></description>
  <category>Community insights</category>
  <guid>https://geojupyter.org/blog/20250410-community-insight-gis-bounce/</guid>
  <pubDate>Thu, 10 Apr 2025 00:00:00 GMT</pubDate>
  <media:content url="https://geojupyter.org/blog/20250410-community-insight-gis-bounce/bounce.jpg" medium="image" type="image/jpeg"/>
</item>
<item>
  <title>Announcing GeoJupyter Virtual Hackathons</title>
  <dc:creator>Matt Fisher</dc:creator>
  <dc:creator>Kristin Davis</dc:creator>
  <link>https://geojupyter.org/blog/20250129-announcing-geojupyter-hackathons/</link>
  <description><![CDATA[ 




<p><strong>GeoJupyter hackathons are starting up on February 5, 2025!</strong> We can’t wait to see you and work with you! Read on to learn what to expect and how to join us.</p>
<div class="callout callout-style-default callout-tip callout-titled">
<div class="callout-header d-flex align-content-center">
<div class="callout-icon-container">
<i class="callout-icon"></i>
</div>
<div class="callout-title-container flex-fill">
Update
</div>
</div>
<div class="callout-body-container callout-body">
<p><span class="emoji" data-emoji="tada">🎉</span> Our first hackathon was a success! They will continue to occur every two weeks. Please follow along by viewing our <a href="../../blog/#category=Hackathons"><span class="emoji" data-emoji="memo">📝</span> hackathon notes blog posts</a>. We hope to see you at a future hackathon; join with our <a href="../../calendar.html"><span class="emoji" data-emoji="calendar">📆</span> community calendar</a>!</p>
</div>
</div>
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><img src="https://geojupyter.org/blog/20250129-announcing-geojupyter-hackathons/HACK.webp" class="img-fluid figure-img"></p>
<figcaption>A very excited person with too many arms hacking on six (or seven?) computers at once!</figcaption>
</figure>
</div>
<p>If you’re not familiar with GeoJupyter yet, please read our <a href="../../blog/20250108-introducing-geojupyter">community announcement post</a>!</p>
<section id="when" class="level2">
<h2 class="anchored" data-anchor-id="when"><span class="emoji" data-emoji="calendar">📆</span> When?</h2>
<p>Our first hackathon will be on Wednesday, February 5th at 7AM Pacific Time | 8AM Mountain Time | 4PM Central European Time (<a href="https://www.inyourowntime.zone/2025-02-05_08.00_America.Denver">see the time in your timezone</a>). Duration 2 hours, and all are welcome to drop in or out at any time.</p>
<p>Hackathons will occur every two weeks!</p>
</section>
<section id="who-should-join" class="level2">
<h2 class="anchored" data-anchor-id="who-should-join"><span class="emoji" data-emoji="index_pointing_at_the_viewer">🫵</span> Who should join?</h2>
<p>You! We are looking for geospatial practitioners and software developers of all kinds to join us to explore possible futures for geospatial data work.</p>
</section>
<section id="how-to-join" class="level2">
<h2 class="anchored" data-anchor-id="how-to-join"><span class="emoji" data-emoji="handshake">🤝</span> How to join?</h2>
<p><strong>Please join our Zoom meeting from our <a href="../../calendar.html">community calendar</a></strong>. Select the event on Feb 5th to view the details. Beneath the calendar, select “Add to Google Calendar”.</p>
<p>Alternatively, <a href="https://calendar.google.com/calendar/u/0?cid=Z2VvanVweXRlckBiZXJrZWxleS5lZHU">click here to subscribe to the GeoJupyter calendar now</a>!</p>
</section>
<section id="what-you-can-expect" class="level2">
<h2 class="anchored" data-anchor-id="what-you-can-expect"><span class="emoji" data-emoji="thought_balloon">💭</span> What you can expect</h2>
<p>You can expect to meet brilliant and friendly peers, generate ideas, give feedback, learn awesome stuff, write code, and make friends!</p>
<section id="orientation" class="level3">
<h3 class="anchored" data-anchor-id="orientation">Orientation</h3>
<p>Our Hackathon will begin with a brief orientation period. We will have lightning introductions and add our hack ideas to a shared document. Then we will form goals from the ideas that sound the most fun, and break into small teams.</p>
</section>
<section id="hacking" class="level3">
<h3 class="anchored" data-anchor-id="hacking">Hacking!</h3>
<p>We’ll work together in Zoom breakout rooms to make progress on our goals for the bulk of the hackathon. We will save our work in GitHub as Issues or Pull Requests. If the outcome isn’t a good fit for GitHub, we’ll create new topics in the <a href="https://jupyter.zulipchat.com/#narrow/channel/471314-geojupyter">#geojupyter Zulip channel</a>.</p>
</section>
<section id="sync" class="level3">
<h3 class="anchored" data-anchor-id="sync">Sync</h3>
<p>In the final moments, we’ll ask if anyone needs help or has exciting progress to share.</p>
</section>
</section>
<section id="thank-you" class="level2">
<h2 class="anchored" data-anchor-id="thank-you"><span class="emoji" data-emoji="bow">🙇</span> Thank you!</h2>
<p>We hope to see you and learn from you soon!</p>


</section>

 ]]></description>
  <category>Announcements</category>
  <guid>https://geojupyter.org/blog/20250129-announcing-geojupyter-hackathons/</guid>
  <pubDate>Wed, 29 Jan 2025 00:00:00 GMT</pubDate>
</item>
<item>
  <title>Introducing GeoJupyter</title>
  <dc:creator>Matt Fisher</dc:creator>
  <link>https://geojupyter.org/blog/20250108-introducing-geojupyter/</link>
  <description><![CDATA[ 




<section id="need" class="level2">
<h2 class="anchored" data-anchor-id="need"><span class="emoji" data-emoji="jigsaw">🧩</span> Need</h2>
<p><strong>We believe that geospatial data analysis and exploration should be free, open source, and accessible for everyone!</strong></p>
<p>Currently, a divide exists between two worlds: The desktop GIS world, in which QGIS and ArcGIS provide intuitive visualization-first interfaces to exploring data; and the programming-based GIS world which provides cutting-edge editing, reproducibility, and automated publishing experiences. While this is an oversimplified framing, it highlights contrasts to set the stage for GeoJupyter.</p>
<p>Between those two worlds, users of programming-based workflows face the daunting problem of a blank page and steep learning curves, while non-coders are missing out on the power of programming-based workflows to enable low-friction modular reuse, reproducibility, and publishing.</p>
</section>
<section id="vision" class="level2">
<h2 class="anchored" data-anchor-id="vision"><span class="emoji" data-emoji="telescope">🔭</span> Vision</h2>
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><img src="https://geojupyter.org/blog/20250108-introducing-geojupyter/let-our-powers-combine.jpg" class="img-fluid figure-img"></p>
<figcaption>An image referencing the 1990s childrens’ TV program “Captain Planet”. Depicts the “planeteers” combining their powers to summon… Captain Planet!</figcaption>
</figure>
</div>
<div class="center-quote">
<hr style="width:50%; margin: auto">
<p>GeoJupyter is an open and collaborative community-driven effort to reimagine <span class="jupyter-orange"><strong>geospatial interactive computing</strong></span> experiences for education, research, and industry.</p>
<p>We aim to combine the <strong>approachability</strong> and <strong>playfulness</strong> of desktop GIS tools, the <strong>flexibility</strong> and <strong>reproducibility</strong> of coding-driven GIS methods, and the <strong>collaborative</strong> and <strong>storytelling</strong> power of Jupyter to enable more researchers, educators, and learners to confidently engage with geospatial data.</p>
<hr style="width:50%; margin: auto">
</div>
<p>GeoJupyter will consist of a new generation of tools and enhancements to existing libraries supporting exploration of data about our planet. This includes tasks traditionally done with desktop GIS applications, but also analysis pipelines that go beyond typical GIS uses; supporting any dataset about our planet that has spatio-temporal structure, for example climate models or subsurface data acquired with remote sensing instruments.</p>
</section>
<section id="process" class="level2">
<h2 class="anchored" data-anchor-id="process"><span class="emoji" data-emoji="memo">📝</span> Process</h2>
<p>To achieve our goals, we will:</p>
<ul>
<li>Gather information about geospatial data practitioners’ workflows and points of pain or joy.</li>
<li>Establish new GeoJupyter community spaces and build new partnerships with Earth science and open source communities.</li>
<li>Develop sacrificial concepts and prototypes to fit our work to community needs.</li>
<li>Deliver high-quality software solutions, educational materials, and training sessions.</li>
</ul>
</section>
<section id="where-is-geojupyter-now" class="level2">
<h2 class="anchored" data-anchor-id="where-is-geojupyter-now"><span class="emoji" data-emoji="watch">⌚</span> Where is GeoJupyter now?</h2>
<p>We have established a <a href="https://jupyter.zulipchat.com/#narrow/channel/471314-geojupyter/topic/Welcome">community chat space on Zulip</a> and a <a href="../../calendar.html">community calendar</a>. We are currently scheduling our first series of community meetings, with many more to come.</p>
<p>Sponsored by the European Space Agency, <a href="https://blog.jupyter.org/jupytergis-d63b7adf9d0c">QuantStack is leading development of JupyterGIS</a> (<a href="https://github.com/geojupyter/jupytergis">GitHub</a>), a multi-player GIS environment for JupyterLab. We’re <a href="https://jupyter.zulipchat.com/#narrow/channel/471314-geojupyter/topic/.22Bouncing.22.20between.20JupyterGIS.20and.20a.20Jupyter.20Notebook">imagining new workflows</a>, and we need your creativity, knowledge, and skills!</p>
<p>We have completed over a dozen interviews targeting geospatial data practitioners from diverse backgrounds including education, data user support, Earth science, remote sensing, software engineering, and product development. Some themes we’ve preliminarily identified:</p>
<div style="margin-left: 20px; margin-right: 20px">
<div style="display: flex">
<p><span class="emoji-decoration-left"><span class="emoji" data-emoji="star_struck">🤩</span></span></p>
<p>It feels <em>amazing</em> to explore data, see a completed visualization, and use creativity to answer questions with geospatial data!</p>
</div>
<div style="display: flex">
<p><span class="emoji-decoration-left"><span class="emoji" data-emoji="confounded">😖</span></span></p>
<p>It can be time-consuming, finnicky, and frustrating to create visualizations and debug geospatial data, which is notoriously “quirky”.</p>
</div>
<div style="display: flex">
<p><span class="emoji-decoration-left"><span class="emoji" data-emoji="climbing">🧗</span></span></p>
<p>Learning geospatial concepts and programming is hard. Many learners benefit from immediate visual feedback.</p>
</div>
</div>
<p>We will follow up soon with a more comprehensive blog post about community insights.</p>
<p>For early development, we have narrowed our focus on the educational user: teachers and students. We will build partnerships with research education communities and university classrooms as early users who will shape GeoJupyter.</p>
<p>GeoJupyter contributors currently include <a href="https://quantstack.net/">QuantStack</a>, <a href="https://2i2c.org/">2i2c</a>, <a href="https://developmentseed.org/">Development Seed</a>, the <a href="https://dse.berkeley.edu/">Schmidt Center for Data Science and Environment</a>, members of the <a href="https://berkeley.edu">UC Berkeley</a> and other university communities, members of the <a href="https://science.nasa.gov/earth-science/">NASA Earth Science</a> community, and members of the <a href="https://jupyter.org/">Jupyter</a> community. Thank you all for your amazing contributions! <span class="emoji" data-emoji="bow">🙇</span></p>
</section>
<section id="how-you-can-get-involved" class="level2">
<h2 class="anchored" data-anchor-id="how-you-can-get-involved"><span class="emoji" data-emoji="index_pointing_at_the_viewer">🫵</span> How you can get involved</h2>
<section id="say-hello-and-join-the-discussion-on-zulip" class="level3">
<h3 class="anchored" data-anchor-id="say-hello-and-join-the-discussion-on-zulip"><span class="emoji" data-emoji="wave">👋</span> <a href="https://jupyter.zulipchat.com/#narrow/channel/471314-geojupyter/topic/Welcome">Say “hello” and join the discussion on Zulip</a>!</h3>
</section>
<section id="attend-community-events-on-our-calendar" class="level3">
<h3 class="anchored" data-anchor-id="attend-community-events-on-our-calendar"><span class="emoji" data-emoji="calendar">📆</span> <a href="../../calendar.html">Attend community events on our calendar</a>!</h3>
</section>
<section id="contribute-to-jupytergis" class="level3">
<h3 class="anchored" data-anchor-id="contribute-to-jupytergis"><span class="emoji" data-emoji="hammer_and_wrench">🛠️</span> <a href="https://github.com/geojupyter/jupytergis/">Contribute to JupyterGIS</a>!</h3>


</section>
</section>

 ]]></description>
  <category>Announcements</category>
  <guid>https://geojupyter.org/blog/20250108-introducing-geojupyter/</guid>
  <pubDate>Wed, 08 Jan 2025 00:00:00 GMT</pubDate>
</item>
<item>
  <title>Kickoff meeting</title>
  <dc:creator>Matt Fisher</dc:creator>
  <link>https://geojupyter.org/blog/20241030-kickoff/</link>
  <description><![CDATA[ 




<p>The first meeting for the GeoJupyter project.</p>
<section id="participants" class="level2">
<h2 class="anchored" data-anchor-id="participants">Participants</h2>
<ul>
<li><a href="https://github.com/cboettig">Carl Boettiger</a></li>
<li><a href="https://github.com/fperez">Fernando Pérez</a></li>
<li><a href="https://github.com/iamciera">Ciera Martinez</a></li>
<li><a href="https://github.com/kevkoy">Kevin Koy</a></li>
<li><a href="https://github.com/mfisher87">Matt Fisher</a></li>
</ul>
</section>
<section id="values" class="level2">
<h2 class="anchored" data-anchor-id="values">Values</h2>
<p>We brainstormed our values - not in priority order.</p>
<section id="computational" class="level3">
<h3 class="anchored" data-anchor-id="computational">Computational</h3>
<ul>
<li>Collaboration</li>
<li>Cloud-native data</li>
<li>ML/AI friendly</li>
<li>Reproducibility (scripting)</li>
<li>Client-side computing
<ul>
<li>Binder -&gt; JupyterLite?</li>
<li>DEMOCRATIZING!</li>
<li>See Capytale - high school teachers created the first WASM Jupyter. Serves 500k French high school students per year on two computers because everything is done client-side.</li>
</ul></li>
<li>Distributed computing</li>
</ul>
</section>
<section id="artistic-learning-playing-experiential" class="level3">
<h3 class="anchored" data-anchor-id="artistic-learning-playing-experiential">Artistic / learning / playing / experiential</h3>
<ul>
<li>Creativity and exploration</li>
<li>Visuals, storytelling, beauty (in exploration AND sharing/publishing)
<ul>
<li>Persistent view of the map! Shouldn’t have to scroll up and down the notebook to see the cool stuff!</li>
<li>Maps &amp; the stories they tell</li>
</ul></li>
<li>Playfulness</li>
</ul>
</section>
</section>
<section id="social-community-considerations" class="level2">
<h2 class="anchored" data-anchor-id="social-community-considerations">Social / community considerations</h2>
<ul>
<li>Recent challenge: How to invite new people into our Slack?
<ul>
<li>If we want to postpone a decision, we can just pay for those extra folks.</li>
<li>Problem remains. We need a long-term solution for the community.</li>
</ul></li>
<li>Some communities are saying “Screw it, we’ll use Discord”
<ul>
<li>It’s proprietary!</li>
<li>Conda-Forge and Apache Arrow on Zulip now.</li>
</ul></li>
<li>Short-term plan?
<ul>
<li>Create <code>#dse-geojupyter</code> on DSE Slack for DSE employees working on GeoJupyter
<ul>
<li>The <code>#jupyter-gis</code> channel can be more independent and free to address its needs</li>
</ul></li>
<li>We can adopt something in the short-term without worrying too much.
<ul>
<li>Once we don’t fit there anymore, because we’ve generated enough interest, we need to figure out how to scale communication!</li>
<li>The whole Jupyter project has a non-ideal communication setup. That’s not going to be solved in two weeks.</li>
<li>Being adopted by the Linux Foundation. Fernando stepping down from exec. council.</li>
<li>Maybe next year, Jupyter is ready to choose and we jump on whatever they have switched to.</li>
</ul></li>
</ul></li>
<li>How do we engage with the open source geospatial community?
<ul>
<li>Large community.</li>
<li>Be mindful, careful, of how we enter/interact with that community (we’re “parachuting” in with new ideas)</li>
<li>We want to make people happy and excited to work with us!</li>
<li>Identify our first users and serve them. Interview our community, with GIF’s help.</li>
<li>Framing: “We had a problem in our community, and we came up with this solution.”</li>
</ul></li>
</ul>
</section>
<section id="getting-started-ideas" class="level2">
<h2 class="anchored" data-anchor-id="getting-started-ideas">Getting started ideas</h2>
<ul>
<li>Set up interviews!</li>
<li>Work with Geospatial Innovation Facility to develop use cases to guide the development of the tool!</li>
<li>Quick-and-dirty taxonomy of existing open source tools. What are the toys in the toybox? Make some opinionated choices on our starting place.</li>
<li><strong>Want to have something to show at EGU Vienna in May 2025</strong>. AGU 2025, Fernando wants to be able to make noise (proposal in Spring for a Sunday workshop).</li>
<li>.github repo for landing page.</li>
<li>People want synchronous chat.
<ul>
<li>Slack / Discord / ?</li>
</ul></li>
<li>Decision record space!</li>
<li>GitHub Discussions: Slower paced, Jupyter settled on Issues and PRs. discourse.jupyter.org is the main other place. Chris Holdgraf is currently admin, but Fernando isn’t. Will create a new geojupyter category in discourse!</li>
<li>Create a GeoJupyter website!</li>
<li>Dig into JupyterGIS codebase.</li>
<li>DEADLINE: In 2 months, Fernando wants to know how I think JupyterGIS fits in GeoJupyter.
<ul>
<li>Talk w/ Anne Fouilloux with Simula - responsible for jupyterGIS user stories</li>
</ul></li>
<li>DEADLINE: 15th January; abstracts due for EGU! https://www.egu.eu/news/1165/call-for-abstracts-to-the-egu25-general-assembly-now-open/
<ul>
<li>Should have something ready to show in March.</li>
</ul></li>
<li>DEADLINE: Spring 2025; submit AGU Sunday workshop abstract.</li>
<li>DEADLINE: Spring 2025; propose AGU GeoJupyter session</li>
<li>Before EGU: Spring 2025; working meeting in Boulder, CO?</li>
<li>October 30th 2025: Funding proposal!
<ul>
<li>Fernando meeting with NSF Monday to pitch the idea for funding. No pressure on Matt for this at the moment!</li>
</ul></li>
<li>Half hour check-in every two weeks!</li>
<li>Another important community: <em>CryoCloud</em>! Work there! Share prototypes, get input!
<ul>
<li>Prioritize Openscapes and CryoCloud</li>
</ul></li>
<li>2i2c serves other NASA communities, they can help liaise</li>
<li>Eat our own dogfood ASAP!</li>
</ul>
<section id="tips-for-getting-started" class="level3">
<h3 class="anchored" data-anchor-id="tips-for-getting-started">Tips for getting started</h3>
<ul>
<li><em>Sacrificial concepts</em>
<ul>
<li>Sketch prototyping - draw a picture of the thing to drive iteration. Use real data! Real data enables people to better picture themselves using or analyzing the interface.</li>
</ul></li>
<li>Kevin’s advice: Start simple and analog!</li>
<li>Blank slate. The less we imitate existing products, the better.
<ul>
<li>Our architectural constraints and advantages are very different from existing products.</li>
<li>Don’t want to be painted into a box by legacy decisions.</li>
</ul></li>
<li>AI-readiness
<ul>
<li>Stephan Hoyer, Berkeley grad; now at Google. Gave a talk called “Neural CGM”. Machine learning powered short- and medium-range weather model. Making inroads in the context of climate predictions. Weather and climate models can be “nasty” code. E.g. UCAR’s ESM is 40-50 years old, million lines of Fortran, large maint. team.
<ul>
<li>Considering feeding this huge codebase into an LLM to translate it from Fortran to modern Python.</li>
<li>Neural CGM runs 100k - 1million times faster than the European weather model, which runs on thousand+ CPUs and takes a month.</li>
<li>Hard parts are offloaded to ML trained by decades of ERA5 data.</li>
</ul></li>
</ul></li>
<li>Inspired by this ^, we’re dealing with older tools like QGIS developed in a different era. We have the chance to develop something new in the modern context.
<ul>
<li>Kevin: LLMs can help with geography rather than GIS. “Could you use LLMs to digest geographic thought and theory before writing our own software to do it?”</li>
</ul></li>
</ul>
</section>
</section>
<section id="misc" class="level2">
<h2 class="anchored" data-anchor-id="misc">Misc</h2>
<ul>
<li>In our space, the output is almost always a map. Unlike Notebooks, where the output is more free-form / general</li>
<li><a href="https://ieeexplore.ieee.org/document/9387490">Jupyter: Thinking and Storytelling With Code and Data</a> - “how do we think about narrative in the context of computing in Jupyter”
<ul>
<li>Re-imagine the storytelling aspect; but the centerpiece of the story is the map!</li>
<li>Fernando: Read this! Talk to people!</li>
<li>See ArcGIS story maps
<ul>
<li>&lt;find.wilderness.org&gt;</li>
</ul></li>
</ul></li>
<li>How to combine/compose existing tools like Mapbox/MapLibre, QGIS, …?</li>
<li>Kevin: The analysis part is where people feel the need to fire up QGIS.</li>
<li>Brookie: Bi-directional interaction with map through code. A plugin or jupyter notebook cell, write code that affects the map. Attach an object to a code cell reference. E.g. draw a box on the map and then interact with the stuff inside the box in the code.
<ul>
<li>Fernando: Mayavi Python 3d viz library. More user-friendly API for C++ mapping tool &lt;___&gt;. Fluid interaction, e.g.&nbsp;select something on the map and assign it to variable <code>x</code>! Then you can act on <code>x</code> in your code. Map adapts when modifying <code>x</code></li>
<li><span class="emoji" data-emoji="star">⭐</span> CartoDB (now called Carto) had a neat trick for styling their online maps. Created a CartoCSS format. You write CSS to change the color of roads, line width, etc.
<ul>
<li>How to get people who can code a little (CSS, JSON) to learn a more modern way of working without them realizing it so much.</li>
</ul></li>
<li>Brookie: Imagining a <code>Map</code> object, instantiated. Has a bunch of autogenerated names that all begin with <code>_</code>. If you change one of those autogenerated names, e.g.&nbsp;to <code>"restaurants"</code>, you can do <code>map.restaurants</code>.
<ul>
<li>Like Kevin’s hack of reusing existing syntax</li>
<li>Andrew Bray: Deep in Quarto ecosystem, also cares deeply about storytelling. Showed Fernando some “scrollytelling” articles from NYT. Andrew is working on how to do that in Quarto!</li>
<li>Ed Tufte - Yale prof written classic books on data viz.&nbsp;One of his examples is Menard’s diagram on Napoleon’s march on Moscow. Andrew contacted Tufte to make a scrollytelling version of this map. Dynamically shows the same data over time.</li>
</ul></li>
</ul></li>
<li>AGU got funding from Sloan in 2023 for Notebooks Now. To bring notebooks into the AGU peer review publication process. Funding finished, but project incomplete.
<ul>
<li>Involves adding to MyST authoring pipeline.</li>
<li>Fernando very interested in seeing this.</li>
<li>Wants Jupyter as part of the official scientific record for publishing. Standard process.</li>
<li>Audited MyST/AGU work for openness. Carthic(?). CurveNote. Hope Carthic will provide more funding. (Sorry, this isn’t clear because I got behind on notetaking!)</li>
<li>AGU &amp; physics communities leading the way.</li>
<li>Want scrollytelling in MyST!</li>
</ul></li>
</ul>


</section>

 ]]></description>
  <category>Meeting notes</category>
  <guid>https://geojupyter.org/blog/20241030-kickoff/</guid>
  <pubDate>Wed, 30 Oct 2024 00:00:00 GMT</pubDate>
</item>
</channel>
</rss>
