As he scanned the subreddits for data sources, he stumbled upon a public API from NASA that offered the images that Curiosity and other rovers send back to earth. Inspired by his strong interest in space exploration, he instantly connected the dots between Google’s camera-equipped vehicles cataloging the world, and the Mars rovers currently doing the same thing 140 million miles away.
The project, dubbed Mars Street View, took just four days to build. It was created by Will and four other developers as a part of the final project week for Code 401: Advanced Software Development in Python. Project weeks are five-day development sprints where teams build and launch a fully functional MVP and present it to the rest of class.
While Will and his team were able to plan a little of the project leading up to their final sprint, the bulk of the work was completed in those four short days. The MVP was ready to present on graduation day, and then Will, along with classmate and fellow Python developer Munir Ibrahim, spent another week and a half completing a second version to present at the Code Fellows Job Fair.
“Since we were able to learn from our mistakes and plan better, the second iteration of the app is much faster and cleaner than the first version,” he said.
Will wrote all of the back-end code for the project, including writing the script to pull data from NASA, the Django application and database schema, and the RESTful API to serve data to the front-end. While he was able to use his training from the course to address each challenge, his favorite part was brainstorming the relationship between the data (or in this case, photo) requested by the user.
“I most enjoyed thinking of a clever and efficient way to set up relationships in the database so that each photo could be related to the next photo, previous photo and photos from the same sol (one Martian day) but different cameras.”
He cites retaining the consistency and integrity of the photo database as the biggest challenge, as some of the API’s day and camera pairings didn’t have a photo available.
“I just came up with the idea of using a ‘null placeholder’ photo instance, which keeps all of the same relationships,” he said. “It just has an image source pointing to a .jpg saying ‘No photos available’ instead of an actual Mars rover photo.”
As for the future of the app, Will would like to add several new features, like a map of Mars where users can click to see photos of that particular spot. He’d also like to add a link between rovers so users can see what each one is doing on a given day.
Well done, Will and teammates, on your awesome project! If you’d like to talk to Will about opportunities in Python development, get in touch on LinkedIn. Want to see the code that brought this project to life? See the source code for Mars Street View.