Explorer
Content
videos
space-apps-orlando-2019-space-curiosity.md
videos talks space-apps-orlando-2019-space-curiosity.md

Space Apps Orlando 2019 - Space Curiosity

Description

Building a global, cross platform application with Flutter

Transcript

Intro

0:00 · Krupke well wrist api’s and to your pc but today i want to talk about one of the apps that I’ve been working on is the basic curiosity and this app is actually available currently right now on Android and iOS so please feel free to download it it’s free and the goal of this app was to be able to leverage all

0:21 · powerful space api’s that are out there at the time working on this we did not see anything that was just quite like this so I wanted to create something that anybody could download and be able to come and explore so some port it has

0:38 · an interesting origin - this is actually a collaboration between two open source projects daily NASA and SpaceX ago I’m not sure any of you guys have heard of SpaceX go but this was actually one of the foundation points that we brought in

0:55 · I met with the developer reddit we talked about the possibility of collaboration and we decided that would actually be able to benefit by both working together because at the time clutter had just come out and I had a background in iOS he had a background in Android but we both had a background we were both starting flutter so this is a good opportunity for us both to learn so

1:19 · when we started working we wanted to plan out what we’re going to do for the project so we decided we’re gonna bring in all of SpaceX ago which includes using the SpaceX prep QL API as well as the NASA images API and other various ones as well as a ISS tracker a weight

1:40 · calculator so you can calculate your weight on other planets as well as the solar system facts and just general stuff about like that we wanted to make it open source first and foremost since we both were bringing it from open source projects and of course make it available to Android and iOS to have the biggest reach possible so one

2:00 · of the reasons why this works so well is because of the great open 8 the eyes that are out there it was super easy to get started all of these api’s have just REST API interfaces so you can very easily use them in any client-side application so we wanted to make it as

2:17 · easy to use as possible we didn’t want there to be any barrier to entry when someone was download downloading the app and wanting to explore space we didn’t want it to be super technical but we wanted to have the information available for the people that knew what they were looking for but also to be able to help with people that just want a very vague idea of space and maybe go to a racketeering outlet so I actually use

2:42 · this app all the time whenever I go to see a SpaceX launch because you can actually add the calendar events you can actually add the rocket events to your calendar so you can stay on track with the missions get moved as well as being able to see whenever the IAS is right above you and just so many other things that just the information is there what do you need it as well as sheriff little images so we

3:08 · have a good image download or built in the app so you can actually share the images on social media or just set up as your wallpaper right on your phone and just being a week for all a couple different RSS feeds so you can have one source for a lot of different news articles for what’s happening in training in space as well as multilingual lingual support we support English and Spanish and I believe Chinese right now and we wanted to make it as accessible to anybody and everybody and first and also we use a

3:38 · ton of Google products so flutter is Google product we have it continuously integrated on the cloud platform built on a firebase backed in and a lot of other various cool technologies that we use under the hood but this is the way that we can build a scalable application that if we had a million users tomorrow we don’t have to do any more maintenance and it’s just about focusing on the product and not focusing on server Vegas

4:02 · so why flutter flutter is a open source technology built by Google that allows you to build really powerful client-side applications as well as server applications flutter runs on every platform anywhere that has a canvas flutter can paint too so they imported

Flutter

4:20 · clutter to raspberry pi so you can actually run your application on a Raspberry Pi with an LCD attached so it’s super powerful it’s super easy to get started eases dart which is a very flexible language and it’s of course developer focused as well as you write

4:37 · the application once you deploy it everywhere you can have a desktop application or an iOS application or just a website and without having to do anything to your code you just write it once because the UI is painted on the screen you’re not using like HTML directly and you’re not using iOS would destroy a floater has a really awesome

4:56 · community so they have a really awesome select channel and there’s so many contributions that happen all the time even the people on the flutter team are treated the same as people as external contributors so I’ve had the opportunity to do a lot of pull requests for them as well and it just really allows you to help the product be better there’s not many times that we have a way to shape the technology that we want to use so

5:22 · and also the learning curve there’s a little bit of one at the beginning but it flat it’s flat after that so it’s not like it’s an exponential for the longer that music and this is the first technology stack that I use that I could bring truly any UI that I was using plug I you can just take a

5:39 · screenshot or design mock-up and build the UI in like less than an hour because it’s a declarative language you write it exactly how you see it and of course it’s open source so you can find anything and everything down to the actual engine code all written in dart so like I said this is a collaboration project worked with cases Rodriguez and we built this entire project together

Tips for Collaboration

6:05 · it took about eight months and I just wanted to share with you guys some tips for collaboration that we had to learn from real world global collaboration so first and foremost folder structure is incredibly important when you’re bringing two different projects together you have to have a shared set of goals for what you want to set up the product with any person has to be able to pick up your project and know exactly where everything is without you having to walk them through what we do we leverage

6:34 · github and board west so that we don’t overwrite each other’s data we can test and make sure that it’s working before we push it to the master and feedback is so important we would go to read it multiple times and we would have private pages and then just iterate upon it and that’s only possible when you have continuous integration that you can you can focus on the code in the test so you can know that you’re not breaking existing code that you’ve already fixed we would also when we’re getting closer

