<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>Jupyter Blog - open science</title><link href="https://jasongrout.github.io/medium-archive/pelican/" rel="alternate"/><link href="https://jasongrout.github.io/medium-archive/pelican/feeds/tag-open-science.atom.xml" rel="self"/><id>https://jasongrout.github.io/medium-archive/pelican/</id><updated>2026-04-20T18:04:00+00:00</updated><subtitle>The Project Jupyter blog: news, releases, and community stories, archived from blog.jupyter.org.</subtitle><entry><title>Exploring Petabytes of the Night Sky — Jupyter Notebooks at NOIRLab’s Astro Data Lab Science Platform</title><link href="https://jasongrout.github.io/medium-archive/pelican/posts/2026/exploring-petabytes-of-the-night-sky-jupyter-notebooks/" rel="alternate"/><published>2026-04-20T18:04:00+00:00</published><updated>2026-04-20T18:04:00+00:00</updated><author><name>Robert Nikutta</name></author><id>tag:jasongrout.github.io,2026-04-20:/medium-archive/pelican/posts/2026/exploring-petabytes-of-the-night-sky-jupyter-notebooks/</id><summary type="html">&lt;p&gt;By Robert Nikutta &amp;amp; Stéphanie Juneau (NSF NOIRLab)&lt;/p&gt;
</summary><content type="html">&lt;p&gt;&lt;em&gt;By Robert Nikutta &amp;amp; Stéphanie Juneau (NSF NOIRLab)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Imagine querying 420+ billion rows of astronomical catalog data — spanning 30 major sky surveys, observed over decades with telescopes on three continents — from a Jupyter notebook in your browser in seconds. No download. No HPC allocation request. No waiting.&lt;/p&gt;
&lt;p&gt;That is what 4,800+ astronomers in over 90 countries can do every day at the &lt;a href="https://datalab.noirlab.edu"&gt;Astro Data Lab&lt;/a&gt; science platform. Data Lab is operated by &lt;a href="https://noirlab.edu"&gt;NSF NOIRLab&lt;/a&gt;, the National Optical-Infrared Astronomy Research Laboratory, headquartered in Tucson, Arizona, with observatories in Arizona, Hawai’i, and Chile. Since its public launch in June 2017, Astro Data Lab has quietly become one of the largest deployments of Jupyter notebooks in professional science — and a case study in what happens when you bring the compute to the data instead of the other way around.&lt;/p&gt;
&lt;figure&gt;
&lt;img alt="World map of 2024 number of data queries at Astro Data Lab by country (log-scale color): 64.2 million queries from 72 countries that year." src="https://jasongrout.github.io/medium-archive/pelican/posts/2026/exploring-petabytes-of-the-night-sky-jupyter-notebooks/images/001-1_bllZBblDcMeLN2fxIS9PsA.webp" loading="lazy" data-body-image=""&gt;
&lt;figcaption&gt;World map of 2024 number of data queries at Astro Data Lab by country (log-scale color): 64.2 million queries from 72 countries that year.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 id="the-data-problem-astronomy-had-to-solve"&gt;The Data Problem Astronomy Had to Solve&lt;/h2&gt;
&lt;p&gt;Modern sky surveys are data machines. The &lt;a href="https://www.darkenergysurvey.org/"&gt;Dark Energy Survey&lt;/a&gt; cataloged 690 million objects. &lt;a href="https://www.esa.int/Science_Exploration/Space_Science/Gaia_overview"&gt;Gaia&lt;/a&gt; measured positions and motions for 1.8 billion stars. The &lt;a href="https://www.legacysurvey.org"&gt;DESI Legacy Surveys&lt;/a&gt; cover 20,000 square degrees, nearly half of the full sky, in three optical bands. And the upcoming Rubin Observatory’s &lt;a href="https://rubinobservatory.org/explore/how-rubin-works/lsst"&gt;Legacy Survey of Space and Time&lt;/a&gt; (LSST) will generate roughly 10 million transient alerts &lt;em&gt;per night&lt;/em&gt; starting later this year.&lt;/p&gt;
&lt;p&gt;Traditional astronomy workflows begin with downloading relevant data to a local computer and to use locally installed specialized software tools to process and analyze the data. However, downloading these catalogs to a local machine is now often physically impossible. A single survey’s measurements table can exceed the combined disk space of an entire research group. And even if you could download it, the computing resources needed to query it efficiently at scale requires infrastructure most astronomers don’t have.&lt;/p&gt;
&lt;p&gt;The answer the community converged on, like many industries dealing with big data: bring the compute to the data. Host the catalogs in databases, co-locate a computing environment next door, and give scientists a familiar interface to work in. That interface, increasingly, is a Jupyter notebook.&lt;/p&gt;
&lt;h2 id="astro-data-lab-jupyter-at-the-observatory"&gt;Astro Data Lab: Jupyter at the Observatory&lt;/h2&gt;
&lt;p&gt;Astro Data Lab was conceived in 2014 and went public in June 2017, originally built to support data releases from the Dark Energy Survey — a few terabytes of catalogs and tens of terabytes of images. We imagined a ceiling of roughly 500 users. We were wrong, in the best way.&lt;/p&gt;
&lt;p&gt;Today the platform hosts:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;About 420 billion catalog rows&lt;/strong&gt; across 30+ major astronomical surveys (DES, Legacy Surveys, DESI, NOIRLab Source Catalog, SDSS, Gaia, unWISE, SMASH, S-PLUS, VHS, 2MASS, and dozens more)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;31 million spectra&lt;/strong&gt; via SPARCL, our spectral access service (DESI DR1+EDR, SDSS/BOSS DR17)&lt;/li&gt;
&lt;li&gt;Petabytes of images, accessible through a &lt;a href="https://www.ivoa.net/documents/SIA/"&gt;Simple Image Access&lt;/a&gt; service and cutout API&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Over 4,800 registered users&lt;/strong&gt; from over 90 countries, who submit tens of millions of data queries each year&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Every registered user gets a persistent JupyterHub environment with the full astronomy Python stack pre-loaded — Astropy, NumPy, SciPy, Matplotlib, Pandas, Scikit-learn — and our own astro-datalab client library. The library provides core services, for instance auth and DB queries:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nn"&gt;dl&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;authClient&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;queryClient&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nn"&gt;getpass&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;getpass&lt;/span&gt;

&lt;span class="c1"&gt;# Log in&lt;/span&gt;
&lt;span class="n"&gt;token&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;authClient&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;login&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;input&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;username: &amp;quot;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="n"&gt;getpass&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;password: &amp;quot;&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;

&lt;span class="c1"&gt;# Query 10 objects from the NOIRLab Source Catalog near a sky position&lt;/span&gt;
&lt;span class="c1"&gt;# Right Ascension (RA) = 150.12 degrees&lt;/span&gt;
&lt;span class="c1"&gt;# Declination (Dec) = 2.21 degrees&lt;/span&gt;
&lt;span class="c1"&gt;# Search radius = 0.05 degrees&lt;/span&gt;
&lt;span class="c1"&gt;# q3c (Quad Tree Cube) is a spatial indexing scheme for Postgres&lt;/span&gt;
&lt;span class="c1"&gt;# gmag and rmag are the g-band and r-band magnitudes of objects&lt;/span&gt;
&lt;span class="c1"&gt;# in the NOIRLab Source Catalog Data Release 2, ‘object’ table.&lt;/span&gt;
&lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;queryClient&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;query&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="sd"&gt;&amp;quot;&amp;quot;&amp;quot;SELECT ra, dec, gmag, rmag FROM nsc_dr2.object&lt;/span&gt;
&lt;span class="sd"&gt;       WHERE q3c_radial_query(ra, dec, 150.12, 2.21, 0.05) LIMIT 10&amp;quot;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;fmt&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;pandas&amp;quot;&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;It’s as simple as that. The query runs on the database server next to the data; only the result set crosses the network.&lt;/p&gt;
&lt;h2 id="use-case-1-seeing-the-sky-inside-a-notebook-with-aladinlite"&gt;Use Case 1 — Seeing the Sky Inside a Notebook with AladinLite&lt;/h2&gt;
&lt;p&gt;One of the most immediate joys of working with astronomical data is visualization: not just numbers in a table, but &lt;em&gt;where things are in the sky&lt;/em&gt;, what the images look like, and how your query results relate to the underlying survey footprint.&lt;/p&gt;
&lt;p&gt;We’ve integrated &lt;a href="https://aladin.cds.unistra.fr/AladinLite/"&gt;AladinLite v3&lt;/a&gt; — the interactive sky atlas from Centre de Données Astronomiques de Strasbourg (CDS) — directly into the notebook environment via the &lt;a href="https://github.com/cds-astro/ipyaladin"&gt;ipyaladin&lt;/a&gt; widget. With a handful of lines, astronomers can embed a fully interactive sky viewer in a notebook cell or next to their notebook in a “sidecar”, and overlay their own data on top of real survey imagery:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nn"&gt;time&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nn"&gt;astropy&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;units&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;u&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nn"&gt;astropy.table&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Table&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nn"&gt;astropy.coordinates&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;SkyCoord&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nn"&gt;ipyaladin&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Aladin&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nn"&gt;sidecar&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Sidecar&lt;/span&gt;

&lt;span class="c1"&gt;# Instantiate the Aladin interactive sky viewer &lt;/span&gt;
&lt;span class="n"&gt;aladin&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Aladin&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;full_screen&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;True&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="n"&gt;Sidecar&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;title&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;aladin_output&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;anchor&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;split-right&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;display&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;aladin&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# globular cluster NGC 1851 (RA, Dec)&lt;/span&gt;
&lt;span class="n"&gt;aladin&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;target&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;SkyCoord&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;78.52809&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;u&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;deg&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;40.04656&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;u&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;deg&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;aladin&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;coo_frame&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;ICRSd&amp;quot;&lt;/span&gt;  &lt;span class="c1"&gt;# set coordinate frame to ICRS, angles in deg&lt;/span&gt;
&lt;span class="n"&gt;time&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sleep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  &lt;span class="c1"&gt;# race condition&lt;/span&gt;
&lt;span class="n"&gt;aladin&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;fov&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;0.4&lt;/span&gt;  &lt;span class="c1"&gt;# set field of view to 0.4 degrees&lt;/span&gt;

&lt;span class="c1"&gt;# Overlay catalog query results as circle markers&lt;/span&gt;
&lt;span class="n"&gt;t&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Table&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;from_pandas&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  &lt;span class="c1"&gt;# e.g., from a previous query around NGC 1851&lt;/span&gt;
&lt;span class="n"&gt;aladin&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;add_table&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;shape&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;circle&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;source_size&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;15&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;color&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;green&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;The result is a pannable, zoomable sky viewer — right in the notebook — with your query results overlaid as green circles on the actual sky image of a globular cluster (see figure below). Users can overlay MOCs (Multi-Order Coverage maps, which encode survey footprints), user-generated catalogs from a prior query, or any Virtual Observatory-standard data source.&lt;/p&gt;
&lt;p&gt;This capability turns what was once a static plot into an exploratory tool: zoom into a cluster, click on a source, cross-match on the fly. For students and scientists unfamiliar with a dataset, it is often the fastest path from “I have a list of objects” to “I understand where they are and what I’m looking at.”&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/astro-datalab/notebooks-latest/blob/master/04_HowTos/Aladin/ipyaladin_MOC.ipynb"&gt;AladinLite integration is now active in our notebook library&lt;/a&gt;, with full deployment into the new Data Lab Web Portal on the roadmap for later this year.&lt;/p&gt;
&lt;figure&gt;
&lt;img alt="AladinLite v3 sky viewer inside a Jupyter notebook, showing a globular cluster with catalog query results in the outskirts of the cluster overlaid as green circles." src="https://jasongrout.github.io/medium-archive/pelican/posts/2026/exploring-petabytes-of-the-night-sky-jupyter-notebooks/images/002-1_3kJd4UCGCp0IpTrcL7fxqA.webp" loading="lazy" data-body-image=""&gt;
&lt;figcaption&gt;&lt;a href="https://github.com/astro-datalab/notebooks-latest/blob/master/04_HowTos/Aladin/ipyaladin_globular_cluster.ipynb"&gt;&lt;em&gt;AladinLite v3 sky viewer inside a Jupyter notebook&lt;/em&gt;&lt;/a&gt;&lt;em&gt;, showing a globular cluster with catalog query results in the outskirts of the cluster overlaid as green circles.&lt;/em&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 id="use-case-2-stacking-galaxy-spectra-with-sparcl"&gt;Use Case 2 — Stacking Galaxy Spectra with SPARCL&lt;/h2&gt;
&lt;p&gt;Spectroscopy — measuring how much light a star or a galaxy emits at each wavelength — is one of astronomy’s most powerful tools. But individual spectra are often noisy. The signal-to-noise ratio of a single optical spectrum for a faint galaxy can be too low to measure the emission lines that encode star formation rate, gas chemical content (Oxygen, Nitrogen, etc.) or the even more subtle absorption lines that create small wiggles in the shape of the spectrum, yet encapsulate crucial information such as the mass and age of the stars making up a galaxy.&lt;/p&gt;
&lt;p&gt;One trick that astronomers have used for decades: combining or “stacking” spectra. Average hundreds of spectra together, and the noise level reduces while the signal builds up. What was invisible in a single spectrum becomes unmistakable in the stack. While the concept is simple, reading and manipulating large numbers of spectra can be time consuming or cumbersome.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://astrosparcl.datalab.noirlab.edu"&gt;SPARCL&lt;/a&gt; (SPectra Analysis and Retrievable Catalog Lab) makes this possible at scale directly in a notebook. With &lt;code&gt;sparclclient&lt;/code&gt;, users can currently search 31 million spectra by redshift range, target type, and survey, then retrieve flux arrays and wavelength grids ready for stacking:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nn"&gt;sparcl.client&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;SparclClient&lt;/span&gt;

&lt;span class="c1"&gt;# Instantiate the SPARCL client (connected to production server)&lt;/span&gt;
&lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;SparclClient&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="c1"&gt;# Find SDSS spectra of galaxies in a redshift slice 0.1&amp;lt;z&amp;lt;0.3&lt;/span&gt;
&lt;span class="n"&gt;found&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;find&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;outfields&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;sparcl_id&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;ra&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;dec&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;redshift&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;spectype&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="n"&gt;constraints&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;spectype&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;GALAXY&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
                 &lt;span class="s1"&gt;&amp;#39;redshift&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mf"&gt;0.1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;0.3&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
                 &lt;span class="s1"&gt;&amp;#39;data_release&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;SDSS-DR17&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;]},&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Retrieve flux, wavelength, and inverse-variance arrays&lt;/span&gt;
