Co-op First Week Onboarding

Karan Gosal

First of all, we are thrilled to welcome you to our team as you embark on your co-op journey with us. Your enthusiasm and dedication have already made a positive impression, and we are excited to have you on board.

As you settle in, relax and don’t hesitate to reach out to the team if you have any questions or need assistance. It is always good to ask a lot of questions and that is what I did. We are here to support you every step of the way.

This documentation will help you walk through all the setups you need to get up to speed.

1. Getting familiar with ARCsoft UVic website

If you are reading this then you are already on the right track. As you are in the docs, just do a cd .. (hehe, just kidding) navigate to the Homepage of the ARCsoft website and read the Software Development Guidelines. It’ll helps you to get familiar with the team culture and practices. Moreover, you will find some tips to be the best at what you will do in the future.

After familiarizing yourself with the guidelines, take some time to explore the website. This will help you gain insights into the mission and identity of the team. You’ll also have the opportunity to learn more about your team members, explore our various projects and peruse our blogs. I’ll be referencing some of these resources later on this page.

2. DUO MFA for your UVic account

If you already have this set on your UVic Netlink ID, then you can skip to point 3. If not, search for UVic MFA or click on UVic MFA and follow the instructions to set it up. It helps to keep your account secure and ensures you are the only person who has the access to your account.

3. Always have your machine running the VPN while working

Start by turning on the VPN as it helps to protect our data from someone sniffing around. Turning the VPN ON is something you will do every day, right in the morning as soon as you start your laptop.

Go to the Windows taskbar and click on the Globe icon to connect to the Cisco VPN. The Cisco VPN will ask you to log in using your UVic Netlink ID. You will choose #2 - UVic Department in the dropdown. Once you have successfully logged in and the MFA is done, it should say “connected,” and a lock icon should appear on the Globe in the taskbar.

4. Set up your Microsoft Teams account

I am pretty sure you don’t want to be alone, confused, and just keep working all day. Guess what? We have a solution. Create a Microsoft Teams account using your UVic Netlink ID. This is the place where we exchange information and updates. Once you are on Teams, Drew will add you to the groups. Moreover, now you can chat with any of the team members, ask tons of questions, see ongoing activities and can also share your screen to show something or get help.

5. Download Ubuntu WSL

Go to the Windows store on your laptop and download the Ubuntu WSL.

Intro: Ubuntu WSL (Windows Subsystem for Linux) is a compatibility layer for Windows that allows you to run a full-fledged Linux distribution, specifically Ubuntu in this case, alongside your Windows operating system. This feature is designed to enable developers and users to work with Linux tools and software on their Windows machines without the need for dual-booting or setting up a separate virtual machine. With Ubuntu WSL, you can access the Ubuntu command-line interface (CLI) and run Linux commands and applications directly within Windows.

Once downloaded, hit the Ubuntu icon in the windows start menu and create an account. Now, you are all set to start using it.

6. Creating an account on GitLab

This is the place where we keep all of the projects that we have or are working on. Drew will send you an invitation in your email. Once you have the invitation, click on the link and create an account on Gitlab.

Note: Make sure to have the Gitlab account using the same email address that Drew sent the invitation to; otherwise, you won’t be able to see the projects that are private.

7. Setting up the SSH Keys to work on the projects

Intro: SSH keys are cryptographic key pairs used for secure communication between a client (your computer) and a remote server. They consist of a public key, shared with servers for encryption and authentication, and a private key, kept secret on your local machine for decryption and identity verification during SSH connections.

To create an SSH key so that you can perform all your Git-related tasks from both the terminal and VS Code, follow these blogs created by Archie and Nick:

  1. Using SSH Keys to Connect to GitLab
  2. Using SSH with Visual Studio Code

By now, you should be able to get the same results as mentioned in the blogs.

Another Possible Issue: In case you encounter issues connecting to the internet using Ubuntu WSL, there are a few steps outlined below for “DNS Error on Ubuntu when connected to VPN” as a workaround. Steps are:

  1. Get the command prompt or enter ‘cmd’ in the start menu.
  2. In the command prompt, enter
     ipconfig /all
  1. Look for the DNS servers that are linked to the Cisco ethernet connection.
  2. Copy the servers x.x.x.x.
  3. Now, go the WSL and enter the command which should open up the nano editor inside terminal you entered command in.
     sudo nano /etc/wsl.conf
  1. Edit the file by adding:
     [network]
     generateResolvConf = false
  1. Run this command now, to remove the file and unlink it as well.
     sudo rm /etc/resolv.conf
  1. Now, enter the command
     sudo nano /etc/resolv.conf
  1. Add the DNS server in you got from step 4 to the list. In my case, I added them like shown below along with some well know ones. Replace the 142.x.x.x with your system DNS.
      # [network]
      # generateResolvConf = false
      nameserver 142.x.x.x
      nameserver 8.8.8.8
      nameserver 142.x.x.x
      nameserver 172.28.16.1
  1. Once done, run the command to make this file immutable.
       sudo chattr -f +I /etc/resolv.conf
  1. In cmd, run the command below and restart the Ubuntu WSL. You should be connected to the internet with and without VPN.
       wsl --shutdown

Note: After setting up the SSH key, send your public key to Drew so that he can add it to the VM that will be assigned to you.

Bonus Tip: A really helpful tip Nick shared with me. It makes sure to keep your authentication agent running everytime when you open Ubuntu WSL. Add this to the .bashrc file

       # start the forward agent
       eval $(ssh-agent)
       ssh-add

From now onwards, when you start your WSL, it will ask you for a passphrase and ensures the agent is running.

9. Basic Git Commands

Git is something that we use all the time. Here’s a quick introduction to the workflow:

  1. You clone a project or repository.
  2. Create your own separate branch with a name like “smallifollowedByIssueNumber-new-working-branch.” We start a branch with the issue number like “i135-new-branch”. We prefer to use hyphens and all lowercase.
  3. Work on the branch and make sure to commit regularly.
  4. Once you’re satisfied with your work, ensure that your branch is the same as the main branch except for your new changes by rebasing it with the main branch.
  5. Finally, push your branch and create a merge request.
  6. Add one of your fellow developers to review it.
  7. Resolve any comments, if necessary, and add Drew as the final reviewer to merge the branch into the main branch.

To learn or refresh you Git skills, follow these blogs-

  1. Get To Know Git
  2. Workflow Tips

Another resource that I personally found super useful when I first learned Git is:

Learn Git Branching

By now, things should be running smoothly, and you can begin exploring the projects. If you feel comfortable, proceed to clone a project from GitLab, follow the instructions in the repository, and set it up on your local server.

10. What to expect for the first few weeks

As you are now ready to work on projects, take the time to thoroughly familiarize yourself with the codebase, project documentation, and the relevant technologies employed. The technologies used will depend on the project you will be working on, so make sure to check with the team.

As you build confidence, kick off your involvement by tackling easy tasks that provide insights into the project’s workflow. Once you feel comfortable, progressively take on more complex issues, working closely with the team for guidance and support.

If you are comfortable, consider writing a brief biography for the ARCsoft website to foster personal connections within the team. You can share some information about your background, interests, and hobbies.

Maintain open communication with the team through the daily stand-up meetings to discuss your progress or challenges within the project.

11. Final Thoughts

“Success is no accident. It is hard work, perseverance, learning, studying, sacrifice and most of all, love of what you are doing or learning to do.”

— Pele, Brazilian soccer player

The path to success often conceals an ongoing, concerted effort and unwavering dedication of the team. At this juncture, I’d like to emphasize the importance of collective diligence and continuous learning. Together, let’s commit to work hard and grow as a cohesive unit.