-
Notifications
You must be signed in to change notification settings - Fork 1
Report week 7
This week, I started fixing a bug on the camera-preview where markers would disappear depending on the heading of the user. To fix this bug took me less time than expected so I decided to look at another bug where the compass had some problems when the user was heading around 180°. This big took some more time to fix. It was due to the filtering of the compass data. The problem was that the sensors were returning values between -pi and pi. But when applying a low-pass filter, averaging values of -pi and pi would result in a heading of 0° which is completely false. To solve this, the low pass filter needed to be updated expressing the radians in their respective sine and cosine.
After that, I filtered the mountain markers s.t. if there are too many that are close to each other, only the highest every +-3° is displayed. If a mountain is in the line of sight, then it is prioritised to one that is not in the line of sight.
The time estimates were pretty close to the actual time this week. I couldn't do one task with the settings as I was waiting for a PR with the settings from Bastien. That was however no problem as I used the time to fix another bug.
Next week, I will work on the settings regarding the camera.
This week I worked on two tasks. The first one was the improvement of the Map activity and the OSMMap class I implemented last week. I added two buttons, one to zoom on the user location and one to toggle the map provider from default to satellite. The button have specially been designed to be transparent and round so that they don't disturb the user experience. In the second task I implemented the settings activity using android preferences. The activity is containing a few settings for now but will be improved in the future. The callback method for all buttons/switches/lists is already implemented but call empty methods for now. The language selection setting is already working (the language french has been added to the string resources). I implemented the tests for these two tasks. This week I underestimated a bit the time took for the settings activity (because of the testing part).
This week I did not implement new features, as I had to improve tests using Firebase and Database connection.
In particular, I solved the problem that when multiple tests were running at the same time it could have happened that they had conflicted, as they used the same DB references and the same FB account. I solved this by enabling the anonymous FB users and by randomizing the IDs used on the DB in the tests.
Moreover, anonymous FB users made it possible to tests a few more methods of ProfileActivity that needed a logged FB account.
In addition, I moved the "Add friend" feature to a new Activity as, logically speaking, it was a separate Activity. This way ProfileActivity is also smaller and more compact. I also changed the logic to start an activity for results, as the old methods were deprecated.
I completed my tasks in the time I expected to, confirming I'm getting better at estimations.
Next weeks I will try to improve the way I comment and document my code, as I think I'm not putting enough effort into it and I could do better.
This week I worked on two tasks. Scaling fullscreen image to fit the fullscreen, and then later to be able to zoom the fullscreen. I was also supposed to solve a bug regarding that the Gallery is a bit jacked when scrolling, but there was not enough time. Both tasks took longer than expected, the fullscreen because it was a bit unclear on how we wanted it to look. Which lead to alot of unnecessary implementations. The zoom feature took a lot longer time because of testing. It was really hard to figure out how to test the feature. But I eventually got a few ideas of Giovanni and Ravi. It is hard to say what I will change until next time. I've said several times that I shouldn't underestimate how long tests take. Still I have also said to create smaller tasks instead of one big one. I feel like these two statements contradict each other since I only have 8 hours to distribute tasks on.
The first thing I did this week was to change the UserPoint class to a singleton class, so that every part of the program has a reference to the same UserPoint.
Then I started working again on the task I assigned myself last week, as I did not complete it last week. I implemented the SettingsMapActivity that allows the user to save the POIPoints around a selected location, as well as an elevation map. At first, things didn't go smooth as I had to handle two AsynTask and it was important to know when both of them were completed. I started by doing this using wait, notify, and synchronized blocks, but for some reason, this was blocking the call to the onResponseReceived method of the AsyncTask. I then switched to using nested calls for the AsyncTasks and now it's working. Testing didn't cause problems. Again, I am now thinking harder in order to split every task in smaller tasks.
The group this week worked smoothly. There was a lot of communication on our Discord so it was easy to coordinate with the work that the teams member were doing. There were a lot of small pull requests to fix bugs and to change small parts of the code, and everyone did have a chance to review pull requests.
The code coverage has also remained almost unchanged (it diminished by 0.5%). Everybody did the PRs regarding the tasks, although they might not be merged before the meeting as there are still some problems, everyone worked as planned!