&lt;span class="n"&gt;retrieved&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;retrieve&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;found&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ids&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;include&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;flux&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;wavelength&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;ivar&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;In our &lt;a href="https://github.com/astro-datalab/notebooks-latest/blob/master/03_ScienceExamples/SpectralStacking/SpectralStacking_SDSS.ipynb"&gt;SpectralStacking_SDSS&lt;/a&gt; science example notebook, users first stack a small number of galaxy spectra (N=5) in eight bins of astrophysical color &lt;em&gt;g&lt;/em&gt;−&lt;em&gt;r&lt;/em&gt; (green and red filters), revealing trends from blue spectra with emission lines to red spectra with absorption lines but with noisy spectra. Then users stack hundreds of galaxy spectra for the same bins of color &lt;em&gt;g&lt;/em&gt;−&lt;em&gt;r&lt;/em&gt; and obtain much cleaner spectra where the small wiggles are now real astrophysical features and no longer buried in the noise.&lt;/p&gt;
&lt;p&gt;The spectral rainbows below — N=5 then N=200 stacked galaxy spectra color-coded in bins of astrophysical color &lt;em&gt;g&lt;/em&gt;−&lt;em&gt;r&lt;/em&gt; — are each a single output cell from this notebook, generated entirely within the Data Lab environment.&lt;/p&gt;
&lt;figure&gt;
&lt;img alt="SPARCL spectral rainbows: top panel shows N=5 galaxy spectra stacked and color-coded by g−r color, spanning wavelengths 3750–6450 Ångstrom. Bottom panel shows the same exercise but with N=200 galaxy spectra per bin, greatly enhancing the signal-to-noise ratio." src="https://jasongrout.github.io/medium-archive/pelican/posts/2026/exploring-petabytes-of-the-night-sky-jupyter-notebooks/images/003-1_NZpW8VO92rpjjqyR47BywQ.webp" loading="lazy" data-body-image=""&gt;
&lt;figcaption&gt;SPARCL spectral rainbows: top panel shows N=5 galaxy spectra stacked and color-coded by g−r color, spanning wavelengths 3750–6450 Ångstrom. Bottom panel shows the same exercise but with N=200 galaxy spectra per bin, greatly enhancing the signal-to-noise ratio.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 id="use-case-3-variable-stars-and-the-coming-flood-of-time-domain-data"&gt;Use Case 3 — Variable Stars and the Coming Flood of Time-Domain Data&lt;/h2&gt;
&lt;p&gt;Not all astronomical data is a static snapshot of the sky. Many of the most scientifically rich phenomena — pulsating stars, transiting exoplanets, exploding supernovae, gravitational lensing events — reveal themselves through &lt;em&gt;change&lt;/em&gt; over time.&lt;/p&gt;
&lt;p&gt;Among the most useful calibration tools in astrophysics are RR Lyrae stars: old, low-mass stars that pulsate with periods of 0.2–1 day and a brightness variation that traces their distance. Finding and characterizing them across millions of square degrees of sky requires querying multi-epoch photometry catalogs, computing period statistics, and folding light curves — all tasks that fit naturally in a notebook workflow.&lt;/p&gt;
&lt;p&gt;Our &lt;a href="https://github.com/astro-datalab/notebooks-latest/blob/master/03_ScienceExamples/TimeSeriesAnalysisRrLyraeStar/TimeSeriesAnalysisOfRrLyraeStar.ipynb"&gt;TimeSeriesAnalysisRrLyraeStar&lt;/a&gt; notebook demonstrates the full pipeline: query the SMASH DR2 catalog for stars with high photometric variability, run a Lomb-Scargle periodogram on the light curve, identify the dominant period, and phase-fold the observations to reveal the characteristic sawtooth pulsation profile:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nn"&gt;astropy.timeseries&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;LombScargle&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nn"&gt;numpy&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;as&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nn"&gt;np&lt;/span&gt;

&lt;span class="n"&gt;ls&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;LombScargle&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  &lt;span class="c1"&gt;# time and magnitude from a previous query&lt;/span&gt;
&lt;span class="n"&gt;frequency&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;power&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;ls&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;autopower&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;period&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;1.&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;frequency&lt;/span&gt; &lt;span class="c1"&gt;# period is the inverse of frequency&lt;/span&gt;
&lt;span class="n"&gt;best_period&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;period&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;argmax&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;power&lt;/span&gt;&lt;span class="p"&gt;)]&lt;/span&gt;
&lt;span class="n"&gt;phase&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="n"&gt;best_period&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;  &lt;span class="c1"&gt;# folded timeseries = light curve&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;The resulting phase-folded light curve shown in the figure below is clean, precise, and immediately recognizable to any variable-star astronomer — produced entirely from archival survey data without a single new observation.&lt;/p&gt;
&lt;p&gt;This kind of workflow is also a proving ground for the upcoming &lt;a href="https://rubinobservatory.org/"&gt;Vera C. Rubin Observatory&lt;/a&gt;’s &lt;a href="https://rubinobservatory.org/explore/how-rubin-works/lsst"&gt;Legacy Survey of Space and Time&lt;/a&gt; (LSST). When Rubin begins operations and delivers 10 million nightly alerts, the only workflows that will scale are ones already designed to run against large databases or specialized file systems, in shared computing environments, with notebook-native tooling. Astro Data Lab users are building those workflows today.&lt;/p&gt;
&lt;figure&gt;
&lt;img alt="Phase-folded RR Lyrae light curve from the TimeSeriesAnalysisRrLyraeStar notebook, showing characteristic sawtooth pulsation with a 0.65 day period." src="https://jasongrout.github.io/medium-archive/pelican/posts/2026/exploring-petabytes-of-the-night-sky-jupyter-notebooks/images/004-1_JDuoMo_2SgPJ-b_md9nslg.webp" loading="lazy" data-body-image=""&gt;
&lt;figcaption&gt;Phase-folded RR Lyrae light curve from the TimeSeriesAnalysisRrLyraeStar notebook, showing characteristic sawtooth pulsation with a 0.65 day period.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 id="the-notebook-ecosystem"&gt;The Notebook Ecosystem&lt;/h2&gt;
&lt;p&gt;The three use cases above are drawn from our library of &lt;strong&gt;80+ open-source Jupyter notebooks&lt;/strong&gt; at &lt;a href="https://github.com/astro-datalab/notebooks-latest"&gt;github.com/astro-datalab/notebooks-latest&lt;/a&gt;. The library is organized into six sections:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;Directory                      Contents
---------------------------------------------------------------------------
01_GettingStartedWithDataLab/  Authentication, dataset discovery, first
                               queries

02_DataAccessOverview/         More advanced queries, image searches, etc.

03_ScienceExamples/            Many complete science cases (stellar
                               streams, dwarf galaxies, large-scale
                               structure, SED fitting, ...)

04_HowTos/                     Service-specific tutorials (SPARCL, SIA
                               image cutouts, cross-matching, file storage)

05_Contrib/                    Community-contributed notebooks (ANTARES
                               alert broker, user science cases, etc.)

06_EPO/                        Education &amp;amp; public outreach (Teen Astronomy
                               Cafe, La Serena School for Data Science)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;All notebooks are open-source and community contributions are welcome via pull request. We use them as living teaching materials in workshops at Astronomical Data Analysis Software &amp;amp; Systems (ADASS) and American Astronomical Society (AAS) conferences, summer schools, and university courses around the world. We have also recently translated most of our notebooks to the &lt;a href="https://github.com/astro-datalab/notebooks-latest-es"&gt;Spanish language&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In the coming months we will launch a &lt;strong&gt;tagged, searchable notebook gallery&lt;/strong&gt; — filterable by science topic, &lt;a href="https://astrothesaurus.org/"&gt;Unified Astronomy Thesaurus&lt;/a&gt; (UAT) keywords, target audience, and difficulty level. The pilot framework was developed by two summer students working with the team.&lt;/p&gt;
