About Xiris
Xiris Automation Inc. is located in Burlington, Ontario. They specialize in machine vision solutions for the welding industry. Their core products consist of specially designed cameras designed to automate welding inspections in varying industries. Their software utilizes the entire C family of programming languages. They are a relatively small company of about 30 employees, lending to a tight-knit working atmosphere.
Job Description
I was hired on as a Software Developer Co-op for my first work term. The requirements for this position were knowledge of developing Windows applications using C#, Windows Forms, and SQL. My primary responsibility was to write a C-wrapper around their C++ SDK. This allowed Xiris to make their SDK more accessible to a wider client base. By creating a C wrapper around their SDK, it could be used as a full Application Binary Interface (ABI), and their customers could bind to any language their product might already be using. I worked primarily in C/C++, as well as Python further into the term. Before my work term I was already very familiar with C, however, this job allowed me to learn a great deal about C++ and Python. I also spent time educating myself on machine vision topics while at Xiris.
Learning Goals
Oral Communication
One of my goals was to advance my oral communication skills through meetings and team discussions. The working culture at Xiris didn’t include very many team meetings or discussions, however, I was frequently in contact with my direct supervisor John Stevenson. Throughout the term, my confidence in asking my supervisor questions about my project increased significantly.
Technological Literacy
Another one of my goals was to develop my skills with existing codebases. Given my project consisted entirely of interacting with a pre-existing piece of code, I increased my technical literacy rapidly and efficiently. At the end of my term I was able to understand new pieces of code much quicker than I previously could. I still require taking notes and using references, but I’ve come to learn this is standard practice in computer science and is expected of you.
Machine Vision
Machine vision is a personal interest of mine. I find the technology, underlying algorithms, and mathematics fascinating. Working at Xiris exposed me to many computer vision topics including edge detection, blob analysis, segmentation, and convolutional neural networks. In addition to practical work experience, my increased knowledge of machine vision allowed me to develop a personal project where I created a rudimentary raytracer entirely in the windows console.
Python
One of my other goals was to learn Python as it is a very common language used in modern computer science. When I was applying to co-op positions for my first work term, many of the postings I was interested in required Python experience. Working at Xiris gave me the opportunity to learn Python. I will be able to apply this knowledge to future work terms.
Personal Organization/Time Management
My final goal was to further my organization and time management skills. Much of my work at Xiris was self-guided in terms of time management and organization. As the primary developer of the C-wrapper, it was important that I was efficient and created my project in a way that was organized for me and my co-workers. I also spent time developing ways to make writing code faster and more automated. Using Python, I was able to write a script that parsed the pre-existing doxygen documentation and automatically write header files and simple functions. By doing this, I was able to complete the project by the end of the term.
Conclusion
Overall, I gained a great deal of programming knowledge at Xiris. I became well versed in multiple new languages and various machine vision topics. Being able to add these skills to my resume will help with future co-op terms.