Our experience in the company has been very positive. From their introduction that they treat their interns as employees, we would say that it had been true for our whole stay in the company. Our supervisors Ms. Daryl Arueno and Ms. Jona Pereira (our new supervisor since Ms. Daryl was deployed to another project), and the other employees were approachable. We were given projects which were relevant to their operations, and we were always invited to the activities that they conducted. We felt like we belonged in Ideyatech.
For instance, during our first days in the company, we had lunch with Sir. Allan Tan, the CEO of Ideyatech, and the other employees as a form of welcoming us, interns, and the new employees. Aside from that, we also attended their weekly activity called Tuesday Tech Talks (T3) where a particular employee conducts a talk about any topic they want to discuss.
Loads of Fun Experience!
The company also held monthly activities which had varying themes. From our stay, we were able to attend their Game Night and Formal Night activities.
Software Development Training Experience
The company also provided us training for JUnit, Spring/Spring Boot Framework, and Basic Android Development. The lectures that they gave were exercise-driven. After performing the exercise, our task was to create an output based on a specification to apply what we learned from the exercise.
Initially, we worked in the Techbar or the company’s work/eating area since there were no available workspaces at that time. Nevertheless, we found it as a pleasant work environment since aside from us sitting with our fellow interns, it was also a convenient place for us. It was like a middle ground to the pantry and restroom, and to our supervisors (which was nice).
Although in the next weeks of our internship, the other interns were assigned to their respective workspace. The company was not too strict about the work hours. They allow access to social media sites like Facebook as long as it was within break hours. Furthermore, our supervisors were open to us offsetting our work time (starting early; ending early).
On Creating a Mobile Document Management System (DMS)
Mobile Document Management System or Mobile DMS is a camera/panorama application intended to capture long receipts which will be processed through optical character recognition (OCR). The difference of this app from usual panorama apps is that instead of rotating the camera from a specific pivot (or simple panning), the app should stitch a series of photos when moving the phone in one axis.
We were given 2.5 months (our entire internship period) for the project. Given our progress in the first weeks, we thought we would be able to finish this project within 3 weeks but little did we know that the difficulty of this project is different from any other machine project we have done for school. In fact, we discarded the work that we did for the first month in exchange for another solution that actually works better for the project.
After several weeks of our development, we began to demo our project weekly to our supervisors, Sir Jeric, one of the senior developers at Ideyatech, and Sir Allan. From that, we are given feedback and suggestions for our next iteration, mainly on the UX and UI.
Our first attempts at creating the application included hours and hours of looking for resources available on the internet. We found multiple applications that had the panorama functions programmed into them like the DMD Panorama found in Google Play Store. These applications were mostly open-source and have GitHub repositories available for the public. Some also had tutorials which helped us understand the structure of a standard panorama application.
We saw that our application will mainly compose of a camera, an image stitching module, and Couchbase integration. At first, we relied on OpenCV, a software library, for our camera and image stitching. We saw that it can be used in mobile programming through the Native Development Kit (NDK) of Android Studio.
The camera view of OpenCV was easy to implement into the program and required only a few classes but the stitcher module had recurring problems during our development of the application with OpenCV. We saw that Android Studio had a hard time trying to recognize the image stitching libraries which were C++ files. After some time trying to debug the problems, we realized that it would take too much time to study the OpenCV image stitching library in detail and implement it through Java, so, with the suggested method of our supervisor, we made our own stitching implementation.
With the idea that we are stitching a long receipt, the suggested method was to take a picture and connect the picture, guided by a portion of the edge of the previous photo. Even though we were able to implement it, we found the user experience being too tedious (even for ourselves) so, we tried to look for a new alternative for the image stitching online.
After looking around GitHub, we found an open source alternative that made use of the OpenGL Mosaic libraries. We built around that code and we were able to make a fully functional prototype of our application. It was able to capture multiple images then stitch them to make a panoramic picture, then upload it to a Couchbase database.
To improve the user experience of our app, we also used Sensor Fusion to more accurately measure the tilt of the device since the device needs to be steady during image capturing to look clear after stitching.
After more feedback from our supervisors, we added more features and discarded some as well.
For instance, we added a camera toggle for receipts that can be captured without the panorama feature; we also added a flashlight toggle as a solution for a low light capturing. On the other hand, there was one feature that we discarded as it becomes distracting at its re-calibration period (recovering from a wrong stitching frame).
We also did UX improvements as part of the process. One feedback that we got from our application is that the warning frames are unnoticeable. So instead, we moved it closer from the edges of the shot to make it noticeable.
Another improvement that we did from our previous builds is that it has a recovery instruction from the Sensor Fusion tracker.
Related Article: Choosing a good DMS ( Document Management System)