Posts

Iparam Finder Search Functionality

Image
 The search functionality has officially been implemented into the the tool! I was able to find an API developed by Apache called Apache POI. This allows for the tool to be able to read excel spreadsheets, xls and xlsx files, and read the date from the file and present it to the user. In this case, I was able to create an instance of a workbook and then tell it to read my xlsx file. *For testing purposes, the file is hardcoded but users will be able to change the file location in the future.* The program will then look at the first sheet, which is where the data lies in the xlsx file, and then loop through the first column and search each row in the column until it finds a match agains what the user searched for. If the tool can find the parameter that was searched for, it will then look to the next cell in that row and pull the information of what the parameter does and display it back to the user. This is done with getter and setter methods in the Search class. If the parameter i...

Iparam Finder (First Look)

Image
 For this project, I wanted to create something of a 'dev tool' that we could use at work. For my current occupation, we build instrument interfaces for our clients and sometimes we have to customize the interfaces with certain parameters, iparams, to make the interface function a certain way. With the company being around for a long time, there is a multitude of iparams that are available and sometimes it is hard to track down the less commonly used iparams compared to ones that many clients use. This will be a simple tool that reads from an excel file that has the iparams and their functionality description and a user can search that param and it will find it from the excel. Since this will be a dynamic document that everyone will have access to, the user will also be able to change the file that is being read when it is updated. The application will be built in Java, using the swing API to create the gui. From initially setup, here is current design of the application. From ...

DSA Practice

 Written by Quincy Williams Quick update! I know it has been a while since I have posted. A lot of changes have happened in my life over the past year and has taken time away from this. But I am posting today to speak about a GitHub repo that I am working on that I think can be of use to many people wanting to get into the Software Engineering industry, such as myself, and for those who are and just want something that they can refer to for DSA's and other topics. Here is the link to the repository and I will have it on the main page as well! https://github.com/SunnyD33/Refer-To-Skills I hope it will help any and everyone who takes a look and feel free to contribute to it!

Final Project Complete

Written by: Quincy Williams After 4 months of production, our team, Scrum of the Earth was successfully able to create and finish or RepAdvisor application! We were able to successfully publish our app to the play store and it is currently available for download, via an early access version of the app. We have had many down times for the app, such as UI issues, merging conflicts and our lack of commenting the code as we should but there were a lot of things that wen right as well, such as never breaking the repository with those merge conflicts, successfully launching the application and having a good team chemistry to be able to make a great final product. The link to the application is under the RepAdvisor Page where it will navigate you to the application posting in the play store for download! Hoping to create more great projects in the future!

Notifications Reprise

Image
Written By: Quincy Williams This week, I was able to bring my attention back to exercise notifications for our application. We decided that the notifications were good but we wanted to take them a step further by having them be more intuitive and not as harassing by adjusting the notifications to go off based on the day of the week and if that day of the week matched a day that was in a current routine that was yet to be completed. Initially, the notifications were more generic and based off of the day of the week, so it would fire everyday except for Saturday and Sunday. This may have been seen as intrusive by the user and it was decided that adjusting the logic would make that feature more useful and not be instantaneously disabled by the user. To fix this, I needed to find a way to get the routines, and narrow down the routines to just their days and have the app check the current day, from the system time, and compare it to the days that the user set that they would like to do the ...

Continuing UI Improvements

Image
Written by: Quincy Williams This week, I continued to work on improving the User Interface and fixing a few bugs that were presented during our testing for build review. The main thing that I worked on for UI improvement was adding and editing exercises and fixing some issues with the initial design, as it was not the cleanest look. I was able to update the xml for the adding and editing functions to give a cleaner look of the activities but still provide some visual cues to the user on what can be clicked on and what is just plain text. The views were initially updated to have a card for every field but we decided that it made the design a little off putting and went with generalizing the fields into groups for a cleaner look. UI Update for adding exercises Now adding and editing exercises will have this new cleaner UI. The xml is updated to have the cards views hold more fields and now they have headers and the fields that are able to be clicked on are underlined, via edits to the st...

Final Month Begins!

Image
Written by: Quincy Williams This week we started the final month of development for our application and we are working the final push towards a final product. During this time, we are going to be strongly focusing on UI improvements to provide the best experience possible. Each of us are currently focusing on working on the pieces of the application that we felt, and users from testing felt, needed some revisions and cleanup. This week, I focused on updating the UI's for Timers, Body Metrics and Adding/Editing exercises. The first two portions were me making adjustments to the layout of the fragments so they are more compatible for smaller devices as much of the build has been created using a bigger device, so compatibility needed to be added into the build as well. There was an issue with how certain fields seemed cramped on smaller devices and looked normal on larger screens, so there was a need to make the views more consistent across device sizes and I was able to make xml adju...

