Wednesday, 7/11: Planning- We made a rough sketch on what we are going to do for the app on the board while also discussing it with everyone else.
Thursday, 7/12- We started a story line / backlog for our app explaining the screen, the tasks, as a user what do they want and a rough outline how to code it.
Friday, 7/13- We developed a wireframe for the first and second applications. The wireframe includes the basic UI components, as well as how the application will travel between screens. As we did the wireframe we added more screens then also updated the backlog.
Monday, 07/16: Coding
Julian Peres:
I started by deciding what portions of the app I would work on. I started with creating the login and account creation page. These save the username and passwords to CloudDB's and then the device accesses them when checking whether a username has already been taken, in the create process, and making sure a password is correct in the login process. I then created a messaging area which allows the user to save their friends username as well as phone number, then choose from a list who to message which reroutes them to a new page with that friends name on it and they are then able to send text messages form that page. Also on the texting page, the user can put in their supervisor's number in the event they want to talk to them directly or warning them of something that they have seen. Finally, I figured out how to combine different aia files in app inventor to create one big application. I just had to rewrite some of the .aia code and then copy and paste the different parts into one large .aia file. Then I started connecting each of the pages so all the buttons actually went to the correct pages not random ones. This to a while because I had to figure out how to open and close screens simultaneously. I eventually figured out to use two separate procedures that would make the processes almost simultaneous which solved the problem. I then went through and created back buttons on every page so the user could get back to the page that they were on in the case of a miss click or they just want to go back.
Izzy Natchev:
Finally, coding has begun! After divvying up the tasks between group members (I ended up with tasks mostly from the first group because they needed more help), everyone began coding. I was left to program the profile page of the self-care app, Nisimo (working title). Setting up the GUI wasn't too difficult, but formatting the picture to be a decent size and subsequently not dominate the entire screen was a bit of a challenge. Also, remembering everything that needed to be on the page proved to be a work in progress. I eventually finished though, and then realized I needed to code in the settings page since it directly connected to the profile page. So, I signed myself up for it in the backlog and went to work. Coding it, again, wasn't the worst thing in the world, but choosing a color scheme is infinitely more difficult than coding in theme-changing buttons (after ten minutes of arguing and googling, my group finally settled on one). Choosing the scheme was the last thing we did, leaving me to code in the actual background color changes tomorrow. Moreover, after looking over the design of the settings page, I discovered I also had to code in the change password function. It required another screen and was another surprise, but I did it (and I even added in a fun little check for the confirm password that would tell the user in real-time if both of their input passwords matched). Also, figuring out how to close and open screen simultaneously was a challenge. Apparently, App Inventor's "open another screen" block doesn't close the previous screen. Not good. We found a way to close and open screens, but it's not the most efficient process. Still, it's progress. Also, I signed myself up to program the coloring game because I finished the profile and settings pages before lunch. Tomorrow will be a fun day.
Megan Goulet:
Today, we finally began to code the application. We all self-assigned ourselves to tasks. I chose to create the menu and start the survey. I coded the menu so when each button is clicked, the application will redirect itself to a screen dedicated to that specific task. After, I began to make a rough draft of the survey page. I added a name and age slot, followed by two questions with two answers (yes, no). I protected the app by alerting the user if they selected both yes and no for the question, as well as if they didn't select either yes or no. I solved the notification options problem in order to reduce the number of screens we have. Once enabled (once the user indicates that they have finished the survey), a new notifications option will give the user the options that would best benefit them (in accordance to the answer they selected). I have also began adding the list of notifications that our client would like to have in the app. Tomorrow, I plan to add a button option to make all the notifications available.
Kiet Ha:
New day, new code. We started with opening the google spreadsheets of the app backlog and assigning what we are going to do with the app. I was assigned the UI designer of the app because all my formatting done with all the other documents. Since designing the UI is mostly after all the code has been done, I had to choose something to code. I chose to do the game. A group member had a rough draft of a brick breaker so I tried to update that. However, that was inconvenient so our mentor advised me to make the blocks programmatically. Both of us finally found out how to create them using lines and deleting them. Tomorrow, I will start programming the balls and sprite.
Compiled with completed work:
Tuesday, 07/17:
Julian Peres:
I started by updating the wire frame with the work that the group finished yesterday. I then started to design the UI for the calendar. I then worked to add the group chat function to the messaging portion of the application. I then brought in the survey from megan's work and input all the blocks to make it function with the rest of the program. I then worked to create a group text function so the user could choose what friends they want in their group, name the group and then create that group. then they can choose from all the groups that they have, the one they want to send messages to and then that redirects them to a new screen were they can then send the messages to that group. I then supervised the theme changing. I also worked to start creating an algorithm to decide the notifications that should pop up based on the users answers to the survey.
Megan Goulet:
Today, we continued coding our application. I added the rest of the notifications that the client listed on his documents, and clarified the questions that need to be asked in terms of the application. I added the rest of the survey questions. I continued to code the precautions that are involved in taking the survey, including selecting none or both of the question answers. After, I organized the code so it would be easier for the other developers to read. I added comments for the crucial bits of the code, so if we ever needed to make more modifications, we would know what parts of the code need to be edited, and where. I continued the development of the suggested surveys, so the eleven questions can affect what types of notifications they recommended. I added a button so the user can see all of the types of notifications they could use. I then added another button, so when the user was complete with selecting the recommended types of surveys, it would bring them to the menu. After I finished coding the survey (for the most part), I created the UI for adding the notifications screen, as well as the deletion of the screen. I began to brainstorm ideas on how to code the notifications, and discovered some extensions that could help us send push notifications using App Inventor.
NOTE: We still need to add the notifications themselves and find a way to give the types of notifications the user desires, without repeating them.
IMPORTANT EXTENSIONS FOR PUSH NOTIFICATIONS:
Izzy Natchev:
I coded only for the this group again, today. they needed a lot more to be done, so I lended my programming talents to them. I programmed the coloring portion of the app, setting up an open drawing and coloring over a design setting (using designs I found on google that were labelled for use). It was cool! despite being a clone of an earlier project from AP CSP, I decided to upgrade it, and it turned out quite fun! I added a slider that controlled the dot size, as well as two buttons (that also affected the slider). I also added a smaller canvas to the bottom of the screen that displayed the actual size of the dot that would appear on the canvas when the user drew. On top of that, I changed the width of the line when drawing (although a smooth line is not being produced, I'll need to see if I can fix that tomorrow). After coding the coloring portion, I coded the themes for the app. Setting up the designated button in the settings section to save the colors to the TinyDB was relatively simple, although going through the entire app and coding every single page to match the theme based on what was saved in the TinyDB took over an hour. Still, I completed my jobs for the day, and I plan on doing something more substantial tomorrow (hopefully).
Kiet Ha: In the morning, I implemented the brick breaker slider and the ball. I got the slider to work and the ball to bounce however because of the algorithm we used to draw the blocks (drawing lines to make up a rectangle) we could not program it so when the ball hits the block, it block will disappear or break down. MIT AI2 is limited to some things for creating a game and what we needed was a game loop but MIT AI2 was limited and did not have a block for that. Even though this was a bum, I learnt a lot from the algorithms and designing it. Sometimes life isn't always about completing it is also about learning and taking notes from what you done. Therefore, after discussing with the group we decided to change the game to Exterminator. It is a game where the cat chases the mouse which will get harder after time and eating the mouse. I started with UI and is expected to finish the game by tonight.
Wednesday, 07/18:
Julian Peres: Today I worked with Izzy to get the calendar iterations based off of the date that the user used to be on and the date that they are on when they opened the app to change the labels in the app to the correct days based off of the day that they started using the app, which they will answer in the survey just one time. Problems came in with getting the text boxes to change the correct number in a circular motion with the different dates changing. Once we figured that out a problem was that since the app could not be compiled to start on a separate page, it was overriding some functions that needed to be done the very first time that the user used the app, which was making the labels stay exactly the same no matter what happened with the day of the week or what day we had the user start on by changing the clock of the device. The final problem is that when the app started we had saved days in the future and then, since we put the device back in the past, it was confusing the application because we had no way of coding possible time travelers (going to the past) into the mix. So, we realized that we had to wipe the device of the DB variables every time. That worked but when we tried to jump multiple months into the future, we realized that the program had no way of deciding how many days to add because we had not coded that in so that is the task for tomorrow.
Izzy Natchev: I worked with Julian today to begin setting up the calendar page of the app. The idea was to have the labels in the page correspond to the current day of the week (when the user uses the app) and the three days before and three days after. Of course, in doing this, we had to account for users not using the app every day. In the event of a user skipping a day, a week, or even a month to use the app, the labels would still have to be accurate. In programming an algorithm to keep track of the days of the week over those time periods, a HUGE procedure was required to code in a single log in every month. Unfortunately, after testing, we realized that if the user doesn't use the app for two or more months in a row and then logs on again, the algorithm doesn't work. So, tomorrow, we get to fix that. We also have to remember to clear the app data when we test every iteration of the app to ensure that we are not saving the data of the future and expecting the app to calculate based on a date in the past/present (as we did today). Another issue we encountered today was how to have the user select the day of the week they first log into the app on, to start off the algorithm so that is works as intended (and doesn't start on Monday if the user logs in on Thursday). After creating a procedure to get the day of the week the user first logs in, we had to create a variable whose value would determine whether or not the procedure would be called when the screen initializes (since it was only supposed to run once). Still, it was more complicated than that. Within our test app, the list picker on a second screen determined the starting weekday, and once the user returned to the first screen would the desired procedure run. Unfortunately, that required that the second time the page opened, the procedure would run. So, we had to code the procedure to run whenever the value of its disabling variable was 1 (meaning: the test app was opened, the user selected the day of the week on the other page, and the user returned to the first page, allowing the procedure to run and get the day of the week and convert it to a numerical index value based on a list of all of the days of the week). Another problem was when the two lists on the different pages didn't match up, causing our search algorithm to malfunction. Tomorrow, we need to finish coding in the month changes (while accounting for years) and add it to the main app, and I need to play with the GUI and make it look nicer and less stressful. Which will probably take another 90 minutes like the theme changes did. Fun.
Megan Goulet: I have completed my assigned tasks for the app, so I tried to assist others who may have needed assistance. I continued to investigate the push notifications, and tried to download one of the extensions, however App Inventor alerted me that the project was missing some pieces that were crucial for running the app. I have since been assigned to a guided imagery task with Izzy, which will lead the user through a guided imagery script. I have created the UI for the screen, and discovered new variables that we can change within the application, such as the button shape. I have made two buttons next to the image, so the user can switch through the different types of scripts to use for their guided imagery. I have a label that we can use for the scripts, and am prepared to add the sound files onto the application. I also included a back button that will bring the user back to the menu once it is clicked. Tomorrow I will try to solve how to get the back button to the left corner while still having the screen have a center layout. I had a brief discussion with Izzy on how the Guided Imagery section of the app will work. I began brainstorming ideas that constituted as a relaxing scene, and began to plan on how to code the Guided Imagery Task. One major goal that should be used is making it as simple as possible, since the other coworkers have expressed concern over the efficiency and storage of the application, especially with over the use of ten screens. Tomorrow, I will continue to code the application, with the possibility of including lists and indexes with the code. I also made a new document with some questions we need to ask Carlos for Thursday. If anyone wants to add questions to this document, they are welcome to do so. Tomorrow, I plan to ask Carlos about the function of the survey and the guided imagery portion of the application.
Kiet Ha: Today I tried to finish up the game however there were too many bugs and wrong things that I encountered so I brain stormed a different version of the game. All the day was dedicated to that and is nearly finished.
Thursday, 07/19:
Julian Peres: I started out today by fixing up issues it the texting portion of the app as when the user was saving people that they knew with that persons phone number, it was not saving more than the most recent person so I had to figure out a way to add on to the previously added scores. Then, Izzy and I worked to refine the process for the calendar part of the application. Problems we ran into were when trying to copy a similar part of the code that we created yesterday without some of the variables that we had inputted the other day so debugging was a major part of the process. Once we got the changes all figured out, I transferred the code over to out BigCompile version of the application so we could see how it would interact with the rest of the application. I needed to make up time for a day that I would be out the next week so I took some time to work on the app. In this time I focused on the saving of the user's answers to the different survey questions in both the TinyDB's and the CloudDB's. When I started I had to entirely recode the portion of the code that checked the answers because the checking code seemed to have a lot of mishaps in it, as much of the blocks would not have returned an output because the user was not supposed to click both or none of the checkboxes. The first problem I had came along when I was trying to save the answers to the questions as the user answers them, so if they mess up I created a piece of code that would wipe the CloudDB under the name we saved the answers, all except the password of the user. I then figured out to only save the answers once the user had properly answered all the questions. Then, I had to figure out a way to give the user good recommendations for notifications to add to their device. I took a while to organize all the notifications that we had been given by the client into smaller groups of notifications.
Izzy Natchev:
Megan Goulet: Today, I continued to work on the self-guided imagery portion of the application. I carried through with the plan to add the lists and the indexes for the images, the sounds, and the self-guided imagery quotes. Izzy helped me with a bugging error that had to do with having too many indexes functioning at once. I found another UI function, ImagePicker, which will allow the user to pick an image of their own and insert it into the images list. We tried to get a TinyDB to store the user's image within the list of images, however we have not yet found a solution to have the image the user picked stay in the images list. We coded the left and right button, so the user can easily switch between each guided imagery exercise. After interviewing Carlos, we were able to get more clarity on how he wants the recommended survey questions to load. Julian expresses interest in coding this part of the application. We were also able to talk about how Carlos wants the guided imagery to be set up, and we now have a clear idea on how we can finish the Guided Imagery. Tomorrow, I will complete the guided imagery page (I will include the websites to the images/sound-files that we use) and begin another function of the app, a music function that when clicked will redirect the user to a musical website. I can search for Creative Commons audio-files, as well as images. I will also search for a free music website that would be optimal to use. Izzy mentioned an ActivityStarter, so I will investigate into that tomorrow morning.
Kiet Ha: I finally got the game to work last night after debugging. Today, I added many elements and enhancements such as a obstacles like tigers, cucumbers, dogs, background image to the game to make it much more fun and less stressful.
Friday, 07/20:
Julian Peres: Today I continued to work on the survey portion of the page. I decided to set up the recommended notifications based on the number of questions they answered in certain categories, ie. self blame, which had four questions so the code would figure out the users answers to the questions relating to self blame, and then would spit out the fraction of answers that would lead the program to believe they need these notifications out of the total number of questions that relate to the one topic. Then I set up the user interface so that the user could choose which notifications they want and then add them to their group of notifications, which they could see by clicker a list picker button. Then, I code that in. I then proceeded to make the UI for the user to be able to delete notifications that maybe they added accidentally. I did not encounter many problems in this round of code work.
Izzy Natchev:
Megan Goulet: Half of our day was spent at OPP, where we listened to a motivational speech. After, we agreed to continue working at home. A large portion of my time was spent looking up photos and audio files and importing them to use in the guided imagery application. I made a separate file for the sources of the images and audio-files, so I could refer to them later in credit issues. I encountered a problem where MIT App Inventor was not able to install audio-files bigger than 5.0 MB, which leaves an average of 30 seconds for the audio to play. To resolve this problem, I found small audio files that could play in a loop. I worked an extra hour to download the audio-files that were less than 5.0 MB and upload them to the application. I finished coding the Guided Imagery Application by calling the audio-files and images to their respective lists, as well as finished developing the Play function. After, I designed a test for the Activity Starter. Everything waits for a final test on Monday.
Kiet Ha: We spent most of the at OPP listening to a play and give the time sheet. I continued to debug the game because creating a game has many different bugs that you encounter. I fixed a bug where the cat would just bounce every time the score was a multiply of 5.
Monday, 07/23:
Julian Peres: Today I continued to work on the app communication between the calendar and surveyscreen pages. I started by adding a portion for the user, once they had finished selecting their notifications, to select what day of the week that they want to see the notification pop up, and what time they want it to alert them to complete that notification. I then coded a way for that information to be saved and then accessed in the calendar portion of the app under the different days of the week. I ran into a problem when, for some reason, the information was not adding on to the DB at all. I figured out that I had to set the tinyDB to a global variable, then overwrite and add to that global variable, and then save that information back into the tiny DB to be used in the calendar. Once I was sure that that was working properly, I moved on to the Calendar. I already had an idea of how I wanted to do this and the UI was already complete for that part of the app so I just had to create the code. I made it so that all the list pickers, which contain the saves of the user from the survey, change based off of the day listed in the labels at the top of each section of the the app. I got that up and running so that the user could have that working. When i tested it though, the day changer stopped working. I looked around in the app to find the problem and I realized that a global variable had been improperly called for in the name change portion of the app so that app was trying to get an index of a part of a list of something that was not a list that definitely did not contain the piece that the code wanted to get the index for. Once that was finished, I moved on to a way for the user to save how many of their tasks they completed that day. I had to figure out a way to do that but I eventually settled on the user clicking the button and then the device will display the number of the number of tasks they had completed that day. I finished about half of the code for that before I had to go home. Late that night when I got home I finished up the code for that and then I moved on to create an add notifications apge. Here, the user could make their own notifications as well as choose from the pre-made ones. Then the user would select the day that they want the notification to occur and the time at which they want it to occur. This would then save that information to a tinyDB and then the device could access it from the calendar page.
Izzy Natchev:
Megan Goulet: When I arrived this morning, MIT App Inventor was not allowing the application to load for testing. I determined that the probable cause of this issue is that there were too many files uploaded into the current problem. In order to solve this problem, I deleted all of the files, and republished five of them to redesign the application. Once MIT AI was allowing me to test the app, Bemnet suggested a full-screen use. I made another button that took the user to another screen, allowing the image they had before to be transfered to another screen with the audio running in the background. When the user clicks on the image (which is actually a textless button), it will bring the user back to the home screen. I used start values and a TinyDB in order to let the app know what photo to put in full screen. After, I added four more indexes and edited the program to use the nine indexes with fluidity. I downloaded the .aia file and emailed it to the trinityapp2018@gmail.com email, although it is also saved on Drive since the storage file is uploading. Tomorrow, unless there is other work that needs to be done, I will create the citation credits needed for the Creative Commons files that I used in the program. I will also ask if these credits should be displayed in the description of the app.
Kiet Ha: I worked a lot during the week on the game to make it perfect but there were still many bugs such as when you click the turbo button, you can't touch the canvas either or how the tiger could eat the dog. I continued to debug today.
Tuesday, 07/24:
Julian Peres: Today I worked started by coding in the way for the user to delete notifications that they did not want to have. Then I started to debug the problems with the calendar part. I realized that the saving of how many tasks the user completed was not persisting when they left the screen and came back to it so I tried to fix that but I had to leave early.
Izzy Natchev: Today, I did some minor debugging work vicariously for Julian, and when I went to connect the AI Companion, the Companion wouldn't connect. After several failed attempts, I decided to simply build the app and test my work from there. Still, even when trying to create a compressed .apk file, MIT App Inventor showed a message saying that the 10MiB limit for building .apks was exceeded by our app (Kiet hadn't even finished and sent his game yet). After cracking a few Men in Black jokes out of frustration and deleting several assets, I was left with trying to decrease the size of the app while preserving as many assets as possible to comply with our perception of our client's desires. The current plan is to decrease the number of screens we have in the app, which means combining screens and using the visibility of vertical arrangements to simulate the changing of screens. Great idea (takes up a lot less memory), but I couldn't even finish one combination today (of the calendar and edit screens) .
Megan Goulet: This morning, I made a new bibliography that was suppose to be made today. I looked through the sources, and I made the correct attributions to the sources that required them. After I was done with the bibliography, I decided to make a logo (The computer software that I used to make the logo / icon did not mention any required attribution or payments, so I gave attribution just in case). The file will be at the bottom for team approval. Then, I downloaded the Push Notification system and submitted it under thorough investigation, including how it sends notifications and if it can send images under a certain list. Most of my time was spent on planning a push notification screen (retaining it to one, since we have way too many screens as it is). Tomorrow, I will begin to investigate how to incorporate an alarm into the push notifications, and possibly downloading the Alarm extension from Puravida (it won't let me upload the .aia file.
Kiet Ha: Today, I continued to debug the game as there were several major bugs that I finally fixed. I also added a rabbit to let the user speed up and a turtle to slow the down. I also changed the background to make it look much better & cleaned up code. Game is almost completed.
https://drive.google.com/open?id=1b4OpYhLPWN0NE2Xo8pvrnuA1MfBAQnPr
Wednesday, 07/25:
Julian Peres: Today I started by continuing the work from the day before. I worked on moving the add notifications pages and delete pages onto the calendar page, believing that research had been done into the cause of the oversize problem before jumping to conclusions that it was somebodies fault. I finished up combining the calendar pages and I fixed the bug, where the information would not persist when the user left the screen. Once I had finished this problem the app still would not work so I looked into the problem only to find that the problem had nothing to do with the size and expansiveness of my code, which I did condense on to one page which is how it will stay, it had to do with the amount of data that was being taken up by the assets we had installed into the app. Even if we had removed all the code from the entire app, the assets still was greater that the downloadable amount allowed by the device. Once I figured that out I worked with Megan to figure out what assets we could delete and what ones we could keep to avoid the download limits of app inventor. Now that that is done, we also checked the size of Kiet's game to make sure that it would fit once we had decreased the assets and it would so we had solved that problem.
Izzy Natchev: I primarily worked on the other app today. After planning on continuing to condense this app as I had started yesterday, Julian decided to take over on that endeavor. He condensed two screens into one, then discovered that even after deleting several of the assets yesterday, they still took up too much data for the app to be compiled, alone. Megan and I then worked together to choose some asset files that could be deleted.
Megan Goulet: Today, I tried to investigate the Alarm Extension that is provided by Puravida, however the extension was broken, and I was not able to obtain functional use of it. Instead, I resumed looking into the Simple Notification Extension. I spent minimal time updating and organizing the UI, and instead making changes to the notification. I used a Clock feature to set a timer, and used a Time Picker so the user can set the time they wanted the notification to alarm (note that it does not have a seconds feature (nor is one necessary)). I had to use the Clock feature to measure the difference in times, and then developed a mathematical formula to determine the amount of milliseconds (As far as I know, the Clock function only works for milliseconds) there is between the time (which means that the notification will be delivered at approximately within the time they set it to). The notification system also works if the app is in the background. We took a break and learned about 3-D printing and played VR games. When we came back, there was a problem with there being too much storage for the assets (too many sound-files). To resolve this issue, as well as moving the app to one screen, I made a button that took up the full screen, as well as setting things from true to false. Izzy and I decided that all the sound files except for Puppy.mp3 (a calm song) were taking up too much data, so there is no longer a list needed for the audio files. Hopefully we will still have enough storage for the Notification extension (priority) and all of the image (secondary). I updated the App Bibliography. Right now, the Notifications only work if the time span the user sets the notification in is within 24 hours. Tomorrow, I hope to add a day function that will allow the user to set the notification within the month, as well as to let them decide if they want their notification to repeat during a certain time. Tomorrow, during the business meeting, we should discuss with Carlos whether or not he likes the logo. Should we update Carlos on the notifications? So far, the completion of the notifications look promising.
Kiet Ha: Today, I continued to debug the game as it still consist of many errors, the bugs are as following: mouse will not spawn at a cucumber place thanks to Damon, made an alert of instructions when the screen initializes, fixes a bug where the tigers and dogs would keep running into walls, fixed a bug where the score can go to -1, fixed the bug where the level would randomly change the number, fixed a bug where the dogs and tigers would be on top of each other, and also optimized a lot of code so it is easier to look at and more organized. https://drive.google.com/open?id=1H6vk7B-zCGXoB_bT0MIUr_QXfLv_nlMI
https://drive.google.com/open?id=1b4OpYhLPWN0NE2Xo8pvrnuA1MfBAQnPr
Thursday 7/26:
Julian Peres: Today, now that figured out the real problem of the app and I can continue on with more important parts of the app, I will code in the part of the app so that supervisors can view the notifications that some of their people have set up in their calendars when the supervisor re-logs in and then types in the username of the person's information they want to see. Also, I will make the account logout function to change the visibility of a button on the login screen. In the login screen once the user creates an account I will have the device save their creation and from then on when the user gets into the app, the screen initializes with a bypass button so the person can go right into the menu screen once they have already sign in. The logout function will then reset the value of the tinyDB that stores the "alreadyloggedin" value so when the user tries to get back into the app that button will be gone and the user will have to log out again.
Izzy Natchev: I condensed the profile and settings pages into one screen, today. I plan on condensing the change password and coloring screens, as well, to make the total number of screens 12. I also changed some of the designs in the closed color portion of the app to include the designs that I asked Robbie to make.
Megan Goulet: Today, I checked the notifications again to make sure that they worked. After I was sure that the formula of the milliseconds were created correctly, I created another formula that can calculate the milliseconds compared to the days set. I set up the basic functions of the days, and now have a basic notification system that will notify the person if the notification has been set in the last month. I realize now that once you add the dates in, setting and checking the notification (to make sure it delivers to the user at their specified time) is going to get a lot more difficult. I began brainstorming a check function that will alert the user if they set up to have their notification in the past.
Kiet Ha: Today, I finished up the game, checking to see if there were any bugs left. One last bug about the game is that the image is too big therefore making the cat run into the tiger too soon. I also merged the game into the app so we could show Carlos but I will try to fix the image bug too.
https://drive.google.com/open?id=1D40-Bbw9upJn0wO2ITD9yh5tWG0O0mTF
Friday, 7/27
Julian:
Izzy:
Megan: Today, I decided to work early in the morning because when my Dad picks me up, we are going to Vermont. I went into the Trinity Application and changed the Guided Imagery. There were no major changes, but I fixed some of the bugs that popped up while we were showing Carlos our application. I made the title disappear once the full screen was activated, as well as changed an index error that resulted in empty slots for the images. I have no device that can successfully test the application once I added new code, so no major changes were made in the app, as I like to keep a close eye on code that works / doesn't work. I spent the rest of my time writing in pseudo code and planning how to have the user be able to send multiple notifications running in the same time (there is no clock, so every time a notification is set, it will reset the clock). I also want to plan how I will have the user request for a notification that is in a new month or a new year. Finally, I want to plan the basic functions of the assigned application. I also updated Julian's list of notifications so I can incorporate them into the application. There may be a bug at first, since I can't test it and my computer screen is too small to create more than a couple action blocks.
Kiet: In the morning, the whole group went to OPP to listen to a motivational speaker. After that, I went to Julian's house to work on the app. We fixed some bugs in the login screen where it would throw run time errors and also fixed the game where it would be super zoomed in.
Monday, 7/30 - Izzy has a concussion and will not be here for most of the week.
Julian:
Megan: We spent today fixing minor bug fixes in the applications. We tested each other's applications and found minor bug that we ended up fixing today. It turns out that the Guided Imagery relies on a fixed screen, while Kiet's screen relies on a Responsive screen. Julian and I fixed this problem by changing the proportions of the Guided Imagery screen so it will take up the entire screen. I still have to code in a full screen button. I also fixed a bug where the sound wouldn't play. Changing the variable from a list to the sound file itself solved the issue. I spent the remainder of the day beginning to outline and code the Assigned Notifications feature, where a certain type of push notification can be sent to the user at a specified time that will be picked by me.
Kiet: Today, since the app was combined into one, there were so bugs where the screen would be weird on different screens. The guided imagery screen would be too small if the screen property is responsive. If it was fixed, it would be normal. We fixed this bug by changing the images and elements of that screen to use percentages instead of pixels. Then we continued to stress test the app to find bugs and continue to debug.
Tuesday, 7/31
Julian:
Megan: Today I continued to work on the notifications, trying to figure out how to send a notification even if the user leaves the notification screen. I have determined a way to do this, as to set a time variable equivalent to the current interval the clock is stopped at. I set the clock interval to 5 milliseconds, and when the user leaves the screen (by clicking on a back button), the screen will initialize with the start value of the current time interval, and another timer on that page will continue counting down the variable until it reaches 0, in which it will send a notification and reset again. I looked over the application with Julian in order to make sure our app was presentable for Carlos tomorrow. I added in the 24 hour notification that reminds the users to check their Nisimo application, and added a reference list to the notification. Unfortunately, I do not know how to make a notification multi-lined, so \n doesn’t work for making seperate lines in the Notification message. If anybody has any ideas, then I would love to hear it. The references still work fine, however it looks a little unorganized. Tomorrow, I plan to finish up the notifications and add them in before or after our meeting with Carlos (depends on timing and if I am able to combine and finish it safely before Carlos arrives.)
Kiet: Today mostly me and Julian fixing the bugs and adding some small additional features into the app. There was still a tinyDB error but we finally resolved that. Otherwise just a normal bugfixing day.
Wednesday, 8/1
Julian:
Megan: Today, I finished editing the notifications. Julian doesn’t want to move the assigned notifications into the app because it might crash the app, so I set the notifications to remind the user to visit their Nisimo application every 24 hours. While Kiet was fixing the UI, I fixed any bugs that were present with these changes, as well as made a new change with the UI. Instead of clicking on the image to get out of full screen, the user will click on a new button, the Exit Full Screen button. I made a new variable FullScreen that initializes at 0, and then if the button Full Screen is pressed, it will enter full screen and set the variable to 1, and it will also change the text to Exit Full Screen. If the variable is not set to 0, then it will exit out of full screen and bring it back to the Guided Imagery Menu. All of my tasks are completed.
Kiet: Because I was fixing the UI, there might have been some bugs I created so Julian worked to fix that. Just only couple more days left!
Thursday, 8/2 - Izzy is back!
Julian:
Izzy:
Megan: I have completed my tasks for the app, so today I created the PowerPoint that we are going to present tomorrow. Bemnet gave me a list of what he wants to be on the PowerPoint, so I included all of the information in the desired order. My entire day was spent including this information, checking for grammar mistakes, and formatting the PowerPoint so it "looks pretty". I believe we are ready to present tomorrow as long as I am able to upload the desired screenshots into the presentation. I also created a new image for the guided imagery, known as the download image. Due to some difficulties with translating the picture into Spanish, I uploaded a language-neutral picture instead.
Kiet: There were some cloudDB errors so Julian figured that out eventually, I worked on the powerpoint a bit for tomorrow. Time flies by fast!
Friday, 8/3 - FINAL FRIDAY!
Julian:
Izzy:
Megan: Today, I have spent all of my time today typing up the rest of the Nisimo documentation (it took a lot of time to type up and check over grammatical errors). I helped Julian fix another error in the Guided Imagery. After lunch break, we are all giving our final presentation. Happy Summer!
Kiet: Today involved mostly bug fixing and the last things in the UI. After all the long work put into this, the app is finally done. It was a great experience and would recommend it to anyone else taking the APCSP course!
FINAL PROJECT: