report

← back to experience

co-op work term report

7D Kinematic Metrology

Software Engineer Intern · Cambridge, ON · May 2026 – August 2026

01 · abstract

From May to August 2026 I worked at 7D Kinematic Metrology in Cambridge as a Software Engineer Intern. I went in wanting to see and learn about how professional software gets tested, built and shipped, and I left having touched all three.

Most of my term went into writing an automated test suite for Surveyor (the company's main software product), setting up Jenkins pipelines to run it nightly, building a program to help our Engineering/Production team manage and update the in-house software that they use, and helping move apps and libraries from legacy .NET 4 to modern .NET 10. This page covers what I set out to learn, what I actually did, and what stuck.

02 · about the employer

7D Kinematic Metrology is a small engineering company with an office in Cambridge, ON. It started in 2019 when the team acquired the iGPS technology from Nikon Metrology.

iGPS stands for indoor GPS: it is a network of laser transmitters and sensors that measures very large volumes, like aircraft assembly lines, with high precision. 7D's clients come from aerospace, automotive, rail, shipbuilding, and other heavy industry. Surveyor is the software that processed all of that sensor data, and Surveyor is where most of my work landed.

Because of the nature of smaller companies such as 7D, rather than being just an intern lost in a big team, I sat with the engineers, and the things I built are used by them every day.

03 · goals & reflections

I set four learning goals at the start of the term. Three of them were fully completed, with one being partially completed, and below I talk more about them.

goal 1 completed

Master CI/CD pipeline design in Jenkins

the plan

  • · Review existing build scripts, manual deployment steps, and legacy Jenkins configs.
  • · Map the dependency tree for programs and libraries built in-house.
  • · Design and set up Jenkins pipelines for each job, aiming for full automation.

how it went

Done. By the end of the term I had set up multiple Jenkins pipelines, including the ones that run the Surveyor test suite nightly on every new build. Commits trigger builds, and pass/fail metrics and logs get reported back to the author automatically. I also set up downstream job triggering for whenever a dependency library was updated by a team member, so that all dependent programs would be rebuilt and automatically run their test suites when a library updates.

goal 2 completed

Design and implement automated tests for Surveyor

the plan

  • · Identify core endpoints and logic in the Surveyor API and UI lacking coverage.
  • · Adopt the team's preferred testing framework, TestComplete.
  • · Write tests that verified Surveyor worked as intended.

how it went

Done. By the end of my term I had fully implemented over 400 API tests for Surveyor, using the Jenkins pipelines I had previously set up to automate them. It runs nightly now, and API coverage increased significantly as Surveyor had no API tests before my time at 7D. Jenkins reports results for both the API tests and UI tests.

goal 3 completed

Gain experience with C# and the .NET framework

the plan

  • · Learn basic C# syntax and common practices by using docs and internal resources.
  • · Actively participate in upgrading projects from legacy .NET 4 to .NET 10.
  • · Have my code reviewed by senior team members and learn from my mistakes.

how it went

Done. I converted several apps and libraries from .NET 4 to .NET 10, and I wrote a new internal tool entirely in .NET 10. By the midpoint of the term I felt very comfortable working in C# without any hand-holding, which was the measure I had set.

goal 4 partially completed

Understand Software Architecture for Distributed Systems

the plan

  • · Review existing diagrams and code for Surveyor.
  • · Have 1-on-1 chats with senior engineers about the history behind design decisions.

how it went

Partially done. The .NET migration work forced me to understand how a lot of the programs developed by our team fit together, and the senior engineers filled me in on a lot of context in our 1-on-1s. But being able to "understand the whole system" is a big ask for just four months when talking about a program as robust as Surveyor. I left knowing the shape of it and why certain parts of it were built the way they were, which I'm satisfied with.

04 · job description

In practical terms, my deliverables at 7D were:

  • An automated test suite for Surveyor. I wrote unit-level and UI tests in TestComplete and wired the suite into Jenkins, so it runs every night against the latest build. Before this, there were no API tests being run against Surveyor.
  • .NET Migration Work. I helped convert several programs and libraries from .NET 4 to .NET 10, fixing breaking changes, updating old syntax, and verifying that behaviour stayed the same.
  • The Production Toolbox. I designed and wrote an internal .NET 10 application that the engineering team uses to fetch new program updates and manage all the software they use.
  • CI/CD Pipelines. I set up multiple Jenkins pipelines to automate jobs across the company's projects.

The skills were mostly learned on the job. I already knew a lot of the fundamentals I used there: programming, version control, and some testing theory. TestComplete, Jenkins, and production C# were all new to me, and the job needed them, so I learned them while there.

05 · conclusions

If I were to write one sentence to describe my time at 7D Kinematic Metrology I would say: I proved code with tests, shipped it safely with pipelines, and dragged legacy code into modern .NET while building a new internal tool along the way.

Of my four goals, three were completed and I know why the partial ended up the way it did. The work I'm most proud of is the Production Toolbox, which is used by every team member every day and I believe that it will be used for years to come.

06 · acknowledgments

I'd like to thank everyone at 7D for giving me a chance to join them this term. And a special thanks to my supervisor Julius for trusting me all throughout my time there and always checking in on me. I had a lovely time being a member of the team.