NASA Sapce Apps Challenge
This looks like a wall of text but it's a nice read about my NASA Space Apps Challenge experience!
Last month I participated in the NASA Space Apps Challenge at Noordwijk in the Netherlands. Together with 3 colleagues and Wendy (who was searching for a team) we wanted to create an app for multiple platforms however we didn't know for what challenge yet. We had a few choices which had our preference:
All four of them would be a challenge to create in merely a day, but we liked the challenge 😄. Since we've never created a game before, we choose the space mission roadmap as our challenge since that was the perfect fit for us. And so the "Sunny App" was born.
We decided we'd create the app for 3 platforms, Android, iPad and Windows 8, to really show the power of NATIVE (no bias here 😉) cross-platform app development using C# .NET and Xamarin. With almost no preparation we started to create the apps. We did prepare a base project template before the challenge. This allowed us to generate our whole project structure, various base classes and saved us quite a bit of time.
Unfortunately we soon found out that the available 'space program' information on the website wasn't posted in a consisted format, so we also had to create some kind of API with a CMS for managing the space programs. We chose ASP.NET MVC 5 and of course Web API for our RESTful API, together with SignalR for our chat functionality combining most of the new fun technologies.
Creating the site, objects, logic, chat and API took roughly 3 hours (from scratch), which was quite impressively fast. In the mean while the 3 other developers were starting on the app and Wendy was busy creating designs. Since we are using MvvmCross as our cross platform solution we could separate the work quite easily.
Our team had 4 developers with varying expertise, since I was working on the back-end the 3 others started on the Apps. One developer on Android, one developer on iPad and one developer on Windows 8. MvvmCross uses a core project that should be used for almost all logic for the app.
When I was done with the API I took over core development and connected the app with the back-end. When the basics were done everyone could just bind the Observable collections (and single objects) from the view models. I personally think this approach really opens up new ways of developing an application. This of course depends quite a lot on the expertise of the team, however it's just a pattern (for example Microsoft used for a long time) and it's not 'that' hard to learn.
The other thing I like and love about it is, I can change the entire logic (apart from obvious bindings) in the core project without the UI developers noticing that logic has been changed. This is very, very, very, very powerful and I'm not even arguing about separation of concern.
The way we worked allowed us to develop the 3 apps and a functional back-end within 30 hours, which is by itself quite impressive. Android was unfortunately not that far since converting data took a bit longer than expected, but it was still a good effort. After most of the work for the core project was done, I helped out with the Windows 8 app since we wanted to show iPad and Windows 8 during our presentation.
About an hour or 2 before the presentations we created the final packages and started working on our presentation. We created a nice presentation and since everyone loves the iOS/Windows discussions we wanted to recreate that feeling. Showing a working demo of the iPad and Windows 8 version which turned out quite well actually. I don't have a link to the video our demo, however when I find it I will update this post! We also had a nice tweet posted about our presentation, which is nice.
Overall the organization was perfect in Noordwijk. Although a lot of the signed up teams didn't show up, it was still a very nice experience. Hope to do it again next year! I will dive deeper into the code someday, this was just a talk about my experience.
Hope you liked it! 😃
More information: