By Sarah June FischerMay 15, 2015

Alumni Take Python Class Project to New Heights

Five days. It's not a lot of time to plan, build, debug, and present a fully-functioning app, but it's what we ask our Development Accelerators students to do after seven weeks of intense training and practice. We talk with a team of graduates who decided their project wasn't quite finished, and made plans to make it even better.

How was the idea for SnapSat born?

Jake: Snapsat was our final project for the Code Fellows Python Development Accelerator. Jacques, our resident cartographer, had worked with Landsat imagery and knew how difficult and labor-intensive it was to access the data. When it came time to pitch projects for the final week of our course, he pitched the idea to somehow automate the process. After a few days of brainstorming and four days of programming, we had a working prototype of Snapsat.

Jacques: Here’s a bit of feedback we received a few days after launching Snapsat:

“Brilliant. This is the greatest leap in facilitating the use of satellite data I’ve ever seen. In 1990, it was a $50k SGI workstation (three colors!), a separate $20k machine to run the tapes + $20k of software. Oh, and each image cost $625.”

The cost of working with geospatial data has been dropping steadily over the last few decades. Processes that used to take multiple days and expensive hardware can now be run with a single command on an everyday laptop. However, even with those improvements, the learning curve remains high; we built Snapsat to flatten that curve as much as possible.

The idea behind Snapsat came out of my own experience working with Landsat imagery as a biologist. It was inspired by the incredible work currently being done by the Maptime community, which, for the last year, has been working incredibly hard to make tools more accessible to anyone with an interest in geospatial data. We needed a final project, and having worked with everyone on the team previously, I knew we could knock this out of the park. As far as I’m concerned, that’s exactly what we did!

What are Landsat composites?

Jacques: Humans are largely visual creatures; much of what we perceive is based on what we can see. We often forget that the visible spectrum of light (what we can see) is actually only a very narrow part of the electromagnetic spectrum. The Landsat satellite captures wavelengths of light over a much broader range, which we can remap with the colors of light we can see. Translation: Landsat provides us with an opportunity to see what might otherwise be invisible. In the same way that Firefighters use FLIR cameras to find and extinguish hot-spots, we can use Landsat composites to see all sorts of things, including:

  • The relative health of plant communities

  • Soil types

  • The ability to see through smog and haze

  • Ground-surface temperatures

  • Cloud types

Snapsat images

Each Landsat composite consists of three distinct ranges of the electromagnetic spectrum (again, many of which are invisible to the naked eye). These are remapped into the red, green, and blue bands of light we can see.

Landsat 8 Bands

Walk us through the project—what are users seeing when they use the app?

Jake: When our users land on Snapsat, they are given the ability to look anywhere on Earth by dragging the map or entering a location in the search bar. They can view that selection in any combination of Landsat 8 bands (human-invisible colors) they desire.

create a Snapsat composite

Jacques: Creating a Landsat composite with Snapsat entails four basic steps.

  1. A user selects the region they’re interested in, either by moving the map around, or by searching for the specific address or location. Once they’ve identified the location they’re interested in…

  2. … We present them with all the available dates of Landsat images that we have access to. They select one of those dates…

  3. … And then we let them create any sort of composite they’d like! For those users who aren’t quite sure what they want, we provide some sensible defaults and a guide describing what each band can be used for.

  4. If the user is satisfied with the preview image they’ve created, they can create a full-size render of the image.

The Snapsat process is an alternative to a much more technical and involved process that requires a thorough understanding of a long list of tools.

The app says it is “made possible by Public Data Sets on AWS.” Can you shed a little more light on that?

Jacques: The Landsat archive stretches all the way back to 1972. While the Landsat data has been operating since then, the data has only been freely accessible since early 2009. Amazon has done both the public and scientific communities an incredible service when they started freely hosting the latest Landsat datasets in 2014.

Jake: In the past, the data was hidden behind labor-intensive processes requiring large amounts of technical knowledge and often thousands of dollars in both hardware and software. As of just a few months ago, Amazon decided to host a petabyte of Landsat data easily accessible and free to the public. This is how we are able to do what we do. Without Amazon hosting the data, the intensive image processing necessary to generate Landsat composites would be extremely costly on our end, in both time and money. We are also using a suite of products from the Amazon Web Services that make what we do possible.

What other features would you like to add in the future?

Jacques: We’re currently working to support technical users by developing an API that will allow batch processing of Landsat scenes. Additionally, it means we can start integrating Snapsat into some of the common geospatial tools that professional users typically rely on, starting with a plugin for QGIS.

Jake: The initial website was designed to cater to the new users who have possibly never heard of this particular satellite and the incredible opportunity for learning and discovering that it unleashes. Our next goal is to enable “power users,” who are likely already in the geological field, to use Snapsat to streamline their workflow. With the API, power users will be able to process large batches of Landsat scenes instead of just one at a time, which is our current setup.

This was created for your final project in the Python Development Accelerator, but you’re continuing to develop the app even after finishing the course–what are your big-picture plans?

Jacques: In working on this project, two things have become clear to me:

  1. Snapsat is a project with real utility.

  2. I’m working with some of the most dedicated and capable people I’ve ever had the chance to work with.

Long-term, I don’t dare to guess where this project will take us, but short-term, we’re going to keep doing our best to make sure that Snapsat and its API are the best ways of working with Landsat data available. If you’re reading this and are interested in (or already are working with) Landsat data, we’d love to talk!