&lt;figure&gt;
&lt;img alt="Footprints of 24 sky survey datasets hosted at Astro Data Lab. This montage shows the wide variety of astronomical surveys, with some that cover the full sky, others focusing on the Milky Way (central plane), and yet others studying the extragalactic regions beyond the Milky Way. We ensure that each survey is represented in at least one of our example notebooks." src="https://jasongrout.github.io/medium-archive/pelican/posts/2026/exploring-petabytes-of-the-night-sky-jupyter-notebooks/images/005-1_SvI9n6mkoQ5th35aClATWQ.webp" loading="lazy" data-body-image=""&gt;
&lt;figcaption&gt;Footprints of 24 sky survey datasets hosted at Astro Data Lab. This montage shows the wide variety of astronomical surveys, with some that cover the full sky, others focusing on the Milky Way (central plane), and yet others studying the extragalactic regions beyond the Milky Way. We ensure that each survey is represented in at least one of our &lt;a href="https://github.com/astro-datalab/notebooks-latest/"&gt;&lt;em&gt;example notebooks&lt;/em&gt;&lt;/a&gt;.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 id="looking-ahead"&gt;Looking Ahead&lt;/h2&gt;
&lt;p&gt;Nine years in, the Astro Data Lab science platform is evolving on several fronts simultaneously.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;GPU computing.&lt;/strong&gt; We are deploying a GPU node, which will be connected to the Jupyter notebook service. This opens deep learning and large-scale ML workflows in the same notebook environment where the data lives.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;An AI assistant.&lt;/strong&gt; Our first-ever user survey, conducted in September 2025, ranked an in-notebook AI assistant as one of the top requested features. We are actively exploring what responsible, science-aware AI assistance looks like in this context — helping users construct SQL/ADQL queries, navigate datasets, and debug notebook code, without hallucinating catalog column names. jupyter-ai might come in very handy here.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;New integrated Web Portal.&lt;/strong&gt; Our Data Explorer — an integrated web interface combining catalog browsing, query execution, image cutouts, spectral search, and job status monitoring — was rolled out last year. Some of the next milestones include integration of AladinLite into the portal, bringing the sky-visualization capability described above out of the notebook and into the browser-native interface, and a new integrated positional cross-matching service.&lt;/p&gt;
&lt;h2 id="try-it"&gt;Try It&lt;/h2&gt;
&lt;p&gt;The full notebook library is open-source: &lt;a href="https://github.com/astro-datalab/notebooks-latest/"&gt;github.com/astro-datalab/notebooks-latest&lt;/a&gt;. Community notebook contributions are welcome — see &lt;a href="https://github.com/astro-datalab/notebooks-latest/CONTRIBUTING.md"&gt;CONTRIBUTING.md&lt;/a&gt; in the repository. You can also run all notebooks locally, after installing the Data Lab command-line client and Python module: &lt;code&gt;pip install astro-datalab&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Astro Data Lab also offers a JupyterLab environment as a service to the broad astronomy community — students, researchers, educators, and citizen scientists. &lt;a href="https://datalab.noirlab.edu/account/register/"&gt;Registration&lt;/a&gt; takes just a moment at &lt;a href="https://datalab.noirlab.edu"&gt;datalab.noirlab.edu&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Questions and feedback: &lt;a href="mailto:datalab@noirlab.edu"&gt;datalab@noirlab.edu&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;a href="mailto:robert.nikutta@noirlab.edu"&gt;&lt;em&gt;Robert Nikutta&lt;/em&gt;&lt;/a&gt; &lt;em&gt;is a scientist at NSF NOIRLab’s Community Science and Data Center, and lead of the Astro Data Lab science platform.&lt;/em&gt; &lt;a href="mailto:stephanie.juneau@noirlab.edu"&gt;&lt;em&gt;Stéphanie Juneau&lt;/em&gt;&lt;/a&gt; &lt;em&gt;is an associate astronomer at CSDC and lead of the SPARCL spectroscopy initiative. The platform is the work of the full&lt;/em&gt; &lt;a href="https://datalab.noirlab.edu/about/people"&gt;&lt;em&gt;Astro Data Lab team&lt;/em&gt;&lt;/a&gt;&lt;em&gt;, past and present.&lt;/em&gt;&lt;/p&gt;
</content><category term="open science"/><category term="science"/></entry><entry><title>Jupyter recognized as “Champion of Open Science” by U.S. White House</title><link href="https://jasongrout.github.io/medium-archive/pelican/posts/2024/jupyter-recognized-as-champion-of-open-science-by-u-s/" rel="alternate"/><published>2024-05-07T20:51:00+00:00</published><updated>2024-07-09T16:36:00+00:00</updated><author><name>Jason Grout</name></author><id>tag:jasongrout.github.io,2024-05-07:/medium-archive/pelican/posts/2024/jupyter-recognized-as-champion-of-open-science-by-u-s/</id><summary type="html">&lt;p&gt;Jupyter is recognized as a “Champion of Open Science” by the United States White House Office of Science and Technology Policy, in…&lt;/p&gt;
</summary><content type="html">&lt;p&gt;Jupyter is &lt;a href="https://www.whitehouse.gov/ostp/news-updates/2024/03/21/white-house-office-of-science-technology-policy-announces-year-of-open-science-recognition-challenge-winners/"&gt;recognized&lt;/a&gt; as a “Champion of Open Science” by the United States White House Office of Science and Technology Policy, in celebration of 2023 being the &lt;a href="https://open.science.gov/"&gt;Year of Open Science&lt;/a&gt;. For more information, see the &lt;a href="https://www.whitehouse.gov/ostp/news-updates/2024/03/21/white-house-office-of-science-technology-policy-announces-year-of-open-science-recognition-challenge-winners/"&gt;White House press release&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This recognition honors the large group of contributors, users, and organizations that have made Jupyter what it is today. More specifically, we, the Project Jupyter Executive Council, lists and thanks here the current (as of December 2023) and previous members of the following Jupyter leadership groups: Executive Council, Software Steering Council, Software Subproject Councils, Working Groups, Standing Committees, Distinguished Contributors, and the former Jupyter Steering Council. (If there is someone in these groups that we accidentally missed in the list below, please let us know.)&lt;/p&gt;
&lt;h3 id="project-leaders-and-distinguished-contributors-alphabetical-by-last-name"&gt;Project leaders and distinguished contributors (alphabetical by last name)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Safia Abdalla&lt;/li&gt;
&lt;li&gt;Damián Avila&lt;/li&gt;
&lt;li&gt;Lorena A. Barba&lt;/li&gt;
&lt;li&gt;Kevin Bates&lt;/li&gt;
&lt;li&gt;Mehmet Bektas&lt;/li&gt;
&lt;li&gt;Douglas Blank&lt;/li&gt;
&lt;li&gt;Nicholas Bollweg&lt;/li&gt;
&lt;li&gt;Alex Bozarth&lt;/li&gt;
&lt;li&gt;Maarten Breddels&lt;/li&gt;
&lt;li&gt;Nicolas Brichet&lt;/li&gt;
&lt;li&gt;David Brochart&lt;/li&gt;
&lt;li&gt;Matthias Bussonnier&lt;/li&gt;
&lt;li&gt;Eric Charles&lt;/li&gt;
&lt;li&gt;S. Chris Colbert&lt;/li&gt;
&lt;li&gt;Frédéric Collonval&lt;/li&gt;
&lt;li&gt;Sylvain Corlay&lt;/li&gt;
&lt;li&gt;Martha Cryan&lt;/li&gt;
&lt;li&gt;Carlos Córdoba&lt;/li&gt;
&lt;li&gt;Itay Dafna&lt;/li&gt;
&lt;li&gt;Afshin Darian&lt;/li&gt;
&lt;li&gt;Jacob Diamond-Reivich&lt;/li&gt;
&lt;li&gt;Georgiana Dolocan&lt;/li&gt;
&lt;li&gt;R Ely&lt;/li&gt;
&lt;li&gt;Tony Fast&lt;/li&gt;
&lt;li&gt;Vidar T. Fauske&lt;/li&gt;
&lt;li&gt;Sharan Foga&lt;/li&gt;
&lt;li&gt;Jessica Zosa Forde&lt;/li&gt;
&lt;li&gt;Gabriel Fouasnon&lt;/li&gt;
&lt;li&gt;Jonathan Frederic&lt;/li&gt;
&lt;li&gt;Eric Gentry&lt;/li&gt;
&lt;li&gt;Tim George&lt;/li&gt;
&lt;li&gt;Sarah Gibson&lt;/li&gt;
&lt;li&gt;Kevin Goldsmith&lt;/li&gt;
&lt;li&gt;Rahul Goyal&lt;/li&gt;
&lt;li&gt;Brian Granger&lt;/li&gt;
&lt;li&gt;Jason Grout&lt;/li&gt;
&lt;li&gt;Jessica Hamrick&lt;/li&gt;
&lt;li&gt;Tim Head&lt;/li&gt;
&lt;li&gt;Lindsey Heagy&lt;/li&gt;
&lt;li&gt;Carlos Herrero&lt;/li&gt;
&lt;li&gt;Chris Holdgraf&lt;/li&gt;
&lt;li&gt;Andrii Ieroshenko&lt;/li&gt;
&lt;li&gt;Paul Ivanov&lt;/li&gt;
&lt;li&gt;Piyush Jain&lt;/li&gt;
&lt;li&gt;Lucy Jimenez&lt;/li&gt;
&lt;li&gt;Kyle Kelley&lt;/li&gt;
&lt;li&gt;Max C Klein&lt;/li&gt;
&lt;li&gt;Thomas Kluyver&lt;/li&gt;
&lt;li&gt;Michał Krassowski&lt;/li&gt;
&lt;li&gt;Simon Li&lt;/li&gt;
&lt;li&gt;Ryan Lovett&lt;/li&gt;
&lt;li&gt;Joe Lucas&lt;/li&gt;
&lt;li&gt;Johan Mabille&lt;/li&gt;
&lt;li&gt;Grant Nestor&lt;/li&gt;
&lt;li&gt;Cameron Oelsen&lt;/li&gt;
&lt;li&gt;M Pacer&lt;/li&gt;
&lt;li&gt;Yuvi Panda&lt;/li&gt;
&lt;li&gt;Peter Parente&lt;/li&gt;
&lt;li&gt;Fernando Pérez&lt;/li&gt;
&lt;li&gt;Isabela Presedo-Floyd&lt;/li&gt;
&lt;li&gt;David Qiu&lt;/li&gt;
&lt;li&gt;Min Ragan-Kelley&lt;/li&gt;
&lt;li&gt;Martin Renou&lt;/li&gt;
&lt;li&gt;Luciano Resende&lt;/li&gt;
&lt;li&gt;Rosio Reyes&lt;/li&gt;
&lt;li&gt;Ian Rose&lt;/li&gt;
&lt;li&gt;Ana Ruvalcaba&lt;/li&gt;
&lt;li&gt;Zach Sailer&lt;/li&gt;
&lt;li&gt;Ayaz Salikhov&lt;/li&gt;
&lt;li&gt;Matthew Seal&lt;/li&gt;
&lt;li&gt;Saul Shanabrook&lt;/li&gt;
&lt;li&gt;Steve Silvester&lt;/li&gt;
&lt;li&gt;William Stein&lt;/li&gt;
&lt;li&gt;Erik Sundell&lt;/li&gt;
&lt;li&gt;Nicolas Thiéry&lt;/li&gt;
&lt;li&gt;Rollin Thomas&lt;/li&gt;
&lt;li&gt;Jeremy Tuloup&lt;/li&gt;
&lt;li&gt;Rick Wagner&lt;/li&gt;
&lt;li&gt;Mariko Wakabayashi&lt;/li&gt;
&lt;li&gt;Jason Weill&lt;/li&gt;
&lt;li&gt;Carol Willing&lt;/li&gt;
&lt;li&gt;Jessica Xu&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Additionally, we’d like to thank the following organizations that were directly involved in the work (other than funding agencies) in terms of staff or other significant resources to directly support the development of Project Jupyter.&lt;/p&gt;
&lt;h3 id="organizations-alphabetical"&gt;Organizations (alphabetical)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Amazon Web Services&lt;/li&gt;
&lt;li&gt;Anaconda&lt;/li&gt;
&lt;li&gt;Bloomberg&lt;/li&gt;
&lt;li&gt;California Polytechnic State University, San Luis Obispo&lt;/li&gt;
&lt;li&gt;Databricks&lt;/li&gt;
&lt;li&gt;Lawrence Berkeley National Laboratory&lt;/li&gt;
&lt;li&gt;MongoDB&lt;/li&gt;
&lt;li&gt;QuanSight&lt;/li&gt;
&lt;li&gt;QuantStack&lt;/li&gt;
&lt;li&gt;Simula Research Lab&lt;/li&gt;
&lt;li&gt;Two Sigma&lt;/li&gt;
&lt;li&gt;University of California, Berkeley&lt;/li&gt;
&lt;/ul&gt;
</content><category term="open science"/></entry><entry><title>Curvenote joins the mybinder.org federation</title><link href="https://jasongrout.github.io/medium-archive/pelican/posts/2024/curvenote-joins-the-mybinder-org-federation/" rel="alternate"/><published>2024-02-22T16:19:00+00:00</published><updated>2024-02-22T16:19:00+00:00</updated><author><name>Steve Purves</name></author><id>tag:jasongrout.github.io,2024-02-22:/medium-archive/pelican/posts/2024/curvenote-joins-the-mybinder-org-federation/</id><summary type="html">&lt;p&gt;Curvenote is now a part of the mybinder.org federation. By hosting a BinderHub instance running on the company’s infrastructure, additional…&lt;/p&gt;
</summary><content type="html">&lt;p&gt;Curvenote is now a part of the mybinder.org federation. By hosting a BinderHub instance running on the company’s infrastructure, additional capacity is available on the &lt;a href="https://mybinder.org"&gt;https://mybinder.org&lt;/a&gt; service.&lt;/p&gt;
&lt;figure&gt;
&lt;img alt="curvenote.com/for/journals" src="https://jasongrout.github.io/medium-archive/pelican/posts/2024/curvenote-joins-the-mybinder-org-federation/images/001-0_4FQGtOrs8XWEQ75G.webp" loading="lazy" data-body-image=""&gt;
&lt;figcaption&gt;&lt;a href="https://curvenote.com/for/journals"&gt;curvenote.com/for/journals&lt;/a&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;The mybinder.org project provides a critical, free public service for scientists, researchers and educators worldwide. The ability to spin up a Jupyter server to run someone’s research code or run a class without local configuration is something that many academics and educators rely on.&lt;/p&gt;
&lt;p&gt;Mybinder.org runs on a set of open source software components and standards, that not only powers the service but that also allows us to make solid steps forward in reproducibility in scientific research, namely &lt;a href="https://repo2docker.readthedocs.io/en/latest/specification.html"&gt;REES&lt;/a&gt; and open source software components (like &lt;a href="https://github.com/jupyterhub/repo2docker"&gt;repo2docker&lt;/a&gt;) .&lt;/p&gt;
&lt;p&gt;This is something we’re keen to shout about as Curvenote runs numerous small scale, independent, BinderHubs to power its journal infrastructure for &lt;a href="https://curvenote.com/for/journals"&gt;notebook based publishing for reproducible scientific journals&lt;/a&gt; with BinderHub, Jupyter and MyST Markdown (&lt;a href="https://mystmd.org"&gt;https://mystmd.org&lt;/a&gt;) being important components of that.&lt;/p&gt;
&lt;p&gt;Over the last few months a lot of work has gone into bringing up the Curvenote BinderHub instance on AWS. This is mainly because in the process, the AWS workflow based deployment has been pushed forward by &lt;a href="https://www.linkedin.com/in/1simon/"&gt;Simon Li&lt;/a&gt; (&lt;a href="https://github.com/manics"&gt;@manics&lt;/a&gt;, University of Dundee, &lt;a href="https://jupyterhub-team-compass.readthedocs.io/en/latest/team/index.html#jupyterhub-team"&gt;JupyterHub Core Team&lt;/a&gt;), solving many previous roadblocks around EKS (Elastic Kubernetes Service) usage and paving the way for easier future AWS based deployments (watch out for a future post from Simon with all the technical details).&lt;/p&gt;
&lt;p&gt;It’s been great to collaborate with Simon during that time and get exposure to the details of BinderHub deployment on AWS.&lt;/p&gt;
&lt;p&gt;The mybinder.org service makes a significant positive impact on public education, science and research. This impact is directly supported by the volunteer time of the BinderHub core team and the federation member organizations. Curvenote’s instance adds capacity to the service and a broader group of organizations contributing to the organization would lead to a more resilient public service, that is less prone to disruption when a single federation member leaves. If your organization has the resources to run and maintain a BinderHub, or makes heavy use of the mybinder.org service, encourage your organizations to run an instance and &lt;a href="https://mybinder.readthedocs.io/en/latest/about/federation.html"&gt;join the federation&lt;/a&gt;.&lt;/p&gt;
</content><category term="Binder"/><category term="open science"/></entry><entry><title>JupyterCon 2023 is just around the corner, and it promises to be an exciting and action-packed…</title><link href="https://jasongrout.github.io/medium-archive/pelican/posts/2023/jupytercon-2023-early-bird-passes-still-available-and/" rel="alternate"/><published>2023-02-09T23:43:00+00:00</published><updated>2023-02-09T23:43:00+00:00</updated><author><name>Gayle Ollington</name></author><id>tag:jasongrout.github.io,2023-02-09:/medium-archive/pelican/posts/2023/jupytercon-2023-early-bird-passes-still-available-and/</id><summary type="html">&lt;p&gt;The three-day conference will be packed with talks, tutorials, and a full schedule of community events. From May 10th to May 12th…&lt;/p&gt;
</summary><content type="html">&lt;p&gt;&lt;img src="https://jasongrout.github.io/medium-archive/pelican/posts/2023/jupytercon-2023-early-bird-passes-still-available-and/images/001-1_Z4u6ayzHYFz5ljFqlfmLFQ.jpeg" alt="" loading="lazy" data-body-image=""&gt;&lt;/p&gt;
&lt;p&gt;JupyterCon 2023 is just around the corner, and it promises to be an exciting and action-packed event that you won’t want to miss. With a lineup of world-renowned keynote speakers, including Alyssa Goodman, Paul Romer, Craig Peters, and Cory Gwin, this year’s conference is set to be a true highlight of the Jupyter community.&lt;/p&gt;
&lt;p&gt;The three-day conference will be packed with talks, tutorials, and a full schedule of community events. From May 10th to May 12th, attendees will have the chance to hear from some of the brightest minds in the field and engage in discussions with like-minded individuals from around the world.&lt;/p&gt;
&lt;p&gt;But that’s not all. The conference will be held at the largest science museum in Europe, providing attendees with a truly unique and immersive experience. And, to add to the excitement, two days of sprints will follow the conference from May 13th to May 14th. This is a fantastic opportunity for attendees to work together on new projects, share their knowledge and skills, and collaborate with other Jupyter enthusiasts.&lt;/p&gt;
&lt;p&gt;If you’re thinking of attending JupyterCon 2023, now is the time to act. Early bird passes are still available and provide substantial savings, so make sure to grab your pass before the full price kicks in on March 1st. In addition to individual and corporate passes, there are also economically priced student passes available. Please note, a valid student ID will be required to pick up your student pass at the conference.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.jupytercon.com/tickets"&gt;https://www.jupytercon.com/tickets&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;At JupyterCon, diversity is a priority, and NumFOCUS and the JupyterCon team believe that an inclusive community is key to success. To help foster this environment, financial aid and scholarship opportunities are available for those who need it. There are two types of financial aid grants available: a free ticket, which includes access to all scheduled events during the conference, and one for travel and accommodation costs, which will partially cover the costs of getting to and staying at the conference. To apply for these scholarships, visit &lt;a href="https://www.jupytercon.com/scholarships"&gt;jupytercon.com and submit your application&lt;/a&gt; before the March 3rd deadline.&lt;/p&gt;
&lt;p&gt;Stay tuned for the final schedule, which will be released soon, and get ready for a fantastic few days at JupyterCon 2023. With so much happening at this year’s conference, it promises to be an unforgettable experience that you won’t want to miss.&lt;/p&gt;
</content><category term="community"/><category term="events"/><category term="JupyterCon"/><category term="open science"/></entry><entry><title>Jupyter meets the Earth: EarthCube Community Meeting</title><link href="https://jasongrout.github.io/medium-archive/pelican/posts/2020/jupyter-meets-the-earth-earthcube-community-meeting/" rel="alternate"/><published>2020-08-17T19:42:00+00:00</published><updated>2020-09-11T00:32:00+00:00</updated><author><name>Lindsey Heagy</name></author><id>tag:jasongrout.github.io,2020-08-17:/medium-archive/pelican/posts/2020/jupyter-meets-the-earth-earthcube-community-meeting/</id><summary type="html">&lt;p&gt;Summary of the EarthCube community meeting on July 27, 2020&lt;/p&gt;
</summary><content type="html">&lt;p&gt;&lt;img src="https://jasongrout.github.io/medium-archive/pelican/posts/2020/jupyter-meets-the-earth-earthcube-community-meeting/images/001-0_h1CnyqyQk9K9crjW.jpg" alt="" loading="lazy" data-body-image=""&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;By: Lindsey Heagy, Fernando Pérez, Joe Hamman and the Jupyter meets the Earth team&lt;/em&gt; (cross-posted on the &lt;a href="https://medium.com/pangeo/jupyter-meets-the-earth-earthcube-community-meeting-ab32f5c91caf"&gt;Pangeo Blog&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;As a part of the &lt;a href="https://www.earthcube.org/EC2020"&gt;2020 EarthCube annual meeting&lt;/a&gt;, we held a &lt;a href="/posts/2019/jupyter-meets-the-earth/"&gt;&lt;em&gt;Jupyter meets the Earth&lt;/em&gt;&lt;/a&gt; community discussion session on July 27. The Jupyter meets the Earth project is an EarthCube funded effort that combines research use cases in geosciences with technical developments within the Jupyter and Pangeo ecosystems. In this model of equal partners, scientific questions help drive software infrastructure development, and new technologies expand the horizons of viable research. This online workshop was an opportunity to gather members of the community, welcome newcomers, provide updates on the Jupyter and Pangeo ecosystems, and have time for discussion.&lt;/p&gt;
&lt;p&gt;The goals for the meeting were to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Provide an overview of the Jupyter &amp;amp; Pangeo ecosystems for researchers from the EarthCube community.&lt;/li&gt;
&lt;li&gt;Outline avenues for getting involved.&lt;/li&gt;
&lt;li&gt;Gather input for what advancements would best serve your research needs.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Over 100 participants registered, and we had contributions from 9 speakers. The meeting was a mix of presentations and Q&amp;amp;A from the community. The full recording of the meeting is available on &lt;a href="https://youtu.be/Zj3Gm4LNfwo"&gt;youtube&lt;/a&gt;, and we encourage continued discussion on the &lt;a href="https://discourse.pangeo.io/t/jupyter-meets-the-earth-earthcube-meeting-july-27/689"&gt;associated discourse post&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="presentations-google-drive-folder"&gt;Presentations (&lt;a href="https://drive.google.com/drive/folders/1lyIJcqHKqhstrnQU5ZWEgSsTRbVjpkZn?usp=sharing"&gt;google drive folder&lt;/a&gt;)&lt;/h2&gt;
&lt;p&gt;Fernando Pérez (&lt;a href="https://docs.google.com/presentation/d/1oR-LmqSkUsFUZBWH4qz1TDnRzd2oWHxUXgYxqjUb3LY/edit?usp=sharing"&gt;slides&lt;/a&gt;) started off the meeting by introducing the &lt;em&gt;Jupyter meets the Earth&lt;/em&gt; project — an effort aimed at driving forward technological developments in the Jupyter and Pangeo ecosystems in partnership with researchers in the geosciences. The motivation is to advance research and the software that supports it by combining domain expertise with methods in data science, software &amp;amp; data engineering practices. He provided an overview of Project Jupyter, highlighting the interplay between software and content, services, standards, community and governance that is necessary for broad-impact scientific open source software projects. He presented the extensible &lt;a href="https://jupyterlab.readthedocs.io/en/stable/"&gt;JupyterLab&lt;/a&gt; platform, that can be adapted to domain-specific needs as illustrated by the &lt;a href="http://www.bionet.ee.columbia.edu/research/ffbo/fbl"&gt;FlyBrainLab&lt;/a&gt; and &lt;a href="/posts/2020/jupyterlab-ros/"&gt;Cloud Robotics Command Station&lt;/a&gt; efforts. The &lt;em&gt;Jupyter meets the Earth&lt;/em&gt; team aims to similarly develop tools and extensions that will support interactive computing workflows in the geosciences.&lt;/p&gt;
&lt;figure&gt;
&lt;img alt="Overview of Jupyter and Jupyter meets the Earth from Fernando Pérez" src="https://jasongrout.github.io/medium-archive/pelican/posts/2020/jupyter-meets-the-earth-earthcube-community-meeting/images/002-1_SmsFWNwWDW9-8jtDOa6_RQ.webp" loading="lazy" data-body-image=""&gt;
&lt;figcaption&gt;Overview of Jupyter and Jupyter meets the Earth from Fernando Pérez&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Next up, Scott Henderson (&lt;a href="https://docs.google.com/presentation/d/1pdlUGRrX46kJYZHTkGA6HuOYHQ_Yt2NNxQlLpRFB9jo/edit?usp=sharing"&gt;slides&lt;/a&gt;) provided an overview of Pangeo and associated community events, including Hackweeks. “Pangeo is first and foremost a community promoting open, reproducible, and scalable science.” In terms of technology, this involves developing fully open source tools that can be deployed on shared computational infrastructure, such as HPC centers or the cloud, and hosting several forums to foster communication between scientists and software developers. Software is an important avenue for connection, but the overarching goals are a rallying point for a community. The critical mass of enthusiastic people has been key to the success of the Pangeo model.&lt;/p&gt;
&lt;figure&gt;
&lt;img alt="Overview of Pangeo and Hackweeks from Scott Henderson" src="https://jasongrout.github.io/medium-archive/pelican/posts/2020/jupyter-meets-the-earth-earthcube-community-meeting/images/003-1_VOlTcY7mi7kIKT22Kc2_bw.webp" loading="lazy" data-body-image=""&gt;
&lt;figcaption&gt;Overview of Pangeo and Hackweeks from Scott Henderson&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;The Pangeo model is intended for use both on the cloud and on High Performance Computing (HPC) infrastructure. Kevin Paul gave the third talk on Pangeo on HPC (&lt;a href="https://docs.google.com/presentation/d/1eKDCK25jxjSFixwQX9GW56w84ZpaxRywEvMMYuX3Tg8/edit?usp=sharing"&gt;slides&lt;/a&gt;, &lt;a href="https://binder.pangeo.io/v2/gh/pangeo-data/pangeo-tutorial-agu-2018/master?filepath=notebooks%2Fgmet_ensemble.ipynb"&gt;notebook&lt;/a&gt;). HPC and cloud computing environments present technical differences in terms of usage patterns, file access, and resource allocations, however, the goals of Jupyter and Pangeo are similar in both cases — to enable interactive computing and simplify the user experience on both. Tools such as &lt;a href="https://dask.org/"&gt;dask&lt;/a&gt; and &lt;a href="https://kubernetes.dask.org/en/latest/"&gt;dask-kubernetes&lt;/a&gt;/&lt;a href="https://jobqueue.dask.org/en/latest/index.html"&gt;dask-jobqueue&lt;/a&gt; are targeted at enabling parallel computing on both infrastructures.&lt;/p&gt;
&lt;figure&gt;
&lt;img alt="Kevin Paul giving us a demo of Pangeo on the Cheyenne supercomputer" src="https://jasongrout.github.io/medium-archive/pelican/posts/2020/jupyter-meets-the-earth-earthcube-community-meeting/images/004-1_ofmEc1YhrAqvCs3FXhuI2g.webp" loading="lazy" data-body-image=""&gt;
&lt;figcaption&gt;Kevin Paul giving us a demo of Pangeo on the Cheyenne supercomputer&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;After a Q&amp;amp;A session that included questions on the computational cost of running Pangeo Infrastructure and efficient use of tools including Zarr, we moved on to a series of lightning talks.&lt;/p&gt;
&lt;h2 id="lightning-talks"&gt;Lightning Talks&lt;/h2&gt;
&lt;p&gt;Six speakers presented short lightning talks on aspects of the Jupyter and Pangeo ecosystems ranging from technologies to scientific applications to opportunities to engage with the Pangeo community.&lt;/p&gt;
&lt;p&gt;Anderson Banihirwe (&lt;a href="https://gist.github.com/andersy005/e08891883d91c01ab0ce963046d86343#file-intake-jupyter-meets-earth-ipynb"&gt;notebook&lt;/a&gt; and details in &lt;a href="https://github.com/earthcube2020/ec20_banihirwe_etal"&gt;intake-esm&lt;/a&gt;) kicked off the lightning talks by giving a demo and overview of Intake — a project to streamline loading and sharing of data. He showed a demo that included both Optimum Interpolation Sea Surface Temperature (OISST) data, as well as data from the Coupled Model Intercomparison Project (CMIP) running interactively on Cheyenne, the supercomputer at NCAR and using Dask for distributing the workload across nodes, with real-time diagnostics of the distributed computation provided by &lt;a href="https://github.com/dask/dask-labextension"&gt;Dask’s JupyterLab extension&lt;/a&gt;.&lt;/p&gt;
&lt;figure&gt;
&lt;img alt="Demo from Anderson Banihirwe using intake to access OSSIT and CMIP data" src="https://jasongrout.github.io/medium-archive/pelican/posts/2020/jupyter-meets-the-earth-earthcube-community-meeting/images/005-0_cCp6QLc_60xWGsAN.jpg" loading="lazy" data-body-image=""&gt;
&lt;figcaption&gt;Demo from Anderson Banihirwe using intake to access OSSIT and CMIP data&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Next up, Scott Dale Peckham (&lt;a href="https://github.com/peckhams/balto_gui"&gt;notebook&lt;/a&gt;) gave a presentation that demonstrated the use of ipywidgets and ipyleaflet to create an interactive interface for fast access to geoscience data on servers that support the OpenDAP protocol. The project he champions is called &lt;a href="https://cires.colorado.edu/research/research-groups/project/balto-earthcube-brokered-alignment-long-tail-observations"&gt;BALTO, the Brokered Alignment of Long Tail Observations&lt;/a&gt; (also a famous Siberian Husky and sled dog). These graphical interface elements can be used in a programmatic workflow such as a Jupyter Notebook, but they conveniently encapsulate many details of accessing the data and resources provided by BALTO. This allows the scientists to focus on their research questions, without having to break their workflow to access data with external tools.&lt;/p&gt;
&lt;figure&gt;
&lt;img alt="BALTO GUI demo from Scott Peckham" src="https://jasongrout.github.io/medium-archive/pelican/posts/2020/jupyter-meets-the-earth-earthcube-community-meeting/images/006-1_Esr4Ec_RKwqx2la7G9eDFg.webp" loading="lazy" data-body-image=""&gt;
&lt;figcaption&gt;BALTO GUI demo from Scott Peckham&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;We then had a talk from Edom Moges (&lt;a href="https://docs.google.com/presentation/d/1QUdRZEI84jq9PoBEucnrdHkReghYrEg-jjGJZWzVvJA/edit?usp=sharing"&gt;slides&lt;/a&gt;) who presented work he is conducting with Laurel Larsen’s research group in hydrology as one use case in the Jupyter meets the Earth project. The presentation focused on a data synthesis work that aims to build a Jupyter based interactive platform that transforms raw hydrometeorological data to a gap-filled ready to use data for several intensively monitored watersheds across the US. The platform will be a basis for future community initiatives to benchmark data processing approaches, support comparative hydrological studies and comprehensive data-driven forecasts.&lt;/p&gt;
&lt;figure&gt;
&lt;img alt="Lightning talk from Edom Moges and Laurel Larsen on the hydrology use-case in the Jupyter meets the Earth project" src="https://jasongrout.github.io/medium-archive/pelican/posts/2020/jupyter-meets-the-earth-earthcube-community-meeting/images/007-1_HPOqGuk9hRBV2WCl5QATIg.webp" loading="lazy" data-body-image=""&gt;
&lt;figcaption&gt;Lightning talk from Edom Moges and Laurel Larsen on the hydrology use-case in the Jupyter meets the Earth project&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Georgiana Dolocan (&lt;a href="https://drive.google.com/file/d/1yu7gnRkHXkNhefVoBiho_Sl-C_7f0l85/view"&gt;video&lt;/a&gt;) impressed us next with an animated video accompanied with her narration to explain JupyterHub, its components (authenticator, spawner, proxy) as well as deployment options. The littlest JupyterHub (TLJH) is designed to make it simple to deploy multi-user Jupyter infrastructure on a single machine, and the more sophisticated Zero 2 JupyterHub Kubernetes (Z2JH) option is meant to scale to many users and large computational needs.&lt;/p&gt;
&lt;figure&gt;
&lt;img alt="Animations from Georgiana Dolocan on JupyterHub" src="https://jasongrout.github.io/medium-archive/pelican/posts/2020/jupyter-meets-the-earth-earthcube-community-meeting/images/008-1_c1JTc_WrA5t1oUgnvvtcKA.webp" loading="lazy" data-body-image=""&gt;
&lt;figcaption&gt;Animations from Georgiana Dolocan on JupyterHub&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Presenting from the perspective of an enthusiastic user, Erik Sundell (&lt;a href="https://docs.google.com/presentation/d/1TafZRXouz57SRBonHGt6bogwQp5_kVrTP1RkpkO0xB8/edit?usp=sharing"&gt;slides&lt;/a&gt;) gave us an overview of &lt;a href="http://jupyterbook.org"&gt;Jupyter Book&lt;/a&gt;: a tool to quickly create beautiful websites from notebooks and markdown. He walked through how to host them for free online in a time efficient way, and highlighted features including connections to Binder, which enable users to run content interactively.&lt;/p&gt;
&lt;figure&gt;
&lt;img alt="Overview of JupyterBook from Erik Sundell" src="https://jasongrout.github.io/medium-archive/pelican/posts/2020/jupyter-meets-the-earth-earthcube-community-meeting/images/009-1_YfKDEmbHLgt-3eJlRqClaw.webp" loading="lazy" data-body-image=""&gt;
&lt;figcaption&gt;Overview of JupyterBook from Erik Sundell&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Joe Hamman (&lt;a href="https://docs.google.com/presentation/d/1GKVLUsa971FHZkPDhdTSgxZQralWyy-292aIg1tFY64/edit?usp=sharing"&gt;slides&lt;/a&gt;) finished off our lightning talk session by outlining avenues for connecting with the Pangeo community. These include day-to-day communication on GitHub, Gitter, discourse and twitter, as well as more recent coffee-breaks. Depending on your topic of interest, there are also working groups that you can join on topics including data, machine learning, education, cloud computing, or you can suggest your own!&lt;/p&gt;
&lt;figure&gt;
&lt;img alt="Connecting with the Pangeo community — an overview from Joe Hamman" src="https://jasongrout.github.io/medium-archive/pelican/posts/2020/jupyter-meets-the-earth-earthcube-community-meeting/images/010-1_OOkrUZhvWq5ywRPlaQ8QDA.webp" loading="lazy" data-body-image=""&gt;
&lt;figcaption&gt;Connecting with the Pangeo community — an overview from Joe Hamman&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 id="follow-up-and-further-discussion"&gt;Follow up and further discussion&lt;/h2&gt;
&lt;p&gt;To continue the discussion afterwards, we posed (&lt;a href="https://docs.google.com/presentation/d/1UqRd34zeOa5cW3aXFsjjh3TprgEHDl1cf4n1_BZezls/edit?usp=sharing"&gt;slides&lt;/a&gt;) a few questions where we hope to learn from the community’s needs, such as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;What does your interactive computing workflow look like today? What do you envision it will be in 5 years?&lt;/li&gt;
&lt;li&gt;How would you like to publish and share your computational research and where can improvements be made?&lt;/li&gt;
&lt;li&gt;How do you stay up to date with the evolving open-source ecosystem? How would you like to be keeping up-to-date?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We are looking for your input and ideas! Please add your thoughts to the &lt;a href="https://discourse.pangeo.io/t/jupyter-meets-the-earth-earthcube-meeting-july-27/689"&gt;discourse post&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="thanks"&gt;Thanks&lt;/h2&gt;
&lt;p&gt;Thank you to the participants, speakers, and especially Lynne Schreiber and Ouida Meier from the EarthCube office for all of their support and work (even with very last-minute requests!).&lt;/p&gt;
&lt;p&gt;This work is part of the &lt;em&gt;Jupyter meets the Earth&lt;/em&gt; project, supported by the NSF EarthCube program under awards &lt;a href="https://www.nsf.gov/awardsearch/showAward?AWD_ID=1928406"&gt;1928406&lt;/a&gt;, &lt;a href="https://www.nsf.gov/awardsearch/showAward?AWD_ID=1928374"&gt;1928374&lt;/a&gt;.&lt;/p&gt;
&lt;iframe src="https://www.youtube-nocookie.com/embed/Zj3Gm4LNfwo" title="Jupyter Meets the Earth - Community Forum" width="560" height="315" style="aspect-ratio: 560 / 315" loading="lazy" allow="accelerometer; clipboard-write; encrypted-media; gyroscope; picture-in-picture" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen&gt;&lt;/iframe&gt;
</content><category term="geoscience"/><category term="open science"/><category term="science"/></entry><entry><title>Jupyter meets the Earth</title><link href="https://jasongrout.github.io/medium-archive/pelican/posts/2019/jupyter-meets-the-earth/" rel="alternate"/><published>2019-09-09T17:48:00+00:00</published><updated>2020-08-07T17:34:00+00:00</updated><author><name>Lindsey Heagy</name></author><id>tag:jasongrout.github.io,2019-09-09:/medium-archive/pelican/posts/2019/jupyter-meets-the-earth/</id><summary type="html">&lt;p&gt;By Lindsey Heagy and Fernando Pérez&lt;/p&gt;
</summary><content type="html">&lt;p&gt;&lt;img src="https://jasongrout.github.io/medium-archive/pelican/posts/2019/jupyter-meets-the-earth/images/001-1_s3i12gpdCYyM0srHQkPZnw.webp" alt="" loading="lazy" data-body-image=""&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;By Lindsey Heagy and Fernando Pérez&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;We are thrilled to announce that the NSF is funding our EarthCube proposal &lt;em&gt;“Jupyter meets the Earth: Enabling discovery in geoscience through interactive computing at scale”&lt;/em&gt; (&lt;a href="https://doi.org/10.5281/zenodo.3369938"&gt;pdf&lt;/a&gt;). The team working on this project consists of Fernando Pérez [1, 2, 3], Joe Hamman [4], Laurel Larsen [5], Kevin Paul [6], Lindsey Heagy [1], Chris Holdgraf [1, 2] and Yuvi Panda [7]. Our project team includes members from the &lt;a href="https://jupyter.org"&gt;Jupyter&lt;/a&gt; and &lt;a href="http://pangeo.io/"&gt;Pangeo&lt;/a&gt; communities, with representation across the geosciences including climate modeling, water resource applications, and geophysics. Three active research projects, one in each domain, will motivate developments in the Jupyter and Pangeo ecosystems. Each of these research applications demonstrates aspects of a research workflow which requires scalable, interactive computational tools.&lt;/p&gt;
&lt;p&gt;In this project we intend to follow the patterns that have made Jupyter an effective and successful platform: we will drive the development of computational machinery by concrete use cases from our own experience and research needs, and then find the appropriate points for extension, abstraction, and generalization. We are motivated to advancing research of contemporary importance in geoscience, and are equally committed to producing work that leads to broad impact, general use infrastructure that benefits scientists, educators, industry, and the general community.&lt;/p&gt;
&lt;p&gt;The adoption of open languages such as Python and the coalescence of communities of practice around open-source tools, is visible in nearly every domain of science. This is a fundamental shift in how science is conducted and shared. In recent years, there have been several high-profile examples in which open tools from the Python and Jupyter ecosystems played an integral role in the research, from data analysis to the dissemination of results. These include the first image of a black hole from the &lt;a href="https://eventhorizontelescope.org/"&gt;Event Horizon Telescope team&lt;/a&gt; and the detection of gravitational waves by the &lt;a href="https://www.caltech.edu/about/news/gravitational-waves-detected-100-years-after-einstein-s-prediction-49777"&gt;LIGO collaboration&lt;/a&gt;. The utility of open-source software in projects like these and the success of open communities such as Pangeo, provide evidence of the force-multiplying impact of investing in an ecosystem of open, community-driven tools. Through this project, we will advance this open paradigm in geoscience research, while strengthening and improving the infrastructure that supports it. We made this argument when discussing the intended impacts of our proposal, and we are pleased that the NSF is investing in this vision.&lt;/p&gt;
&lt;h2 id="geoscience-use-cases"&gt;Geoscience use cases&lt;/h2&gt;
&lt;p&gt;Given our project’s aims and approach, participating actively in domain research is crucial to our success. The following descriptions are meant to offer a flavour of the research questions we are tackling, each led by a geoscientist in the team.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;CMIP6 climate data analysis (Hamman).&lt;/strong&gt; The &lt;a href="https://www.wcrp-climate.org/wgcm-cmip"&gt;World Climate Research Program’s Coupled Model Intercomparison Project&lt;/a&gt; is now in its sixth phase and is expected to provide the most comprehensive and robust projections of future climate predictions. When complete, the archive is expected to exceed 18 PB in size. In the coming years, this collection of climate model experiments will form the basis for fundamental research, climate adaptation studies, and policy initiatives. While the CMIP6 dataset is likely to hold new answers to many pressing climate questions, the sheer volume of data is likely to present significant challenges to researchers. Indeed, new tools for scalable data analysis, machine learning, and inference are required to make the most out of these data.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Large-Scale Hydrologic Modeling (Larsen).&lt;/strong&gt; Streamflow forecasts are a valuable tool for flood mitigation and water management. Creating these forecasts requires that a variety of data types be brought together including model-generated streamflow estimates, sensor-based observations of water discharge, and hydrometeorological forcing factors, such as precipitation, temperature, relative humidity, and snow-water equivalent. The integration of simulated and observed data over disparate spatial and temporal scales creates new avenues for exploring data science techniques for effective water management.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Geophysical inversions (Heagy).&lt;/strong&gt; Geophysical inversions construct models of the subsurface by combining simulations of the governing physics with optimization techniques. These models are critical tools for locating and managing natural resources, such as groundwater, or for assessing the risk from natural hazards, such as volcanoes. Today, we need models applicable to increasingly complex scenarios, such as the socially delicate task of developing groundwater management policies in water-limited regions. This will require the development of new techniques for combining multiple geophysical data sets in a joint inversion, as well as the use of statistical and data science methods for including geologic and hydrologic data in the construction of 3D models.&lt;/p&gt;
&lt;p&gt;These scientific problems exhibit, each with its own flavour, similar technical challenges with respect to handling large volumes of data, performing expensive computations, and doing both of these as a part of the interactive, exploratory workflow that is necessary for scientific discovery.&lt;/p&gt;
&lt;h2 id="jupyter-pangeo-empowering-scientists"&gt;Jupyter &amp;amp; Pangeo: empowering scientists&lt;/h2&gt;
&lt;p&gt;Jupyter and Pangeo are both open communities that share the goal of developing tools and practices for interactive scientific workflows; these tools aim to deliver practical value to scientists who, in the course of everyday research, face a combination of big data and large-scale computing needs.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Project Jupyter&lt;/strong&gt; creates open-source tools and standards for interactive computing. These span the spectrum from low-level protocols for running code interactively up to &lt;a href="/posts/2018/jupyterlab-is-ready-for-users/"&gt;the web-based JupyterLab interface&lt;/a&gt; that a researcher uses. Jupyter is agnostic of programming language: over &lt;a href="https://github.com/jupyter/jupyter/wiki/Jupyter-kernels"&gt;130 different Jupyter kernels exist&lt;/a&gt;, and they provide support for most programming languages in widespread use today. Jupyter can be run on a laptop, in an HPC center, or in the cloud. Shared-infrastructure deployments (e.g. HPC / cloud) are enabled by JupyterHub, a component in the Jupyter toolbox that supports the deployment and management of Jupyter sessions for multiple users. The development process of tools in the Jupyter ecosystem is community-oriented and includes a diverse set of stakeholders across research, education, and industry. The project has a strong tradition of building tools that are first designed to solve specific problems, and then generalized to other users and applications.&lt;/p&gt;
&lt;p&gt;A &lt;strong&gt;Pangeo Platform&lt;/strong&gt; is a modular composition of open, community-driven projects, tailored to the scientific needs of a specific scientific domain. In its simplest form, it is based on the following generic components: a browser-based user interface (&lt;a href="https://jupyter.org"&gt;Jupyter&lt;/a&gt;), a data model and analytics toolkit (&lt;a href="http://xarray.pydata.org"&gt;Xarray&lt;/a&gt;), a parallel job distribution system (&lt;a href="https://dask.org/"&gt;Dask&lt;/a&gt;), a resource management system (either &lt;a href="https://kubernetes.dask.org/en/latest/"&gt;Kubernetes&lt;/a&gt; or a job queuing system such as &lt;a href="https://jobqueue.dask.org/"&gt;PBS&lt;/a&gt;), and a storage system (either cloud object store or traditional HPC file system). These are complemented by problem- and domain-specific libraries.&lt;/p&gt;
&lt;p&gt;This modular design allows for individual components to be readily exchanged and the system to be applied in new use cases. &lt;a href="https://medium.com/pangeo/announcing-pangeo-earthcube-award-fefbe54acbec"&gt;Pangeo was created by, and for, geoscientists&lt;/a&gt; faced with large-scale data and computation challenges, but such problems are now common in science. Researchers in a variety of disciplines including neuroscience and astrophysics are working to adapt the Pangeo design pattern for their communities. Beyond the initial Pangeo deployments supported by the NSF EarthCube grant for Pangeo, the platform has been adopted internationally, including by the &lt;a href="https://medium.com/pangeo/whats-so-cool-about-pangeo-974598f4bafc"&gt;UK Met office&lt;/a&gt;. It has also supported new research and education efforts from other federal agencies, such as NASA’s HackWeek focused on the analysis of &lt;a href="https://medium.com/pangeo/icesat-2-hackweek-mix-70-scientists-and-1-pangeo-jupyterhub-for-5-days-and-what-do-you-get-85f5267a4dfa"&gt;ICESat-2 data&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="user-centered-development"&gt;User-Centered Development&lt;/h2&gt;
&lt;p&gt;Pushing the boundaries of any toolset unveils areas for improvement and opportunities for developments that streamline and upgrade the user experience. We aim to take a holistic view of the scientific discovery process, from initial data acquisition through computational analysis to the dissemination of findings. Our development efforts will make technological improvements within the Jupyter and Pangeo ecosystems in order to reduce pain-points along the discovery lifecycle and to advance the infrastructure that serves scientists. Following established patterns in Jupyter’s development, we take a user-first, needs-driven approach and then generalize these ideas to work across related fields. Broadly, there are 4 areas along the research lifecycle where we will invest development efforts, which we discuss next.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Data discovery.&lt;/strong&gt; An early step in the research process is locating and acquiring data of interest. Data catalogs provide a way to expose datasets to the community in a way that is structured. Within the geosciences, there are a number of emerging community standards for data catalogs (e.g. THREDDS, STAC). To streamline access to such data sets, we plan to develop JupyterLab extensions which provide a user-interface that exposes these catalogs to researchers. This work will build upon the &lt;a href="https://github.com/jupyterlab/jupyterlab/issues/5548"&gt;JupyterLab Data Registry,&lt;/a&gt; which will provide a consistent set of standards for how data can be consumed and displayed by extensions in the Jupyter ecosystem, as well as &lt;a href="https://intake.readthedocs.io/en/latest/index.html"&gt;Intake&lt;/a&gt;, a lightweight library for finding, loading, and sharing data which is already serving the Pangeo community. Our communities are already &lt;a href="https://github.com/jupyterlab/jupyterlab-data-explorer/issues/51"&gt;discussing potential avenues for integration&lt;/a&gt; between these tools.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Scientific discovery through interactive computing.&lt;/strong&gt; The Jupyter Notebook has been adopted by many scientists because it supports an iterative, exploratory workflow combining code and narrative. Beyond code, text, and images, Jupyter supports the creation of Graphical User Interfaces (GUIs) with minimal programming effort on the part of the scientist. The &lt;a href="https://jupyter.org/widgets"&gt;Jupyter widgets framework&lt;/a&gt; lets scientists create a “Research GUI” that combines scientific code with interactive elements such as sliders, buttons and menus in just a single line of code, while still allowing for extensive customization and more complex interfaces when required. In this project, we will develop custom widgets tailored at the specific scientific needs of each of our driving use cases.&lt;/p&gt;
&lt;p&gt;Beyond their utility in the exploratory phase of research, interactive interfaces, or “dashboards” provide a mechanism for delivering custom scientific displays to collaborators, stakeholders, and students for whom the details of the code may not be pertinent. &lt;a href="/posts/2019/and-voila/"&gt;Voilà&lt;/a&gt; is a project, led by the &lt;a href="http://quantstack.net"&gt;QuantStack&lt;/a&gt; team, that enables dashboards to be generated from Jupyter notebooks. We plan to develop interactive dashboards using Voilà for our geoscience use-cases, contribute generic improvements to the Voilà codebase, and provide a demonstration of how researchers can deploy dashboards to share their research.&lt;/p&gt;
&lt;figure&gt;
&lt;img alt="Research GUIs to explore Maxwell’s equations in research and education. Photo credit: SEOGI KANG" src="https://jasongrout.github.io/medium-archive/pelican/posts/2019/jupyter-meets-the-earth/images/002-1_djLNdz13Z4kickGSQFCNUQ.webp" loading="lazy" data-body-image=""&gt;
&lt;figcaption&gt;&lt;em&gt;Research GUIs to explore Maxwell’s equations in research and education. Photo credit: SEOGI KANG&lt;/em&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;&lt;strong&gt;Established tools and data visualization.&lt;/strong&gt; Many widely-used tools, particularly for visualization (e.g. Ncview, Paraview), are desktop-based applications and therefore cannot easily be used in cloud or HPC workflows. In some cases, modern, open-source alternatives are available. But often for specialized tasks, modern tools may not yet have functionality equivalent to the desktop version. JupyterHub can readily serve non-Jupyter web-native software applications such as RStudio, Shiny applications, and Stencila to users; under this project we aim to extend JupyterHub to also be able to serve desktop-native applications.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Using and managing shared computational infrastructure.&lt;/strong&gt; JupyterHub makes it possible to manage computing resources, user accounts, and provide access to computational environments online. Currently, JupyterHubs in the Pangeo project are deployed and maintained using the &lt;a href="http://z2jh.jupyter.org/en/latest/"&gt;Zero to JupyterHub guide&lt;/a&gt; alongside the &lt;a href="https://hubploy.readthedocs.io/en/latest/"&gt;HubPloy library&lt;/a&gt;. Together, these libraries have simplified the initial setup and automated upgrades to the Hubs. There are still many improvements that can make JupyterHub more suitable for larger, more complex deployments, both in terms of managing users and efficiently allocating resources. Under this project, we plan to build tools which collect metrics such as CPU and memory usage and expose these to both users and administrators so they can make more efficient use of the Hub. For shared deployments, we will improve user management so that user-groups can be used to manage permissions and allocations, and so that usage can be tracked and appropriately billed to the relevant grants. Within the HubPloy library, we also plan to make improvements to streamline continuous deployments so that installation and upgrade processes are repeatable and reliable.&lt;/p&gt;
&lt;h2 id="an-opportunity-for-meaningful-impact-join-us"&gt;An opportunity for meaningful impact — join us!&lt;/h2&gt;
&lt;p&gt;The impacts of climate change and the need for data-driven management of resources are some of the most critical and complex challenges facing society today. In recent years, we have experienced severe droughts in California and are in the midst of water management crises in the Central Valley, while devastating wildfires have destroyed entire communities. Through this partnership between researchers and Jupyter developers, we hope to contribute to the advancement of science-based solutions to these challenges, both by contributing directly to the research and by improving the open ecosystem of tools available to researchers and the stakeholders impacted by these issues.&lt;/p&gt;
&lt;p&gt;If developing open-source tech to advance research in geoscience and beyond excites you, then please &lt;a href="mailto:lheagy@berkeley.edu;fernando.perez@berkeley.edu"&gt;get in touch&lt;/a&gt;! At UC Berkeley, we will be hiring in 2 positions: a dev-ops position focussed on JupyterHub and shared infrastructure deployments, and a JupyterLab-oriented role focussed on extensions, dashboards, and interactivity. There will also be a position opening up at NCAR for a software engineer targeting improvements to improving the user experience of Xarray and Dask workflows.&lt;/p&gt;
&lt;p&gt;Even if you aren’t looking for a new job, there are other ways to get involved with both the Jupyter and Pangeo communities. We welcome new participants to the &lt;a href="https://pangeo.io/meeting-notes.html"&gt;weekly Pangeo meetings&lt;/a&gt; (on Wednesdays alternating between 4p GMT and 8p GMT) and there are &lt;a href="https://discourse.jupyter.org/t/jupyter-community-calls/668"&gt;monthly Jupyter community calls&lt;/a&gt;, which are open and meant to be accessible to a wide audience. Outside of calls, general Jupyter conversations happen on the &lt;a href="https://discourse.jupyter.org"&gt;Jupyter discourse&lt;/a&gt; and Pangeo conversations are typically on the &lt;a href="https://github.com/pangeo-data/pangeo"&gt;Pangeo GitHub&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="in-closing-a-step-toward-sustainable-open-science"&gt;In closing: a step toward sustainable open science&lt;/h2&gt;
&lt;p&gt;This project provides our team with $2 Million in funding over 3 years as a part of the NSF &lt;a href="https://earthcube.org/"&gt;EarthCube&lt;/a&gt; program. It also represents the first time federal funding is being allocated for the development of core Jupyter infrastructure.&lt;/p&gt;
&lt;p&gt;The open source ecosystem that Jupyter and Pangeo belong to has become part of the backbone that supports much of today’s computation in science, from astronomy and cosmology to microbiology and subatomic physics. Such broad usage represents a victory for this open and collaborative model of building scientific tools. Much of this success has come through the efforts of scientists and engineers who are committed to an open model of science, but who have had to work with little direct funding, minimal institutional support, and few viable career paths within science.&lt;/p&gt;
&lt;p&gt;There is real strategic risk to continuing with the implicit assumption that scientific open-source tools can be developed and maintained “for free.” If open, community-driven tools are to sustainably grow into the computational backbone of science, we need to recognize this role and support those who create them as regular members of the scientific community (we recently talked about this in more detail in a &lt;a href="http://www.tvworldwide.com/events/nsf/190815"&gt;talk at NSF headquarters&lt;/a&gt;). Projects like ours, where funding and resources are explicitly allocated toward this goal, are a step in the right direction. We hope that our experiences will contribute to ongoing conversations in the scientific community around these complex issues.&lt;/p&gt;
&lt;p&gt;In the past, we have tried to maintain a close relationship between domain problems and software development in Jupyter. However, this has typically been done in an ad-hoc manner, either by “hiding” the software development under the cover of science or by having funding to Jupyter alone. This is the first project where we explicitly partner with a team of domain scientists to simultaneously drive forward domain research and the development of Jupyter infrastructure.&lt;/p&gt;
&lt;p&gt;We are excited about this opportunity and hope to be able to demonstrate that investing in open tools can be a force-multiplier of resources. As always, our work will be done openly, transparently, and with constant community engagement. We look forward to your critiques, ideas, and contributions to make this effort as successful as possible.&lt;/p&gt;
&lt;h2 id="acknowledgments"&gt;Acknowledgments&lt;/h2&gt;
&lt;p&gt;Thanks to Joe Hamman, Chris Holdgraf, and Doug Oldenburg for constructive feedback and edits on this blog post.&lt;/p&gt;
&lt;p&gt;Many thanks to &lt;a href="https://www.ldeo.columbia.edu/user/rpa"&gt;Ryan Abernathey (Columbia)&lt;/a&gt;, &lt;a href="https://www.usgs.gov/staff-profiles/paul-a-bedrosian?qt-staff_profile_science_products=3#qt-staff_profile_science_products"&gt;Paul Bedrosian (USGS)&lt;/a&gt;, &lt;a href="https://quantstack.net/sylvain.html"&gt;Sylvain Corlay (QuantStack)&lt;/a&gt;, &lt;a href="https://www.usgs.gov/staff-profiles/richard-p-signell?qt-staff_profile_science_products=0#qt-staff_profile_science_products"&gt;Rich Signell (USGS)&lt;/a&gt;, and &lt;a href="https://www.nersc.gov/about/nersc-staff/data-analytics-services/rollin-thomas/"&gt;Rollin Thomas (NERSC)&lt;/a&gt;, who provided us with letters of support for this project; we look forward to working with you all! We are also grateful to &lt;a href="https://www.nsf.gov/staff/staff_bio.jsp?lan=sumishra"&gt;Shree Mishra&lt;/a&gt;, our NSF Program Director on this project, and to Dave Stuart for their support as we move forward with the project. This project is a part of the to the EarthCube program and we look forward to engaging with its working group.&lt;/p&gt;
&lt;p&gt;Finally, the sustained growth of Jupyter to the large-scale project that it has become would not have happened without the generous support of the Alfred P. Sloan, the Gordon and Betty Moore, and the Helmsley Foundations, as well as the leadership of Josh Greenberg and Chris Mentzel respectively at Sloan and Moore.&lt;/p&gt;
&lt;p&gt;This work is supported by the NSF EarthCube program under awards 1928406, 1928374&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Affiliations&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;[1] UC Berkeley, Statistics Department&lt;/p&gt;
&lt;p&gt;[2] UC Berkeley, Berkeley Institute for Data Science&lt;/p&gt;
&lt;p&gt;[3] Lawrence Berkeley National Lab, Computational Research Division&lt;/p&gt;
&lt;p&gt;[4] National Center for Atmospheric Research, Climate and Global Dynamics Laboratory&lt;/p&gt;
&lt;p&gt;[5] UC Berkeley, Department of Geography&lt;/p&gt;
&lt;p&gt;[6] National Center for Atmospheric Research, Computational Information Systems Laboratory&lt;/p&gt;
&lt;p&gt;[7] UC Berkeley, Division of Data Sciences&lt;/p&gt;
</content><category term="geoscience"/><category term="open science"/><category term="science"/></entry><entry><title>Binder + Zenodo: A how-to guide</title><link href="https://jasongrout.github.io/medium-archive/pelican/posts/2019/binder-with-zenodo/" rel="alternate"/><published>2019-06-21T13:46:00+00:00</published><updated>2019-06-22T15:42:00+00:00</updated><author><name>Chris Holdgraf</name></author><id>tag:jasongrout.github.io,2019-06-21:/medium-archive/pelican/posts/2019/binder-with-zenodo/</id><summary type="html">&lt;p&gt;Interactive and reproducible repositories powered by Zenodo and Binder.&lt;/p&gt;
</summary><content type="html">&lt;p&gt;Interactive and reproducible repositories powered by &lt;a href="https://zenodo.org/"&gt;Zenodo&lt;/a&gt; and &lt;a href="https://mybinder.org/"&gt;Binder&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;When the Binder project was first launched, we imagined a world in which scientific scholarship and reproducibility could be carried out by the community using a fully-open stack of technology. We’re happy to say that this is now possible!&lt;/p&gt;
&lt;figure&gt;
&lt;img alt="Zenodo DOIs now work with BinderHub" src="https://jasongrout.github.io/medium-archive/pelican/posts/2019/binder-with-zenodo/images/001-1_r8_qd2QciZ9B4hD2QnYXwQ.webp" loading="lazy" data-body-image=""&gt;
&lt;figcaption&gt;Zenodo DOIs now work with BinderHub&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;The &lt;a href="https://binderhub.readthedocs.io/"&gt;BinderHub&lt;/a&gt; team recently added in support for building Binder links that point to &lt;a href="https://zenodo.org/"&gt;Zenodo repositories&lt;/a&gt;. Zenodo is a general purpose open-access repository hosted by CERN that allows researchers to archive and apply a DOI to information that they put up on the web.&lt;/p&gt;
&lt;p&gt;Zenodo has the ability to archive &lt;strong&gt;GitHub repositories&lt;/strong&gt;, which means that you can archive the code, data, or reports that underly a scientific analysis and assign it a unique, citeable identifier. Now that BinderHub knows how to resolve a Zenodo identifier, you’ll be able to share Binder links that point to Zenodo and provide interactive access to your repository, letting readers reproduce results and interact with your analyses!&lt;/p&gt;
&lt;p&gt;Here’s a quick primer for how to do this:&lt;/p&gt;
&lt;h2 id="step-1-create-a-zenodo-account"&gt;Step 1: Create a Zenodo account&lt;/h2&gt;
&lt;p&gt;First off you’ll need to create an account on Zenodo. You can&lt;br&gt;
do so using a number of different log-in options.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://jasongrout.github.io/medium-archive/pelican/posts/2019/binder-with-zenodo/images/002-0_SbAeCLCNSpmbRQB6.webp" alt="" loading="lazy" data-body-image=""&gt;&lt;/p&gt;
&lt;h2 id="step-2-create-your-binder-ready-repository-on-github"&gt;Step 2: Create your Binder-ready repository on GitHub&lt;/h2&gt;
&lt;p&gt;Next, you should create your Binder-ready repository on GitHub. Binder uses pre-existing best practices in data science in order to infer and build the environment needed for your repository.&lt;/p&gt;
&lt;p&gt;To make a repository Binder-ready, &lt;a href="https://mybinder.readthedocs.io/en/latest/introduction.html"&gt;follow the instructions in the Binder docs&lt;/a&gt;.&lt;br&gt;
Briefly, what you need to do is add the configuration files that define the environment needed to run your code. Once those files are in place, and you’ve added an analysis script (a Jupyter or R Notebook) that actually runs your code and displays the results, your repository is ready to build with Binder.&lt;/p&gt;
&lt;h2 id="step-3-make-sure-your-repository-is-ready-to-be-published"&gt;Step 3: Make sure your repository is ready to be published!&lt;/h2&gt;
&lt;p&gt;Once you create a DOI for your repository, it will be frozen in time — you won’t be able to easily update it. So double check that the repository builds properly with Binder and runs the way that you’d expect it to.&lt;/p&gt;
&lt;p&gt;Make sure to launch a Binder from your repository and run the analyses you’d like others to run. If they produce the expected result from within a Binder session, then they’ll continue to do so for others (assuming you have pinned your versions and followed other best practices in reproducibility).&lt;/p&gt;
&lt;h2 id="step-4-create-a-zenodo-doi-for-your-repository"&gt;Step 4: Create a Zenodo DOI for your repository&lt;/h2&gt;
&lt;p&gt;Now that your repository is ready, you’ll connect Zenodo with GitHub to create a DOI for your repository. Remember that this will be unique to the current state of the repo — future changes to this repository won’t be reflected in the DOI.&lt;/p&gt;
&lt;p&gt;We recommend following the &lt;a href="https://guides.github.com/activities/citable-code/"&gt;GitHub &lt;strong&gt;Citable Code Guide&lt;/strong&gt;&lt;/a&gt; which provides some best-practices for creating your Zenodo DOI for a GitHub repository. Click the image below to be taken to this (excellent) guide.&lt;/p&gt;
&lt;figure&gt;
&lt;img alt="The GitHub Citable Code guide." src="https://jasongrout.github.io/medium-archive/pelican/posts/2019/binder-with-zenodo/images/003-0_LIxxv68WDxy6VkfY.webp" loading="lazy" data-body-image=""&gt;
&lt;figcaption&gt;The GitHub Citable Code guide.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Once you’re done, you should have a Zenodo DOI badge&lt;br&gt;
like the one below:&lt;/p&gt;
&lt;figure&gt;
&lt;img alt="A Zenodo DOI badge" src="https://jasongrout.github.io/medium-archive/pelican/posts/2019/binder-with-zenodo/images/004-1_CfBmxs8apLrlbGN5vG9MTA.webp" loading="lazy" data-body-image=""&gt;
&lt;figcaption&gt;A Zenodo DOI badge&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 id="step-5-create-a-binder-link-for-your-zenodo-doi"&gt;Step 5: Create a Binder link for your Zenodo DOI&lt;/h2&gt;
&lt;p&gt;Finally, use your Zenodo DOI to create a Binder link that allows others to interact with and replicate your results. You can create a Binder link for your Zenodo record by heading to &lt;a href="https://mybinder.org/"&gt;https://mybinder.org&lt;/a&gt; and filling in the form:&lt;/p&gt;
&lt;figure&gt;
&lt;img alt="Building a Binder link for your Zenodo archive with the Binder UI." src="https://jasongrout.github.io/medium-archive/pelican/posts/2019/binder-with-zenodo/images/005-1_xOABVY2hNtVmjV5-LXreFw.mp4" loading="lazy" data-body-image=""&gt;
&lt;figcaption&gt;Building a Binder link for your Zenodo archive with the Binder UI.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;This will give you a link you can share with others as well as the Markdown and reStructured text snippets for creating a badge.&lt;/p&gt;
&lt;p&gt;The link’s structure should look like this:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;https://mybinder.org/v2/zenodo/&amp;lt;zenodo-DOI&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;For example, if your Zenodo DOI is &lt;code&gt;10.5281/zenodo.3242074&lt;/code&gt; (corresponding to &lt;a href="https://doi.org/10.5281/zenodo.3242074"&gt;this zenodo repository&lt;/a&gt;), the Binder link for it would be:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;https://mybinder.org/v2/zenodo/10.5281/zenodo.3242074/
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;You can even pair this Binder link with your Zenodo DOI badge that&lt;br&gt;
we showed above!&lt;/p&gt;
&lt;figure&gt;
&lt;img alt="The “launch binder” button contains a Binder link for your Zenodo archive. Clicking will launch a Binder session." src="https://jasongrout.github.io/medium-archive/pelican/posts/2019/binder-with-zenodo/images/006-1_hFRv6rDl9BekAFkxDpowOg.webp" loading="lazy" data-body-image=""&gt;
&lt;figcaption&gt;The “launch binder” button contains a Binder link for your Zenodo archive. Clicking will launch a Binder session.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;And that’s it! You now have an archived version of your analysis with a unique identifier. This identifier can be used in conjunction with BinderHub to allow readers to &lt;em&gt;interact&lt;/em&gt; with your code and results!&lt;/p&gt;
&lt;h2 id="last-minute-update"&gt;Last minute update 🎉&lt;/h2&gt;
&lt;p&gt;A few hours before publishing this post we merged a contribution from &lt;a href="https://twitter.com/temorrell"&gt;Tom Morrell&lt;/a&gt; who works at CalTech’s library that allows you to launch records from &lt;a href="https://data.caltech.edu/"&gt;CalTech’s Data Repository&lt;/a&gt; as well! For example a notebook to analyze traffic to the archive itself: &lt;a href="https://mybinder.org/v2/zenodo/10.22002/d1.1250"&gt;https://mybinder.org/v2/zenodo/10.22002/d1.1250&lt;/a&gt;. You should also check out &lt;a href="https://medium.com/@lorenaabarba/excellent-6b99d506aa28"&gt;a quick response to this post from Lorena Barba&lt;/a&gt;, who describes her group’s approach to creating reproducible, citable bundles for figures in papers, and how Binder+Zenodo DOIs might fit into that workflow!&lt;/p&gt;
&lt;h2 id="whats-next"&gt;What’s next?&lt;/h2&gt;
&lt;p&gt;We are close to closing the loop of fully reproducible computational environments for scientific publication. We’re excited to see journals begin to integrate these workflows with their own publishing pipelines. For example, the &lt;a href="https://conp-pcno.github.io/"&gt;Neurolibre project&lt;/a&gt; is deploying their own BinderHub and using it alongside their reviewing and archiving process in order to provide more rich&lt;br&gt;
interaction with submitted material.&lt;/p&gt;
&lt;p&gt;Each type of repository needs a small amount of custom work to be integrated with Binder. We started with Zenodo because it is well known,&lt;br&gt;
general purpose and integrated with GitHub already. If there is an archive you’d like to see integrated please do stop by &lt;a href="https://github.com/jupyter/repo2docker"&gt;this repository&lt;/a&gt; and open a new issue or contribute the code to do so directly.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;If you’re working with a publisher and are interested in this&lt;/strong&gt;&lt;br&gt;
please reach out! The Binder community would love to work with you in deploying these open tools to make your published work more open and accessible. Whether it is big or small, we hope that these workflows can make an impact across the publishing landscape, and we’re looking forward to seeing what people do next!&lt;/p&gt;
</content><category term="Binder"/><category term="GitHub"/><category term="open science"/><category term="reproducibility"/></entry><entry><title>elife sprint: Integrating Stencila and Binder</title><link href="https://jasongrout.github.io/medium-archive/pelican/posts/2018/elife-sprint-integrating-stencila-and-binder/" rel="alternate"/><published>2018-12-10T10:15:00+00:00</published><updated>2018-12-10T10:15:00+00:00</updated><author><name>Daniel Nüst</name></author><id>tag:jasongrout.github.io,2018-12-10:/medium-archive/pelican/posts/2018/elife-sprint-integrating-stencila-and-binder/</id><summary type="html">&lt;p&gt;Short report on the project nbstencilaproxy for integrating Stencila and Binder.&lt;/p&gt;
</summary><content type="html">&lt;p&gt;&lt;em&gt;This article reports on a project, integrating Stencila and Binder, which started at the eLife Innovation Sprint 2018 (&lt;/em&gt;&lt;a href="https://twitter.com/hashtag/eLifeSprint?src=hash"&gt;&lt;code&gt;#eLifeSprint&lt;/code&gt;&lt;/a&gt;&lt;em&gt;). A longer version has been cross-posted on multiple blogs (&lt;/em&gt;&lt;a href="https://elifesciences.org/labs/d42fe2b9/integrating-binder-and-stencila-the-building-blocks-to-increased-open-communication-and-transparency"&gt;&lt;em&gt;eLife Labs&lt;/em&gt;&lt;/a&gt;, &lt;a href="https://stenci.la/blog/2018-11-20-stencila-binder/"&gt;&lt;em&gt;Stencila,&lt;/em&gt;&lt;/a&gt; &lt;a href="https://o2r.info/2018/11/21/elife-sprint-integrating-stencila-and-binder/"&gt;&lt;em&gt;o2r&lt;/em&gt;&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;&lt;a href="https://elifesciences.org/"&gt;eLife&lt;/a&gt;, an open science journal published by the non-profit organisation eLife Sciences Publications from the UK, hosted the first &lt;a href="https://elifesciences.org/labs/bdd4c9aa/elife-innovation-sprint-2018-project-roundup"&gt;eLife Innovation Sprint 2018&lt;/a&gt; as part of their &lt;a href="https://elifesciences.org/about/innovation"&gt;Innovation Initiative&lt;/a&gt; in Cambridge, UK: &lt;em&gt;“[…] a two-day gathering of 62 researchers, designers, developers, technologists, science communicators and more, with the goal of developing prototypes of innovations that bring cutting-edge technology to open research communication.”&lt;/em&gt; One of the &lt;a href="https://elifesciences.org/labs/bdd4c9aa/elife-innovation-sprint-2018-project-roundup"&gt;13&lt;/a&gt; projects at the &lt;a href="https://elifesciences.org/inside-elife/b4ed92e1/innovation-collaboration-and-creativity-at-the-heart-of-the-elife-innovation-sprint-2018"&gt;excellently organised event&lt;/a&gt; was an &lt;strong&gt;integration of&lt;/strong&gt; &lt;a href="https://mybinder.readthedocs.io/"&gt;&lt;strong&gt;Binder&lt;/strong&gt;&lt;/a&gt; &lt;strong&gt;and&lt;/strong&gt; &lt;a href="https://stenci.la/"&gt;&lt;strong&gt;Stencila&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This article reports on the project’s results and changes made to Binder-related tools. &lt;strong&gt;Today, Binder has first class Stencila support.&lt;/strong&gt; Read the full story at the &lt;a href="https://elifesciences.org/labs/d42fe2b9/integrating-binder-and-stencila-the-building-blocks-to-increased-open-communication-and-transparency"&gt;eLife Labs blog post&lt;/a&gt; or try out to open Stencila documents from any online code repository on &lt;a href="https://mybinder.org/"&gt;mybinder.org&lt;/a&gt; with the click of a single button:&lt;/p&gt;
&lt;figure&gt;
&lt;a href="https://mybinder.org/v2/gh/binder-examples/stencila-py/master?urlpath=stencila"&gt;&lt;img alt="Click the Binder badge to open a Stencila document on mybinder.org" src="https://jasongrout.github.io/medium-archive/pelican/posts/2018/elife-sprint-integrating-stencila-and-binder/images/001-1_H28MLVCxQzhuXzKzbMyiZA.webp" loading="lazy" data-body-image=""&gt;&lt;/a&gt;
&lt;figcaption&gt;Click the Binder badge to open a Stencila document on mybinder.org&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;This project is a collaboration between &lt;a href="https://github.com/minrk"&gt;Min&lt;/a&gt; from the &lt;a href="https://www.simula.no/people/benjaminrk"&gt;Simula Research Laboratory&lt;/a&gt;, Norway, a core developer of &lt;a href="https://mybinder.readthedocs.io/en/latest/"&gt;Binder&lt;/a&gt; and related tools, &lt;a href="https://github.com/nuest"&gt;Daniel&lt;/a&gt; from the &lt;a href="https://o2r.info"&gt;o2r&lt;/a&gt; project at the &lt;a href="https://www.uni-muenster.de/Geoinformatics/"&gt;Institute for Geoinformatics&lt;/a&gt;, Germany, &lt;a href="https://github.com/nokome"&gt;and Nokome&lt;/a&gt;, initiator and developer of Stencila. The final changes were made with the help of &lt;a href="https://github.com/betatim"&gt;Tim&lt;/a&gt;. Thanks! The project was also part of the &lt;a href="https://mozilla.github.io/global-sprint/"&gt;Mozilla Global Sprint 2018&lt;/a&gt;, see &lt;a href="https://github.com/mozilla/global-sprint/issues/317"&gt;mozilla/global-sprint#317&lt;/a&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="the-building-blocks-and-a-challenge"&gt;The building blocks and a challenge&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Stencila Desktop&lt;/strong&gt; is an &lt;a href="https://elifesciences.org/labs/c496b8bb/stencila-an-office-suite-for-reproducible-research"&gt;office suite for reproducible research documents&lt;/a&gt;. It allows scientists to use languages like R and Python within familiar and intuitive word processor and spreadsheet user interfaces to lower the barriers to reproducible research for those with little or no software development skills. &lt;strong&gt;Binder&lt;/strong&gt; (a part of &lt;a href="https://jupyter.org/"&gt;Project Jupyter&lt;/a&gt;) makes it simple to generate reproducible computing environments from code repositories (e.g. GitHub or GitLab, see &lt;a href="https://github.com/binder-examples/"&gt;binder examples&lt;/a&gt;) and &lt;a href="https://mybinder.org/"&gt;mybinder.org&lt;/a&gt; is the most prominent example. Binder uses &lt;a href="https://repo2docker.readthedocs.io/"&gt;repo2docker&lt;/a&gt;, for generating &lt;code&gt;Dockerfile&lt;/code&gt;s (a human- and machine-readable recipe for setting up a computational environmentt used by the popular &lt;a href="https://en.wikipedia.org/wiki/Docker_(software)"&gt;Docker&lt;/a&gt; container software) and building Docker images from software projects. While containers have become a commodity for developers, researchers still struggle to grasp and control the complexity of computational environments. This is where the two building blocks join: &lt;strong&gt;Running Stencila as part of a Binder helps researchers to communicate their work openly, to collaborate effectively with other scientists, and to ensure a high quality and transparency of their workflow and findings.&lt;/strong&gt; Min and Daniel &lt;a href="https://docs.google.com/document/d/1WPMY-Al7WMdjlepKvvLiIxFrQPHFbADMNuwszs8xMHk/edit"&gt;formulated their goal in the sprint project form&lt;/a&gt;: &lt;em&gt;“[…] to connect them so that users can edit reproducible documents (DAR files) as part of a Binder project”.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id="connecting-stencila-and-jupyter-nbstencilaproxy"&gt;Connecting Stencila and Jupyter: &lt;code&gt;nbstencilaproxy&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;Stencila has “execution contexts”, an equivalent to Jupyter’s “kernels”. The contexts use code dependency analysis and return execution results as data values to enable a reactive, functional execution model. To open Stencila documents on binder, these execution contexts must be installed and configured in the environment created by &lt;code&gt;repo2docker&lt;/code&gt;. This is achieved with a new software project initiated at the sprint: &lt;code&gt;nbstencilaproxy&lt;/code&gt; - a Jupyter notebook server extension and proxy for Stencila.&lt;/p&gt;
&lt;p&gt;The projects consists of a &lt;strong&gt;Python module&lt;/strong&gt; with the Jupyter notebook server and “non-server” extensions of the same name, and a &lt;a href="https://github.com/minrk/nbstencilaproxy/commit/93dabbd890397aaad0d8efb316f7e1f2129e52f3"&gt;bundled&lt;/a&gt; &lt;strong&gt;JavaScript module&lt;/strong&gt; (of the same name). The Python module allows proper versioned installation, dependency management, and installation from an established software repository. It takes care of the plumbing between the user interface and the services in the background, so that the binder is viewable over one port in the browser, while the many different background components run on their own ports. The “no server” extension adds a “Stencila session” menu entry and conveniently lives in the same directory structure as the server extension. The JavaScript module manages the required JavaScript dependencies and provides an well-defined structure for the code files. It serves the Dar document and provides access to the Stencila host.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;repo2docker&lt;/code&gt; was extended with &lt;a href="https://github.com/jupyter/repo2docker/pull/309/commits/eaa29ef3343442419df8cdd022f3e91ae9262926"&gt;automatic detection of Dar documents&lt;/a&gt;, including the &lt;a href="https://github.com/jupyter/repo2docker/pull/457"&gt;languages and execution context&lt;/a&gt;s. As with most Binder repositories, a no configuration is needed for most common user cases: users can open a Dar document on Binder and trust the required environment to provide all required software. Daniel created a few &lt;strong&gt;example repositories&lt;/strong&gt; to provide a starting point for users. The binder team generously welcomed &lt;a href="https://o2r.info/2018/11/21/elife-sprint-integrating-stencila-and-binder/"&gt;the changes to mybinder.org&lt;/a&gt; and and the examples to the &lt;a href="https://github.com/binder-examples/"&gt;binder examples organisation&lt;/a&gt; on GitHub:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/binder-examples/stencila-py"&gt;&lt;strong&gt;https://github.com/binder-examples/stencila-py&lt;/strong&gt;&lt;/a&gt; contains Python code cells, using both the Jupyter and plain Python execution contexts:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://jasongrout.github.io/medium-archive/pelican/posts/2018/elife-sprint-integrating-stencila-and-binder/images/002-0_BHjQbPTLV3XHoNqG.webp" alt="" loading="lazy" data-body-image=""&gt;&lt;/p&gt;
&lt;figure&gt;
&lt;a href="https://mybinder.org/v2/gh/binder-examples/stencila-py/master?urlpath=stencila"&gt;&lt;img alt="Click the Binder badge to open a Stencila document with Python code on mybinder.org" src="https://jasongrout.github.io/medium-archive/pelican/posts/2018/elife-sprint-integrating-stencila-and-binder/images/001-1_H28MLVCxQzhuXzKzbMyiZA.webp" loading="lazy" data-body-image=""&gt;&lt;/a&gt;
&lt;figcaption&gt;Click the Binder badge to open a Stencila document with Python code on mybinder.org&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;&lt;a href="https://github.com/binder-examples/stencila-r"&gt;&lt;strong&gt;https://github.com/binder-examples/stencila-r&lt;/strong&gt;&lt;/a&gt; contains R code cells and two plots:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://jasongrout.github.io/medium-archive/pelican/posts/2018/elife-sprint-integrating-stencila-and-binder/images/003-0_osOwhBZGwlnr5FNk.webp" alt="" loading="lazy" data-body-image=""&gt;&lt;/p&gt;
&lt;figure&gt;
&lt;a href="https://mybinder.org/v2/gh/binder-examples/stencila-r/master?urlpath=stencila"&gt;&lt;img alt="Click the Binder badge to open a Stencila document with R code on mybinder.org" src="https://jasongrout.github.io/medium-archive/pelican/posts/2018/elife-sprint-integrating-stencila-and-binder/images/001-1_H28MLVCxQzhuXzKzbMyiZA.webp" loading="lazy" data-body-image=""&gt;&lt;/a&gt;
&lt;figcaption&gt;Click the Binder badge to open a Stencila document with R code on mybinder.org&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;One of the cool features of Stencila are the reactive cells, as demonstrated in a tweet following the feature release:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Thanks to @nordholmen working on &lt;a href="https://x.com/stencila"&gt;@stencila&lt;/a&gt; support for &lt;a href="https://t.co/Zlj6FrYgBw"&gt;https://t.co/Zlj6FrYgBw&lt;/a&gt; you now have reactive cells with Python code on &lt;a href="https://x.com/mybinderteam"&gt;@mybinderteam&lt;/a&gt;! Give it a go &lt;a href="https://t.co/ToIuQPq0Fy"&gt;https://t.co/ToIuQPq0Fy&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://x.com/betatim/status/1062004432806785024"&gt;&lt;img src="https://jasongrout.github.io/medium-archive/pelican/posts/2018/elife-sprint-integrating-stencila-and-binder/images/004-Drz_AZeXQAAdMmn.jpg" alt="Video" loading="lazy" data-body-image=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;— &lt;a href="https://x.com/betatim"&gt;Tim Head, @betatim on the internet (@betatim)&lt;/a&gt;, &lt;a href="https://x.com/betatim/status/1062004432806785024"&gt;November 12, 2018&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;p&gt;Binder + Stencila is a demonstration of the power that the Open Source and Open Science community can foster. Many people are working together on the organisational and technological challenges of science today towards full research transparency and reproducibility, even if we use computers to an unprecedented level. Many small contributions on “side projects” such as these can make a difference, and connecting these two great projects hopefully helps to solve some problem in science down the road.&lt;/p&gt;
&lt;p&gt;Join the public &lt;a href="https://gitter.im/stencila/stencila"&gt;Stencila&lt;/a&gt; and &lt;a href="https://gitter.im/jupyterhub/binder"&gt;binder&lt;/a&gt; chats to stay in touch or get help. We look forward to see scientists using &lt;code&gt;nbstencilaproxy&lt;/code&gt; for communicating their work and new challenges that come with it.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://x.com/hashtag/eLifeSprint?src=hash"&gt;#eLifeSprint&lt;/a&gt;-ers &lt;a href="https://x.com/minrk"&gt;@minrk&lt;/a&gt; and @nordholmen are working to connect &lt;a href="https://x.com/hashtag/JupyterNotebooks?src=hash"&gt;#JupyterNotebooks&lt;/a&gt; / &lt;a href="https://x.com/hashtag/Binder?src=hash"&gt;#Binder&lt;/a&gt; with DAR / &lt;a href="https://x.com/hashtag/Texture?src=hash"&gt;#Texture&lt;/a&gt; / &lt;a href="https://x.com/stencila"&gt;@Stencila&lt;/a&gt;, so that users can edit reproducible documents as part of a Binder project &lt;a href="https://t.co/2GoGNydsmX"&gt;https://t.co/2GoGNydsmX&lt;/a&gt; (&lt;a href="https://x.com/mybinderteam"&gt;@mybinderteam&lt;/a&gt; &lt;a href="https://x.com/ProjectJupyter"&gt;@ProjectJupyter&lt;/a&gt; &lt;a href="https://x.com/_SUBSTANCE"&gt;@_substance&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;&lt;img src="https://jasongrout.github.io/medium-archive/pelican/posts/2018/elife-sprint-integrating-stencila-and-binder/images/005-Dc14Uo1W0AEwdk9.jpg" alt="" loading="lazy" data-body-image=""&gt;&lt;/p&gt;
&lt;p&gt;— &lt;a href="https://x.com/eLifeInnovation"&gt;eLife Innovation (@eLifeInnovation)&lt;/a&gt;, &lt;a href="https://x.com/eLifeInnovation/status/994583390895697920"&gt;May 10, 2018&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
</content><category term="Binder"/><category term="open science"/><category term="reproducibility"/></entry><entry><title>Binder 2.0, a Tech Guide</title><link href="https://jasongrout.github.io/medium-archive/pelican/posts/2017/binder-2-0-a-tech-guide-2017/" rel="alternate"/><published>2017-11-30T16:01:00+00:00</published><updated>2017-11-30T19:25:00+00:00</updated><author><name>Chris Holdgraf</name></author><id>tag:jasongrout.github.io,2017-11-30:/medium-archive/pelican/posts/2017/binder-2-0-a-tech-guide-2017/</id><summary type="html">&lt;p&gt;Authors: The Binder project is comprised of many individuals within and outside of the core Jupyter team. A list of members that…&lt;/p&gt;
</summary><content type="html">&lt;p&gt;&lt;img src="https://jasongrout.github.io/medium-archive/pelican/posts/2017/binder-2-0-a-tech-guide-2017/images/001-1_cWQj_YdmY_p14eh628N_Kg.webp" alt="" loading="lazy" data-body-image=""&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Authors: The Binder project is comprised of many individuals within and outside of the core Jupyter team. A list of members that contributed to this post is at the end of this article.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Note: this post focuses more on technical changes in the Binder 2.0 reboot. For a post about user-facing features and future plans, see&lt;/em&gt; &lt;a href="https://elifesciences.org/labs/8653a61d"&gt;&lt;em&gt;this eLife blog post&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;We are undergoing a dramatic increase in the complexity of techniques for analyzing data, doing scientific research, and sharing our work with others. In early 2016, the &lt;a href="https://mybinder.org"&gt;Binder project&lt;/a&gt; was announced, attempting to connect these three components. A &lt;a href="https://elifesciences.org/labs/a7d53a88/toward-publishing-reproducible-computation-with-binder"&gt;blogpost in eLife&lt;/a&gt; described a vision where scientists could specify dependencies along with a collection of Jupyter notebooks. Binder builds a Docker image from these dependencies, and provides a URL where any user in the world can instantly recreate this environment.&lt;/p&gt;
&lt;p&gt;Want to see it in action? Click the button below.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://mybinder.org/v2/gh/wildtreetech/explore-open-data/binder20-elife?filepath=bikes-per-week.ipynb"&gt;&lt;img src="https://jasongrout.github.io/medium-archive/pelican/posts/2017/binder-2-0-a-tech-guide-2017/images/002-1_IA00K8fa8FvXedoBBDh2fg.webp" alt="" loading="lazy" data-body-image=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;With this post we are proud to announce the next version of Binder. It aims to be more modular, more flexible, more stable, faster, and more extensible than its predecessor. Powering this version of Binder is a collection of tools in the Jupyter ecosystem. Since being released, the Binder project has learned many things about implementing fast, flexible online deployments. In addition, its vision has expanded to include not only Jupyter notebooks, but many other computational workflows. You can access an open beta version of this deployment here:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://mybinder.org"&gt;mybinder.org&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You can find a list of sample repositories to learn how to create “Binder”-ready repositories here:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/binder-examples"&gt;github.com/binder-examples&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You can also see what the Binder community has been up to in creating their own repositories by checking the GitHub Binder topic:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;https://github.com/topics/binder
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Give it a shot, build some repositories, and importantly, tell us what could be improved on our &lt;a href="https://github.com/jupyterhub/binderhub"&gt;GitHub repo&lt;/a&gt;. Below we’ll describe a bit about what’s new.&lt;/p&gt;
&lt;figure&gt;
&lt;img alt="The new Binder UI. Users input a URL to a git repository (or specify a specific branch/tag/commit). Upon clicking “launch”, you will be directed to a live environment where you can interact with the code." src="https://jasongrout.github.io/medium-archive/pelican/posts/2017/binder-2-0-a-tech-guide-2017/images/003-1_lWcoBaRvNzXxzGPqV_3vew.webp" loading="lazy" data-body-image=""&gt;
&lt;figcaption&gt;The new Binder UI. Users input a URL to a git repository (or specify a specific branch/tag/commit). Upon clicking “launch”, you will be directed to a live environment where you can interact with the code.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 id="whats-new"&gt;What’s new?&lt;/h2&gt;
&lt;p&gt;First off we’ll describe how the experience will change for users. The short answer is: not much. The goal of Binder is still enabling you to intantly create interactive and shareable repositories. We’ve completely rebuilt the backend of Binder, but we’ve made minimal changes to the front-end user experience.&lt;/p&gt;
&lt;p&gt;The biggest difference you should notice is that Binder is both faster and more stable. You’ll still be able to generate Binder links from a git URL from a single web-page. However, there are a few key differences:&lt;/p&gt;
&lt;h3 id="new-default-environment"&gt;New Default Environment&lt;/h3&gt;
&lt;p&gt;Old versions of Binder were based off of a Docker image that contained a fairly heavy computational environment. The new Binder deployment makes minimal assumptions about what environment you want installed, by default the only thing that will be installed is the Jupyter Notebook and Python 3. This means you’ll need to be more expressive in the dependencies you include in your dependency files. For example, if you want &lt;code&gt;numpy&lt;/code&gt; or &lt;code&gt;matplotlib&lt;/code&gt;, you should specify them in a &lt;code&gt;requirements.txt&lt;/code&gt; or &lt;code&gt;environment.yml&lt;/code&gt; file. Since you’re explicitly listing your requirements it makes reproducing your work more reliable, and allows the Binder infrastructure to change more freely without breaking your repository code.&lt;/p&gt;
&lt;h3 id="new-url-structure"&gt;New URL structure&lt;/h3&gt;
&lt;p&gt;The new URL structure for Binder follows the following convention:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;https://mybinder.org/v2/gh/&amp;lt;org-name&amp;gt;/&amp;lt;repo-name&amp;gt;/&amp;lt;branch|tag|hash-name&amp;gt;?filepath=&amp;lt;path-to-file&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;For example, below is the URL for a basic Binder-ready Python 3 repository, it includes basic information about the repository:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;https://mybinder.org/v2/gh/binder-examples/requirements/master
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;You can also specify parameters that do things like point users to a particular file or initialize a user-interface. For example, the following URL starts JupyterLab once users click the link:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;https://mybinder.org/v2/gh/binder-examples/jupyterlab/master?urlpath=lab
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;In each case, note the &lt;code&gt;gh&lt;/code&gt; at the very beginning — this specifies that the git URL exists on github.com. It is possible to build new URL parsers for other online repositories such as BitBucket, osf.io, or any other provider. We are currently focusing on Git and GitHub, but nothing prevents Binder from being compatible with other kinds of content providers. Shortly before this blog post we added support for arbitrary git URLs to binderhub, so watch this space.&lt;/p&gt;
&lt;h3 id="specify-a-specific-branch-tag-commit"&gt;Specify a specific branch / tag / commit&lt;/h3&gt;
&lt;p&gt;Also notice that in the URL above you can specify a branch, tag, or commit hash for the Binder image. This allows you to ensure that a Binder image will &lt;strong&gt;always&lt;/strong&gt; remain the same (if you specify package versions properly). This is a crucial step for reproducibility and maintaining consistency in how users experience the files in your repository.&lt;/p&gt;
&lt;p&gt;Notice that in the URL above you can specify a commit hash or git tag for the Binder image. This hash is unique to the state of the code at the moment that the commit was made, ensuring that Binder can rebuild the exact same environment any time. Note that if authors don’t want to guarantee the same reproducible environment, they can specify a branch and BinderHub will resolve it to the latest commit hash before building the environment.&lt;/p&gt;
&lt;h3 id="binder-auto-building"&gt;Binder auto-building&lt;/h3&gt;
&lt;p&gt;When a git repository is launched, Binder will now check whether an image has already been built for that repository at the same commit hash. If it has, then Binder will skip the building process and take you straight to a JupyterHub instance that serves this image.&lt;/p&gt;
&lt;p&gt;If the image hasn’t been built, then it will automatically be generated before sending the user to JupyterHub. The only difference will be the amount of time it takes before entering the JupyterHub environment. This means that authors no longer need to explicitly build their Binder images when they update a branch. The next time someone clicks a Binder link, it will happen automatically. If you don’t want this behavior, be sure to point Binder to a specific tag or commit hash, rather than a branch name or tag. For example, here’s a Binder URL that will always point to the same commit hash:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;https://mybinder.org/v2/gh/wildtreetech/explore-open-data/binder20-elife
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;While this URL points to a branch, and will thus be re-built each time a new commit is made to that branch:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;https://mybinder.org/v2/gh/wildtreetech/explore-open-data/master
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3 id="more-options-for-dependency-files"&gt;More options for dependency files&lt;/h3&gt;
&lt;p&gt;Users often want to specify a computational environment that is more complex than a simple list of Python requirements. While this is possible by specifying a Dockerfile, it’s often an overly-complicated solution to this problem. Binder now uses &lt;a href="https://github.com/jupyter/repo2docker"&gt;repo2docker&lt;/a&gt; to build a Docker image from your repository. This makes it possible to specify a more complex environment with text files. For example, you can use an &lt;code&gt;apt.txt&lt;/code&gt; file to install packages with &lt;code&gt;apt-get&lt;/code&gt;, or use a file called &lt;code&gt;postBuild&lt;/code&gt; to define shell commands that are run before generating the Docker image (e.g. for downloading some data or running scripts). See the &lt;a href="https://repo2docker.readthedocs.io/en/latest/samples.html"&gt;repo2docker documentation&lt;/a&gt; for a list of files that are supported with Binder.&lt;/p&gt;
&lt;p&gt;For a selection of examples that show off how to specify dependencies take a look at the example gallery: &lt;a href="https://github.com/binder-examples"&gt;https://github.com/binder-examples&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="more-user-interfaces"&gt;More user interfaces&lt;/h3&gt;
&lt;figure&gt;
&lt;img alt="The JupyterLab interface running on Binder. You can access the JupyterLab demo repository at mybinder.org/v2/gh/binder-examples/jupyterlab/master?urlpath=lab" src="https://jasongrout.github.io/medium-archive/pelican/posts/2017/binder-2-0-a-tech-guide-2017/images/004-1_TW7Gnwl-02cejzgs1nnX2Q.webp" loading="lazy" data-body-image=""&gt;
&lt;figcaption&gt;The JupyterLab interface running on Binder. You can access the JupyterLab demo repository at ``mybinder&lt;code&gt;.org/v2/gh/binder-examples/jupyterlab/master?urlpath=lab&lt;/code&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;The previous iteration of Binder only supported the classic Jupyter Notebook user interface, while the new deployment will additionally support &lt;a href="https://github.com/binder-examples/dockerfile-rstudio"&gt;RStudio&lt;/a&gt; and &lt;a href="https://github.com/binder-examples/jupyterlab"&gt;JupyterLab&lt;/a&gt;. Because of the extra build configuration files specified above, you can also utilize more tools in the Jupyter widgets ecosystem, such as the &lt;a href="https://github.com/binder-examples/jupyter-rise"&gt;RISE plugin for interactive presentations&lt;/a&gt; or the &lt;a href="https://github.com/oschuett/appmode"&gt;appmode plugin&lt;/a&gt; to generate interactive apps from your repository. We also welcome contributions to add support for other user interfaces.&lt;/p&gt;
&lt;h3 id="more-online-repository-providers"&gt;More online repository providers&lt;/h3&gt;
&lt;p&gt;While GitHub is a fantastic repository of open-source code, it’s not the only repository. The new Binder deployment makes it straightforward to adding support for new sources of code (for example, GitLab, the OSF, or even non-git codebases). Currently GitHub is the only supported source for code, but we welcome contributions enabling support for new sources.&lt;/p&gt;
&lt;p&gt;We’re excited about this next step in Binder’s development, and hopeful that we can build a community around this powerful set of tools. Don’t hesitate to open an issue or pull request on our &lt;a href="https://github.com/jupyterhub/binderhub"&gt;GitHub repository&lt;/a&gt;, or to reach out via &lt;a href="https://gitter.im/jupyterhub/binder"&gt;our Gitter channel&lt;/a&gt;. We look forward to seeing what comes next, and to continue enabling reproducible and open workflows in data science and research.&lt;/p&gt;
&lt;h2 id="for-developers"&gt;For developers&lt;/h2&gt;
&lt;p&gt;The next few sections are meant for developers interested in deploying their own Binder, or for those interested in the technical details behind the new deployment.&lt;/p&gt;
&lt;h3 id="tech-components"&gt;Tech components&lt;/h3&gt;
&lt;p&gt;The three main technical components behind the new Binder backend are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://binderhub.readthedocs.io/"&gt;BinderHub&lt;/a&gt;, currently on display at &lt;a href="https://mybinder.org"&gt;mybinder.org&lt;/a&gt; and contained in the &lt;a href="https://github.com/jupyterhub/binderhub"&gt;binderhub repository&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://repo2docker.readthedocs.io/"&gt;repo2docker&lt;/a&gt;, a tool that converts a code repository into a Docker image with an environment specified via dependency files (e.g., &lt;code&gt;requirements.txt&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;&lt;a href="https://jupyterhub.readthedocs.io/en/latest/"&gt;JupyterHub&lt;/a&gt;, which hosts user instances with a server in the cloud. We use a distribution of JupyterHub that runs on top of Kubernetes.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For more information on the infrastructure behind Binder, &lt;a href="https://binderhub.readthedocs.io/en/latest/"&gt;see the documentation&lt;/a&gt;.&lt;/p&gt;
&lt;figure&gt;
&lt;img alt="A prototype of RStudio running in a Binder. This is currently support with a Dockerfile, and we are working on supporting R build files natively. You can access this repository at:" src="https://jasongrout.github.io/medium-archive/pelican/posts/2017/binder-2-0-a-tech-guide-2017/images/005-1_EgMk1PYMl6ouIP_XQ5G5Fg.webp" loading="lazy" data-body-image=""&gt;
&lt;figcaption&gt;A prototype of RStudio running in a Binder. This is currently support with a Dockerfile, and we are working on supporting R build files natively. You can access this repository at: &lt;code&gt;&amp;lt;https://mybinder.org/v2/gh/binder-examples/dockerfile-rstudio/master&amp;gt;&lt;/code&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h3 id="kubernetes"&gt;Kubernetes&lt;/h3&gt;
&lt;p&gt;Binder now also heavily relies on &lt;a href="https://kubernetes.io/"&gt;Kubernetes&lt;/a&gt; for scaling our image building service and the JupyterHub. Kubernetes is massively scalable and has a strong community of developers behind it. Moreover, Kubernetes is cloud-agnostic. It can be run on Google Cloud, Microsoft Azure, and AWS among others, as well as on your own bare metal hardware if needed. Because BinderHub is built to run on top of Kubernetes, you can deploy Binder off of any of these resources as well (see below).&lt;/p&gt;
&lt;h3 id="deploying-your-own-binder-server"&gt;Deploying your own Binder server&lt;/h3&gt;
&lt;p&gt;While mybinder.org will continue to exist as a public service, we hope to see new Binder deployments for many different use cases in the wild. One of our primary goals is to make it easier for users to deploy their own Binder servers. This is relatively straightforward by following the instructions on the &lt;a href="https://binderhub.readthedocs.io/en/latest/"&gt;BinderHub documentation&lt;/a&gt;, which are currently under active development to make ongoing improvements as the Kubernetes technology evolves. We’re continuously updating these steps to make them as clear as possible, so please don’t hesitate to open an issue or a pull request on our &lt;a href="https://github.com/jupyterhub/binderhub"&gt;github repository&lt;/a&gt; and make suggestions.&lt;/p&gt;
&lt;p&gt;We would love to see others deploy their own BinderHub servers, either for their own communities, or as part of a federated public service of BinderHubs.&lt;/p&gt;
&lt;h2 id="future-development"&gt;Future development&lt;/h2&gt;
&lt;p&gt;This is the just the beginning of new features and improvements to Binder. We’re working hard to grow an open-source community around these tools, and we encourage issues, comments, and PRs on the &lt;a href="https://github.com/jupyterhub/binderhub"&gt;BinderHub&lt;/a&gt;, &lt;a href="https://github.com/jupyter/repo2docker"&gt;repo2docker&lt;/a&gt;, and &lt;a href="https://github.com/jupyterhub/jupyterhub"&gt;JupyterHub&lt;/a&gt; repositories. We look forward to growing the Binder ecosystem, and we’re excited to see all of the Binders that people design.&lt;/p&gt;
&lt;h2 id="acknowledgements-alphabetical-order"&gt;Acknowledgements (alphabetical order)&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;C. Titus Brown (UC Davis), Matthias Bussonnier (UC Berkeley), Jessica Forde (UC Berkeley), Brian Granger (Cal Poly), Tim Head (Wild Tree Tech), Chris Holdgraf (UC Berkeley), Andrew Osheroff (Google), Naomi Penfold (eLife Sciences), M Pacer (UC Berkeley), Yuvi Panda (UC Berkeley), Fernando Perez (UC Berkeley), Min Ragan-Kelley (Simula Research Laboratory), and Carol Willing (Cal Poly). The Binder project is currently being funded from a grant from the Moore Foundation.&lt;/em&gt;&lt;/p&gt;
</content><category term="Binder"/><category term="Docker"/><category term="Kubernetes"/><category term="open science"/></entry></feed>