Creating an Inclusive Django Community with Kenya Phelps
Published July 15, 2026
This video features Lisa Ballard at DjangoCon US 2015 in Austin, Texas, USA.
Exploring the outer Solar System with Django
I'm a web developer at the Planetary Rings Node, part of the NASA Planetary Data System. Our tiny shop is devoted to archiving, cataloging, and distributing scientific data sets relevant to planetary ring systems. Our base of operations is the SETI Institute, where a research community is busy searching for and studying life in the universe.
At the Rings Node I develop and maintain an outer planets space mission data search tool called OPUS which is built with Django. It lets users search data, browse images, and access its API via http. I'll talk about some of the reasons for OPUS, some of the challenges we faced in building it out and porting it - from a hot mess of php - to what it is today, and I'll talk a little about our plans for the future.
And we'll see some pretty pictures of the outer planets. :-D
Lisa Ballard explains how OPUS (Outer Planets Unified Search), a Django-based archive at the SETI Institute, brings more than a million observations from missions including Voyager, Cassini, Galileo, New Horizons, and Hubble into one searchable interface. Users can filter images by planets, moons, instruments, and lighting geometry, assemble downloads, and access the same searches through an open JSON API; this makes it easier for scientists, journalists, artists, and the public to study ring systems, find image sequences, create color composites, and produce animations. She argues that a unified, accessible tool reduces the effort caused by mission data being split across instrument-specific archives, while noting that OPUS runs on a relatively conventional self-hosted Django, MySQL, Apache, jQuery, and memcached stack.
Summarised automatically from the transcript.
Automatically transcribed, so expect mistakes in names and technical terms.
Speaker 1: Thank you. Thank you. Um thank you for coming to my talk. I work on a project called Opus. It's a search interface that people use to find data and images from NASA space probe missions to the outer solar system. It's built on Django and I'm going to talk a little bit about why we built it and some of the ways people are using it and I'll demo it as well. So I work at SETI Institute in Mountain View, California. SETI stands for Search for Extraterrestrial Intelligence, and it started in 1984 as a NASA project to use radio observatories to listen for signals from other star systems that might indicate signs of intelligent life.
Speaker 1: And so today, 30 years later SETI runs its own up it runs its own radio observatory and the SETI project is still going strong. But it's also a larger research center where it's the base of operations for over 60 scientists and their students and staff. Who study many areas of planetary science, such as planetary geology, asteroid research, uh, planetary dynamics, exoplanets. So basically anything related to the study of life and habitability in the universe. So our group at study is a NASA-funded data archive. And our scientific leadership are experts in planetary ring
Speaker 1: moon systems. So many people are aware that Saturn has these epic, beautiful rings, but a lot of people don't realize that Jupiter, Neptune, and Uranus actually have rings as well, and these are some pictures of them. And so we at the RingsNode archive data from missions to these planets, and we support researchers in this field. So we built OPUS. In fine NASA tradition, we gave it an acronym. OPUS stands for Outer Planets Unified Search. And the idea is that when you Um, sorry, when you've uh we we've brought several missions into one single interface. So like we've unified them. So I'll jump right into demoing it for you.
Speaker 1: So this is the landing page and ironically it's sort of my least favorite page of the interface because it's just a little bit complicated when you first land on it. We serve primarily uh the scientific research community and it has a lot of features and options and uh it has a lot of specialized features so it can be rather complicated. My sort of bad joke is that it looks like a DMV form. But the idea is this. You start with a lot of results that you can access our entire our entire database. So that blue bar at the top There's a number, if you can see that. Um that's telling you that there are 1. 2 million results that you can access right now. And that is a count of everything in the database.
Speaker 1: So for this tool, we uh archive the complete set of remote sensing observations for several NASA missions, both Voyager probes, Cassini, Galileo, New Horizons, and there's some Hubble data in here as well. And so the idea is that you want to narrow down your result count to find the data that you're looking for or what you want to learn about. And the interface gives you feedback as you sort of drill down into the data. And on the left side, there's this monster list of parameters. And if you click one of those, it brings in a search widget. There are now two search widgets Showing by default in the center. So it'll bring in a search widget based on any number of parameters, and you can use those to constrain your search.
Speaker 1: So I'll show you what I mean. I'll go ahead and click Jupyter. And the first thing you might notice is that a list opens below where I clicked. So that is actually a list of Jupiter's moons. So when you click one of the planets, you get the um a list of its targets or its moons or ring features will open and it lets you sort of drill down further. And the other thing that happened is that the number in the top got a lot smaller because you're basically saying, show me only results tagged Jupiter. And so clicking browse results to see what we get, and you get this gallery of space images that is forever Infinite scrolling.
Speaker 1: So the default ordering of this interface is ascending time. So what we're actually seeing here Are the earliest observations in our database. And this is Voyager 1 as it first opens its camera shutter and images the planet Voyager on its approach to Voyager. So the Voyager mission is actually two spacecraft. They're identical. They were launched a few months apart in the late 70s. And they both had an original mission of just going to Jupiter and Saturn, but they've both extended their mission far beyond that. Jupiter uh Voyager 2 has actually gone on to Uranus and Neptune. And Voyager 1, the spacecraft that took these images, has actually left the solar system, becoming humanity's first interstellar probe.
Speaker 1: So you can definitely infinitely scroll here, but you can also jump to pages. So there's a little input at the top, and I jumped here about 125 pages forward and also forward in time. So now Voyager 1 is much closer to uh Jupiter and it's taking these close-up images of Jupiter's atmosphere and the very strange textures of its storms and its turbulent atmosphere So I should say a little bit uh about these these gallery thumbnails because they're um if you can pick up the color here, they're actually green and purple and and blue. So space imaging cameras are actually black and white cameras most often. You can collect a lot more information at every pixel. with a black and white camera.
Speaker 1: And so um and each of these cameras has color filters that they use. They have filter wheels so they can drop in a filter in front of the camera and that way they pick up light at different wavelengths or different colors. But the when we get the images back on the ground, without any special processing, they are actually grayscale or black and white images So for this gallery, we actually added a false color tinting just as an indicator to the user of what filter was used in that observation as a quick way to see it. And I'll tell you a little bit later about why that's helpful. So this is a different search. I've done nothing but click Saturn instead of Jupiter, and I skipped to page 700 just to get forward in time a little bit here. And another th
Speaker 1: and a thing you might notice is that the number is much larger that that it the result count is much larger than it was for Jupiter. And that's because most of the images in our database are actually of Saturn. And that's because of the Cassini mission. So the Cassini mission, the Cassini spacecraft launched 20 years after the Voyagers left Earth. And unlike the Voyagers, which are flyby missions, Cassini is actually an orbiter. So it went into orbit around Saturn. And today it's completed over 220 orbits. And it does these crazy orbits. So this is a diagram of the orbital path of Cassini. And you can see it swings way close to the planet and way far out. And what it's doing is it's trying to image the ring system because it's a very vast system. And also Saturn has over
Speaker 1: 60 moons. And so they plan these orbits to fly very close to some of the moons and get close-up images of moons and then come in very close to the planet to get images of the atmosphere and close-up views of the rings. So one thing I love about Cassini in tur in terms of this interface is it's a very stable platform for imaging cameras. So when Cassini focuses on a thing, it's very good at keeping that thing in the center of the frame. And so as you browse Cassini images, you can see that many of them kind of look like frames of a movie. And so this is a sequence where Cassini is looking at the tiny moon atlas in the center there. And if you in this interface you can click and see a larger image. And if you kind of just, if you have a good internet
Speaker 1: connection and you hold down the right arrow key, you can kind of get this like frame animation movie effect. And there's many, many frames like this where there's just interesting movie sequences that that you can check out. And people are using this. They're making frame animation movies, they're adding music beds, and they've they've gotten really creative. They're gluing them together and making these videos without having to do any extra processing work to stabilize the scene in the frame. And I should I should mention this is a jQuery plugin called Colorbox that does a really nice job of preloading the next image. So I'm going to go back to the interface and I'll show you a really common use case which is to search by instrument and that just means you want to you want to choose a particular camera on a particular spacecraft
Speaker 1: So what I'm going to do here is bring in the instrument name widget, and I've picked New Horizons there because there's something interesting I can show you here. New Horizons went to Jupiter, and I'm going to pick the moon Io from the list. And here's a bunch of pictures of Io. And so, um, sorry, I got a little lost here. Um So this interface is actually a shopping cart. So you can sort of pick images you want. And then you can do things with them. You can download a CSV, you can create a zip file, and so this is sort of the view of what's in your cart. And you can interact with the images here as you sort of would in the gallery. And so one thing about this sequence of images, so a lot of people are aware of New
Speaker 1: Horizons because it just went to Pluto and got like our first um close-up images of Pluto. We never knew what Pluto looked like before. But it also had a really interesting encounter at Jupiter. Lots of things happened. So we'll we have all the Jupiter images, and when the Pluto images come back down and are released to the public, we'll have all the all of those too So if you can see this moon here where there's a little bump on the top, it looks kind of like a fountain that's kind of bright That's actually a volcano exploding just as New Horizons was taking pictures of it. Nobody knew this would be happening. They they had planned these pictures to take pictures of Io And here it was a volcano exploding at that moment. So from that sequence we get our first and only existing frame animation movie of a volcano erupting on another world.
Speaker 1: So I know, right? So so that's a little bit closer. Um That is a 200-mile-high plume. The volcano's name is Tavashtar. It's actually over the horizon a little bit, so you're just seeing the the edge of it or the top of it. So why did we do this? Why did we build Opus? The challenge was that people researching outer planets and especially people studying uh ring systems were having to do a lot of extra work in order to get the data that they needed. And this relates to the fact that space missions are enormous collaborations. If you think about a spacecraft, we We attach a lot of instruments to every spacecraft that goes into space. Um here 's an example of the Cassini spacecraft.
Speaker 1: So there's very specialized instruments, cameras, telescopes. spectrometers and each instrument has its own team of people that work just on that instrument. They build the instrument and they get the data back and they shepherd the data back back to Earth and they release it on their own websites And NASA has a standard for how the data is formatted, and the teams mostly follow that But what we are seeing is that people had to do a lot of different searching around different websites and knowing a lot about instruments in order to work with the data. And this caused frustration. So we wanted to address this pain point. We wanted to create a single interface that would serve a larger swath of researchers
Speaker 1: and to s and we try to make it easy to use. So who uses it? Scientists use it. There's many ways in which it saves them time. And I'll give you just one example of a parameter that people who study ring moon systems are particularly interested in and which Opus Opus makes easier easier to explore. And that is phase angle. So phase angle is just a way of quantifying the angle of light in a photograph. So if you're taking a picture and the light is coming from behind you, that is a low phase angle. And if you're taking a picture and the light is coming from in front of you so that the thing you're taking a picture of is backlit, that is high phase angle So right here you see two pictures of Saturn.
Speaker 1: They're both of Saturn. The top image is at high phase angle. Saturn is backlit. And the bottom image, Saturn is uh is a low phase angle image. So the image is cut the light is coming from behind the camera. And uh this is sort of the bottom view is more what we're used to seeing from ground-based telescopes where the sun is behind the camera. Um and as you can see the rings look very, very different at different lighting angles So just by changing the lighting angle, you can change what you pick up in the rings. And this sort of research allows people to learn a lot more about the rings by looking at them at different lighting angles. And I'm not sure if you can tell in a top image, there's like a super wide, really faint, cloudy, sort of
Speaker 1: diffuse ring. that doesn't even appear at all in the bottom image. And that is actually the E-ring. And Cassini discovered this this enormous ring that's not part of the main rings. And here's a close-up of the brightest part of that ring. And there's a tiny moon there in Celadus. And what Cassini found is that Cassini Enceladus is actually venting water ice from its south polar region and feeding this giant diffuse ring. So, how do you do a phase angle search? I'm gonna do one. There's I'm just gonna do one against Saturn. So I pick out Saturn and then go into the monster menu and under lighting geometry there's a phase angle widget. And each of the widgets tell you sort of a hinting of what is what are valid values.
Speaker 1: So you don't have to know what are valid values. So right here I'm just going to pick some high numbers, 165 to 180. And the result that you get is some very pretty glowy uh images of Saturn with rings that are backlit. And in several of these you can actually see the E-ring Um whereas you couldn't see it in other images. So if you scroll down um a little bit here, there's some very bright Whoops, sorry. There's some very bright pictures of the E-ring and the tiny dot in there is Enceladus. So not only do scientists use it, science journalists occasionally use it. So at the website planetary. org you can find collections of these
Speaker 1: complete uh composite images created by senior editor of the Planetary Society, Emily Lochtawala. She's actually a scientist turned journalist. And she creates these composite images that show various planetary bodies in the same image to show scale comparisons to teach and Raise awareness about our solar system. So she uses opus when looking for images of specific bodies at specific resolutions And specific phase angles. And she tells me that making composite images like this would be 10 times harder without this tool Another community that uses it, there's a thriving community of people who create color versions of space probe images So space probe cameras are black and white cameras. They have different color filters.
Speaker 1: And so if you can find three images of the same scene taken with the red, green, and blue filter With some Photoshop skills and some artistry, you can make color versions of these spacecraft images. And these are much like the colors that your eyes might pick up if you were viewing the scene directly if you were out there with the spacecraft viewing it with your eyes. So people like Opus because our our gallery thumbnails are tinted, making it easier just to find those RGB sets So related to image processing and frame animations, there's a large format IMAX movie coming out. It's in production right now. It's called In Saturn's Rings. And it's made exclusively from real photographs taken by spacecraft and telescopes.
Speaker 1: So they're not using any CGI for this movie. There's no 3D rendering at all. Instead, they're processing over seven and a half million photographs taken from various spacecraft and telescopes. So I'll play you a clip from their uh late summer teaser that they released last year. So during production, they used Opus to find suitable image sets to stitch together into large-scale panoramas that they then animate to create the effect of Flying through space around Saturn. So this movie is due out later this year. So now I'm going to switch gears a little and talk about my favorite part of the interface, which is No interface. Opus has a completely open JSON API.
Speaker 1: You can make requests over HTTP and get a JSON response back. So any search that can be performed in the Opus interface can also be performed via an API call. The URL structures are the same. So what this means is that all the data and all the images that you can access using the interface, you can also access from your own scripts from the shell, from Python, anything you want via URL endpoints. So I'll show you an example. Here's one of our endpoints. For this one, I am asking for data and I want it in format JSON and I want to do this query. Planet equals Saturn, target equals Hyperion. That's a moon of Saturn. And you get this nice well-formatted JSON response.
Speaker 1: And in this case, you can also change the. json in the URL to . csv if you wanted to do that. Here's another another one. Let's say you want images. So here I'm asking for images size medium and I want it an HTML response this time, just so I can show you the pretty pictures in the browser And it's the same query except I've added an imaging camera just to make sure we get actual images back. And so you get a big list of Saturn's weird spongy moon Hyperion. If you go to the URL and change that . html to. json, you get the same list in JSON and only now it's a list of direct links to all those images. So
Speaker 1: , to find the API, you go to the main search interface. There's a link at the bottom, and that gets you to our API documentation where we've documented how to use it and shown several examples about how to use it. So we are a tiny, tiny team on a tiny budget. And I know I had to. Okay. limited resources. And I have to say the awesome icing on the cake is that I've experienced the Django community b community to be such a supportive community and welcoming to beginners because not so long ago I was also a beginner. So thank you awesome Django community for being who you are.
Speaker 1: And thank you to Django maintainers because we're making space images more accessible to scientists, journalists, artists, developers, and everyone. And you make this possible. Thank you. If there's any
Speaker 2: All right, cool. Uh so um I noticed on the main page you sort of talked about how you didn't like that page very much, because it's kind of a bit of a monster. In designing this site, um Uh were you designing it specifically with sort of the scientist in mind, or were you trying to design it as sort of an open public interface? Or was that was that sort of something that came along later where you realized that More people might want to use this than just for research.
Speaker 1: So we're funded to serve scientific research community But my secret um um agenda the whole entire time is that I think anybody should be able to use it. So I actually do work to make it um easy to use, although uh that's you know, I have to weigh different um issues. But but yeah, it's always been open and public uh and anybody can use it. So I always thought also that Scientists are scientists deserve the same quality of tools as everyone else. Like they're not better at f at figuring out bad interactions than other people, and so why not like try? We try.
Speaker 3: Thanks for the talk. Um so you have a lot of images and I was curious how do you handle sort of the summaine storage and all that kind of that scale of image content with Django? 'Cause like I've often found that When you get to you know the many hundreds of thousands images Django starts to especially the the built-in media stuff starts falling down. So is there anything special you're doing there?
Speaker 1: Um no.
Speaker 3: Oh, just normal.
Speaker 1: No, it's like the database is like a little over a million. Um so no.
Speaker 3: Okay. That's great. Fantastic. Thank you.
Speaker 4: I was curious, you were talking about how there's a community of people who will put the RG and B together. Is there any way that you could do that automated since you are doing the tent? Or is it just a matter of like getting the proper registration marks? So that you know that you have control points and you're actually layering the images right. Maybe maybe they're not referenced in such a way that you can do that. I don't know.
Speaker 1: I think there's some of that. I think there's also some judgment calls in how much of the col each color you bring in. Um so sometimes you see colorized images and they're they're kind of false color. They're not really what your eye would see technically and that's subjective anyway. Um so yeah, as I understand it, there's a lot of judgment involved in that. But I think a lot of things can be automated, so who knows. I thought of an answer to your question over there. We actually do use a memcache layer Um to do these queries. But the images, yeah, they're just coming from our server and yeah.
Speaker 5: Do you guys self-host or do you use some kind of cloud provider to host all these all the content?
Speaker 1: We self-host.
Speaker 5: Cool.
Speaker 1: Yeah, it's uh it's uh Django, MySQL, uh jQuery on the front end, Apache, and memcache layer. Okay.
Speaker 4: All right, thank you very much.
Speaker 1: Thank you.
OPUS (Outer Planets Unified Search) is a Django-based interface that brings data and images from multiple NASA missions into one search system, including Voyager, Cassini, Galileo, New Horizons, and some Hubble data.
Discussed at 1:49Start with the full result set, then add filters such as planet, moon, ring feature, instrument, or other parameters to narrow the results. The interface continuously shows the reduced result count, and matching observations can be browsed in an image gallery.
Discussed at 2:37Phase angle describes the lighting geometry of an observation. Searching for different phase angles helps researchers see ring features that appear or disappear under different illumination, such as Saturn’s faint E ring.
Discussed at 12:45Scientists use it to find specialized observations more efficiently, while science journalists, artists, and image-processing communities use it to locate images for comparisons, color composites, frame animations, and films.
Discussed at 15:45Opus provides an open JSON API: any search available in the web interface can also be made through HTTP URL endpoints. Results can be requested in formats such as JSON or CSV, and image queries can return direct image links.
Discussed at 18:06The project is self-hosted and uses Django, MySQL, jQuery, Apache, and a memcache layer. The team said the database contains a little over a million records and that memcache is used for queries.
Discussed at 23:39Note: We understand that names change, people change, and bodies change. We respect each individual's journey and privacy. If you have any concerns about a video or need us to remove content, please don't hesitate to contact us. We will handle your request with care and promptly address any issues.
Published July 15, 2026
Published July 15, 2026
Published July 15, 2026
Published July 15, 2026
Published July 15, 2026
Published July 14, 2026