-
Notifications
You must be signed in to change notification settings - Fork 0
John's Personal Log
This week I fixed some bugs and added some documentation where it's missing. I also added password strength requirements as suggested by our QA team. Those requirements are: one lowercase letter, one uppercase letter, one number, and at least 8 characters.
It's worth mentioning that, although we can easily add password strength checks locally in the app, Parse does not provide a way to strictly enforce those requirements. We don't have access to the password plaintext on the backend, so we can't reject bad passwords there. This means if a user changes their password outside of our app (like through Parse's password reset feature), any password requirements we place can be bypassed.
This week we had our last meeting with Professor Vidal before demo day. I have been working on closing some last-minute issues opened by the QA team. Our 1.0 release functionality is mostly complete. I plan to add some documentation to our code where it's missing before the official 1.0 release.
Lots of progress this week:
- Added ability to delete entries.
- Fixed “pass-through” click in drawer causing items underneath it to be clicked.
- Added “last active at” field for users so dietitians can see when their clients last posted an entry.
- Used Dave Morrissey’s cool subsampling image view to implement an image viewer for viewing full-sized versions of images.
- Started writing our website.
- Added function in settings to repair corrupt entries.
- Started implementing a last-minute request from our clients: The ability to export your snack entries for viewing on a non-Android computer.
- Fixed several bug/enhancement issues opened by the QA team.
This week I made several enhancements to the app's current features.
- Skip taking a photo and create a text-only entry.
- Confirmation dialogs before canceling changes to an entry.
- Assisted Josh with bringing the barcode scanner to a usable state.
- Miscellaneous bug fixes/enhancements.
I have mainly been working on enhancements to the chatting feature. Currently, I have scroll-to-load working so all messages do not have to be fetched at once, providing a quicker start time. Before RC1, I want to add a dedicated button to open a chat with your dietitian.
Unrelated to chat, I created a help message dialog that appears on log in if the user has 0 snack entries.
This week I fixed bugs I came across while running the app in an emulated Nexus 6P. In particular, I "fixed" a concurrency bug with downloading images from the server. If the asynchronous task responsible for downloading an image gets interrupted for whatever reason, it will sometimes leave an incomplete image file in the file cache. When the image loader later gets a request display that image, it will check the file cache see that the (corrupt) image is already downloaded and try to load it, causing bad things to happen. The quick fix was to attempt to load the image and, if an exception occurs, just redownload the image. A more efficient solution would be to somehow record the file's download progress and pick up where the download left off next time the image is requested.
Nothing.
Over Spring Break I have gotten push notifications for the chat working. New messages are now pushed to the device(s) registered with the recipient's installation rather than having the app constantly poll for new messages. If the user is not currently in a chat with the sender of a message, the user will receive a notification that, when opened, brings the user to the chat activity with that sender.
I have finished working on the chat feature (at least, as far as the beta release is concerned). The user can start a new chat and choose from a list of previous chats. The chat is by no means complete; there are still several features I want to add:
- Push notifications for new messages.
- Autocomplete/suggestions for usernames when starting a new chat.
- Dedicated button for clients to start a chat with their dietitian.
- Ability for dietitians to choose from a list of their clients to chat with.
- Possibly more as issues arise.
I have begun working the ability to choose from a list of previous chats rather than always having to enter the username. I am aiming to have this feature ready for the beta release. New message push notifications will probably not be ready for the beta release.
This week I began working on the messaging beta feature. Currently, two users are able to chat with each other after entering each others' usernames. Before the beta release, I am aiming to add push notifications when you receive a new message and the ability to see your past chats.
Nothing.
This week I implemented the singleton class SnackList to hold a local cache of the current user's entries. Having this persistent list of entries simplifies the code and allows us to avoid constantly querying the server each time the user wants to view their entries.
This week I discovered the app crashes and/or has unpredictable behavior on devices running the latest version of Android (Android 6.0). Essentially, the app fails to request dangerous permissions from the user, causing Android to throw a SecurityException.
I have been working on fixing this bug. See issue #9 for details.
This week I rewrote MainActivity to use fragments. The foundation is now set up to easily add new fragments and switch fragments with the drawer.
Nothing.
It's technically still Winter break, but I did some work on this project anyways.
This week I rewrote the login and new account activities as a single activity with two fragments (see this commit). I also reworked how photos are requested from the camera (see this commit), namely moving the dispatching of the camera intent from NewEntryActivity to MainActivity; this new implementation is far less hacky and bug-prone than my previous implementation.
Nothing (Winter break).
Nothing (Winter break).
Nothing (Winter break).
Nothing (Final exams week).
This week I added some finishing touches to the app before the first presentation, namely the ability to view details of a snack by tapping on its preview picture.
This week I contributed to merging two different versions of the project and settling any merge conflicts. We can now upload photos to Parse and display them in a ListView.
Nothing.
This week I finished a prototype of the photo review screen. The user is able to take a picture, choose a "meal type" (e.g., breakfast, lunch, dinner, snack, etc.) from a dropdown menu, and add a custom description. After the user is finished, the data is uploaded to the cloud. The next step is to download the user's entries and display them in a ListView.
This week I made progress on using the camera. I've been able to:
- Request a photo from the camera app.
- Save the resulting image file to the user's external storage (SD card).
- Decode the image file into a bitmap using a reasonable sample size and display that bitmap in an ImageView.
- Upload the image file to Parse.
- Associate that image file with a ParseObject so that it can be accessed via query.
There are still a few bugs/error checks to work out. E.g., checking if an SD card is mounted.
This week I created functioning log in and new account activities. After logging in to an existing account or creating a new one, the user is taken to a hello world screen with an option to log back out.
This week I pushed an empty Android Studio project to our github repository. I also installed Parse's SDK and connected our app to Parse.
This week I contributed to creating the functional requirements document for our project.
Nothing -- flood week.
This week I contributed to creating the detailed design for our project. We used mockflow.com's wireframe tool to create our detailed design. I'm currently working on implementing ListView and DrawerLayout.
I created a parse.com account this week. I read through their guide and tested some of their API's features in Android Studio. I found the API intuitive and promising for what we need our backend to do. For example, creating a new user is as simple as
ParseUser user = new ParseUser();
user.setUsername("john");
user.setPassword("hunter2");
user.signUpInBackground(new SignUpCallback(){
public void done(ParseException badStuff){
if(badStuff == null){
// User successfully signed up!
} else{
// Figure out what went wrong!
}
}
});
This week I created rough sketches of a few potential screens of our app. I continue to play around in Android Studio. I made a basic text-to-speech app. The app reads a string from an EditText view on the screen and uses a TextToSpeech instance to synthesize speech from the string and play it back.
This week we met with our client(s). They told us a great deal about their research and gave us many potential problems to solve, some of which more practical than others. We touched very little on how the app would function and which of these problems it would solve. We will narrow down the problems our app will solve in our next meeting. After this we can begin the rough design phase.
I have installed Android Studio and built Hello World. I am currently following online tutorials and plan to build a few small apps.
First log entry! This week we had our first meeting. We plan to develop the Diet Assessment app solely on Android, but this could change depending on our client's needs. I plan to spend the next few months learning Android and creating baby apps.