User Testing

Written by: Quincy Williams This weeks focus was on user testing and making improvements to the application based on some of the findings that we received from our testing. A few things that were noted that were common between our rounds of testing, were that there were some inconsistencies within the UI and there were some improvements that could be made to make things easier for the user to use the application. One of the things that stood out for me was the ability to add and edit exercises. Users reported that adding exercises were not very user friendly, especially for the beginner who is not very familiar with some of the details that were being asked of them to enter. There were also some issues presented with editing exercises, in specific, with exercises that were locally loaded. We were also presented with issues on how routines are completed, noting that there were moments where there may have been too many things going on and not a lot of visual cues. Overall, the impressio...

Editing Exercises/Timer Improvements

Image
Written by: Quincy Williams This week, I continued to focus on finishing up the exercises functionality by introducing the ability for users to be able to edit exercises. This will allow for users to be able edit both loaded and added exercises and add the edited version back into their respective arraylist in the application. With that being said, there were a few issues that I ran into with doing this. Once I was able to get the date from the exercise, by pulling its ID and gathering the data from the ID, the fields would be filled in a new activity with the data but when the data was saved and the exercise was opened in exercise details, the formatting functions that we using were causing the data to return in an unclean fashion. This would continue to happen every time the exercise was added. To get around this, I was able to come up with a way to check for specific values in a string and use the replaceAll method to replace those specific strings with an empty string. After replac...

Deleting Exercises/Exercise Function Updated

Image
 Written by: Quincy Williams This week, I continued my focus on the exercise portion of the application as we come down to our final weeks of production of our app. There was a lot of focus on bug fixes as we are getting to the portion of development where the features are starting to be able to work together and in turn is introducing unexpected behaviors. One of the main behaviors I was able to work out this week was how we allowed users to enter data. I needed to adjust some of the functions that we had in place that took care of formatting text from the json and also allow for the functions to think about user input as well. The function was adjusted so that if we did not need to properly format the text that was entered, that it should return that text. Initially, the logic was more strict to the json files that are locally loaded for our exercises as all of the information was essentially improperly formatted so there was very little variance needed in order to check if the t...

Adding Exercises

Image
Written by: Quincy Williams This week, I focused on adding the feature of the user being able to add their own exercises to the application! We ran into some issues with how we wanted to achieve this due to the fact that we were able to determine that the way that we were initially loading the app, was fine on newer devices, but on older devices, there was a performance issue that slowed down the device's capability to smoothly run the app. Before we made an adjustment to improve exercise loading, we would have each activity that needed to use our local assets, load them manually into an array list and then manipulate the array list afterwards. After our improvements, our exercises are now loaded at the start of the app and performance was greatly increased. With the performance improvement, this allowed for me to be able to add the functionality for uses to be able to add exercises to the application. We did this by updating the user class, which is what now loads our local assets...

Cross Navigation

Image
Written by: Quincy Williams Cross navigation between the different portions of the application was one of my main focus' this week. This required allowing the user to be able to get to other portions of the app in situations that we deemed would be useful for the user to navigate to beside the traditional flow of the app. We achieved this by adding buttons to certain views, such as the routine play activity, that would allow the user to get to the timer function, the one rep max calculator and the plate calculator, as these pieces of the app would be useful to have when a use was is working out. These buttons are available for the user in the top right for this activity but there are other places where they were added as well. An issue that I ran into with this was navigating between a class that extends an activity and a class that extends a fragment. I initially tried to use a fragment manager object to navigate to each fragment but they  I was able to work with one of my teammat...

Notifications

Image
-Written by: Quincy Williams This week, my focus was on notifications. I ran into some issues with getting the notifications to work as there are many different ways to achieve how notifications are displayed to the user and when. The main goal was to be able to have the user control the ability of when the notification is seen or not, based on a setting in the settings activity. This was accessed by shared preferences to be able to detect if the options was set to determine if the notification should fire, via a boolean value. The more difficult issue as figuring out the best way to have the application alert the user with a notification. There were a lot of options but the best option seemed to be using an AlarmManager and receiver to have the notification trigger at a specific time of the day. This required creating three separate classes to house each activity. The notification needed to be built to allow for the user to be able to click on the notification and open the app, so cha...

Rest Timer Pt. 2

Image
-Written by: Quincy Williams This week I worked on cleaning up some issues that I was having with the rest timer. The functionality was present that the timer was able to run if the user entered a time but the values were only allowed in minutes. After doing some research, trying to get two separate values from an edit text field in Android Studio is not the easiest, and I was able to discuss some options with my team and we came up with the idea of having the user be able to choose to use minutes or seconds via a spinner object. This allowed for the same edit text field to be used and also also allow the user to be able to set the time of their choosing. This also allowed for the view to remain simple and clean for the activity. Example of the Rest Timer activity screen From the example above, the user can select the value to be used from the spinner, and based on the spinners option, a boolean value (minutes, seconds) is set that will tell the application how to process conversion of...

Body Metrics Pt. 2/ Rest Timer

Image
Written by: Quincy Williams This week, I focused on creating the rest timer activity and finishing up the body metrics activity for the RepAdvisor app. For the rest timer, I ran into the issue of what was the best way to make the timer easy to use for the user, and this created a few different design issues and a lot of refactoring until I was able to find a simple way to handle how the user can set the timer. The user will be able to set the value of time that they want to rest via an edit text field that they can use a button to fill in the timer value. This will occur via a conversion in the timer java class that will take the users value and convert it to milliseconds and report out as a time based on what the user entered. The updateCountDownText function will handle making sure the timer is set to what the user expects when it is set, paused and stopped. There are other background functions that are in play as well but this function is what makes sure everything stays formatted. ...

Body Metrics

Image
 Written By: Quincy Williams This week I worked on the Body Metrics activity. This activity will allow for users to be able to add there body metrics to the application and then the application will take that data and perform calculations for the user to see, based on the most common formulas that the people will usually like to know when they are on a fitness journey to show progress. To develop this, I created edit text items to hold the data, and text views to identify the different fields that the edit texts will preform calculations on. The last three fields are not editable as they will be filled with data after calculations are completed. In the background, in our Utils java file, we have functions that will be called that will complete the calculations for BMI, Lean Body Mass, and Body Fat %.  Example Body Metric Function The activity will also be able to use the metric system setting in the application, that will convert fields that use imperial values to use metric v...

Finishing Exercises

Image
 -Written by Quincy Williams This week, I was able to get the finishing touches on the exercises portion of the application. This is one of the main functions of the application, as this will provide the user some exercises that they can perform and even be able to add those exercises to a goal. The past few weeks, have been working on getting that part of the application fully up and running and this week, we were able to achieve that. With this being one of the main features of the application, it was very important to get this piece working so the base of the application is working and we can begin to work on some of the smaller pieces of the application, so we can provide a full user experience when using the application. The final piece that I needed to work on this week was getting the exercise activity of the application to work with the goal activity of the application after creating a final view for the exercises. I had to create a view for each exercise that would show so...

Production Week 2

Image
 -Written by: Quincy Williams In week 2, I continued to work on the Exercises screen and we were able to revamp the view as well to provide a cleaner look for the user. Old: New: The view still uses a a grid view but now the images are formatted inside of card views for a cleaner look. The images are now more consistent with the the exercise groups and are more uniform with the color scheme of the application. Each image also now can be selected and the application will provide the user with a list of exercises that that are associated with that muscle group via a json file that is locally stored. This was completed by using a custom adapter and setting that adapter in the class the houses the grid view and the adapter puts the view inside of the grid view, programmatically and using an xml layout file to create a preset of each card and having that created in a view holder in the adapter. onCreate function that creates the grid view that holds the cards of exercises Once a card is...

Pre-Production -> Production

Image
Written by: Quincy Williams This week, we officially have left pre-production and are now in full blown production mode. We had our first meeting with the team, mentors and producer, to go over the application, discuss our expectations for the application in the coming month, and also we were able to show off our build of the application in its current state. Currently, the team and I working on getting more of the front end portion of the application going, so we can provide a visual of what the app is expected to look like and then we are going to work on getting int the back end portion of it to provide the functionality that we want to incorporate into the application. For my portion of the application this week, I am going to be working on the Exercise portion of the application. This will be a grid view that the user will see when the select the Exercise option at the bottom of the screen, in the navigation bar, and this will give the user a list of muscle groups to choose from, ...

And The Ball Starts Rolling!

Image
 Written by: Quincy Williams This week we started working on the initial build of our project, RepAdvisor! We worked on getting our Trello board and GitHub set up to be able to begin working on the application. We were also able to dole out tasks amongst the team to being working on and we were able to present a few screens to our Mentor and Producer to show preliminary progress from post production. We were able to create our basic entry screen, which will open after a splash screen occurs, and the user will have the option to choose from the options that are available to them. From this preliminary build, there will also be the screens referenced from previous posts as well, such as a settings screen, and more detail being added to the other options that are seen in the screen shots above. Each button will have a layout that will provide users with amazing features for them to use to get the most out of their workouts!