Larger and Larger
Before I go into the details of the day and my progress towards becoming a better software developer, I'd like to follow up on the main subject of my post yesterday. I talked yesterday about my little girl being sick, running a pretty high fever for quite a while. We were really worried she had come down with Coronavirus and that we were going to be in for a tough fight. We haven't gotten her tested for that, yet, but today she seemed to turn a corner. She woke up with no fever and was her typical bundle of energy. I was at work during the day, so I can't speak for it first-hand, but apparently her condition became better throughout the day. She never ran a fever all day and had that energy throughout the day. It was so nice to be greeted with her yelling "Daddy!" when I came through the door, as she usually does when she's feeling good. I hate to see her completely run down like she has been for the last couple days; it breaks my heart. While her fever could still come back and this could just be a short respite from the illness, we are hoping she's gotten past it.
Now, on to the software development journey. As you might know if you read my blog entries, I've been working on a React Native application at work for over a month now. About 2 weeks ago, I projected that we were about half way done with the project. I can safely say now that we are probably close to 40% complete. How did we lose ground. It's not for lack of productivity. Between the two of us, we have been moving at a remarkable clip, pumping out features and screens. We have the majority of the UI complete, which is a big plus, but the functionality is a beast. As we get further into this project, I'm realizing how much functionality there actually is in this thing. I talked about this yesterday or the day before, but in the one screen I've primarily been working on, there are now over 50 actions in my reducer. That almost seems like something is wrong, but when you look at everything going on in this one screen alone, it's ridiculous. Within this one screen, there are at least 12 to 20 different views that can be shown and 8 different forms. It's crazy, but I think the way I'm handling these actions is pretty solid. I hate the pattern we are following with these screens, where we keep all the components in one file, but that's the pattern my cohort likes, so I'm going with it. That being said, this file alone is now over 2500 lines long; that doesn't seem right. I have a separate file for the reducer, one for the styles, and one for the types. My types file for this screen is over 700 lines long, but the typing in this screen is really solid.
We hit a serious roadblock today, though. For each lead, they have a series of pictures of what they call a lead card. This is basically something the lead filled out by hand and represents to the representative proof that they have interest in the product. If the lead ever tries to tell them they were not interested or felt like they were being spammed, I think the representatives use these images to show the lead that at some point, they did express interest. Usually, bringing in an image is a breeze with React and React Native. However, the image is being held in the database as a varbinary, which is some kind of form of a binary. Bringing a varbinary to the frontend is useless, so we tried to parse this into a base64. We were successful in this, but when we brought it to the frontend, we realized the base64s were 5 mbs, which is too large for an image. If we were able to get this to show up in the application, it would weigh down the entire thing. So, how do we get this to the frontend. We searched all over this place and couldn't find any kind of reasonable answers. Usually, when you have an issue, someone else has had this same issue and someone else knows the answer to the problem. In this case, there was next to nothing. My cohort was very frustrated and couldn't get past it, but I was able to move on before that frustration hit. I had some refactoring to do, and I knew we needed some separation from the issue.
Until tomorrow!