Lambda Labs Logs: Week 3
Part 1 - Individual Accomplishments this Week
(Watch me bomb my) Whiteboard Interview:
https://youtu.be/U1gaKsr_1As
My Solution (after taking a quick break): https://repl.it/@Kerbleski/Lambda-Labs-week-3-whiteboarding
Team Contribution Graph: https://github.com/Lambda-School-Labs/labs9-developer-profiles/graphs/contributors
Github Handle: mkerbleski
Front-End URL: https://ecstatic-dev-profiles.netlify.com/
Back_End URL: https://developer-profiles.herokuapp.com/
Summary
This week was quick, it was also a lot of troubleshooting. Our objective was to get feature complete, and we are very close to getting there with 1 day to go. I trouble shooted with Acclaim with Liz on Tuesday and then finished sorting the users array by job type. This is going to be moved to the backend soon. I also got all the params to be located on a common state which is where the request will be made to the backend. One big challenge this week and an ongoing challenge is the locations. We revamped our approach on Thursday and will be filtering proximity based on GPS corridnates. All of the pieces have finally been complete to work on the actual filter functions now. I also helped troubleshoot adding user skills. Moving the filter to the backend will hopefully pay off but will be a while before we know for sure.
Tasks Pulled
Monday
- MLK Day
Tuesday
- Adding Acllaim badge - backend / Liz
- https://github.com/Lambda-School-Labs/labs9-developer-profiles/pull/108#pullrequestreview-195149946
- https://trello.com/c/R5O3HYe0/78-adding-acclaim-badge-to-user-on-db
- Finished checkboxes - frontend
- https://github.com/Lambda-School-Labs/labs9-developer-profiles/pull/109
- https://trello.com/c/6HCN7zH8/21-side-menu
- AutoLocation Component - frontend
- https://github.com/Lambda-School-Labs/labs9-developer-profiles/pull/111
- https://trello.com/c/6HCN7zH8/21-side-menu
Wednesday
- wrangling search params - frontend
- https://github.com/Lambda-School-Labs/labs9-developer-profiles/pull/117
- https://trello.com/c/6HCN7zH8/21-side-menu
- reseeding location filter - frontend/backend
- https://github.com/Lambda-School-Labs/labs9-developer-profiles/pull/122
- https://trello.com/c/6HCN7zH8/21-side-menu
Thursday
- https://github.com/Lambda-School-Labs/labs9-developer-profiles/pull/128
- https://github.com/Lambda-School-Labs/labs9-developer-profiles/pull/129
- https://github.com/Lambda-School-Labs/labs9-developer-profiles/pull/130
- https://github.com/Lambda-School-Labs/labs9-developer-profiles/pull/131
- https://github.com/Lambda-School-Labs/labs9-developer-profiles/pull/132
- Fix filter - comments
- https://github.com/Lambda-School-Labs/labs9-developer-profiles/pull/138
- https://trello.com/c/6HCN7zH8/21-side-menu
Detailed Analysis
The filter was a fun problem to tackle this week and had many twists and turns. While not completely solved as of now it is worth reflecting on. The challenge is to sort a high number of developer's profiles to a user based on certain parameters. This element of the project would benifit from a more robust state managment such as redux but we choose early on to not use redux. I started in the closest shared parent component between filter and the component that was displaying the cards. This was the 'PublicFacingPage'.
Then passed that components state to both the UserCards component that will ultimatly render the cards and the Filter component that creates the parameters to render the cards.
After discussions with Alberto we decided that using GPS corridnates would be the easies way to determine proximity of location (a requierment). This is because we can do our own calculations on our backend without making a 3rd party API call to google or another company that would calculate the proximity. This took some slight adjustments but we finally got all the necessary conditions in an object to send with our request.
The third element to incorporate was infinite scroll, which basically make a call to our api for x number of profiles at a time so that the user can broswse without having to click on new page and we don't have to deliver more profiles than necessary. To acomplish this we determined that the filter would best live on out backend so as to improve performance and site useablitiy. The site works as expected when sorting by discipline, but not location yet. In the following days (or hours) we will start to incorporate this fun formula, and should be returning profiles based on proximity to the user.
Part 2 - Milestone Reflections
Team work got a little bit more complex as our website has grown. This is the first time that I only have a general idea of how everything works instead of a specific understanding. Corridnating between everyone takes a lot of time and I have a greater appreciation for larger software projects, and how well they keep everything in order.
This week I was working on returning the profiles while another team member was working on sending profiles. This meant that we were using the same information in the database and needed our code to match. This took far more discussion than I anticipated. If we took some time at the beginning of the week may have been easier but we also didn't have a great idea of how it was going to end up looking anyways. In the end we both adapted and compromised on how everything was going to look and the general data flow.