Devblog: Branda Spring 2021 Update

Branda
5 min readApr 9, 2021

--

Welcome to a new semester! Hopefully it’s better than the last one! We have a new Branda update for you all, and unlike AMD and Nvidia, we can actually deliver the goods when we announce things. Please rate this burn on a scale from “Cyberpunk 2077 on OG PS4” to “Overclocked Intel Core i9–10900K.”

But enough memeing around. Let’s do Branda stuff.

This post is brought to you by Ian (Hasegawa) Smith ’22, a computer science and history double major. When he is not bending React Native to his will, he can be found waiting for Microsoft to finish Sun Valley, waiting for Microsoft to make more Xbox Series X, and waiting for whoever has been borrowing the only copy of Haikyu!! Volume 4 from his public library for the past month to hurry up and finish it already.

Notable Changes

Transparency

Thanks to your feedback, we have realized as a team that we need to be more clear with the Brandeis community with regards to what Branda does.

As we covered in our Where Branda’s data comes from post, none of the information delivered by Branda is unique to us, and with this update we have added the ability for you to instantly see the original source of the information you are viewing.

On most pages, there will be a new button in the header. Tap it, and it will bring you to the source of that information. For example, clicking the button on the News page will bring you to Brandeis.edu. Note that some pages, like Contact Us and Data Sources, will not have this button because there is no source.

Speaking of Data Sources, we also added a Data Sources page, so you can access all of these links in one place.

Server-side Improvements

This section is brought to you by Eli Miller ’22, who is majoring in Computer Science, and knows better than me.

Along with all the improvements to the app, we also worked on upgrading our backend to use NextJS. Why NextJS?

  • Good customizability in terms of server-side vs client-side rendering which can improve performance and SEO.
  • Encourages strong conventions for creating API routes.
  • Out of the box typescript support.
  • Super easy front-end routing.
  • Lightweight but still manages to provide some really useful built-in features
  • Extensive documentation
  • Knowledgeable community
  • Great package support

Basically it’s a big upgrade over our current backend, and if all goes according to plan the upgrade will be totally transparent to the end user. However, it will make our lives easier in terms of maintenance and other areas.

Bug Fixes and Performance Improvements

Visual improvements to the Laundry page

  • The image of a laundry machine was replaced with an icon.
  • The spacing and coloring of the text containing the name of the currently selected building was improved.
  • The spacing of the washer and dryer labels was improved.
  • The spacing of the washer and dryer time remaining figures was improved. We are aware that these do not render properly on iOS devices and are working on a fix¹.

Visual improvements to the Profile page

  • Improved appearance of push notifications settings².
  • Improved functionality of enrolling/unenrolling from club notifications.
  • Resolved a styling issue with the club list.
  • Added a note clarifying that even if all the notification switches in the Profile page are turned off, Branda may still send notifications, and that users can disable all notifications from Branda using their system settings.
  • Improved appearance of link pickers on Android.

Visual improvements to the menu

  • Improved spacing around the link to the profile page.
  • Partially resolved an issue where longer names would wrap to a second line. Note that like all styling changes, this will vary depending on the device and individual experiences may vary⁴.

Visual improvements to the Shuttles page

  • Improved the visibility of inactive icons on the page footer in dark mode on Android.
  • Improved the appearance of the hours view of the Boston tab.

Functional changes to the Hours page

  • Resolved an issue where a disagreement between the server and the app over what a week is (no, I am not kidding) resulted in the wrong times being displayed on the Dining and Library tabs⁵.

Other Changes

  • Removed various unused components and code — this will be invisible to the user, but should result in a reduced package size.
  • Upgraded various internal components to newer versions

As always, we welcome your feedback about these changes and anything else.

  • Email: brandaapp@gmail.com
  • Twitter: @Brandaapp
  • Instagram: @brandaapp

Footnotes

  1. This issue has existed for a long time, and it has something to do with the way iOS does math. No, I am not kidding. Unfortunately, until someone on the team with an iPhone digs into it, it will probably be bugged forever.
  2. “Improved the appearance of” = adapted a Native Base component instead of YOLOing it with raw View and CSS.
  3. Everyone hates server-side rollouts — Google users will know what I mean — but this one will be all or nothing.
  4. Whoever writes a Text component for React Native that automatically resizes its content to fit on a single line within the constraints of the parent View will basically be a living deity, at least to me.
  5. This really is what happened. We parse and store schedules in a 52-length array (don’t ask), and the app finds the right schedule according to what week it is. By default, when you call moment().week(), Moment will use the current locale’s meaning of “week” to calculate and return the current week number. In the US, the first week of the year is the one with January 1st, and Sunday is the first day of the week. In ISO, how the server parses and understands dates, the first week of the year roughly conforms to the American definition, but the first day of the week is Monday. Thus, while by the American definition it may be week 7, to ISO it’s actually week 6. You can see where the conflict arises.

--

--