7:01 · to the release of the app we wanted to focus on an MVP because as with any project it can be really easy to just let the deadline slip and slip and slow so we really focused on just seeing okay what can we do with time we have you set a deadline and we just said okay if the features not ready we’re gonna bring it on the next base and by doing that we were able to actually move a lot faster because we just focused on polishing and then focused on releasing we also flutter was

7:29 · really new at the time it was still in beta - and we started this project so it was changing rapidly so there’d be new state management solutions that came on all the time and we also came a point where we had to freeze our code because whenever you’re working on a project it may be tempting to just keep her factoring it because a new a new way comes out but we decided that any time

7:50 · that we set a deadline we wouldn’t the upper refactor until after the release and because of that we would just choose the solution for better for worse and then we would fix it after and like I said earlier we both had strengths and weaknesses I would I became from Iowa’s development of very strong and he came from Android so we were actually able to come together and work with flutter with

8:12 · one blink code base and dart but also be able deliberation I was able to leverage like Swift and he was able to leverage Colin in the project and we split up the work and just develop a punch list so we could just knock out the features one by one so flutter is the real magic of this

The Magic of Flutter

8:30 · application of course you can build this with any tech stack you can do it natively with iOS and Android but the whole goal of doing this in flutter was that we could work with the UI and all the shared logic written in dart with one code base even though that I had a completely different background than him we both had the same background or working with flutter and it allowed us to move so rapidly and we had many other

8:54 · products too this wasn’t like her this was definitely a side project but because of that we were able to leverage what we’re learning on each of the projects and bring it to them bring to this one as well as giving back then any time that we would develop a huge thing on our project we could bring that module in and see how we could use it as well as sharing code one nice thing about dart is if you have a set up

9:16 · folder structure the reason why it’s so important is you can drop in modules from project to project so you can take a back-end database solution and literally copy and paste it into another database solution and keep architected it correctly and that’s what we were focused on doing because you know other people would use our code in other projects with flutter - and of course the powerful package ecosystem of flutter which I have developed a lot of packages for and with flutter we also

9:42 · leverage the community with slack and Twitter this is where we interacted with tons of people and it helped us especially getting the release off because we’re able to talk with the Google engineers directly on slack and say hey I’m running to this is there anything that I should be looking at and they’ve pointed in the right direction or even sometimes help us and do for requests on our own repo which is really awesome and it was also just really fun to develop clutter is a very fun

10:07 · language when you’re you’re developing with it because you can get up an application and just you know just 5 10 minutes and you can actually have something that’s tangible and be working with it it has a thing called hop reload where you literally every time you change a line of code to change 1/2 it’s instantly on the device as opposed to waiting to compile every time so that that’s just been a super awesome part about the and just as a conclusion I wanted to say

Conclusion

10:35 · that especially when you’re working on these projects make sure that your building was scaling in mind for the beginning we could have built our own server of solution easily but the problem was we needed a solution that was scaling without us having to put in a lot more time we went with the

10:54 · intermediate solution with firebase and a Google cloud platform because we wanted to if a ton of users came tomorrow we didn’t want to have to worry about spitting up a server and this is an open source project we didn’t want to have to spend a lot of our time focusing on the side project we wanted to release it and just send out updates and not having to worry about the maintenance and scalability of it so that’s why we really leverage the Google cloud back on with that we just lose a

11:18 · lot of experimentation and learning there was a lot of things we did that didn’t work but in the end we came up with a UI and a strategy that actually did work and you know part of especially with mobile development that I run into is UX is so important you know you may

11:34 · you may develop something it may technically work but that doesn’t mean it’s the right solution you have to find a way to build it to where there’s this there’s no friction when someone’s using your application because the good application that doesn’t get in the way that’s the one that the people actually remember and also like to say just start

11:54 · a conversation this this only existed because we talked with each other on reddit and we wanted to bring in these things we realized that we could do more together than we could separately in our own open source projects and as with anything the more people you have working on it the better sometimes it can be especially in open source and make sure to give back so every time we would build something anew Niq or a new module we would find a way to give it back to the community where there’s pulling a package or just trying to showcase what we’ve been doing tutorials or giving talks because the

12:26 · more you can help other people succeed the better that you can and like I said earlier tests are important they’re hard to do and they’re annoying but they help you not break the code multiple times over and over again and continuous integration just helps us constantly release faster and faster without having to focus on spending precious time developing but deploying to the app

12:49 · stores so if you guys want to we have the open source it’s open source right now on github you can check it out like the link there are some links to the API we’re using we also have a very early prototype that I submitted literally yesterday of the website flutter compiling on the web and then you can also find me on github as well as sages Twitter as well thank you so much [Music] [Applause] [Music] [Applause]

13:24 · yes Western effort

13:41 · yeah I would I figured out works best for me it’s just building the simplest application I could taking everything out bring it up from the beginning because for me my application that I built was a pitch pipe and I was like you can’t did you just like it’s a simple thing one image buttons and because of that you learn you bring in stuff as you need it not trying to overload it any other questions yes