Tuesday, December 9, 2025

CST 499 - Week 14

 My biggest accomplishments this week were re-designing the home feed and match view pages. The overall look feels cleaner, more informative, and more efficient. I'm still working on how to design the stat page, but I'm struggling to decide on a sleek design that gives the data, but maintains a fun delivery. This week, I plan to settle on the layout and implement at least one dynamic achievement per game. For example, figuring out how to create and award (appropriately) a "Played Azul for the first time" achievement when Azul is played for the first time by any user and extending this to work for all games on their first play. My struggles this week were less challenging and more tedious. For example, while re-designing the feed layout, I decided to include user avatars as part of the display. However, I did not originally include the users in the "Feed Activity Model", so I had to re-work some code to make sure that I was able to do that. That aspect now works well for any new Feed Activity, but I haven't backfilled old activities to include photo URLs yet. A bonus while testing this though.. I accidentally discovered (and have now fixed) a bug with the login metric that was preventing the login_count from incrementing when a user logs in for the first time.

Tuesday, December 2, 2025

CST 499 - Week 13

 This week I was able to modify the View Events activity to view active vs past events differently (which is closer to our desired Figma design). This involved calculating the duration of an event, pulling which users and which games were played at said event, and displaying them visually with the use of small icons in both the event landing page and the event display page. Additionally, I started work on the overall styling of the app so that the navigation from activity to activity would look more cohesive. Some of the challenges I faced involved how to differentiate between active and past events without having to write a lot of repetitive code with small differences. I ended up creating elements in the resource files that had the same IDs to avoid null pointer exceptions and then just set their visibility to "gone" in the views they didn't need to be in. Maybe not the best solution overall, but it works for now. As a side note, I'm very indecisive about the look and color scheme of the app, so I've been continuously re-doing certain aspects.

Next week I plan to work further on the per user stat page that will pull all user metrics and display them for an easy visual. I also plan to adjust the look of the home feed so that it's a little less uniform.

Tuesday, November 25, 2025

CST 499 - Week 12

 This week was a rollercoaster of emotions for me. I was able to fine-tune the feed display and get it working to update with new activities in real-time, which was exciting. However, at some point, when messing with my gitignore file, I did something to somehow break the gradle build and was unable to get my project to even build on my machine for a couple days. On top of this, because of the holiday season and attending a work event, I had less time than usual to work on fixing it, so I was moderately stressed about the mishap. In the end, I tried multiple strategies and finally got it working, but it cost me a lot of coding time. I should have different types of feed activities working by the end of tonight and luckily, because of the holiday, I have an extra day off this week, so I'm hoping to continue implementing different achievements and achievement types this week along with fine-tuning a lot of the UI design, especially when it comes to event creation/display. 

Tuesday, November 18, 2025

CST 499 - Week 11

 This week I implemented achievement tracking, which involved handling achievements by type (COUNT, STREAK, ETC.) and began work on refactoring some of our code for use in a social-media-like display feed on the landing page. This involved a bit of work on my part, just because I was unsure how to go about creating the feed without constant queries. I ended up using an approach recommended by geniuses on the internet that involved converting our already existing achievements to "activities" and denoting them by time, for example, ACHIEVEMENT_EARNED and displaying all activities on the landing page. Next week, I will continue this path and convert the events and friend relationships in a similar manner, while also working to make sure the design is consistent across multiple activities.

My biggest challenge was mentioned in the previous answer.. Trying to convert our existing database for use in a feed. Luckily, because social media apps are so common, this basically just involved me looking for examples I could use as a "template" for the desired behavior and adapting it to our use.


Tuesday, November 11, 2025

CST 499 - Week 10

 This week, I worked on implementing the display for the event page. You can now view events on an "events home page" with small previews for active and past events and the option to view all events of your chosen type. I also started the code for tracking and earning achievements. 

My goal for this week is to implement the remaining code for achievement earning and work on the display and layout for stat tracking. This will also involve changing the way we currently view the profile pages for ourselves and our friends. 

One of our challenges this week has to do with modifying our database tables for ease of use when accessed by our program. Databases is one of my weaker topics, and while I'm comfortable using them, I feel very inadequate when trying to design them. Other than that, most of the challenges I've run into have to do with me being unfamiliar with necessary libraries or functions. Luckily, because of this, I also am learning a lot with regards to Java and Firebase.

Tuesday, November 4, 2025

CST 499 - Week 9

 This week our team focused mainly on backend implementation. I got approval to use the BGG API and went through the steps for learning how to securely store and use the bearer token. I ended up modifying our service and interface code to use Firebase Functions instead of our original code design and enabling Google Secret Manager to securely handle the token.

 Our next steps will be to wire up the activities for creating an event, finalizing user registration, and being able to view user profiles/past game nights with the relevant information, while also working on the next version of our design.

 My biggest hurdle this week was unrelated to the work. A close family member passed away and I was having a hard time staying focused while driving back and forth out of town. Another challenge was the Google Secret Manager use, since it required a lot of steps to get it working. At this point, it seems we have been able to manage all challenges that have come our way and we will hopefully be able to catch up to our desired pace this week.

Saturday, August 16, 2025

CST 438 - Week 8

The five most important takeaways from this course, in my opinion, were
1) The use of GitHub projects. I believe this will come in very handy for future jobs and also personal projects. It gave me a taste of what it is like to coordinate code with a group and resolve potential conflicts.

2) The Agile philosophy. Agile seems to be a trend with how companies organize projects these days and I know that many employers that I've been in contact with so far prefer a candidate with experience in the methodology. Learning the concept of iterations and sprints and how they relate to organizing a project is going to be invaluable for me on the job.

3) Code reviews. So far I've mostly worked on projects solo or with a single partner. Seeing the process of code reviews and how they can be used not only to comment on code functionality, but code design and even documentation is something I'd never really thought about in the past.

4) TDD. While I've always known that testing was an important part of software design, the idea of writing tests before implementation is very interesting to me and I can see how it would lead to better functionality. Any time I've written a test in the past, I've found myself having to refactor code in order to be able to test it in a way that makes the most sense. I think writing the tests first could make my code cleaner and save me a lot of time.

5) React. I have a major interest in web development and knowing React could prove invaluable to me when looking for a job. While I don't find it as intuitive as I found Node.js, I loved figuring out the interactions between the components and seeing how they came to life on screen.