Jake: We see Snapsat as a tool with incredible potential. It’s not only a fun, thought-provoking tool to view the world around us in a whole new light (no pun intended), but also an educational tool for youth to explore and appreciate the planet in a way that hasn’t been accessible to them before now. Not to mention it will be incredibly valuable for the industry to streamline their workflow. The Landsat satellite program is by no means a new project, but it is still new and unknown in the eyes of the public. We have an opportunity to share this incredible technology with a whole new audience, so the sky’s the limit and the picture is as big as any of us can dream!

Joel: After the Development Accelerator ended, we all needed something to do to keep our skills sharp and to continue learning all of the material that we had just spent the last eight weeks going over. It just felt natural to continue the momentum we had built up while working on the project. Our team dynamic works well, so we wanted to make our project all that we knew it could be. Four days was just not nearly enough. Dialing back the intensity a bit—compared to how crazy the project week was—has made for a saner development schedule.

How did the Python Development Accelerator help you bring this project to life?

Mark: Two words: Cris Ewing. As Jacques would say, Cris Ewing, the instructor, is the boss.

  • He provides quick feedback. I turned in assignments at 11 p.m. and they’d be graded, with personal comments, by midnight. Receiving feedback while problems/code are still fresh in your mind is essential to the learning process.

  • He is an oracle. When you ask him a question, he provides thorough answers off the cuff, without having to look them up.

  • He gave us the confidence to tackle difficult projects. He shows you a good coder doesn’t know all the answers, but has some ideas for potential solutions and can figure out a solution within a couple hours.

  • Assignments are called sandbox exercises. There are clear goals, but unclear paths to that goal. They start simple, but by the end of the class we were solving problems, which, at first glance, seem impossible.

Who is contributing which parts to the project?

Jake:

  • Jacques is the brain-parent of this whole project, which is to say, Snapsat is his brainchild.

  • Constantine is the resident engineer responsible for technical problem solving and polishing Snapsat like a nice pair of leather shoes.

  • Mark is our speed freak. He is known for developing features before we finish talking about them.

  • Joel is our testing guru who likes to stand while he works.

  • I (Jake) worked worked largely on the user experience and overall layout of the site, while supporting the other developers where needed.

What were you doing before the course? What are you all up to now (besides Snapsat)?

Constantine: Immediately before Code Fellows I was in graduate school studying aerospace engineering, and before that I worked as a test engineer for an aerospace company in California.

Jacques: Taking long walks on the beach and thinking of ways to save the world

Jake: After 10 years in the food industry, I spent two years on the traditional track to get my CS degree. After 58 credits and good grades I dropped out and pursued Code Fellows as a faster, more intense way to learn, which is much more to my liking. After completing the course I have taken on some small website building freelance jobs as I continue my job hunt for a job that will feed my craving to learn, grow, and create. In my off time I have been spending time with my beautiful wife Emily, and working on my sunburn.

Joel: Before Code Fellows I was working as an audio engineer. I enjoyed doing music projects, but in order to make a living I spent most of my time working on national radio advertising. It was a comfortable living, but honestly there wasn’t much innovation being done in that line of work. Eventually that business began to fail due to a rapidly changing business environment, so I decided to start focusing on a second passion of mine—website development and technology. I’m now trying to find ways to bring new technologies into the recording studio as well as seek interesting employment opportunities that will expand my knowledge concerning the extensive field of computer science.

Mark: Before enrolling in Code Fellows I worked as a scientist investigating stem cell therapies for the damaged heart. How did I end up as a programmer? When you compare their fundamental processes, science and coding are very similar. In science, you ask questions (hypothesize), try solutions (experiment) and see the result. Programming provides this same feedback loop (coding and testing), with nearly instantaneous feedback. I love trying ideas and seeing the result. This fundamentally simple process allows the creative mind to try new ideas and innovate. And, it’s a recursive process. Even if an attempt doesn’t yield the desired result, you learn something and repeat. Currently, I’m looking for a job that allows me to earn a living following my passion for this process.

Anything else you’d like to share about SnapSat?

Jacques: The project wouldn’t have happened without the constant support of Cris Ewing, Jed Sundwall and the AWS Open Data team, Development Seed, and of course, Constantine, Jake, Joel, Mark, and Giphy (thanks for all the cat gifs).

We’re currently looking for financial support to keep this project going. If you have a project that could use a good team, we’d love to talk with you!

Joel: The Snapsat project has been a terrific insight into how collaborative software development works when a team works well together. It’s exactly the kind of thing I wanted to learn how to do when I attended Code Fellows, and I’m grateful for the opportunity to do it.

Jake: We are in uncharted territory as we move forward with this app, so there are a few things we could really use help with. First, we would love any and all feedback on the site. Second, as it is an open source project, code reviews are welcome, along with pull requests if you see an issue or feature you can assist us with. Third, we need publicity! Follow us on Twitter, share the site, tell your friends, your mom, your kids, your long lost buddy Mike who you haven’t seen since that one time in Tokyo. The more people who can learn and discover with Snapsat, the better! We are also poor startup kids so we accept food and coffee donations along with large checks and winning lotto tickets.


To learn more about the project, visit Snapsat.org. To get in touch with the creators, reach out here.