# \[ANN\] a new binder gallery

**URL:** <https://discourse.jupyter.org/t/ann-a-new-binder-gallery/1204>\
**Category:** Binder\
**Created:** [May 28, 2019, 2:32pm UTC](https://discourse.jupyter.org/t/ann-a-new-binder-gallery/1204 "2019-05-28T14:32:19Z")\
**Posts on this page:** 13\
**Page:** 1

<div class="post-metadata">

**Author:** ![bitnik](https://yyz1.discourse-cdn.com/flex031/user_avatar/discourse.jupyter.org/bitnik/32/79_2.png) [@bitnik](https://discourse.jupyter.org/u/bitnik)\
**Post date:** [May 28, 2019, 2:32pm UTC](https://discourse.jupyter.org/t/ann-a-new-binder-gallery/1204/1 "2019-05-28T14:32:19Z")

</div>

There is a new binder gallery on GESIS Notebooks: [https://notebooks.gesis.org/gallery/](https://notebooks.gesis.org/gallery/)

**Popular Repositories** table is dynamically updated whenever a launch happens on GESIS binder. GESIS binder uses a patched version of [Event Logging](https://binderhub.readthedocs.io/en/latest/eventlogging.html), so it makes a post request to gallery app which saves the event into a database. Clicking a row on the table displays description of the repo (but only github repos) if available.

Repos in **Created by GESIS** and **Featured Projects** tables are manual selections of GESIS people.

When you open the gallery, you will see that there is a dropdown list of binders (GESIS, [mybinder.org](http://mybinder.org) and Pangeo). Selecting a binder updates badge urls, so users can launch a repo from the gallery on preffered binder. The selection is also saved into a cookie.

And here is some of what we plan to do soon:

- add a popular repos table for [mybinder.org](http://mybinder.org) and parse every day [archives of events of mybinder.org](https://archive.analytics.mybinder.org/)
- a rest API to post and get launch events from database
- remove GESIS related templates and statics. and make them configurable.

Repo of the gallery: [https://github.com/gesiscss/binder\_gallery](https://github.com/gesiscss/binder_gallery)

---

<div class="post-metadata">

**Author:** ![betatim](https://yyz1.discourse-cdn.com/flex031/user_avatar/discourse.jupyter.org/betatim/32/10_2.png) [@betatim](https://discourse.jupyter.org/u/betatim)\
**Post date:** [May 28, 2019, 3:00pm UTC](https://discourse.jupyter.org/t/ann-a-new-binder-gallery/1204/2 "2019-05-28T15:00:56Z")

</div>

This is very cool!

Is it easy to adjust it so it computes the “popular repos” once a day (or so)?

---

<div class="post-metadata">

**Author:** ![choldgraf](https://yyz1.discourse-cdn.com/flex031/user_avatar/discourse.jupyter.org/choldgraf/32/1264_2.png) [@choldgraf](https://discourse.jupyter.org/u/choldgraf)\
**Post date:** [May 28, 2019, 3:29pm UTC](https://discourse.jupyter.org/t/ann-a-new-binder-gallery/1204/3 "2019-05-28T15:29:15Z")

</div>

Whoah, that’s awesome! Thanks for sharing this w/ the community!

I’d love to have something similar for this on [mybinder.org](http://mybinder.org) too - especially if it can highlight other BinderHubs in the ecosystem as well!

---

<div class="post-metadata">

**Author:** ![bitnik](https://yyz1.discourse-cdn.com/flex031/user_avatar/discourse.jupyter.org/bitnik/32/79_2.png) [@bitnik](https://discourse.jupyter.org/u/bitnik)\
**Post date:** [May 29, 2019, 12:36pm UTC](https://discourse.jupyter.org/t/ann-a-new-binder-gallery/1204/4 "2019-05-29T12:36:54Z")

</div>

I am not sure if I understand your question correctly but let me explain it in detail:

Each lunch on GESIS Binder is saved in a database (each database entry has the same data as each line of [archives of mybinder analytics events](https://archive.analytics.mybinder.org/)).

When you open the gallery, you see that there are 5 tabs under **Popular Repos** : Last 24 Hours, Last week, Last 30 days, Last days and All time. For example for last 24 hours, from database we get launches happened in last 24 hours, count number of launches per repo and order them.

Soon we will also have an API and one endpoint will be something like `/api/popuplar_repos/<from_datetime>/<to_datetime>` and it will be possible to get popular repos of a specific day.

Note: Tabs for last 30 days and 60 days have the same data right now, because the new gallery is up since 10.05.2019.

---

<div class="post-metadata">

**Author:** ![yuvipanda](https://yyz1.discourse-cdn.com/flex031/user_avatar/discourse.jupyter.org/yuvipanda/32/17_2.png) [@yuvipanda](https://discourse.jupyter.org/u/yuvipanda)\
**Post date:** [May 29, 2019, 6:13pm UTC](https://discourse.jupyter.org/t/ann-a-new-binder-gallery/1204/5 "2019-05-29T18:13:15Z")

</div>

This is awesome!

I am wondering - would you be open to publishing events from the GESIS binder to [archive.analytics.mybinder.org](http://archive.analytics.mybinder.org)? We should add an ‘origin’ field, and have this be a nice aggregate space. I have a local patch that is a WIP towards this - we need this for the OVH cluster anyway. It is fairly minimal work both for us and you.

Thoughts?

---

<div class="post-metadata">

**Author:** ![bitnik](https://yyz1.discourse-cdn.com/flex031/user_avatar/discourse.jupyter.org/bitnik/32/79_2.png) [@bitnik](https://discourse.jupyter.org/u/bitnik)\
**Post date:** [May 31, 2019, 8:53am UTC](https://discourse.jupyter.org/t/ann-a-new-binder-gallery/1204/6 "2019-05-31T08:53:03Z")

</div>

yes, we are open to do that 🙂

Do you mean that we send events to your StackDriver and your analytics-publisher makes archives and publish them or ? I think we also need permissions to do that.

---

<div class="post-metadata">

**Author:** ![yuvipanda](https://yyz1.discourse-cdn.com/flex031/user_avatar/discourse.jupyter.org/yuvipanda/32/17_2.png) [@yuvipanda](https://discourse.jupyter.org/u/yuvipanda)\
**Post date:** [May 31, 2019, 8:54am UTC](https://discourse.jupyter.org/t/ann-a-new-binder-gallery/1204/7 "2019-05-31T08:54:26Z")

</div>

> [@bitnik](#):
>
> Do you mean that we send events to your StackDriver and your analytics-publisher makes archives and publish them or ? I think we also need permissions to do that.

yup! The idea being we’ll make you a scoped service key that lets you send events to our stackdriver, and then our analytics-publisher can continue doing its job. We’ll add an ‘origin’ field to the event schema to make sure we know where it comes from. How does that sound?

---

<div class="post-metadata">

**Author:** ![bitnik](https://yyz1.discourse-cdn.com/flex031/user_avatar/discourse.jupyter.org/bitnik/32/79_2.png) [@bitnik](https://discourse.jupyter.org/u/bitnik)\
**Post date:** [May 31, 2019, 9:11am UTC](https://discourse.jupyter.org/t/ann-a-new-binder-gallery/1204/8 "2019-05-31T09:11:34Z")

</div>

that’s a good plan 🙂

---

<div class="post-metadata">

**Author:** ![bitnik](https://yyz1.discourse-cdn.com/flex031/user_avatar/discourse.jupyter.org/bitnik/32/79_2.png) [@bitnik](https://discourse.jupyter.org/u/bitnik)\
**Post date:** [August 7, 2019, 2:05pm UTC](https://discourse.jupyter.org/t/ann-a-new-binder-gallery/1204/9 "2019-08-07T14:05:54Z")

</div>

With the new version of gallery we have [a table for the Binder Federation (Popular repositories of last week)](https://notebooks.gesis.org/gallery/) on GESIS Notebooks. The data is parsed from [mybinder.org](http://mybinder.org) events archive. The archive is parsed and so the table is updated every hour. And this the page you can find all launches happened on Binder Federation in last week: [https://notebooks.gesis.org/gallery/mybinder/7d/](https://notebooks.gesis.org/gallery/mybinder/7d/)

---

<div class="post-metadata">

**Author:** ![bitnik](https://yyz1.discourse-cdn.com/flex031/user_avatar/discourse.jupyter.org/bitnik/32/79_2.png) [@bitnik](https://discourse.jupyter.org/u/bitnik)\
**Post date:** [August 7, 2019, 2:09pm UTC](https://discourse.jupyter.org/t/ann-a-new-binder-gallery/1204/10 "2019-08-07T14:09:08Z")

</div>

Btw @yuvipanda I created [an issue](https://github.com/jupyterhub/mybinder.org-deploy/issues/1099) about sending GESIS Binder events to mybinder StackDriver. I hope this is the good way to proceed about it 🙂

---

<div class="post-metadata">

**Author:** ![betatim](https://yyz1.discourse-cdn.com/flex031/user_avatar/discourse.jupyter.org/betatim/32/10_2.png) [@betatim](https://discourse.jupyter.org/u/betatim)\
**Post date:** [August 8, 2019, 8:11am UTC](https://discourse.jupyter.org/t/ann-a-new-binder-gallery/1204/11 "2019-08-08T08:11:41Z")

</div>

This looks super cool!

One request: can you update the drop down menu to only offer “[mybinder.org](http://mybinder.org)” as launch location instead of the individuals clusters? We want to prevent as much as possible people relying on any particular cluster (via bookmarking, sharing links, etc.)

---

<div class="post-metadata">

**Author:** ![bitnik](https://yyz1.discourse-cdn.com/flex031/user_avatar/discourse.jupyter.org/bitnik/32/79_2.png) [@bitnik](https://discourse.jupyter.org/u/bitnik)\
**Post date:** [August 8, 2019, 10:58am UTC](https://discourse.jupyter.org/t/ann-a-new-binder-gallery/1204/12 "2019-08-08T10:58:05Z")

</div>

Thanks for reminding, I already wanted to do it since federation is there. So now I updated the dropdown to only have [mybinder.org](http://mybinder.org).

---

<div class="post-metadata">

**Author:** ![choldgraf](https://yyz1.discourse-cdn.com/flex031/user_avatar/discourse.jupyter.org/choldgraf/32/1264_2.png) [@choldgraf](https://discourse.jupyter.org/u/choldgraf)\
**Post date:** [August 8, 2019, 4:21pm UTC](https://discourse.jupyter.org/t/ann-a-new-binder-gallery/1204/13 "2019-08-08T16:21:31Z")

</div>

amazing! we should link to it from somewhere in [docs.mybinder.org](http://docs.mybinder.org)!
