- Real Time Programming
For my spring coop in 2018, I worked for Infinera in Sunnyvale, CA. As part of the hardware team, I worked with a team of engineers to help develop the next version of the software. As part of my responsibilities, I looked into different topics mostly concerning C and real time programming.
One of the major tasks I was designated with was updating the system from using raw text to load information to instead use Sqlite to manage data. After taking classes and having worked with databases for the better part of a year, I was fairly familiar with what was required to accomplish this task. I learned quite a bit about C programming from my co workers and used the documentation for Sqlite to improve the load time of the software from around 2 minutes to less than a second. In addition, I found a few memory leaks associated with the library and how we implemented it. This was all the preliminary version of the software but improved notes for whenever they would be developing the next version.
In addition to using databases, I also worked to manage and benchmark communications between different hardware systems. They wanted to develop an API for customers and needed to look into how to communicate between different processors and sending bytes to and from the hardware for the system. I looked into and evaluated various methods of communication between different processors using different methods and libraries. This involved compiling many libraries on Linux and other systems that helped me learn quite a bit about how programs interact with a computer’s kernel and how memory is managed in these kinds of environments. This experience along with my classes in computer architecture has greatly improved my understanding of computers.
While working as part of the team, I helped to identify needs that the team faced when I wasn’t given a task. I asserted what I thought the team was lacking during meetings after I had built up some confidence. I even went out to task to different members of my team and organization to find out what had they worked on in the past and what needs that would anticipate in the future. When I came on the team, I was quite disoriented because I came part way through a transition period so many things were changing very quickly. I didn’t know what to expect but found that documentation was always difficult and seemed to be out of date. When talking to team members I found out that they had hired a technical writer to document a previous version of the software. Although I lacked these skills, I worked on developing a solution to this problem in the form of a program that would take notes from the engineers and use them to document the code of the database. The overall execution of my program lacked many features that the team needed and I would have liked to have but overall it was helpful to the team and everyone appreciated the effort to share and improve documentation.
This was also my first time living far away from home (about 2,000 miles). I had to learn how to manage my time and many other small challenges and tasks such as learning the bus system for the Bay Area. These were many tasks that were unrelated to my job but has prepared me for many more experiences and challenges I would face later. I also got to be a tourist and visit San Francisco on weekends when I had time and enjoy exploring a new area.