Meshenger process log === ### Contributors Daniel Jones Kees Heuperman Jay Khan Yvonne Tang ### Day 1 - Decision time We were told our groups this morning and had a meeting with coach Mark to finalise the project idea and discuss how to approach the challenge. Decided to build a messenger app for iOs using Swift. To do so we needed Xcode which took a while to install. But even with that we managed to build a basic chat app by the end of the day. | Name | What went well | What could be better | | -------- | -------- | -------- | | Yvonne | Our groups were announced and we started to outline our plan for our project. In our 'sprint', we outline the type of app that we wanted to create which in this case is a messaging app which can send messages via bluetooth. We set out our MVP and in the afternnon we started to set up our system and began to develop the basic outline of our MVP. Our plan is to get the MVP done in two days and USING and learning a new language which in this case is 'Swift'. | | | Daniel | We decided on our idea and MVP swiftly and got started implementing some features right away | I would have liked to play around with Swift and Xcode first to get a handle on the novel aspects of the technologies but this wasn't possible due to time constraints | | Jay | Good planning session to kick-off the project. We defined our MVP and setout some project goals. In the afternoon we focused on getting our environments setup and also found time to start building some initial features. | | | Kees | Good meeting with clear MVP and general goals defined. Managed to build a very basic chat up and running in a complete unfamiliar language in only half a day! | I would have preffered to start of the project researching Swift and understanding it's basic functionality. However the setup of this challenge by Makers made that impossible as we needed to build an MVP in 1.5 days | ### Day 2 - MVP or bust Today we became more familiar with Xcode's peculiar ways. We really wanted to get our MVP up and running by the end of the day, but we were dealing with a lot of unfamiliar technology which made it hard to estimate time cost and even if the things we were working on would work once implemented. | Name | What went well | What could be better | | -------- | -------- | -------- | | Yvonne | | | | Daniel |Not much went well today- we spent a lot of time unsuccessfully attempting to swap from a depreciated plug-in (JSQMessageViewController) to a live one (MessageKit). We had to stick with JSQ in the end. |Had the structure of the project been different we either could have went with MessageKit straightaway or not wasted time trying to change to MessageKit | | Jay |Created an initial README for the project. Then tried to get the MessageKit pod to work for our app but wasnt able to. There doesn't seem to be a good example that can be followed and applied to our app. |I want to spend more time understanding Swift syntax | | Kees |Managed to get user authentication to work. This will probably take us a long way towards our goal. | MVP perhaps too ambitious. We lost track of our process, pair programming and time estimation went out of the window. | ### Day 3 - Second Sprint We started off the day with a meeting for our second sprint. We decided to put implementing new features on hold until we had a solid suite of tests for what we already had. | Name | What went well | What could be better | | -------- | -------- | -------- | | Yvonne | | | | Daniel |Did a lot of research into unit testing swift - it's quite difficult to self-lead this as testing in the Swift community doesn't appear to be commonplace | | | Jay |Wrote feature tests for signup, login and posting messages. Learnt a little more about Swift. |For the Retro the main takeaway was that our MVP was a little to ambitious, so be a little more conservative in the future now that we know a little more about Swift. | | Kees | Did a lot of reading on Swift. Feel much more familiar with the syntax now. | Spend the whole day trying to get the unit tests to work. Maybe the day would have been better spent at home where it is easier to concentrate on reading. | ### Day 4 - Fully Automated Luxury Checks Got Travis up and running. | Name | What went well | What could be better | | -------- | -------- | -------- | | Yvonne | | | | Daniel | Day 4 was a repeat of day 3 - long day of reading and swift testing and failing to implement them | should have moved on to different features earlier | | Jay |Paired on a small feature enhancement, to associate messages with a user. In the afternoon, I then started work on Travis CI and CodeClimate integration. Managed to get the CI to setup done quickly but need to troubleshoot the build failure. After **93 failed trial and error builds**, I managed to get the build setup to work :) | | | Kees | Not even sure what I worked on this day. :( | Got really stuck on some tricky bits these past two days . In the future, especially when dealing with new languages or frameworks, I will break the problems we're trying to tackle into much smaller chunks. As small as possible. | ### Day 5 - Third Sprint Started of the day with a meeting for our third Sprint. Finished the day with a quick standup to clarify what everyone would be looking at over the weekend. | Name | What went well | What could be better | | -------- | -------- | -------- | | Yvonne | | | | Daniel |Code climate had a lot of issues with the code so refactored a lot, we were able to remove some code that we didn't end up using and reducing the lines of our functions |spent too long on unit tests | | Jay | Started with running Retro and Sprint planning sessions, we talked about features we want to try and get built before code freeze on Tues. After that, finished Travis CI/ CodeClimate setup. | | | Kees | Found setting goals for the weekend very helpful as it made clear what I should and what I should not focus on. Did some sweet refactoring with Daniel. | Because we are still unsure whether or not the Mesh Network integration will work out we are a little unsure of what our final product will look like. This makes it hard sometimes to direct our focus. | ### Day 6 & 7 - Weekend Working over the weekend to create some new features before Tuesday's code freeze. | Name | What went well | What could be better | | -------- | -------- | -------- | | Yvonne | | | | Daniel |Unsuccessfully attempted to get the app working over a mesh network using the hype labs plug-in. However I did learn more about mesh networks. |Spent too much time failing on trying to implement the mesh network, should have moved on to a different challenge earlier when blocked. | | Jay |Spent the weekend building the Channels feature. It was great because I got to work on an end-to-end feature consisting of multiple components from creating a new controller in the storyboard, coding the controller, creating feature tests, refactoring existing feature tests|Take at least one break to sleep and eat! | | Kees | Had a good time changing the storyboard to include a log in and sign up page. Feel like I'm starting to get the hang of Swift. | All of us working on quite big changes at the same time made merging on Github a bit tricky. Time to learn about merging into current branch in git. | ### Day 8 - (South) Bank Holiday ![Green Bar](https://i.imgur.com/kLXf4Jz.jpg) Working over the bank holiday to make our awesome app even more awesome! With only two days left before the feature freeze the pressure was on. | Name | What went well | What could be better | | -------- | -------- | -------- | | Yvonne | | | | Daniel |We were able to sideload the app on to my phone which was cooler than using the Xcode simulator | Sharing one plug socket between four! | | Jay |We met up at the Southbank Centre, we found a great place to work! Refactored my channels feature after code merging other features. Spent some time to looking how to delete a user after a feature test completes (still looking) and spent some time playing with app. | | | Kees | Was very nice to get together in a bit more of a relaxed atmosphere. Had some good chats AND got some work done. We got the app running on Daniel's phone which makes it feel like the real deal! | Mocking out Firebase in unit tests is still a mystery. Maybe it's time to ask for help. | ### Day 9 - Feature Freeze! ![Meshage!](https://i.imgur.com/tFmCyeJ.jpg) | Name | What went well | What could be better | | -------- | -------- | -------- | | Yvonne | | | | Daniel | Mesh network was implemented which was our initial primary objective | | | Jay |Kees **smashed it** today! He got the app to work over bluetooth (without wifi), which was absolutely amazing! Got a working version of the app installed on my iPhone so I got to play on a real device (rather than using a simulator), which was also cool! | | | Kees | Hell yes we're on the mesh! Yvonne and I got the mesh network working in the nick of time which will really take our project from good to showstopper. | Quite a few important parts of this project have hinged on luck. If the route we tried hadn't worked we would not have had time to try something else. Organising features by a clear priority would help mitigate this risk. | ### Day 10 | Name | What went well | What could be better | | -------- | -------- | -------- | | Yvonne | | | | Daniel | | | | Jay | Refactored the class that manages registration and authentication into two classes to follow Single Responsibilty Principle (SRP). Reviewed our feature test suite and wrote a few more tests. | | | Kees | Got all the elements on the views to display properly on different sized phones. It was really nice seeing all our hard work coming together. | Not much. It all felt like not very serious work but it did make a big difference. | ### Day 11 Slight panic as Mesh network connection failed to work in the morning. Luck was on our side once again and we got it working in time. We prepared our presentation and practiced it in front of a coach. | Name | What went well | What could be better | | -------- | -------- | -------- | | Yvonne | | | | Daniel | | | | Jay | Worked on the presentation slides and the demo video of our app and rehearsing a first pass with a coach which went pretty well given we had not rehearsed it all until then.| | | Kees | Our presentation went well even with minimal preparation. We made a great demo video of our app | I learned a big lesson today: document how you've solved tricky problems. Today's bug was the same one I encountered three days ago but I could not remember exactly what I did to solve it, which meant it took several hours to solve. | ### Day 12 - FINAL PRESENTATION | Name | What went well | What could be better | | -------- | -------- | -------- | | Yvonne | | | | Daniel | | | | Jay |Talking about/and demoing the app at the fair. The overall team presentation |I could have presented better, definitely areas of improvement, which I will take away for next time I present. | | Kees | | ## Wrap-up / Reflections