Here’s my work summary for this week’s All-Hands meeting. This month was almost entirely finishing up the login system, with a little bit of continuing work on the viewing of the recommendations. The first part of the month was spend fixing up the various delegates for the network communication messages, getting them to send the correct messages and linking them up to the interface. Following that, a lot of work got done in a series of impromptu meetings with Evan so that both the client and server sides of the Wine Agent could be worked on together, resulting in much faster work.

The first thing to get finished was the functionality and behavior of the Create User option, which involved a lot of testing and fiddling with the server-side processing. Several UI issues were also addressed here, such as the behavior of the actual text fields and saving/sending of the contents correctly.

This led directly into finishing the login system, since a big delay for me was the inability to actually test my code without the ability to create a test user. This was resolved in much the same way as with user creation, with lots of testing, looking at the client and server debug logs, and fixing all sorts of little issues.

One of the key things we worked on for this was enabling for the user’s session data to be stored in the device keychain, allowing the user to not have to login every single time they came back to the application. Going along with that was, of course, linking together everything to allow for logouts as well. This actually led to some odd behavior resulting from an earlier change and the internal logic for checking the login status had to be revamped as well.

This huge rush of work was followed by me going through everything much more slowly, finding more corner cases that we missed in just getting everything to work, and fixing a whole bunch of minor issues resulting from repeating certain actions, such as logging in/out, different kinds of inputs, and combinations of valid/invalid logins. The biggest issue here was an issue with OWLInstance not correctly clearing itself between attempts, which resulted in valid logins not working after an invalid attempt, but was fixed pretty quickly.

The only non-login related work that I did this month was just in testing an earlier feature I had made, for viewing recommendations, which could only be tested now that Evan got the recommendation manager to the point where there was data available that my work could draw on. It doesn’t work quite the way we want, since it only populates after restaurant menus are opened, and has issues with not clearing previous ones, but it does display the recommendations perfectly once those conditions are met. We did several tests with this just to try to find what the existing behavior does and what issues occur, although we did not actually address them currently.