
Unigroup had a special area for developers called QDivision. I was on the Flex team building an Inventory Management System for drivers and packers. The app was already developed and required maintainance and enhancements.
During my time on Flex we had to replace a data storage solution that was losing data. We didn't know how this was occuring and had to look into the issue. It turns out the solution needed to be replaced with an on device storage called Sqlite. Being very familiar with Sqlite when I was an android developer I mentioned to the team it was the most reliable choice. The adopted the solution and I helped them set it up.
When we implemented Sqlite we found other uses such as storing our error logs and syncing them to a postgres instance. While on the team we were working on building a PDF generation service using React. We worked on two implementations of rendering including React PDF and a headless browser solution. The React PDF solution we implemented had a hidden issue resulting in a memory leak. It appears the PDF kit it was built on had that memory leak. We had to abandon that solution and try out a new rendering solution such as a headless browser.
This headless browser solution worked perfectly and didn't have any memory leak issues! We were able to salvage most of our code and just swapped out the rendering solution. There were some issues of getting it into production and making a custom docker image. We worked with the cloud infastructure team to build a new docker image for a deployment pipeline.
While working on the team we practiced pairing techniques such as mob programming and pairs of two switching between driving to nagivating. We had agile meetings such as risk assessments, lean coffee, standup, and learn new agile practices. There were also meetings with the product team to review new stories, technical discussions about the stories, and reviewing the progress of previous releases to production.
While on the Legacy team I was tasked to build an application to replace the manual process to request Invoices to be sent to customers. I built the app with a React and typescript front-end and Java Spring Boot backend. The first challenge was to develop a table to make it easy to display the table data. I used a table called Material Table which had some restrictions to pulling data from the service. I had to create a custom table using React and Material UI. I added functionality such as loading data, pagination, sorting, searching, and grouping data (like a pivot table).
While working with the data I noticed it was slow retrieving the dataset when I app loaded. In order to fix the issue I had to build a custom SQL query to do multiple joins and combine the result. This significantly sped up the app and with pagination implemented it was a very fast app.
I had to build a Java Spring Boot service from the ground up connecting to a DB2 database. The project required two data sources including DB2 and postgres for an Archive system. I wrote a lot of custom SQL queries and using the power of spring boot to automatically get and update records. It was great working with spring boot to learn new methods for creating a service and securing it using keycloak (2 Auth). The service was deployed using Dev, Stage, and Prod pipelines and I had to manage the release schedule of certain features for the business coworker on my team to test it out.
The team was one day building reports into their front-end and I noticed they were struggling with implimentation. The popular library at the time was React PDF and that was what they were currently using. I mentioned after hearing about it my teams experiences with the memory leak and how it delayed us releasing the feature into production. They already wrote a lot of code so they had to continue developing with React PDF to keep up with commitments. After a while they were noticing certain limitations and the memory leak was affecting their commitments. I worked directly with a team member Jin on building a better solution.
I told Jin about my previous experience on the Flex team and a solution we successfuly moved into production and how we could setup a solution to help him with his project. Jin hasn't been exposed with to much React which the solution was written in so I walked him through the code as I was implimenting it. There were some core parts of the app that had to be written including: templates, getting the data, managing the PDF results, and merging PDFs. I was able to overcome every challenge in the project while also learning how to be a great mentor so Jin could take ownership of the app once it's deployed to production. It was a great learning experience!