diff --git a/_sources/environment/ssh.rst.txt b/_sources/environment/ssh.rst.txt index e5c9dbe..bc7505b 100644 --- a/_sources/environment/ssh.rst.txt +++ b/_sources/environment/ssh.rst.txt @@ -3,13 +3,13 @@ Remote SSH Access ================= -A common way of interacting with the CS Linux environment is via **SSH**, -which will allow you to connect to a Linux server from your own personal -computer (which doesn't have to run Linux). +A common way of interacting with the CS Linux environment is via **SSH**, which +will allow you to connect to a Linux server from your own personal computer +(which doesn't have to run Linux). -Nowadays, most operating systems include an *SSH client*, so you will likely -not have to install any additional software. We'll start by checking that -you can run the SSH client on your computer (if not, we provide installation +Nowadays, most operating systems include an *SSH client*, so you will likely not +have to install any additional software. We'll start by checking that you can +run the SSH client on your computer (if not, we provide installation instructions further below in this page). The first step will be to open one of the following: @@ -22,12 +22,16 @@ Try searching for these tools on your operating system (e.g., by using the Start menu on Windows, or the search icon on MacOS). If you can't find them, try following one of these instructions: -- **Windows**: `How to Open Command Prompt (Windows 11, 10, 8, 7, etc.) `__ -- **MacOS**: `Open or quit Terminal on Mac `__ -- **Linux**: In most Linux distributions, pressing ``Ctrl-Alt-T`` will open a terminal. +- **Windows**: `How to Open Command Prompt (Windows 11, 10, 8, 7, etc.) + `__ +- **MacOS**: `Open or quit Terminal on Mac + `__ +- **Linux**: In most Linux distributions, pressing ``Ctrl-Alt-T`` will open a + terminal. -On Windows, the command prompt should look something like this (if you're using the PowerShell, -it will look basically the same, except it will say "PowerShell" at the top): +On Windows, the command prompt should look something like this (if you're using +the PowerShell, it will look basically the same, except it will say "PowerShell" +at the top): .. figure:: ssh-img/windows-command-prompt.png @@ -40,19 +44,19 @@ On Linux, the terminal should look something like this: .. figure:: ssh-img/linux-terminal.png Regardless of the operating system you're using, the command prompt or terminal -will allow you to enter text-based commands. To use SSH to connect to -one of the UChicago CS Linux servers, you will need to type the following, -taking care to replace ``CNETID`` with your CNetID in all lowercase:: +will allow you to enter text-based commands. To use SSH to connect to one of the +UChicago CS Linux servers, you will need to type the following, taking care to +replace ``CNETID`` with your CNetID in all lowercase:: ssh CNETID@linux.cs.uchicago.edu -Press Enter. If you get any sort of error message telling you that there -is no ``ssh`` command available on your computer, that means you will -need to install SSH on your computer. You can find instructions -on how to do this in the "Installing an SSH Client" section below. +Press Enter. If you get any sort of error message telling you that there is no +``ssh`` command available on your computer, that means you will need to install +SSH on your computer. You can find instructions on how to do this in the +"Installing an SSH Client" section below. -If SSH is installed on your computer, the command may first -print out a message like this:: +If SSH is installed on your computer, the command may first print out a message +like this:: The authenticity of host 'linuxX.cs.uchicago.edu (128.135.XXX.XXX)' can't be established. ECDSA key fingerprint is SHA256:... @@ -60,9 +64,12 @@ print out a message like this:: If so, just type ``yes``. -Then, when prompted for a password, just enter your CNetID password. Here are two troubleshooting hints: +Then, when prompted for a password, just enter your CNetID password. Here are +two troubleshooting hints: -- passwords are case-sensitive, that is, upper-case ``S`` is different from lower-case ``s``. Make sure you type your CNetID password exactly as you created it. +- passwords are case-sensitive, that is, upper-case ``S`` is different from + lower-case ``s``. Make sure you type your CNetID password exactly as you + created it. - ``ssh`` will *not* echo your password back to you as you type it. @@ -71,89 +78,252 @@ this:: CNETID@linuxN:~$ -Where ``CNETID`` will be your CNetID, and ``N`` will be a number between 1 and 7. +Where ``CNETID`` will be your CNetID, and ``N`` will be a number between 1 and +7. -If you see the above, you've connected successfully to a UChicago CS Linux server! -If you came to this page from the :ref:`Linux Basics tutorial `, -you should continue working on the tutorial through the SSH connection you just opened. +If you see the above, you've connected successfully to a UChicago CS Linux +server! If you came to this page from the :ref:`Linux Basics tutorial +`, you should continue working on the tutorial through +the SSH connection you just opened. -When you are finished using your SSH connection, close it by -typing ``Ctrl-D`` or ``exit`` at the Linux prompt. +When you are finished using your SSH connection, close it by typing ``Ctrl-D`` +or ``exit`` at the Linux prompt. .. note:: Troubleshooting UChicago Campus Network Issues - There are at least three wireless networks on campus: ``uchicago-secure``, ``eduroam``, ``uchicago``. The first two–``uchicago-secure`` and ``eduroam``–can be used with ``ssh``. The third–``uchicago``– DOES NOT support ``ssh`` connections. + There are at least three wireless networks on campus: ``uchicago-secure``, + ``eduroam``, ``uchicago``. The first two–``uchicago-secure`` and + ``eduroam``–can be used with ``ssh``. The third–``uchicago``– DOES NOT + support ``ssh`` connections. - If you are on campus and have trouble logging into one of the servers, please verify that you are using either ``uchicago-secure`` or ``eduroam`` as your wireless network. The following is a common error message that occurs when trying to use a network that does not support ``ssh`` connections : ``Could not establish connection to "linuxX.cs.uchicago.edu": The operation timed out.`` + If you are on campus and have trouble logging into one of the servers, please + verify that you are using either ``uchicago-secure`` or ``eduroam`` as your + wireless network. The following is a common error message that occurs when + trying to use a network that does not support ``ssh`` connections : ``Could + not establish connection to "linuxX.cs.uchicago.edu": The operation timed + out.`` Installing an SSH Client ------------------------ If your operating system does not have an SSH client installed, please following -the instructions below to install it. Please note that MacOS systems always include -an SSH client, so we have not included instructions on how to install SSH on MacOS. +the instructions below to install it. Please note that MacOS systems always +include an SSH client, so we have not included instructions on how to install +SSH on MacOS. Windows 10 ~~~~~~~~~~ -In these instructions, you will open various applications and settings by searching for them. To do this, open the Start menu by pressing the Windows key on the keyboard, or clicking the Windows icon in the corner of your screen. Begin typing the name of the application or setting, like *About your PC* (even though there is no visible search bar, one will appear when you begin typing). When the *About your PC* option appears, click on it. +In these instructions, you will open various applications and settings by +searching for them. To do this, open the Start menu by pressing the Windows key +on the keyboard, or clicking the Windows icon in the corner of your screen. +Begin typing the name of the application or setting, like *About your PC* (even +though there is no visible search bar, one will appear when you begin typing). +When the *About your PC* option appears, click on it. **Checking your version of Windows 10** -You need to be running a recent version of Windows 10. To check your current version, open the Start menu, begin typing *About your PC*, and click on the option when it appears. +You need to be running a recent version of Windows 10. To check your current +version, open the Start menu, begin typing *About your PC*, and click on the +option when it appears. .. figure:: ssh-img/install-ssh-win10-1.png -Scroll down to the heading *Windows specifications*. Next to *Edition*, you should see *Windows 10 Home* or *Windows 10 Pro* (or similar). +Scroll down to the heading *Windows specifications*. Next to *Edition*, you +should see *Windows 10 Home* or *Windows 10 Pro* (or similar). .. figure:: ssh-img/install-ssh-win10-2.png -Below that you should see *Version* and a number like 2004. If this number is less than 1803, then you need to update Windows 10. +Below that you should see *Version* and a number like 2004. If this number is +less than 1803, then you need to update Windows 10. **Updating Windows 10** -To update Windows 10, open the Start menu, begin typing *Check for updates*, and click on the option when it appears. +To update Windows 10, open the Start menu, begin typing *Check for updates*, and +click on the option when it appears. .. figure:: ssh-img/install-ssh-win10-3.png -The window that opens should have the heading *Windows Update*. It may tell you that you have updates available; otherwise, click the button that says *Check for updates*. +The window that opens should have the heading *Windows Update*. It may tell you +that you have updates available; otherwise, click the button that says *Check +for updates*. .. figure:: ssh-img/install-ssh-win10-4.png -Follow the instructions to install the available updates. This may take a few minutes, and your computer may restart. When the update completes, check your version of Windows 10 again, and verify that it now reads as 1803 or greater. +Follow the instructions to install the available updates. This may take a few +minutes, and your computer may restart. When the update completes, check your +version of Windows 10 again, and verify that it now reads as 1803 or greater. **Installing Windows OpenSSH Client** -Open the Start menu, begin typing *Manage Optional Features*, and click the option when it appears. +Open the Start menu, begin typing *Manage Optional Features*, and click the +option when it appears. .. figure:: ssh-img/install-ssh-win10-5.png -You should see a window that looks like this, with the heading *Optional features*. +You should see a window that looks like this, with the heading *Optional +features*. .. figure:: ssh-img/install-ssh-win10-6.png -Scroll through the list of *Installed features*. If *OpenSSH Client* appears in the list, you are done with this step. Otherwise, click on *+ Add a feature* at the top of the page. You will get a pop-up window with the heading *Add an optional feature*. Start typing *OpenSSH Client*. When the option appears, click on the checkbox next to it. +Scroll through the list of *Installed features*. If *OpenSSH Client* appears in +the list, you are done with this step. Otherwise, click on *+ Add a feature* at +the top of the page. You will get a pop-up window with the heading *Add an +optional feature*. Start typing *OpenSSH Client*. When the option appears, click +on the checkbox next to it. .. figure:: ssh-img/install-ssh-win10-7.png -Then click on the button labeled *Install (1)*. Wait for the progress bar to fill. +Then click on the button labeled *Install (1)*. Wait for the progress bar to +fill. .. figure:: ssh-img/install-ssh-win10-8.png -The installation is complete. You should now re-try the instructions at the top of this page. +The installation is complete. You should now re-try the instructions at the top +of this page. Linux ~~~~~ -Linux systems typically include an SSH client but may occasionally not include one. -The exact process to install the client may vary from one Linux distribution to another, -but the following commands should allow you to install SSH in some of the most popular -Linux distributions: +Linux systems typically include an SSH client but may occasionally not include +one. The exact process to install the client may vary from one Linux +distribution to another, but the following commands should allow you to install +SSH in some of the most popular Linux distributions: - **Debian/Ubuntu**: Run ``sudo apt-get install openssh-client`` - **RHEL/Fedora/CentOS**: Run ``sudo yum install openssh-clients`` -Once you've installed SSH, you should re-try the instructions at the top of the page. +Once you've installed SSH, you should re-try the instructions at the top of the +page. + + +.. _passwordless-ssh: + +Setting up Passwordless SSH +--------------------------- + +You may have noticed that every time you connect to the Linux server with SSH, +either in a terminal window or with VSCode, you are prompted for your password. + +These instructions will allow you to configure your computer to connect to the +Linux server without being prompted for your password each time, which is much +more convenient. + +You only need to follow these instructions once on your personal +computer/laptop. + +.. warning :: + If you have already completed the GitHub SSH setup instructions (from the `Git Basics `_ tutorial), you + already have an SSH key pair on your computer. Please read and follow the + instructions carefully to avoid overwriting your existing SSH key pair and + losing access to GitHub. + + +**Step 1**: Open a terminal window on your local computer. On Windows, open a +Powershell terminal by pressing the Windows button and searching for +“Powershell”. This terminal should be on your **local machine**; that is, **do +not connect with SSH to the Linux server**. The following commands (steps 2-5) +should be run on your local machine. + + +**Step 2**: Run ``cd`` + +This command will take you to your home directory. + +**Step 3**: Run ``ssh-keygen`` + +You will see the following prompt: :: + + Generating public/private rsa key pair. + Enter file in which to save the key (/home/username/.ssh/id_rsa): + +Press Enter to accept the default location. Check the output of this command to +decide whether you need to generate a new SSH key pair (see the warning below). + +.. warning :: + If you have already completed generated an SSH key pair for (possibly for + GitHub) , you will see a prompt like this: + :: + + /home/username/.ssh/id_rsa already exists. Overwrite (y/n)? + + If you see this prompt, **do not overwrite your existing SSH key pair**. You + can re-use this key pair. **Skip ahead to Step 4**. + +You will then see the following prompt: + +:: + + Enter passphrase (empty for no passphrase): + +In order to use SSH without a password, you must leave this passphrase empty. +Press Enter to accept the default (empty passphrase). You will then see a +message like this: + +:: + + Your identification has been saved in /home/username/.ssh/id_rsa. + Your public key has been saved in /home/username/.ssh/id_rsa.pub. + The key fingerprint is: + SHA256:cBUUs2FeMCIrBlTyv/PGpBtNz0v235zvLykpoWIOS9I username@machine + + The key’s randomart image is: + +---[RSA 3072]----+ + | .+.. . ..@+. | + | + o = * | + | + o . o | + | . o o | + | . S | + | . +.o. | + | . E ++..=. . . | + | o o+++o.oo oo. | + | .oo+. ...o.+O | + +----[SHA256]-----+ + +This message indicates that your SSH key pair has been generated successfully. + +**Step 4**: Time to copy your public key to the Linux server. This command will +differ depending on whether you are using a Mac or Windows computer. + +- **Mac/Linux**: Run the following command: + + :: + + ssh-copy-id CNETID@.cs.uchicago.edu`` + + Replace ``CNETID`` with your CNetID, and ```` with the name of + the server you want to connect to. For example, if you want to connect to + such as ``linux1.cs.uchicago.edu`` or ``cs141-4.cs.uchicago.edu``. + + You will be prompted for your password. Enter your CNetID password. + +- **Windows**: Run the following command: + + :: + + type $env:USERPROFILE\\.ssh\\id_rsa.pub | ssh CNETID@.cs.uchicago.edu “cat >> .ssh/authorized_keys” + + Replace ``CNETID`` with your CNetID, and ```` with the name of the + server you want to connect to, such as ``linux1.cs.uchicago.edu`` or + ``cs141-4.cs.uchicago.edu``. + + You will be prompted for your password. Enter your CNetID password. + +**Step 5**: Test your connection. Run the following command: + + ``ssh CNETID@.cs.uchicago.edu`` + +You should now be able to connect to the Linux server without being prompted for +a password. + + + + + + + + + diff --git a/_sources/vscode/ssh.rst.txt b/_sources/vscode/ssh.rst.txt index 233d920..3632e42 100644 --- a/_sources/vscode/ssh.rst.txt +++ b/_sources/vscode/ssh.rst.txt @@ -222,3 +222,10 @@ Troubleshooting If you run into issues with VSCode and SSH, please make sure to check out the troubleshooting guide prepared by the CS Techstaff: https://howto.cs.uchicago.edu/techstaff:vscode +Passwordless SSH +---------------- +You will be prompted for your password in VSCode every time you connect +(or reconnect) to the CS Linux servers. If you would like to avoid this, +you can set up passwordless SSH. See the instructions in :ref:`passwordless-ssh` +section. + diff --git a/environment/ssh.html b/environment/ssh.html index 566521f..49103aa 100644 --- a/environment/ssh.html +++ b/environment/ssh.html @@ -55,6 +55,7 @@
  • Linux
  • +
  • Setting up Passwordless SSH
  • @@ -124,12 +125,12 @@

    Remote SSH Access

    -

    A common way of interacting with the CS Linux environment is via SSH, -which will allow you to connect to a Linux server from your own personal -computer (which doesn’t have to run Linux).

    -

    Nowadays, most operating systems include an SSH client, so you will likely -not have to install any additional software. We’ll start by checking that -you can run the SSH client on your computer (if not, we provide installation +

    A common way of interacting with the CS Linux environment is via SSH, which +will allow you to connect to a Linux server from your own personal computer +(which doesn’t have to run Linux).

    +

    Nowadays, most operating systems include an SSH client, so you will likely not +have to install any additional software. We’ll start by checking that you can +run the SSH client on your computer (if not, we provide installation instructions further below in this page).

    The first step will be to open one of the following:

      @@ -143,10 +144,12 @@ -

      On Windows, the command prompt should look something like this (if you’re using the PowerShell, -it will look basically the same, except it will say “PowerShell” at the top):

      +

      On Windows, the command prompt should look something like this (if you’re using +the PowerShell, it will look basically the same, except it will say “PowerShell” +at the top):

      ../_images/windows-command-prompt.png
      @@ -159,27 +162,30 @@ ../_images/linux-terminal.png

      Regardless of the operating system you’re using, the command prompt or terminal -will allow you to enter text-based commands. To use SSH to connect to -one of the UChicago CS Linux servers, you will need to type the following, -taking care to replace CNETID with your CNetID in all lowercase:

      +will allow you to enter text-based commands. To use SSH to connect to one of the +UChicago CS Linux servers, you will need to type the following, taking care to +replace CNETID with your CNetID in all lowercase:

      ssh CNETID@linux.cs.uchicago.edu
       
      -

      Press Enter. If you get any sort of error message telling you that there -is no ssh command available on your computer, that means you will -need to install SSH on your computer. You can find instructions -on how to do this in the “Installing an SSH Client” section below.

      -

      If SSH is installed on your computer, the command may first -print out a message like this:

      +

      Press Enter. If you get any sort of error message telling you that there is no +ssh command available on your computer, that means you will need to install +SSH on your computer. You can find instructions on how to do this in the +“Installing an SSH Client” section below.

      +

      If SSH is installed on your computer, the command may first print out a message +like this:

      The authenticity of host 'linuxX.cs.uchicago.edu (128.135.XXX.XXX)' can't be established.
       ECDSA key fingerprint is SHA256:...
       Are you sure you want to continue connecting (yes/no/[fingerprint])?
       

      If so, just type yes.

      -

      Then, when prompted for a password, just enter your CNetID password. Here are two troubleshooting hints:

      +

      Then, when prompted for a password, just enter your CNetID password. Here are +two troubleshooting hints:

        -
      • passwords are case-sensitive, that is, upper-case S is different from lower-case s. Make sure you type your CNetID password exactly as you created it.

      • +
      • passwords are case-sensitive, that is, upper-case S is different from +lower-case s. Make sure you type your CNetID password exactly as you +created it.

      • ssh will not echo your password back to you as you type it.

      If your connection is successful, you may see a series of messages, ending with @@ -187,78 +193,208 @@

      CNETID@linuxN:~$
       
      -

      Where CNETID will be your CNetID, and N will be a number between 1 and 7.

      -

      If you see the above, you’ve connected successfully to a UChicago CS Linux server! -If you came to this page from the Linux Basics tutorial, -you should continue working on the tutorial through the SSH connection you just opened.

      -

      When you are finished using your SSH connection, close it by -typing Ctrl-D or exit at the Linux prompt.

      +

      Where CNETID will be your CNetID, and N will be a number between 1 and +7.

      +

      If you see the above, you’ve connected successfully to a UChicago CS Linux +server! If you came to this page from the Linux Basics tutorial, you should continue working on the tutorial through +the SSH connection you just opened.

      +

      When you are finished using your SSH connection, close it by typing Ctrl-D +or exit at the Linux prompt.

      Note

      Troubleshooting UChicago Campus Network Issues

      -

      There are at least three wireless networks on campus: uchicago-secure, eduroam, uchicago. The first two–uchicago-secure and eduroam–can be used with ssh. The third–uchicago– DOES NOT support ssh connections.

      -

      If you are on campus and have trouble logging into one of the servers, please verify that you are using either uchicago-secure or eduroam as your wireless network. The following is a common error message that occurs when trying to use a network that does not support ssh connections : Could not establish connection to "linuxX.cs.uchicago.edu": The operation timed out.

      +

      There are at least three wireless networks on campus: uchicago-secure, +eduroam, uchicago. The first two–uchicago-secure and +eduroam–can be used with ssh. The third–uchicago– DOES NOT +support ssh connections.

      +

      If you are on campus and have trouble logging into one of the servers, please +verify that you are using either uchicago-secure or eduroam as your +wireless network. The following is a common error message that occurs when +trying to use a network that does not support ssh connections : Could +not establish connection to "linuxX.cs.uchicago.edu": The operation timed +out.

      Installing an SSH Client

      If your operating system does not have an SSH client installed, please following -the instructions below to install it. Please note that MacOS systems always include -an SSH client, so we have not included instructions on how to install SSH on MacOS.

      +the instructions below to install it. Please note that MacOS systems always +include an SSH client, so we have not included instructions on how to install +SSH on MacOS.

      Windows 10

      -

      In these instructions, you will open various applications and settings by searching for them. To do this, open the Start menu by pressing the Windows key on the keyboard, or clicking the Windows icon in the corner of your screen. Begin typing the name of the application or setting, like About your PC (even though there is no visible search bar, one will appear when you begin typing). When the About your PC option appears, click on it.

      +

      In these instructions, you will open various applications and settings by +searching for them. To do this, open the Start menu by pressing the Windows key +on the keyboard, or clicking the Windows icon in the corner of your screen. +Begin typing the name of the application or setting, like About your PC (even +though there is no visible search bar, one will appear when you begin typing). +When the About your PC option appears, click on it.

      Checking your version of Windows 10

      -

      You need to be running a recent version of Windows 10. To check your current version, open the Start menu, begin typing About your PC, and click on the option when it appears.

      +

      You need to be running a recent version of Windows 10. To check your current +version, open the Start menu, begin typing About your PC, and click on the +option when it appears.

      ../_images/install-ssh-win10-1.png
      -

      Scroll down to the heading Windows specifications. Next to Edition, you should see Windows 10 Home or Windows 10 Pro (or similar).

      +

      Scroll down to the heading Windows specifications. Next to Edition, you +should see Windows 10 Home or Windows 10 Pro (or similar).

      ../_images/install-ssh-win10-2.png
      -

      Below that you should see Version and a number like 2004. If this number is less than 1803, then you need to update Windows 10.

      +

      Below that you should see Version and a number like 2004. If this number is +less than 1803, then you need to update Windows 10.

      Updating Windows 10

      -

      To update Windows 10, open the Start menu, begin typing Check for updates, and click on the option when it appears.

      +

      To update Windows 10, open the Start menu, begin typing Check for updates, and +click on the option when it appears.

      ../_images/install-ssh-win10-3.png
      -

      The window that opens should have the heading Windows Update. It may tell you that you have updates available; otherwise, click the button that says Check for updates.

      +

      The window that opens should have the heading Windows Update. It may tell you +that you have updates available; otherwise, click the button that says Check +for updates.

      ../_images/install-ssh-win10-4.png
      -

      Follow the instructions to install the available updates. This may take a few minutes, and your computer may restart. When the update completes, check your version of Windows 10 again, and verify that it now reads as 1803 or greater.

      +

      Follow the instructions to install the available updates. This may take a few +minutes, and your computer may restart. When the update completes, check your +version of Windows 10 again, and verify that it now reads as 1803 or greater.

      Installing Windows OpenSSH Client

      -

      Open the Start menu, begin typing Manage Optional Features, and click the option when it appears.

      +

      Open the Start menu, begin typing Manage Optional Features, and click the +option when it appears.

      ../_images/install-ssh-win10-5.png
      -

      You should see a window that looks like this, with the heading Optional features.

      +

      You should see a window that looks like this, with the heading Optional +features.

      ../_images/install-ssh-win10-6.png
      -

      Scroll through the list of Installed features. If OpenSSH Client appears in the list, you are done with this step. Otherwise, click on + Add a feature at the top of the page. You will get a pop-up window with the heading Add an optional feature. Start typing OpenSSH Client. When the option appears, click on the checkbox next to it.

      +

      Scroll through the list of Installed features. If OpenSSH Client appears in +the list, you are done with this step. Otherwise, click on + Add a feature at +the top of the page. You will get a pop-up window with the heading Add an +optional feature. Start typing OpenSSH Client. When the option appears, click +on the checkbox next to it.

      ../_images/install-ssh-win10-7.png
      -

      Then click on the button labeled Install (1). Wait for the progress bar to fill.

      +

      Then click on the button labeled Install (1). Wait for the progress bar to +fill.

      ../_images/install-ssh-win10-8.png
      -

      The installation is complete. You should now re-try the instructions at the top of this page.

      +

      The installation is complete. You should now re-try the instructions at the top +of this page.

      Linux

      -

      Linux systems typically include an SSH client but may occasionally not include one. -The exact process to install the client may vary from one Linux distribution to another, -but the following commands should allow you to install SSH in some of the most popular -Linux distributions:

      +

      Linux systems typically include an SSH client but may occasionally not include +one. The exact process to install the client may vary from one Linux +distribution to another, but the following commands should allow you to install +SSH in some of the most popular Linux distributions:

      • Debian/Ubuntu: Run sudo apt-get install openssh-client

      • RHEL/Fedora/CentOS: Run sudo yum install openssh-clients

      -

      Once you’ve installed SSH, you should re-try the instructions at the top of the page.

      +

      Once you’ve installed SSH, you should re-try the instructions at the top of the +page.

      +
      +

      Setting up Passwordless SSH

      +

      You may have noticed that every time you connect to the Linux server with SSH, +either in a terminal window or with VSCode, you are prompted for your password.

      +

      These instructions will allow you to configure your computer to connect to the +Linux server without being prompted for your password each time, which is much +more convenient.

      +

      You only need to follow these instructions once on your personal +computer/laptop.

      +
      +

      Warning

      +

      If you have already completed the GitHub SSH setup instructions (from the Git Basics tutorial), you +already have an SSH key pair on your computer. Please read and follow the +instructions carefully to avoid overwriting your existing SSH key pair and +losing access to GitHub.

      +
      +

      Step 1: Open a terminal window on your local computer. On Windows, open a +Powershell terminal by pressing the Windows button and searching for +“Powershell”. This terminal should be on your local machine; that is, do +not connect with SSH to the Linux server. The following commands (steps 2-5) +should be run on your local machine.

      +

      Step 2: Run cd

      +

      This command will take you to your home directory.

      +

      Step 3: Run ssh-keygen

      +

      You will see the following prompt:

      +
      Generating public/private rsa key pair.
      +Enter file in which to save the key (/home/username/.ssh/id_rsa):
      +
      +
      +

      Press Enter to accept the default location. Check the output of this command to +decide whether you need to generate a new SSH key pair (see the warning below).

      +
      +

      Warning

      +

      If you have already completed generated an SSH key pair for (possibly for +GitHub) , you will see a prompt like this:

      +
      /home/username/.ssh/id_rsa already exists. Overwrite (y/n)?
      +
      +
      +

      If you see this prompt, do not overwrite your existing SSH key pair. You +can re-use this key pair. Skip ahead to Step 4.

      +
      +

      You will then see the following prompt:

      +
      Enter passphrase (empty for no passphrase):
      +
      +
      +

      In order to use SSH without a password, you must leave this passphrase empty. +Press Enter to accept the default (empty passphrase). You will then see a +message like this:

      +
      Your identification has been saved in /home/username/.ssh/id_rsa.
      +Your public key has been saved in /home/username/.ssh/id_rsa.pub.
      +The key fingerprint is:
      +SHA256:cBUUs2FeMCIrBlTyv/PGpBtNz0v235zvLykpoWIOS9I username@machine
      +
      +The key’s randomart image is:
      ++---[RSA 3072]----+
      +| .+.. . ..@+.    |
      +| + o = *         |
      +| + o . o         |
      +| . o o           |
      +| . S             |
      +| . +.o.          |
      +| . E ++..=. . .  |
      +| o o+++o.oo oo.  |
      +| .oo+. ...o.+O   |
      ++----[SHA256]-----+
      +
      +
      +

      This message indicates that your SSH key pair has been generated successfully.

      +

      Step 4: Time to copy your public key to the Linux server. This command will +differ depending on whether you are using a Mac or Windows computer.

      +
        +
      • Mac/Linux: Run the following command:

        +
        ssh-copy-id CNETID@<servername>.cs.uchicago.edu``
        +
        +
        +

        Replace CNETID with your CNetID, and <servername> with the name of +the server you want to connect to. For example, if you want to connect to +such as linux1.cs.uchicago.edu or cs141-4.cs.uchicago.edu.

        +

        You will be prompted for your password. Enter your CNetID password.

        +
      • +
      • Windows: Run the following command:

        +
        type $env:USERPROFILE\\.ssh\\id_rsa.pub | ssh CNETID@<servername>.cs.uchicago.edu “cat >> .ssh/authorized_keys”
        +
        +
        +

        Replace CNETID with your CNetID, and <servername> with the name of the +server you want to connect to, such as linux1.cs.uchicago.edu or +cs141-4.cs.uchicago.edu.

        +

        You will be prompted for your password. Enter your CNetID password.

        +
      • +
      +

      Step 5: Test your connection. Run the following command:

      +
      +

      ssh CNETID@<servername>.cs.uchicago.edu

      +
      +

      You should now be able to connect to the Linux server without being prompted for +a password.

      +
    diff --git a/objects.inv b/objects.inv index c410f4a..8209058 100644 Binary files a/objects.inv and b/objects.inv differ diff --git a/searchindex.js b/searchindex.js index 5fe95ef..50a7e88 100644 --- a/searchindex.js +++ b/searchindex.js @@ -1 +1 @@ -Search.setIndex({"docnames": ["about/acknowledgements", "about/getting-help", "about/issue", "environment/environment", "environment/ssh", "getting-help/office-hours", "getting-help/questions", "index", "style-guide/c", "style-guide/python", "teams", "tutorials/git-advanced", "tutorials/git-basics", "tutorials/linux-advanced", "tutorials/linux-basics", "vscode/about", "vscode/config", "vscode/install", "vscode/ssh", "vscode/tips"], "filenames": ["about/acknowledgements.rst", "about/getting-help.rst", "about/issue.rst", "environment/environment.rst", "environment/ssh.rst", "getting-help/office-hours.rst", "getting-help/questions.rst", "index.rst", "style-guide/c.rst", "style-guide/python.rst", "teams.rst", "tutorials/git-advanced.rst", "tutorials/git-basics.rst", "tutorials/linux-advanced.rst", "tutorials/linux-basics.rst", "vscode/about.rst", "vscode/config.rst", "vscode/install.rst", "vscode/ssh.rst", "vscode/tips.rst"], "titles": ["Acknowledgements", "Getting Help", "Reporting an Issue", "The UChicago CS Software Environment", "Remote SSH Access", "Office Hours", "Asking Questions", "UChicago CS Student Resource Guide", "C Style Guide", "Python Style Guide", "Working in Teams", "Tutorial - Advanced Git", "Tutorial - Git Basics", "Tutorial - Advanced Linux", "Tutorial - Linux Basics", "Visual Studio Code", "Configuring Visual Studio Code", "Installing Visual Studio Code", "Using Visual Studio Code and SSH", "Tips & Tricks"], "terms": {"while": [0, 1, 2, 3, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 19], "thi": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 16, 17, 18, 19], "guid": [0, 1, 2, 3, 6, 10, 13, 14, 16, 18], "includ": [0, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 19], "plenti": [0, 10], "origin": [0, 11, 12, 13, 14], "content": [0, 8, 9, 11, 12, 13, 14], "also": [0, 3, 6, 8, 9, 10, 11, 12, 13, 14, 18], "incorpor": 0, "document": [0, 8, 9, 10, 12, 13, 14], "wa": [0, 5, 6, 10, 11, 12, 14], "written": [0, 10, 11, 12, 13, 14], "sever": [0, 3, 14, 18], "comput": [0, 2, 3, 4, 7, 10, 12, 14, 15, 18], "scienc": [0, 3, 7], "cours": [0, 1, 5, 6, 10, 11, 12], "univers": [0, 1, 7, 10, 14, 17], "chicago": [0, 1, 7], "ha": [0, 1, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 18], "been": [0, 6, 8, 9, 10, 11, 12, 13, 14], "edit": [0, 3, 4, 11, 12, 13, 15], "improv": [0, 7, 8, 9, 10, 14], "over": [0, 10, 11, 12, 13, 14, 16], "mani": [0, 3, 6, 8, 9, 10, 12, 14, 15, 16], "year": [0, 8, 9, 10, 11, 12, 13, 14], "instructor": [0, 1, 5, 6, 7, 10, 12, 13, 14, 18], "ta": [0, 5, 6, 11, 12, 13, 14], "student": [0, 1, 2, 3, 5, 6, 8, 9, 10, 11, 12, 14], "The": [0, 1, 2, 4, 5, 6, 8, 9, 10, 11, 12, 13, 16, 18], "follow": [0, 1, 2, 3, 4, 6, 7, 10, 11, 12, 13, 14, 16, 17, 18, 19], "peopl": [0, 3, 6, 10, 12], "have": [0, 1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18], "directli": [0, 10, 11, 12, 14], "indirectli": 0, "contribut": 0, "v\u00edctor": 0, "almaraz": 0, "argueta": 0, "tim": 0, "black": 0, "gustav": 0, "larsson": 0, "isha": [0, 11], "mehrotra": [0, 11], "hannah": [0, 18], "morgan": [0, 18], "ann": [0, 11, 12, 13, 14, 18], "roger": [0, 11, 12, 13, 14, 18], "borja": [0, 3, 11, 13, 14], "sotomayor": [0, 3, 11, 13, 14], "If": [1, 2, 3, 4, 6, 8, 9, 10, 11, 12, 13, 14, 16, 18], "you": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 16, 17, 18, 19], "need": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 18], "ani": [1, 2, 3, 4, 6, 8, 9, 10, 11, 12, 13, 14, 18], "assist": [1, 2, 5, 6, 7, 8, 9, 12], "instruct": [1, 2, 4, 6, 7, 10, 11, 12, 14, 15, 16, 17, 18], "tutori": [1, 2, 3, 4, 7], "pleas": [1, 2, 3, 4, 6, 7, 8, 11, 12, 16, 18], "us": [1, 2, 3, 4, 6, 7, 11, 12, 13, 15, 16, 17, 19], "one": [1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 16, 18], "support": [1, 2, 3, 4, 14], "mechan": [1, 2, 3, 6, 10, 11, 12, 14, 18], "were": [1, 3, 6, 10, 11, 12, 13, 14, 16], "refer": [1, 2, 6, 10, 11, 12, 13, 14], "staff": [1, 5, 6, 12], "class": [1, 3, 5, 6, 7, 8, 9, 10, 12, 13, 14, 15, 18], "ar": [1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18], "take": [1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 14, 18], "provid": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18], "For": [1, 2, 6, 8, 9, 10, 11, 12, 13, 14, 18, 19], "exampl": [1, 2, 6, 8, 9, 10, 11, 12, 13, 14, 18], "re": [1, 3, 4, 6, 8, 10, 11, 12, 14], "work": [1, 2, 3, 4, 6, 7, 9, 14, 15, 16, 18], "through": [1, 2, 3, 4, 6, 8, 9, 10, 11, 12, 13, 14, 18], "git": [1, 2, 3, 6, 16], "basic": [1, 3, 4, 8, 9, 11, 13], "run": [1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 15, 16, 17, 18], "issu": [1, 3, 4, 6, 8, 9, 11, 12, 18], "do": [1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 13, 16, 18], "so": [1, 2, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 16, 18], "should": [1, 2, 3, 4, 6, 8, 9, 10, 11, 16, 17, 18], "whatev": [1, 3, 12, 14, 15], "avail": [1, 3, 4, 10, 12, 14], "onlin": [1, 6, 8, 10], "discuss": [1, 3, 6, 10, 11, 12, 13], "board": [1, 6, 10], "offic": [1, 6], "hour": [1, 6, 9], "etc": [1, 2, 3, 4, 6, 8, 9, 10, 11, 12, 13, 14, 18], "your": [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 13, 14, 15, 16, 17, 18], "own": [1, 2, 3, 4, 6, 10, 11, 12, 13, 14, 18], "welcom": [1, 12, 15, 18], "seek": 1, "channel": 1, "uchicago": [1, 2, 4, 6, 11, 12, 13, 14, 18], "c": [1, 2, 4, 5, 6, 9, 10, 11, 12, 13, 15, 16, 19], "slack": [1, 10], "can": [1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19], "ask": [1, 2, 5, 10, 11, 12, 18], "question": [1, 5], "about": [1, 2, 3, 4, 5, 6, 7, 8, 12, 13, 14, 18], "resourc": [1, 2, 3, 13, 14], "join": [1, 12], "link": [1, 2, 8, 9, 12, 19], "http": [1, 2, 3, 11, 12, 13, 14, 17, 18], "com": [1, 2, 3, 11, 12, 17], "signup": 1, "sign": [1, 12, 16], "up": [1, 3, 4, 6, 8, 9, 10, 11, 13, 15, 16, 17, 18], "form": [1, 2, 6, 8, 9, 10, 13, 18], "edu": [1, 4, 11, 18], "address": [1, 10], "ever": [1, 3], "regist": 1, "actual": [1, 6, 8, 9, 10, 11, 12, 13, 14], "cnetid": [1, 3, 4, 12, 14, 18], "e": [1, 2, 3, 4, 6, 8, 9, 10, 11, 12, 14, 15, 18], "mail": [1, 6], "default": [1, 8, 11, 12, 13, 14, 16, 18], "forward": [1, 10, 11, 12, 14], "never": [1, 6, 8, 9, 10], "account": [1, 2, 3, 10, 11, 12, 13, 14], "request": [1, 6, 10, 11], "first": [1, 2, 3, 4, 5, 8, 9, 10, 11, 12, 13, 14, 16, 18], "discord": 1, "invit": 1, "gg": 1, "zvjx8gv": 1, "note": [1, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16], "when": [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 16, 17, 18], "server": [1, 3, 4, 6, 12, 14, 15, 16], "limit": [1, 5, 8, 9, 10, 14, 16], "access": [1, 2, 7, 8, 10, 13, 14, 18], "until": [1, 6, 10, 12, 13], "perform": [1, 8, 9, 10, 13, 14], "an": [1, 3, 5, 6, 8, 9, 10, 11, 13, 15, 16, 18], "authent": [1, 4, 12], "step": [1, 2, 3, 4, 10, 11, 12, 14, 16, 18], "bot": 1, "further": [1, 4, 8, 9, 12, 13], "how": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18], "onc": [1, 2, 3, 4, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18], "must": [1, 6, 8, 9, 11, 12], "go": [1, 2, 6, 8, 9, 11, 12, 13, 14, 16, 17, 18], "role": 1, "obtain": 1, "all": [1, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17], "abov": [1, 2, 4, 8, 9, 11, 12, 13, 14], "faculti": [1, 5], "onli": [1, 2, 3, 6, 8, 9, 10, 11, 12, 13, 14, 18], "unaffili": 1, "abl": [1, 3, 6, 10, 11, 12, 14, 18], "our": [1, 2, 3, 8, 9, 10, 11, 12, 13, 14, 16], "spot": 2, "read": [2, 4, 6, 8, 9, 10, 11, 13, 14, 18], "doesn": [2, 4, 8, 9, 10, 12, 14], "t": [2, 3, 4, 6, 8, 9, 10, 11, 12, 13, 14, 15, 18], "u": [2, 6, 8, 9, 11, 12, 13, 14, 18], "github": [2, 6, 10, 11, 13, 14], "In": [2, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18], "gener": [2, 8, 9, 10, 11, 12, 13, 16], "someth": [2, 4, 6, 10, 11, 12, 14], "fix": [2, 11], "ad": [2, 6, 11, 12, 13, 14], "file": [2, 3, 8, 9, 10, 11, 12, 15, 16, 17, 19], "instead": [2, 3, 6, 8, 9, 10, 11, 12, 13, 14, 17, 18], "describ": [2, 3, 6, 8, 10, 12, 13, 14, 16], "get": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14], "help": [2, 5, 6, 7, 9, 10, 12, 13, 14], "page": [2, 3, 4, 5, 6, 8, 10, 12, 13, 16, 17, 18, 19], "To": [2, 4, 6, 8, 9, 10, 11, 12, 13, 14, 16, 18], "repositori": [2, 10, 11], "click": [2, 4, 6, 10, 11, 12, 13, 14, 16, 17, 18], "tab": [2, 8, 9, 12, 14, 16, 18], "direct": [2, 13], "green": [2, 12, 18], "button": [2, 4, 10, 12, 14, 17], "prompt": [2, 4, 12, 14, 17, 18], "creat": [2, 4, 10, 11, 13, 14], "time": [2, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 18], "shown": [2, 10, 11, 12, 13, 14], "like": [2, 3, 4, 6, 8, 9, 10, 11, 12, 13, 14, 16, 17, 18], "Then": [2, 4, 11, 12, 13, 14], "fill": [2, 4, 14, 17], "out": [2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 18], "depend": [2, 3, 10, 12], "kind": [2, 5, 12], "A": [2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 14, 18, 19], "minor": 2, "error": [2, 4, 6, 8, 9, 11, 12, 13], "": [2, 3, 4, 6, 8, 9, 11, 12, 13, 14, 16, 18, 19], "text": [2, 4, 8, 9, 10, 12, 14, 15], "g": [2, 4, 6, 8, 9, 10, 12, 13, 14, 15, 18], "spell": [2, 14], "mistak": [2, 9], "incorrectli": 2, "format": [2, 6, 8, 9], "code": [2, 6, 7, 11, 12, 13, 14, 19], "block": [2, 6, 19], "field": [2, 8, 12], "label": [2, 4, 17], "right": [2, 3, 6, 9, 10, 11, 12, 13, 14, 17, 18], "sidebar": [2, 10, 16, 17, 18], "select": [2, 6, 12, 16, 17, 18, 19], "titl": [2, 10, 12, 17], "enter": [2, 4, 12, 13, 14, 18], "remot": [2, 11, 12, 14, 15], "ssh": [2, 14, 15, 16], "descript": [2, 6, 8, 9, 10, 14], "i": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18], "under": [2, 3, 12, 16, 17, 18], "write": [2, 3, 6, 8, 9, 10, 11, 12, 13, 14], "url": [2, 8, 9, 12], "where": [2, 3, 4, 5, 8, 9, 10, 11, 17, 18], "found": [2, 3, 8, 12, 13], "locat": [2, 3, 10, 11, 14, 17], "section": [2, 3, 4, 6, 7, 8, 9, 11, 12, 13, 14, 15, 18], "instal": [2, 3, 9, 12, 13, 15, 18], "client": [2, 8], "second": [2, 10, 11, 12, 13, 16], "paragraph": [2, 8, 9], "current": [2, 3, 4, 11, 12, 13, 14, 19], "correct": [2, 8, 9, 11, 13, 14], "possibl": [2, 3, 6, 10, 11, 12, 14, 18], "bold": 2, "highlight": [2, 3, 11], "exact": [2, 3, 4, 6, 10, 11, 12, 14, 16], "correctli": [2, 8, 9, 10, 12, 13], "wall": 2, "essenti": [2, 10, 13], "expect": [2, 6, 8, 9, 10, 14], "output": [2, 6, 8, 9, 12, 14, 18], "substanti": 2, "differ": [2, 4, 6, 10, 11, 12, 13, 14, 18], "from": [2, 3, 4, 5, 6, 8, 9, 10, 11, 13, 14, 15, 16, 18], "tool": [2, 3, 4, 7, 9, 10, 14, 15], "print": [2, 4, 6, 8, 9, 11, 12, 13, 14], "messag": [2, 4, 6, 8, 10, 11, 12, 14], "recommend": [2, 8, 13, 14, 16, 17], "wai": [2, 3, 4, 6, 8, 9, 10, 11, 12, 13, 14], "we": [2, 3, 4, 5, 6, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18], "option": [2, 3, 4, 11, 13, 14, 15, 16, 18, 19], "foo": [2, 9, 11], "sai": [2, 4, 6, 10, 11, 12, 14, 18], "deprec": 2, "futur": [2, 8, 9, 10], "version": [2, 3, 4, 6, 8, 9, 10, 11, 12, 17], "bar": [2, 4, 9, 11, 16, 17, 18], "screenshot": [2, 6], "what": [2, 5, 6, 8, 9, 10, 11, 12, 13, 14, 16], "see": [2, 3, 4, 6, 8, 9, 10, 11, 12, 13, 14, 16, 17, 18, 19], "system": [2, 3, 4, 6, 10, 11, 12, 13, 16, 17], "show": [2, 10, 11, 12, 18], "configur": [2, 8, 9, 13, 15, 18], "window": [2, 3, 12, 14, 16, 18, 19], "coupl": [2, 7], "some": [2, 3, 4, 5, 6, 8, 9, 11, 12, 13, 14, 15, 16, 18], "those": [2, 3, 6, 8, 9, 10, 12, 14, 15, 18], "miss": [2, 9, 10], "name": [2, 4, 6, 10, 11, 12, 13, 14, 16, 17, 18], "open": [2, 3, 4, 8, 9, 11, 12, 14, 16, 17, 18], "them": [2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 18], "encount": [2, 3, 6, 11], "updat": [2, 4, 11, 12, 13, 14, 18], "concis": [2, 6], "summari": [2, 12], "vscode": [2, 9, 15, 16, 17, 18], "advanc": 2, "warn": [2, 8, 12], "featur": [2, 3, 4, 11, 12, 16, 18], "mac": [2, 3, 4, 14, 16, 17, 18], "linux": [2, 7, 8, 9, 12, 15, 16, 19], "make": [2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 19], "sure": [2, 3, 4, 6, 8, 9, 10, 11, 12, 13, 14, 16, 18], "oper": [2, 3, 4, 8, 9, 10, 12, 13, 14, 16, 17], "tell": [2, 4, 11, 12, 13, 14], "appear": [2, 4, 8, 9, 11, 12, 14, 16, 17, 18], "part": [2, 6, 8, 10, 11, 12, 13, 14, 18], "command": [2, 3, 4, 6, 8, 9, 11, 12, 16, 18, 19], "d": [2, 4, 6, 8, 9, 10, 11, 12, 13, 14, 18], "add": [2, 4, 9, 10, 11, 13, 14, 16, 17, 18], "addit": [2, 4, 6, 8, 9, 10, 11, 12, 13, 16, 17, 18], "expand": 2, "given": [2, 8, 9, 10, 12, 13, 14, 18], "clearer": 2, "easier": [2, 6, 8, 9, 10, 12, 13, 16, 19], "enhanc": 2, "x": [2, 8, 9, 10, 12, 13, 14, 16, 18, 19], "y": [2, 8, 9, 10, 12, 18], "java": [2, 3, 15, 16], "style": [2, 7, 10, 16], "explain": [2, 3, 10, 18], "more": [2, 3, 6, 8, 9, 11, 12, 13, 14, 18], "detail": [2, 6, 8, 9, 10, 12], "specif": [2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 18], "chang": [2, 7, 8, 9, 10, 11, 16], "thei": [2, 3, 5, 6, 8, 9, 10, 11, 12, 14, 18], "could": [2, 4, 6, 10, 11, 12, 13, 14], "benefit": [2, 6, 10, 12], "reader": [2, 8, 9], "fall": [2, 13], "categori": [2, 12], "leav": [2, 10], "blank": [2, 10, 14], "care": [2, 4, 8, 9, 11, 13, 14, 18], "much": [2, 3, 6, 10, 11], "mai": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 18, 19], "depart": [3, 7, 12, 14], "which": [3, 4, 6, 7, 8, 9, 10, 11, 12, 14, 15, 16, 18], "most": [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17], "well": [3, 8, 9, 10, 11, 12, 13, 14, 15, 18], "develop": [3, 10, 11, 12], "offici": 3, "ubuntu": [3, 4, 12, 14, 17], "20": [3, 12], "04": [3, 11], "type": [3, 4, 11, 12, 13, 14, 16, 18], "librari": 3, "requir": [3, 7, 8, 9, 10, 11, 14], "coursework": [3, 5, 6], "howev": [3, 6, 8, 9, 10, 11, 12, 13, 14], "doe": [3, 4, 6, 8, 9, 10, 11, 12, 13, 14, 18], "mean": [3, 4, 8, 9, 10, 11, 12, 14, 15, 18], "person": [3, 4, 6, 10, 11, 12, 14, 15, 18], "both": [3, 8, 9, 10, 11, 13, 14], "lab": [3, 11, 12, 13, 14], "seri": [3, 4, 14], "login": 3, "allow": [3, 4, 6, 8, 9, 10, 11, 12, 13, 14, 16, 18], "plan": [3, 10, 16], "stop": 3, "below": [3, 4, 6, 10, 12, 14, 18], "comfort": [3, 10, 11, 13, 14], "There": [3, 4, 8, 9, 10, 12, 13, 14], "floor": 3, "john": [3, 9], "crerar": 3, "two": [3, 4, 8, 9, 10, 11, 12, 13, 14, 17, 18], "3": [3, 8, 9, 11, 12, 13], "4": [3, 6, 8, 9, 10, 13, 14], "progress": [3, 4, 8, 10, 11, 17], "sit": [3, 10, 14], "outsid": [3, 5, 10], "occupi": 3, "log": [3, 4, 8, 10, 11, 14], "password": [3, 4, 12, 18], "speak": 3, "tutor": 3, "desk": 3, "conveni": [3, 6, 11, 12, 13, 14, 18], "readi": [3, 10, 18], "same": [3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14], "without": [3, 5, 8, 9, 11, 12, 13, 14], "physic": [3, 10, 14], "campu": [3, 4, 7, 10, 18], "common": [3, 4, 8, 9, 10, 11, 12, 14, 15, 16], "line": [3, 5, 6, 10, 11, 12, 13, 14, 16, 19], "won": [3, 8, 10, 11, 12, 14, 15, 18], "launch": [3, 14, 18], "graphic": [3, 11], "program": [3, 6, 7, 8, 10, 13, 15], "would": [3, 6, 8, 9, 10, 11, 12, 13, 14, 18], "seem": [3, 6, 8, 9, 11, 12], "big": [3, 8, 9], "constraint": 3, "still": [3, 8, 9, 10, 11, 12, 14, 15], "lot": [3, 5, 10, 11, 12], "just": [3, 4, 5, 6, 10, 11, 12, 13, 14, 18], "connect": [3, 4, 8, 12, 13, 14, 15, 16], "find": [3, 4, 5, 8, 10, 12, 13, 16, 17, 18], "set": [3, 4, 6, 8, 9, 10, 11, 13, 14, 15, 16, 18], "anoth": [3, 4, 8, 9, 10, 11, 12, 13, 14], "seamlessli": 3, "store": [3, 12, 14, 18], "vari": [3, 4, 14], "particular": [3, 6, 8, 9, 10, 12, 14], "give": [3, 10, 12, 13, 14], "similar": [3, 4, 5, 10, 11, 14], "approach": [3, 10, 13, 14], "bandwidth": 3, "than": [3, 4, 8, 9, 10, 11, 12, 13, 14, 16, 18], "feel": [3, 6, 10], "sluggish": 3, "latenc": 3, "start": [3, 4, 6, 8, 9, 11, 12, 13, 14, 16, 18], "case": [3, 4, 6, 8, 9, 10, 11, 12, 14, 17, 18], "vm": 3, "approxim": 3, "latest": [3, 12], "check": [3, 4, 6, 8, 9, 10, 12, 13, 14, 17, 18], "faq": 3, "cover": [3, 5, 7, 9, 11, 13, 14], "number": [3, 4, 10, 12, 14, 19], "deal": [3, 10, 11], "slow": 3, "effect": [3, 6, 13, 14], "full": [3, 6, 8, 11, 12, 14, 16, 19], "insid": [3, 8, 9, 12, 13, 14, 18], "standalon": 3, "filesystem": [3, 11, 14], "few": [3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 18, 19], "want": [3, 4, 5, 6, 9, 10, 11, 12, 13, 14, 18], "consid": [3, 8, 9, 10, 11, 13, 14], "compil": [3, 8, 18], "veri": [3, 6, 8, 9, 10, 11, 12, 13, 14, 15], "opinion": 3, "choic": [3, 9, 12], "sometim": [3, 5, 6, 8, 9, 10, 13, 14], "argu": 3, "passion": 3, "why": [3, 6, 10, 12, 14], "wrong": [3, 6, 9], "ignor": [3, 11, 12, 14], "ultim": 3, "best": [3, 10, 15, 18], "don": [3, 6, 8, 9, 10, 11, 12, 14, 18], "judg": 3, "other": [3, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 18], "design": [3, 8, 9, 15], "artwork": 3, "sarah": 3, "becan": 3, "vim": [3, 14], "emac": [3, 12, 14], "nano": [3, 12, 14], "advantag": 3, "being": [3, 10, 14], "practic": [3, 8, 9, 10, 14], "everi": [3, 8, 9, 10, 12, 13], "via": [3, 4, 8, 9, 14, 15, 16, 18], "older": [3, 12], "extrem": [3, 10], "power": [3, 13, 14, 15], "custom": 3, "pretti": [3, 6, 10, 12, 13], "languag": [3, 14, 15], "sun": 3, "even": [3, 4, 8, 10, 11, 12, 18], "primari": [3, 14], "build": [3, 17], "least": [3, 4, 8, 9, 10, 13], "familiar": [3, 9, 10, 11, 12, 13, 14, 15, 18], "situat": [3, 10, 11, 12], "user": [3, 8, 11, 12, 13, 14, 18], "interfac": [3, 8, 10, 11, 12, 14], "popular": [3, 4, 7, 9, 14, 15], "confus": 3, "its": [3, 6, 8, 9, 11, 12, 13, 14, 15], "sibl": 3, "It": [3, 4, 5, 6, 8, 9, 10, 12, 13, 14], "regular": [3, 10, 13, 14], "syntax": [3, 14], "auto": [3, 8, 9, 11, 14], "integr": [3, 10, 16], "plugin": [3, 9], "fledg": 3, "lightweight": 3, "piec": [3, 6, 10], "fewer": 3, "sourc": [3, 9, 10, 14], "free": [3, 15], "sinc": [3, 8, 9, 10, 12, 14, 17], "beginn": [3, 9, 15], "entir": [3, 8, 9, 10, 14], "visualstudio": [3, 17], "tend": [3, 10], "bit": [3, 10, 11, 12, 14, 18], "download": [3, 12, 13, 17], "period": [3, 8, 9], "charg": 3, "nag": 3, "frequent": [3, 10], "pai": [3, 10, 15], "licens": [3, 17], "wikimedia": 3, "org": 3, "wiki": 3, "sublime_text_mxunit": 3, "png": 3, "next": [3, 4, 8, 10, 12, 14, 16, 17, 18], "besid": [3, 11], "usual": [3, 6, 8, 9, 10, 12, 14, 18], "autom": [3, 18], "debugg": 3, "suit": [3, 15], "clion": 3, "pycharm": 3, "python": [3, 8, 15, 16], "intellij": 3, "idea": [3, 14], "commerci": 3, "educ": 3, "commun": 3, "less": [3, 4, 10], "paid": 3, "www": 3, "interact": [4, 6, 14, 15, 18], "environ": [4, 6, 7, 12, 13, 14, 16], "nowadai": 4, "softwar": [4, 6, 7, 10, 12, 14, 17], "ll": [4, 10, 11, 12, 13, 14], "powershel": [4, 18], "maco": [4, 6, 12, 14, 16, 18, 19], "termin": [4, 6, 12, 15], "try": [4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 18], "search": [4, 6, 14, 16, 18], "menu": [4, 12, 14, 18], "icon": [4, 12, 14, 16, 18], "11": [4, 11, 13], "8": [4, 12, 13], "7": [4, 9, 13], "quit": [4, 5, 9, 14], "distribut": [4, 14], "press": [4, 5, 6, 8, 9, 12, 14, 16, 18], "ctrl": [4, 12, 13, 14, 16, 18, 19], "alt": [4, 14, 19], "On": [4, 5, 10, 11, 12, 13, 14, 17, 19], "look": [4, 6, 9, 10, 11, 13, 14, 16, 18], "except": [4, 8, 9, 10, 12, 14], "top": [4, 8, 9, 12, 14, 17, 18], "regardless": [4, 8, 10, 12, 14, 16], "base": [4, 9, 11, 12, 13, 14, 18], "replac": [4, 11, 12, 14, 18], "lowercas": 4, "sort": [4, 5], "host": [4, 12, 18], "linuxx": 4, "128": 4, "135": 4, "xxx": 4, "establish": [4, 12], "ecdsa": 4, "kei": [4, 8, 9, 10, 14], "fingerprint": [4, 12], "sha256": [4, 12], "continu": [4, 9, 11, 12, 13, 18], "ye": [4, 8, 9, 12], "here": [4, 6, 8, 9, 10, 11, 12, 14, 16, 18], "troubleshoot": 4, "hint": [4, 13], "sensit": 4, "upper": 4, "lower": [4, 8, 9, 18], "exactli": [4, 10, 14, 16], "echo": [4, 11, 12, 13], "back": [4, 8, 9, 11, 12, 13, 14, 18], "success": [4, 12, 14, 18], "end": [4, 6, 8, 9, 10, 11, 12, 13, 14, 18], "linuxn": 4, "n": [4, 8, 11, 12, 14, 18], "between": [4, 6, 9, 10, 13], "1": [4, 8, 9, 10, 11, 12, 13, 18], "ve": [4, 6, 10, 11, 12, 13, 18], "successfulli": [4, 10, 11, 12], "came": 4, "finish": [4, 10, 11, 12, 14, 17], "close": [4, 10, 18], "exit": [4, 12, 13, 14], "network": [4, 14], "three": [4, 8, 9, 13, 16, 18], "wireless": 4, "secur": [4, 12], "eduroam": 4, "third": 4, "NOT": [4, 14], "troubl": [4, 8, 9, 10], "verifi": [4, 11, 12, 13, 14], "either": [4, 8, 9, 12, 13, 14], "occur": 4, "alwai": [4, 8, 9, 10, 14], "variou": 4, "applic": [4, 8, 10, 14, 17], "keyboard": [4, 13, 19], "corner": [4, 18], "screen": [4, 8, 9, 13, 14], "begin": [4, 8, 9, 14, 18], "pc": 4, "though": [4, 14], "visibl": 4, "recent": [4, 10, 12], "scroll": [4, 14], "down": [4, 11, 12, 14, 16], "head": [4, 11, 12, 18], "home": [4, 11, 12, 13, 14, 18], "pro": [4, 12], "2004": 4, "1803": 4, "otherwis": [4, 12], "minut": [4, 9], "restart": 4, "complet": [4, 8, 9, 10, 11, 12, 13, 14, 17], "again": [4, 12, 13, 14, 16, 18], "now": [4, 10, 11, 12, 14, 17, 18], "greater": 4, "openssh": 4, "manag": [4, 12, 13], "list": [4, 5, 8, 9, 10, 11, 12, 13, 14, 16, 17, 18, 19], "done": [4, 8, 9, 10, 11, 12, 13, 18], "pop": [4, 18], "checkbox": 4, "wait": [4, 10, 13], "typic": [4, 6, 8, 9, 10, 13, 14], "occasion": [4, 8, 9, 14], "process": [4, 10, 12, 13, 14], "debian": 4, "sudo": 4, "apt": 4, "rhel": 4, "fedora": 4, "cento": 4, "yum": 4, "broader": 5, "rang": [5, 9], "convers": 5, "materi": [5, 11, 13], "tip": [5, 7, 10, 12], "foremost": 5, "word": [5, 6, 8, 9, 14, 19], "encourag": [5, 10], "know": [5, 6, 10, 11, 12, 13, 14], "cannot": [5, 8, 14], "simpli": [5, 10, 11, 12, 13, 14], "point": [5, 7, 8, 9, 10, 11, 12, 14, 18], "learn": [5, 12, 13, 14, 15, 18], "everyth": [5, 10, 14], "alreadi": [5, 6, 10, 11, 12, 13, 16, 18], "q": [5, 12, 14, 18], "session": [5, 10, 14], "multipl": [5, 6, 8, 9, 10, 11, 13], "room": 5, "chanc": 5, "someon": [5, 6, 10], "els": [5, 8, 9], "attend": 5, "answer": [5, 6], "yourself": [5, 8, 10, 12, 14], "prepar": [5, 18], "ahead": [5, 11, 12, 13], "particularli": [5, 10, 13, 14], "assign": [5, 6, 7, 8, 9, 10, 11, 13, 14], "deadlin": [5, 10], "exam": [5, 10], "beforehand": 5, "let": [5, 10, 11, 12, 13, 14], "known": [5, 8, 11, 13, 14], "unknown": 5, "along": [5, 14], "previou": [5, 6, 10, 12, 13, 14], "fulli": 5, "understand": [5, 6, 10, 14], "saver": 5, "formul": [5, 6], "clear": [5, 10, 11, 14], "dai": [5, 10, 14], "dure": [5, 8], "talk": 5, "interest": [5, 14], "scope": [5, 13], "guidelin": [6, 9], "As": [6, 10, 12, 13, 14], "probabl": [6, 14], "handl": [6, 8, 9, 10, 11], "purpos": [6, 8, 9, 10, 11, 12, 13, 14], "canva": 6, "ed": 6, "challeng": [6, 10, 14], "inform": [6, 7, 8, 9, 10, 13, 14, 16], "suggest": [6, 7, 10, 12, 14, 18], "befor": [6, 8, 9, 10, 11, 12, 13, 14, 16], "post": [6, 8], "whether": [6, 8, 9, 10, 12, 16], "realiz": [6, 10, 11, 12], "volum": [6, 13], "overwhelm": 6, "function": [6, 10, 11, 12, 13, 14], "bring": [6, 10], "relev": 6, "suppos": [6, 10, 11, 14], "fail": [6, 11], "test": [6, 9, 10, 12, 13, 14, 18], "lucki": 6, "stuck": [6, 10], "result": [6, 11, 12, 13, 16], "task": [6, 10, 11, 13, 14, 17], "push": [6, 10, 11, 12], "my": [6, 10, 13, 14], "debug": [6, 8, 9, 10, 18], "reason": [6, 8, 9, 10, 11, 14], "concret": [6, 8, 9, 10, 13], "struggl": 6, "public": [6, 12, 13], "v": [6, 8, 15, 18, 19], "privat": [6, 12], "often": [6, 8, 10, 12, 13, 14, 18], "seen": [6, 12], "teach": [6, 10], "truli": 6, "matter": 6, "relat": [6, 8, 9, 11, 13, 14], "uniqu": [6, 12, 13], "notifi": 6, "famili": 6, "medic": 6, "emerg": 6, "Of": [6, 10, 11], "appli": [6, 8, 9, 14], "becaus": [6, 8, 10, 11, 12, 14, 15, 18], "ran": 6, "logist": [6, 10], "qualifi": 6, "publicli": 6, "everyon": [6, 18], "better": [6, 9, 10], "brief": 6, "avoid": [6, 10, 12, 18], "wast": [6, 10], "professor": 6, "long": [6, 9, 10], "absolut": [6, 13, 14], "opposit": 6, "true": [6, 8, 9, 16], "prefer": [6, 9, 10, 12, 13, 16], "reproduc": 6, "observ": [6, 8, 9], "And": [6, 11, 12, 14], "control": [6, 10, 11, 12, 14, 19], "svn": 6, "gitlab": [6, 10], "phoenixforg": 6, "machin": [6, 11, 12, 13, 14, 16, 18], "harder": 6, "chain": [6, 13], "event": 6, "lead": [6, 10, 12, 14], "input": [6, 8, 9, 11, 14], "come": [6, 10, 14, 19], "unexpect": [6, 10], "unabridg": 6, "summar": 6, "valu": [6, 8, 9, 10, 12, 13, 14], "42": [6, 8, 10], "m": [6, 8, 9, 11, 12, 18], "return": [6, 8, 9, 10, 11, 13], "identifi": [6, 8, 9, 10, 12, 14], "got": [6, 9, 10], "behav": 6, "accept": [6, 8, 11, 12, 14, 17], "No": [6, 8, 9], "searchabl": 6, "pose": 6, "readabl": [6, 8, 9, 14], "copi": [6, 12, 14, 16, 19], "past": [6, 8, 9, 12, 19], "elsewher": [6, 12], "share": [6, 8, 9, 11, 14], "onto": 6, "verbatim": [6, 11], "processor": [6, 14], "drag": [6, 12, 17], "shift": [6, 12, 16, 18, 19], "One": [6, 9, 10, 12], "unrel": 6, "separ": [6, 8, 9, 11, 12, 13, 16, 18], "each": [6, 8, 9, 10, 11, 12, 13, 14], "ok": 6, "comment": [6, 10, 13, 14, 19], "distinguish": 6, "exist": [6, 8, 9, 11, 12, 13, 14], "resolv": [6, 11, 12], "flag": [6, 13, 14], "intend": [7, 8, 9, 12, 16], "meant": 7, "norm": [7, 8], "unless": [7, 8, 9, 13], "explicitli": [7, 9, 12], "divid": [7, 11], "off": [7, 8, 9, 10, 11, 16, 18], "visual": [7, 9, 14], "studio": [7, 9, 14], "editor": [7, 8, 9, 11, 12, 13, 15, 16], "certain": [7, 12, 13, 14], "skill": [7, 8, 9, 10, 14], "itself": [7, 11, 12, 15], "project": [8, 9, 11], "These": [8, 9, 10, 11, 13, 14], "perspect": [8, 9, 10], "import": [8, 9, 10, 12, 13, 14], "problem": [8, 9, 18], "quickli": [8, 9], "easi": [8, 9, 10, 12, 14, 15], "live": [8, 9, 10, 15, 18], "grader": [8, 9], "rememb": [8, 9, 10, 11, 12], "happi": [8, 9, 10], "addition": [8, 9, 12, 15], "hard": [8, 9, 10, 12, 14], "profession": [8, 9], "comprehens": 8, "guidanc": 8, "specifi": [8, 9, 10, 11, 12, 13, 14], "kernel": [8, 9], "contradict": [8, 9], "k": [8, 13, 14, 18], "r": [8, 13, 14, 18], "variant": 8, "bsd": 8, "knf": 8, "allman": 8, "choos": [8, 11, 12, 13], "consist": [8, 9, 14, 16, 18], "astyl": 8, "convert": 8, "kr": 8, "per": [8, 9, 10, 18], "level": [8, 9, 10, 14], "charact": [8, 9, 12, 14, 16], "insert": [8, 9, 11, 12, 14, 16], "whenev": [8, 9, 11], "properli": [8, 9, 12, 16], "left": [8, 9, 10, 14, 16, 17, 18], "arrow": [8, 9, 12, 14], "cursor": [8, 9, 14], "jump": [8, 9], "singl": [8, 9, 10, 11, 12, 14], "goe": [8, 9, 11, 12], "four": [8, 9, 14, 16, 18], "80": [8, 9, 16], "small": [8, 9, 10, 13], "amount": [8, 9, 10, 13], "size": [8, 9, 11, 13, 16], "todai": [8, 9], "standard": [8, 9, 13, 14], "googl": [8, 9], "pep8": [8, 9], "habit": [8, 9, 10, 14], "serv": [8, 9], "standpoint": [8, 9], "keep": [8, 9, 10, 11, 12, 14], "side": [8, 9, 17], "larg": [8, 9, 10, 14], "rule": [8, 9], "taken": [8, 9, 10, 12], "feasibl": [8, 9], "split": [8, 9, 18], "harm": [8, 9], "eas": [8, 9], "cut": [8, 9, 19], "contain": [8, 9, 10, 11, 12, 13, 14, 18, 19], "liter": [8, 9], "longer": [8, 9, 10, 12, 14, 16], "string": [8, 9, 11, 13, 14, 18], "exce": [8, 9], "broken": [8, 9, 10, 11], "significantli": [8, 9], "increas": [8, 9], "hide": [8, 9], "notic": [8, 9, 10, 11, 12, 13, 14], "meet": [8, 9, 10], "beyond": [8, 9], "break": [8, 9], "fine": [8, 9, 12], "fit": [8, 9], "syntact": 8, "element": 8, "delimit": [8, 9], "newlin": 8, "very_very_very_very_very_very_very_very_very_very_long_condit": 8, "another_very_very_very_very_very_very_very_very_very_very_long_condit": 8, "strlen": [8, 11], "100": [8, 9, 10, 11, 12], "short": [8, 9, 10, 12, 14], "bodi": [8, 9, 18], "indic": [8, 9, 11, 12, 13, 18], "logic": [8, 9, 12, 13], "extra": [8, 9, 10, 12], "sparingli": [8, 9], "group": [8, 9, 12], "immedi": [8, 9], "parenthes": [8, 9], "chilog": 8, "info": [8, 13], "comma": [8, 9], "semicolon": [8, 13], "int": [8, 11], "0": [8, 9, 11, 12, 13], "parenthesi": [8, 9], "argument": [8, 9, 13, 14], "call": [8, 9, 10, 11, 12, 13, 14, 16, 17, 18], "bracket": [8, 9, 14], "arrai": [8, 11], "index": [8, 9, 13], "b": [8, 9, 11, 14, 18], "around": [8, 9, 10, 14], "align": [8, 9], "2": [8, 9, 10, 11, 12, 13, 18], "long_vari": [8, 9], "surround": [8, 9, 10], "binari": [8, 9], "augment": [8, 9], "comparison": [8, 9], "boolean": [8, 9], "after": [8, 9, 11, 12, 14, 16, 17, 18], "keyword": [8, 9, 14], "switch": [8, 11, 12, 14], "5": [8, 9, 11, 12, 14], "arithmet": [8, 9], "submit": [8, 9, 10], "hypot2": [8, 9], "derefer": 8, "dot": [8, 14, 18], "sam": 8, "node": 8, "null": 8, "compound": [8, 9], "discourag": [8, 9], "do_blah_th": [8, 9], "do_on": [8, 9], "do_two": [8, 9], "do_thre": [8, 9], "rather": [8, 9, 10, 13, 14, 18], "wors": [8, 9], "prioriti": [8, 9], "date": [8, 9, 11, 12, 13], "phrase": [8, 9], "sentenc": [8, 9, 10], "capit": [8, 9], "letter": [8, 9, 13, 18], "alter": [8, 9], "omit": [8, 9, 12], "built": [8, 9, 10, 12, 15, 16, 18], "filenam": [8, 9, 12, 14], "author": [8, 9, 11, 12], "associ": [8, 10, 12], "critic": 8, "unrecover": 8, "recover": 8, "high": [8, 10], "trace": 8, "low": 8, "multilin": 8, "condit": [8, 9], "fmt": 8, "printf": [8, 11, 14], "paramet": [8, 9, 10, 11, 12, 14], "noth": [8, 10, 12, 13], "void": 8, "loglevel_t": 8, "char": [8, 11], "implement": [8, 10, 11, 12], "declar": 8, "correspond": [8, 10, 18], "h": [8, 11, 18], "branch": [8, 9, 10, 12], "leap": [8, 9], "divis": [8, 9], "isn": [8, 9, 10, 12], "fals": [8, 9, 16], "400": [8, 9], "special": [8, 9, 10, 11, 12, 13, 14], "unnecessari": [8, 9], "fact": [8, 9, 10, 11, 12, 14], "distract": [8, 9, 14], "state": [8, 9], "obviou": [8, 9], "increment": [8, 9], "But": [8, 9, 11, 14], "compens": [8, 9], "border": [8, 9], "struct": [8, 10, 12], "simpl": [8, 12, 14], "typedef": 8, "complex": [8, 10, 12], "float": [8, 9], "real": 8, "imag": [8, 12, 18], "imaginari": 8, "complex_t": 8, "ethernet_fram": 8, "pointer": [8, 10], "byte": [8, 11, 12, 13], "raw": 8, "ethernet": 8, "frame": [8, 10], "uint8_t": 8, "size_t": 8, "arriv": 8, "interface_t": 8, "in_interfac": 8, "ethernet_frame_t": 8, "snake_cas": [8, 9], "lowercase_with_underscor": [8, 9], "sum_of_squar": [8, 9], "print_happy_birthdai": [8, 9], "total_appl": [8, 9], "constant": [8, 9], "cap": [8, 9, 11], "pi": [8, 9], "max_client": [8, 9], "max_irc_msg_len": [8, 9], "local": [8, 9, 11, 12, 14, 18], "awai": [8, 9, 10, 18], "assum": [8, 9, 11, 12, 13, 14, 18], "loop": [8, 9], "num_employe": 8, "10": [8, 9, 11, 12, 13], "60": [8, 9], "50": [8, 9], "data": [8, 9, 10, 12], "employee_id": 8, "hours_work": 8, "action": [8, 9, 19], "verb": [8, 9], "read_column_from_csv": [8, 9], "column_from_csv": [8, 9], "_t": 8, "denot": [8, 12], "repres": [8, 11, 12, 14], "new": [8, 10, 11, 12, 13, 14, 15, 17, 18], "obscur": 8, "list_node_t": 8, "list_t": 8, "somehow": 8, "convei": [8, 9], "ctx_t": 8, "ctx_ptr_t": 8, "mutabl": [8, 9], "introduc": [8, 9, 13, 14], "bug": [8, 9, 10], "detect": [8, 9, 11, 16], "ensur": [8, 9, 10, 14], "forbidden": [8, 9], "defin": [8, 9, 10], "runtim": [8, 9], "reachabl": [8, 9], "Such": 8, "all_cap": [8, 9], "const": 8, "modul": [8, 9, 10, 13], "static": 8, "exclud": 8, "initi": [8, 13], "pass": [8, 9, 10], "produc": [8, 9, 10, 11, 14], "wikipedia": [8, 9], "entri": [8, 9, 18], "bad": [8, 9], "blog": 8, "That": [8, 11, 12], "deepli": 8, "nest": 8, "technic": [8, 13], "none": [8, 9], "reconsid": 8, "sprinkl": [8, 9], "littl": [8, 9], "throughout": [8, 9, 10, 12, 14], "earlier": [8, 9, 10, 11, 12, 14], "msg": 8, "510": 8, "draw": 9, "heavili": 9, "mage": 9, "simplifi": 9, "programm": 9, "guido": 9, "van": 9, "rossum": 9, "barri": 9, "warsaw": 9, "wrap": [9, 11, 12, 19], "impli": 9, "brace": [9, 16], "necessari": [9, 10, 11, 12, 18], "pair": [9, 10, 12], "backslash": 9, "definit": 9, "spam": 9, "ham": 9, "egg": 9, "colon": 9, "slice": 9, "dict": 9, "blah": 9, "usag": 9, "docstr": 9, "multi": [9, 10, 12], "tripl": 9, "quot": 9, "def": 9, "hypotenus": 9, "solv": 9, "pythagorean": 9, "theorem": 9, "triangl": 9, "math": 9, "sqrt": 9, "camelcas": 9, "divvyst": 9, "rout": 9, "votingbooth": 9, "f": [9, 18], "element_of_list": 9, "ab": 9, "toler": 9, "distanc": 9, "2f": 9, "c1": 9, "c2": 9, "scale": [9, 10], "unit": 9, "compar": [9, 13], "greet": 9, "Be": 9, "explicit": 9, "present": 9, "sequenc": [9, 10, 11, 13], "tupl": 9, "empti": [9, 12, 14, 18], "seq": 9, "len": 9, "adher": 9, "unus": 9, "compani": 9, "reli": [9, 10], "across": 9, "neither": [9, 13], "catch": [9, 10], "clean": [9, 10, 12], "good": [9, 10], "proper": [9, 13], "report": 9, "thing": [9, 11, 12, 13, 14], "might": [9, 11, 12, 14, 17], "watch": 9, "excess": 9, "flake8": 9, "pylint": 9, "packag": [9, 17], "py": [9, 13, 14], "intent": 9, "l": [9, 13, 14, 18], "item": [9, 16], "e741": 9, "ambigu": 9, "e231": 9, "e275": 9, "13": 9, "e225": 9, "c0325": 9, "paren": 9, "superflu": 9, "c0114": 9, "rate": 9, "00": [9, 11, 12], "automat": [9, 10, 11, 12, 14], "against": [9, 14], "enabl": [9, 18], "lint": 9, "gratuit": 10, "decis": 10, "context": [10, 14], "sport": 10, "individu": [10, 12], "reward": 10, "simplic": [10, 11], "involv": [10, 11], "lightli": 10, "nor": 10, "who": [10, 13], "happen": [10, 11, 12, 14], "quarter": 10, "togeth": [10, 11, 13], "commit": [10, 11], "spend": 10, "fair": 10, "ideal": [10, 11], "mayb": 10, "organ": [10, 14], "job": 10, "importantli": 10, "although": [10, 14], "nonetheless": 10, "anyon": 10, "perfectli": 10, "normal": [10, 12, 14], "aspect": 10, "succeed": 10, "easili": [10, 11], "reach": 10, "platform": [10, 18], "messeng": 10, "schedul": [10, 12], "compat": 10, "night": 10, "owl": 10, "morn": 10, "weekend": 10, "difficult": 10, "experi": [10, 11, 12], "roughli": 10, "fourth": 10, "almost": [10, 14], "major": 10, "fresh": 10, "intro": 10, "frustrat": [10, 14], "slowli": 10, "notabl": [10, 15], "experienc": 10, "express": 10, "mentorship": 10, "relationship": 10, "fulfil": 10, "hand": 10, "hold": [10, 14], "product": 10, "decid": [10, 11], "chat": 10, "quick": [10, 12], "ins": 10, "settl": 10, "routin": 10, "regularli": 10, "overview": 10, "moment": [10, 18], "anyth": [10, 12, 15], "last": [10, 11, 12, 13, 16], "term": [10, 14], "holist": 10, "assess": 10, "told": [10, 11, 12], "had": [10, 14], "midterm": 10, "focu": 10, "dog": 10, "sick": 10, "vet": 10, "reassess": 10, "adjust": 10, "respons": 10, "somewhat": 10, "firm": 10, "agre": 10, "upon": 10, "closer": 10, "soon": 10, "becom": [10, 12, 14, 15], "tough": 10, "admit": 10, "frank": 10, "opportun": 10, "regroup": 10, "figur": [10, 14], "stai": 10, "estim": 10, "effort": 10, "season": 10, "mark": [10, 11], "imagin": [10, 14], "think": [10, 12], "hang": 10, "collabor": [10, 12], "sooner": 10, "later": [10, 12, 14, 18], "plow": 10, "reveal": 10, "didn": [10, 12], "spent": 10, "activ": 10, "instinct": 10, "tangibl": 10, "handsom": 10, "shouldn": 10, "demand": 10, "span": 10, "week": 10, "iron": 10, "pre": [10, 16], "crunch": 10, "razor": 10, "edg": 10, "reiter": 10, "fun": 10, "spread": 10, "marathon": 10, "structur": [10, 12], "model": 10, "compon": 10, "algorithm": 10, "strongli": [10, 12, 14], "draft": 10, "formal": 10, "turn": [10, 16], "Will": 10, "hash": [10, 12], "tabl": 10, "sketch": 10, "hit": [10, 13, 14], "dead": 10, "chose": 10, "realli": 10, "rippl": 10, "invalu": 10, "parallel": 10, "tempt": 10, "half": 10, "put": [10, 13], "unproduct": 10, "strategi": 10, "invari": 10, "hell": 10, "did": [10, 11, 12, 13, 14], "complic": [10, 11], "lose": 10, "abil": [10, 13], "balanc": 10, "goal": [10, 14], "total": [10, 11, 12], "awar": 10, "final": [10, 11, 14, 15], "face": 10, "anticip": 10, "tricki": 10, "improptu": 10, "un": [10, 12], "treat": [10, 14], "glorifi": 10, "homework": [10, 11, 12], "submiss": 10, "caveat": 10, "claim": [10, 13], "tracker": 10, "helpfulli": [10, 12], "assigne": 10, "mileston": 10, "categor": 10, "scheme": 10, "p1": 10, "task4": 10, "made": [10, 11, 12], "remain": [10, 14], "similarli": [10, 11], "symbol": [10, 13], "somewher": 10, "merg": [10, 12], "master": [10, 11], "expert": 10, "unfortun": 10, "systemat": 10, "receiv": [10, 13], "feedback": 10, "pull": [10, 11, 12], "former": 10, "latter": 10, "rel": [10, 13, 14], "sens": [10, 11], "target": 10, "unclear": 10, "adequ": 10, "shy": 10, "rubberstamp": 10, "posit": 10, "construct": [10, 13], "bump": 10, "road": 10, "invest": 10, "lazi": 10, "unengag": 10, "mindset": 10, "blame": 10, "harmon": 10, "enough": [10, 11, 12, 16], "potenti": 10, "blew": 10, "resent": 10, "perceiv": 10, "sub": [10, 11], "par": 10, "smoothli": 10, "hope": 10, "statement": 10, "enjoi": 10, "partnership": 10, "nurtur": 10, "move": [10, 14], "wasn": 10, "met": 10, "too": [10, 12, 14], "ambiti": 10, "accomplish": 10, "root": [10, 13, 14], "caus": [10, 14], "blanket": 10, "repli": 10, "touch": [10, 12, 13], "yourselv": [10, 11], "stick": 10, "faith": 10, "unrespons": 10, "concern": [10, 12], "attent": 10, "aim": 10, "scratch": [10, 15], "surfac": 10, "subject": 10, "book": 10, "brian": 10, "fitzpatrick": 10, "ben": 10, "collin": 10, "sussman": 10, "sb": [10, 11], "94": 10, "topic": [11, 13, 14], "mostli": [11, 13], "readm": [11, 12], "classmat": 11, "hw1": 11, "directori": [11, 12, 13, 17, 18], "overwrit": [11, 12, 13], "partner": 11, "baz": 11, "save": [11, 12, 13, 14, 16, 18, 19], "overwritten": [11, 13], "consolid": 11, "overhead": 11, "coordin": 11, "scenario": 11, "amongst": 11, "sake": 11, "diverg": [11, 12], "ones": [11, 14, 18], "concurr": 11, "aris": [11, 14], "far": [11, 12], "linear": 11, "main": [11, 12, 18], "loos": 11, "independ": 11, "histori": [11, 12], "manipul": [11, 14], "thu": [11, 13], "ordinarili": 11, "foobar": 11, "toe": 11, "28": 11, "22": [11, 13], "stdio": 11, "stdlib": 11, "500": 11, "fget": 11, "stdin": [11, 13], "aka": [11, 14], "memset": 11, "reset": [11, 12], "checkout": [11, 12], "asterisk": 11, "diagram": 11, "place": [11, 12, 14], "prevent": [11, 12], "fatal": 11, "upstream": 11, "haven": [11, 12, 14], "fortun": [11, 12], "enumer": [11, 12], "object": [11, 12], "count": [11, 12], "delta": [11, 12], "compress": [11, 12], "16": [11, 12], "thread": [11, 12], "367": 11, "kib": [11, 12], "reus": [11, 12], "visit": 11, "github_usernam": [11, 12], "track": [11, 12], "onward": 11, "convent": [11, 14], "stabl": [11, 17], "cleaner": 11, "destin": [11, 14], "854bff54": 11, "2a78570": 11, "a893dc8": 11, "fast": [11, 12], "delet": [11, 12, 13, 14], "a893dc8d2843b1f00f1f083cf7a32931aaef909": 11, "sat": 11, "mar": 11, "27": [11, 13], "08": 11, "21": 11, "2021": [11, 13], "0500": 11, "2a7857065581a0c003418c308cd0330b1021d32d": 11, "12": 11, "6b336a1d68b868da708c38bf3e1683155ae2967f": 11, "53": 11, "fairli": [11, 14, 15], "trivial": 11, "descend": 11, "trickier": 11, "buffer": [11, 12], "1000": 11, "accordingli": 11, "a72bbd0": 11, "250": 11, "e5ec414": 11, "artifici": 11, "me": 11, "statu": 11, "publish": [11, 12, 16], "unmerg": 11, "path": [11, 12, 13, 14, 18], "abort": [11, 12], "resolut": 11, "modifi": [11, 12, 13, 14], "branch1": 11, "branch2": 11, "300": 11, "your_nam": 11, "recogn": 11, "yet": [11, 12, 13, 18], "conclud": 11, "e58a1ba": 11, "e58a1baa2d6d408027a04d19ca322ef4ceaae9da": 11, "25": 11, "43": 11, "e5ec414fb5422487f3d0469583461c9a260432d9": 11, "15": 11, "a72bbd0ee5302906177cc9f62d4ff55e1a02c999": 11, "57": 11, "cmsc": [11, 12, 13, 14, 18], "12100": [11, 12, 13, 14], "prof": [11, 12, 13, 14], "numer": [11, 12, 13, 14], "19": 11, "22000": 11, "nutshel": 12, "maintain": 12, "record": 12, "checkpoint": 12, "revert": 12, "web": [12, 14], "servic": 12, "pack": [12, 16], "nice": [12, 13], "said": 12, "unix": [12, 13, 14], "wsl": [12, 14], "unfamiliar": [12, 13], "vi": 12, "desktop": [12, 13, 14, 16], "csil": [12, 14], "virtual": [12, 14], "detour": 12, "intric": 12, "websit": 12, "usernam": [12, 13, 14, 18], "token": 12, "resid": 12, "keygen": 12, "recal": [12, 13], "signifi": 12, "rsa": 12, "id_rsa": 12, "proce": 12, "skip": [12, 14, 16, 18], "backup": [12, 13, 14], "mv": [12, 14], "bak": 12, "pub": 12, "rest": [12, 14], "passphras": 12, "confirm": [12, 14], "counterintuit": 12, "layer": [12, 16], "identif": 12, "cbuus2femcirbltyv": 12, "pgpbtnz0v235zvlykpowios9i": 12, "randomart": 12, "3072": 12, "o": [12, 13, 14, 18], "oo": 12, "drop": [12, 16], "gpg": 12, "cat": [12, 13, 14], "whole": 12, "clipboard": 12, "mous": [12, 14], "nativ": 12, "cmd": [12, 19], "nthbg6kxupjwgl7e1igocspromtxdcarlvikw6e5sy8": 12, "safe": 12, "hi": 12, "shell": [12, 13, 16, 18], "worri": 12, "unabl": 12, "brows": 12, "cd": [12, 13, 14], "mkdir": [12, 13, 14], "folder": [12, 14, 17], "md": 12, "setup": 12, "profil": [12, 16], "txt": [12, 13, 14], "hello": [12, 13, 14, 18], "world": [12, 13, 14], "bundl": 12, "forget": 12, "forgot": 12, "gracious": 12, "behavior": [12, 14], "3e39c15": 12, "pitfal": 12, "279": 12, "392555e": 12, "0c85752": 12, "unset": 12, "remedi": 12, "wrote": 12, "sync": 12, "furthermor": 12, "stage": 12, "restor": 12, "untrack": 12, "At": 12, "previous": [12, 13, 14], "pound": 12, "tild": [12, 14], "crash": 12, "By": [12, 13, 14], "1810c54": 12, "mode": 12, "100644": 12, "export": 12, "myfavoriteeditor": 12, "bashrc": 12, "favorit": [12, 17], "mcedit": 12, "cool": 12, "cumbersom": 12, "shortcut": [12, 18], "tree": [12, 14], "nowher": 12, "6": [12, 13], "728": 12, "e3f9ef1": 12, "laptop": [12, 18], "clone": 12, "p": [12, 14, 18], "tmp": 12, "temp": 12, "unsur": 12, "unpack": 12, "312": 12, "5716877": 12, "messi": 12, "conflict": 12, "inspect": 12, "undo": 12, "remov": [12, 13, 14], "advic": 12, "magic": 12, "hopefulli": 12, "lingo": 12, "nearing": 12, "scrollabl": 12, "saw": [12, 14], "browser": [12, 14], "sha": 12, "9119c6ffcebc2e3540d587180236aaf1222ee63c": 12, "commit_sha": 12, "pars": 12, "9119c6f": 12, "complain": 12, "prefix": 12, "wget": [13, 14], "nv": [13, 14], "io": [13, 14], "dev": 13, "_static": [13, 14], "zip": [13, 14, 17], "unzip": [13, 14, 17], "plai": [13, 14], "pwd": [13, 14], "music": [13, 14], "pictur": 13, "templat": 13, "video": 13, "execut": [13, 14, 18], "equival": [13, 16], "act": [13, 18], "flexibl": 13, "white": 13, "space": 13, "captur": 13, "man": 13, "rm": [13, 14], "append": 13, "Not": 13, "python3": [13, 14], "my_echo": [13, 14], "stdout": 13, "stderr": 13, "bind": 13, "output2": 13, "patient": 13, "resum": 13, "capabl": 13, "program1": 13, "program2": 13, "Or": 13, "hadn": 13, "attempt": 13, "appropri": 13, "bunch": 13, "irrelev": 13, "combin": 13, "util": 13, "grep": 13, "mkdirat": 13, "mkdtemp": 13, "temporari": 13, "mkfontdir": 13, "font": 13, "mklost": 13, "lost": 13, "mount": 13, "extend": 13, "fil": 13, "mktemp": 13, "pam_mkhomedir": 13, "pam": 13, "dir": 13, "vgmknode": 13, "recreat": 13, "printenv": 13, "tail": 13, "displai": [13, 14], "replic": 13, "restrict": 13, "dictat": 13, "view": [13, 18], "member": 13, "distinct": 13, "determin": [13, 14], "within": [13, 14, 16, 18], "order": [13, 14], "shorthand": [13, 14], "renam": 13, "w": [13, 18], "filepath": 13, "usr": 13, "bin": 13, "rwxr": 13, "xr": 13, "5486384": 13, "jan": 13, "privileg": 13, "dash": 13, "cp": [13, 14], "copy2": [13, 14], "ld": 13, "chmod": 13, "chown": 13, "chgrp": 13, "uo": 13, "rw": 13, "demonstr": 13, "testfil": 13, "aug": 13, "23": 13, "ug": 13, "deni": 13, "method": 13, "sum": 13, "overal": 13, "761": 13, "accustom": 14, "drive": 14, "doubl": 14, "mb": 14, "listen": 14, "3x3": 14, "grid": 14, "bottom": [14, 18], "box": [14, 17, 18], "bash": [14, 16, 18], "ksh": 14, "tcsh": 14, "concept": 14, "sampl": 14, "bear": 14, "mind": 14, "subdirectori": 14, "illustr": 14, "slightli": 14, "html": 14, "ident": 14, "respect": 14, "script": 14, "notat": 14, "angl": 14, "holder": 14, "suppli": 14, "desir": 14, "achiev": 14, "regard": 14, "remaind": 14, "fetch": 14, "explor": 14, "directorynam": 14, "stand": 14, "recurs": 14, "undon": 14, "terminologi": 14, "placehold": 14, "firstnam": 14, "lastnam": 14, "tediou": 14, "tire": 14, "instanc": 14, "await": 14, "old": 14, "twice": 14, "train": 14, "reduc": 14, "inevit": 14, "mistyp": 14, "variabl": 14, "wildcard": 14, "extens": [14, 18], "length": 14, "especi": 14, "fyi": 14, "manual": 14, "abstract": 14, "match": [14, 16, 17], "exclus": 14, "cpp": 14, "intuit": 14, "backspac": 14, "abbrevi": 14, "asid": 14, "launcher": 14, "runnabl": 14, "gcc": 14, "clang": 14, "momentarili": 14, "javac": 14, "unlik": 14, "indefinit": 14, "misbehav": 14, "send": 14, "interrupt": 14, "signal": 14, "occas": 14, "roll": 14, "backward": 14, "eras": 14, "Being": 14, "rerun": 14, "indispens": 15, "friendli": 15, "bell": 15, "whistl": 15, "varieti": 15, "fluent": 15, "conform": 16, "primarili": 16, "squar": [16, 18], "altern": [16, 18], "panel": [16, 18], "microsoft": 16, "marketplac": 16, "focus": 16, "commonli": 16, "lastli": 16, "render": 16, "json": 16, "120": 16, "workbench": 16, "colorcustom": 16, "editorrul": 16, "foreground": 16, "ff4081": 16, "curli": 16, "vertic": 16, "red": 16, "wide": 16, "emul": 16, "plu": 16, "pick": 17, "annot": 17, "blue": 17, "vscodeusersetup": 17, "ex": 17, "agreement": 17, "darwin": 17, "finder": 17, "navig": 17, "deb": 17, "rpm": 17, "14100": 18, "front": 18, "linux1": 18, "linux7": 18, "linux2": 18, "j": 18, "linux3": 18, "linux4": 18, "linux5": 18, "linux6": 18, "z": [18, 19], "her": 18, "ar0r": 18, "hmmorgan": 18, "linux_serv": 18, "accur": 18, "rectangl": 18, "skew": 18, "retri": 18, "succe": 18, "unintention": 18, "reconnect": 18, "intention": 18, "gitbash": 18, "backtick": 18, "pane": 18, "consol": 18, "narrow": 18, "hidden": 18, "dropdown": 18, "palett": 18, "techstaff": 18, "howto": 18, "handi": 19, "opt": 19, "indent": 19, "outdent": 19, "toggl": 19}, "objects": {}, "objtypes": {}, "objnames": {}, "titleterms": {"acknowledg": [0, 11, 12, 13, 14], "get": [1, 18], "help": 1, "report": 2, "an": [2, 4, 12, 14], "issu": [2, 10], "typo": 2, "outdat": 2, "inform": 2, "suggest": 2, "new": [2, 3], "content": 2, "other": 2, "The": [3, 14], "uchicago": [3, 7], "c": [3, 7, 8, 14, 18], "softwar": 3, "environ": 3, "complet": 3, "linux": [3, 4, 13, 14, 17, 18], "unix": 3, "access": [3, 4, 12], "instruct": 3, "laboratori": 3, "csil": 3, "remot": [3, 4, 18], "ssh": [3, 4, 12, 18], "virtual": 3, "desktop": 3, "machin": 3, "recommend": [3, 9], "code": [3, 8, 9, 10, 15, 16, 17, 18], "editor": [3, 14], "termin": [3, 14, 16, 18], "base": 3, "visual": [3, 15, 16, 17, 18], "studio": [3, 15, 16, 17, 18], "sublim": 3, "text": [3, 18], "jetbrain": 3, "id": 3, "instal": [4, 16, 17], "client": 4, "window": [4, 17], "10": 4, "offic": 5, "hour": 5, "ask": 6, "question": 6, "student": 7, "resourc": 7, "guid": [7, 8, 9], "style": [8, 9], "introduct": [8, 9], "layout": [8, 9], "indent": [8, 9, 16], "maximum": [8, 9], "line": [8, 9], "length": [8, 9], "blank": [8, 9], "whitespac": [8, 9], "express": [8, 9], "statement": [8, 9], "avoid": [8, 9], "extran": [8, 9], "follow": [8, 9], "situat": [8, 9], "place": [8, 9], "us": [8, 9, 10, 14, 18], "space": [8, 9, 16], "comment": [8, 9], "header": [8, 9], "function": [8, 9], "block": [8, 9], "inlin": [8, 9], "name": [8, 9], "convent": [8, 9], "type": 8, "definit": 8, "global": [8, 9], "variabl": [8, 9], "goto": 8, "magic": [8, 9], "number": [8, 9], "python": [9, 14], "program": [9, 14], "linter": 9, "work": [10, 11, 12, 13], "team": 10, "choos": 10, "your": [10, 12], "project": 10, "partner": 10, "": 10, "commun": 10, "some": 10, "manag": 10, "basic": [10, 12, 14], "start": 10, "earli": 10, "design": 10, "Not": 10, "divid": 10, "git": [10, 11, 12], "effect": 10, "track": 10, "review": 10, "when": 10, "thing": 10, "go": 10, "wrong": 10, "learn": 10, "more": 10, "about": 10, "tutori": [11, 12, 13, 14], "advanc": [11, 13], "collabor": 11, "branch": 11, "todo": [11, 17, 18], "merg": 11, "conflict": 11, "where": [12, 14], "should": [12, 14], "you": [12, 14], "do": [12, 14], "thi": [12, 14], "set": 12, "up": [12, 14], "creat": 12, "kei": 12, "upload": 12, "github": 12, "initi": [12, 18], "repositori": 12, "commit": 12, "add": 12, "revisit": 12, "statu": 12, "from": 12, "multipl": 12, "locat": 12, "discard": 12, "chang": [12, 13, 14], "unstag": 12, "look": 12, "log": 12, "run": [13, 14], "command": [13, 14], "sequenti": 13, "input": 13, "output": 13, "stream": 13, "redirect": 13, "exercis": [13, 14], "pipe": 13, "file": [13, 14, 18], "permiss": 13, "owner": 13, "group": 13, "shell": 14, "navig": 14, "system": 14, "show": 14, "directori": 14, "pick": 14, "materi": 14, "wild": 14, "card": 14, "asterisk": 14, "man": 14, "page": 14, "edit": [14, 18], "graphic": 14, "compil": 14, "cycl": 14, "java": 14, "tip": [14, 19], "trick": [14, 19], "keyboard": 14, "shortcut": [14, 19], "configur": 16, "languag": 16, "extens": 16, "v": 16, "ruler": 16, "maco": 17, "server": 18, "assign": 18, "connect": 18, "setup": 18, "disconnect": 18, "hint": 18, "troubleshoot": 18, "common": 19}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.todo": 2, "sphinx": 60}, "alltitles": {"Acknowledgements": [[0, "acknowledgements"], [11, "acknowledgements"], [13, "acknowledgements"]], "Getting Help": [[1, "getting-help"]], "Reporting an Issue": [[2, "reporting-an-issue"]], "Typos": [[2, "typos"]], "Outdated Information": [[2, "outdated-information"]], "Suggesting New Content": [[2, "suggesting-new-content"]], "Other Issues": [[2, "other-issues"]], "The UChicago CS Software Environment": [[3, "the-uchicago-cs-software-environment"]], "Completely new to Linux/UNIX?": [[3, null]], "Accessing a UChicago CS Software Environment": [[3, "accessing-a-uchicago-cs-software-environment"]], "CS Instructional Laboratory (CSIL)": [[3, "cs-instructional-laboratory-csil"]], "Remote SSH Access": [[3, "remote-ssh-access"], [4, "remote-ssh-access"]], "Virtual Desktop": [[3, "virtual-desktop"]], "The CS Virtual Machine": [[3, "the-cs-virtual-machine"]], "Recommended code editors": [[3, "recommended-code-editors"]], "Terminal-based editors": [[3, "terminal-based-editors"]], "Visual Studio Code": [[3, "visual-studio-code"], [15, "visual-studio-code"]], "Sublime Text": [[3, "sublime-text"]], "JetBrains IDEs": [[3, "jetbrains-ides"]], "Installing an SSH Client": [[4, "installing-an-ssh-client"]], "Windows 10": [[4, "windows-10"]], "Linux": [[4, "linux"], [17, "linux"]], "Office Hours": [[5, "office-hours"]], "Asking Questions": [[6, "asking-questions"]], "UChicago CS Student Resource Guide": [[7, "uchicago-cs-student-resource-guide"]], "C Style Guide": [[8, "c-style-guide"]], "Introduction": [[8, "introduction"], [9, "introduction"]], "Code layout": [[8, "code-layout"], [9, "code-layout"]], "Indentation": [[8, "indentation"], [9, "indentation"]], "Maximum Line Length": [[8, "maximum-line-length"], [9, "maximum-line-length"]], "Blank Lines": [[8, "blank-lines"], [9, "blank-lines"]], "Whitespace in Expressions and Statements": [[8, "whitespace-in-expressions-and-statements"], [9, "whitespace-in-expressions-and-statements"]], "Avoid extraneous whitespace in the following situations:": [[8, "avoid-extraneous-whitespace-in-the-following-situations"], [9, "avoid-extraneous-whitespace-in-the-following-situations"]], "Places to use spaces": [[8, "places-to-use-spaces"], [9, "places-to-use-spaces"]], "Comments": [[8, "comments"], [9, "comments"]], "Header Comments": [[8, "header-comments"], [9, "header-comments"]], "Function Comments": [[8, "function-comments"], [9, "function-comments"]], "Block Comments": [[8, "block-comments"], [9, "block-comments"]], "Inline Comments": [[8, "inline-comments"], [9, "inline-comments"]], "Naming Conventions": [[8, "naming-conventions"], [9, "naming-conventions"]], "Type definitions": [[8, "type-definitions"]], "Global variables": [[8, "global-variables"], [9, "global-variables"]], "goto statements": [[8, "goto-statements"]], "Avoid Magic Numbers": [[8, "avoid-magic-numbers"], [9, "avoid-magic-numbers"]], "Python Style Guide": [[9, "python-style-guide"]], "Programming recommendations": [[9, "programming-recommendations"]], "Linters": [[9, "linters"]], "Working in Teams": [[10, "working-in-teams"]], "Choosing your project partner(s)": [[10, "choosing-your-project-partner-s"]], "Communication": [[10, "communication"]], "Some project management basics": [[10, "some-project-management-basics"]], "Start early": [[10, "start-early"]], "Design": [[10, "design"]], "(Not) Dividing the work": [[10, "not-dividing-the-work"]], "Using Git effectively": [[10, "using-git-effectively"]], "Issue tracking": [[10, "issue-tracking"]], "Code reviews": [[10, "code-reviews"]], "When things go wrong": [[10, "when-things-go-wrong"]], "Learning more about working in teams": [[10, "learning-more-about-working-in-teams"]], "Tutorial - Advanced Git": [[11, "tutorial-advanced-git"]], "Working collaboratively with Git": [[11, "working-collaboratively-with-git"]], "Branches": [[11, "branches"]], "Todo": [[11, "id1"], [11, "id2"], [17, "id1"], [18, "id1"]], "Merging": [[11, "merging"]], "Merge conflicts": [[11, "merge-conflicts"]], "Tutorial - Git Basics": [[12, "tutorial-git-basics"]], "Where should you do this tutorial?": [[12, "where-should-you-do-this-tutorial"], [14, "where-should-you-do-this-tutorial"]], "Setting up SSH access": [[12, "setting-up-ssh-access"]], "Creating an SSH Key": [[12, "creating-an-ssh-key"]], "Uploading your SSH key to GitHub": [[12, "uploading-your-ssh-key-to-github"]], "Creating and initializing a repository": [[12, "creating-and-initializing-a-repository"]], "Creating a commit": [[12, "creating-a-commit"]], "git add revisited and git status": [[12, "git-add-revisited-and-git-status"]], "Working from multiple locations": [[12, "working-from-multiple-locations"]], "Discarding changes and unstaging": [[12, "discarding-changes-and-unstaging"]], "Looking at the commit log": [[12, "looking-at-the-commit-log"]], "Acknowledgments": [[12, "acknowledgments"], [14, "acknowledgments"]], "Tutorial - Advanced Linux": [[13, "tutorial-advanced-linux"]], "Running Commands Sequentially": [[13, "running-commands-sequentially"]], "Working with Input/Output Streams": [[13, "working-with-input-output-streams"]], "Redirection": [[13, "redirection"]], "Exercises": [[13, "exercises"], [13, "id1"], [13, "id3"], [14, "exercises"], [14, "id2"], [14, "id3"]], "Piping": [[13, "piping"]], "File Permissions": [[13, "file-permissions"]], "Exercise": [[13, "exercise"], [14, "exercise"]], "Changing Permissions, Owner, & Group": [[13, "changing-permissions-owner-group"]], "Tutorial - Linux Basics": [[14, "tutorial-linux-basics"]], "Terminal/Shell": [[14, "terminal-shell"]], "Navigating the File System": [[14, "navigating-the-file-system"]], "Show Files": [[14, "show-files"]], "Change Directory": [[14, "change-directory"]], "Pick Up the Tutorial Materials": [[14, "pick-up-the-tutorial-materials"]], "Useful commands": [[14, "useful-commands"]], "Wild Cards (using an asterisk)": [[14, "wild-cards-using-an-asterisk"]], "Man Pages": [[14, "man-pages"]], "Editing files": [[14, "editing-files"]], "Using a terminal editor": [[14, "using-a-terminal-editor"]], "Using a graphical editor": [[14, "using-a-graphical-editor"]], "The edit/compile/run cycle in the terminal": [[14, "the-edit-compile-run-cycle-in-the-terminal"]], "Python": [[14, "python"]], "C": [[14, "c"]], "C++": [[14, "id4"]], "Java": [[14, "java"]], "Tips and Tricks": [[14, "tips-and-tricks"]], "Terminating a program": [[14, "terminating-a-program"]], "Keyboard shortcuts": [[14, "keyboard-shortcuts"]], "Configuring Visual Studio Code": [[16, "configuring-visual-studio-code"]], "Install Language Extensions for VS Code": [[16, "install-language-extensions-for-vs-code"]], "Space Indentation": [[16, "space-indentation"]], "Rulers": [[16, "rulers"]], "Terminal": [[16, "terminal"]], "Installing Visual Studio Code": [[17, "installing-visual-studio-code"]], "Windows": [[17, "windows"]], "macOS": [[17, "macos"]], "Using Visual Studio Code and SSH": [[18, "using-visual-studio-code-and-ssh"]], "Server assignments": [[18, "server-assignments"]], "Remotely connecting to the CS Linux servers": [[18, "remotely-connecting-to-the-cs-linux-servers"]], "Initial setup": [[18, "initial-setup"]], "Connecting": [[18, "connecting"]], "Getting Disconnected": [[18, "getting-disconnected"]], "Using the terminal": [[18, "using-the-terminal"]], "Editing text files": [[18, "editing-text-files"]], "Hint": [[18, null]], "Troubleshooting": [[18, "troubleshooting"]], "Tips & Tricks": [[19, "tips-tricks"]], "Shortcuts": [[19, "shortcuts"]], "Common Shortcuts": [[19, "id1"]]}, "indexentries": {}}) \ No newline at end of file +Search.setIndex({"docnames": ["about/acknowledgements", "about/getting-help", "about/issue", "environment/environment", "environment/ssh", "getting-help/office-hours", "getting-help/questions", "index", "style-guide/c", "style-guide/python", "teams", "tutorials/git-advanced", "tutorials/git-basics", "tutorials/linux-advanced", "tutorials/linux-basics", "vscode/about", "vscode/config", "vscode/install", "vscode/ssh", "vscode/tips"], "filenames": ["about/acknowledgements.rst", "about/getting-help.rst", "about/issue.rst", "environment/environment.rst", "environment/ssh.rst", "getting-help/office-hours.rst", "getting-help/questions.rst", "index.rst", "style-guide/c.rst", "style-guide/python.rst", "teams.rst", "tutorials/git-advanced.rst", "tutorials/git-basics.rst", "tutorials/linux-advanced.rst", "tutorials/linux-basics.rst", "vscode/about.rst", "vscode/config.rst", "vscode/install.rst", "vscode/ssh.rst", "vscode/tips.rst"], "titles": ["Acknowledgements", "Getting Help", "Reporting an Issue", "The UChicago CS Software Environment", "Remote SSH Access", "Office Hours", "Asking Questions", "UChicago CS Student Resource Guide", "C Style Guide", "Python Style Guide", "Working in Teams", "Tutorial - Advanced Git", "Tutorial - Git Basics", "Tutorial - Advanced Linux", "Tutorial - Linux Basics", "Visual Studio Code", "Configuring Visual Studio Code", "Installing Visual Studio Code", "Using Visual Studio Code and SSH", "Tips & Tricks"], "terms": {"while": [0, 1, 2, 3, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 19], "thi": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 16, 17, 18, 19], "guid": [0, 1, 2, 3, 6, 10, 13, 14, 16, 18], "includ": [0, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 19], "plenti": [0, 10], "origin": [0, 11, 12, 13, 14], "content": [0, 8, 9, 11, 12, 13, 14], "also": [0, 3, 6, 8, 9, 10, 11, 12, 13, 14, 18], "incorpor": 0, "document": [0, 8, 9, 10, 12, 13, 14], "wa": [0, 5, 6, 10, 11, 12, 14], "written": [0, 10, 11, 12, 13, 14], "sever": [0, 3, 14, 18], "comput": [0, 2, 3, 4, 7, 10, 12, 14, 15, 18], "scienc": [0, 3, 7], "cours": [0, 1, 5, 6, 10, 11, 12], "univers": [0, 1, 7, 10, 14, 17], "chicago": [0, 1, 7], "ha": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 18], "been": [0, 4, 6, 8, 9, 10, 11, 12, 13, 14], "edit": [0, 3, 4, 11, 12, 13, 15], "improv": [0, 7, 8, 9, 10, 14], "over": [0, 10, 11, 12, 13, 14, 16], "mani": [0, 3, 6, 8, 9, 10, 12, 14, 15, 16], "year": [0, 8, 9, 10, 11, 12, 13, 14], "instructor": [0, 1, 5, 6, 7, 10, 12, 13, 14, 18], "ta": [0, 5, 6, 11, 12, 13, 14], "student": [0, 1, 2, 3, 5, 6, 8, 9, 10, 11, 12, 14], "The": [0, 1, 2, 4, 5, 6, 8, 9, 10, 11, 12, 13, 16, 18], "follow": [0, 1, 2, 3, 4, 6, 7, 10, 11, 12, 13, 14, 16, 17, 18, 19], "peopl": [0, 3, 6, 10, 12], "have": [0, 1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18], "directli": [0, 10, 11, 12, 14], "indirectli": 0, "contribut": 0, "v\u00edctor": 0, "almaraz": 0, "argueta": 0, "tim": 0, "black": 0, "gustav": 0, "larsson": 0, "isha": [0, 11], "mehrotra": [0, 11], "hannah": [0, 18], "morgan": [0, 18], "ann": [0, 11, 12, 13, 14, 18], "roger": [0, 11, 12, 13, 14, 18], "borja": [0, 3, 11, 13, 14], "sotomayor": [0, 3, 11, 13, 14], "If": [1, 2, 3, 4, 6, 8, 9, 10, 11, 12, 13, 14, 16, 18], "you": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 16, 17, 18, 19], "need": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 18], "ani": [1, 2, 3, 4, 6, 8, 9, 10, 11, 12, 13, 14, 18], "assist": [1, 2, 5, 6, 7, 8, 9, 12], "instruct": [1, 2, 4, 6, 7, 10, 11, 12, 14, 15, 16, 17, 18], "tutori": [1, 2, 3, 4, 7], "pleas": [1, 2, 3, 4, 6, 7, 8, 11, 12, 16, 18], "us": [1, 2, 3, 4, 6, 7, 11, 12, 13, 15, 16, 17, 19], "one": [1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 16, 18], "support": [1, 2, 3, 4, 14], "mechan": [1, 2, 3, 6, 10, 11, 12, 14, 18], "were": [1, 3, 6, 10, 11, 12, 13, 14, 16], "refer": [1, 2, 6, 10, 11, 12, 13, 14], "staff": [1, 5, 6, 12], "class": [1, 3, 5, 6, 7, 8, 9, 10, 12, 13, 14, 15, 18], "ar": [1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18], "take": [1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 14, 18], "provid": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18], "For": [1, 2, 4, 6, 8, 9, 10, 11, 12, 13, 14, 18, 19], "exampl": [1, 2, 4, 6, 8, 9, 10, 11, 12, 13, 14, 18], "re": [1, 3, 4, 6, 8, 10, 11, 12, 14], "work": [1, 2, 3, 4, 6, 7, 9, 14, 15, 16, 18], "through": [1, 2, 3, 4, 6, 8, 9, 10, 11, 12, 13, 14, 18], "git": [1, 2, 3, 4, 6, 16], "basic": [1, 3, 4, 8, 9, 11, 13], "run": [1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 15, 16, 17, 18], "issu": [1, 3, 4, 6, 8, 9, 11, 12, 18], "do": [1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 13, 16, 18], "so": [1, 2, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 16, 18], "should": [1, 2, 3, 4, 6, 8, 9, 10, 11, 16, 17, 18], "whatev": [1, 3, 12, 14, 15], "avail": [1, 3, 4, 10, 12, 14], "onlin": [1, 6, 8, 10], "discuss": [1, 3, 6, 10, 11, 12, 13], "board": [1, 6, 10], "offic": [1, 6], "hour": [1, 6, 9], "etc": [1, 2, 3, 4, 6, 8, 9, 10, 11, 12, 13, 14, 18], "your": [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 13, 14, 15, 16, 17, 18], "own": [1, 2, 3, 4, 6, 10, 11, 12, 13, 14, 18], "welcom": [1, 12, 15, 18], "seek": 1, "channel": 1, "uchicago": [1, 2, 4, 6, 11, 12, 13, 14, 18], "c": [1, 2, 4, 5, 6, 9, 10, 11, 12, 13, 15, 16, 19], "slack": [1, 10], "can": [1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19], "ask": [1, 2, 5, 10, 11, 12, 18], "question": [1, 5], "about": [1, 2, 3, 4, 5, 6, 7, 8, 12, 13, 14, 18], "resourc": [1, 2, 3, 13, 14], "join": [1, 12], "link": [1, 2, 8, 9, 12, 19], "http": [1, 2, 3, 11, 12, 13, 14, 17, 18], "com": [1, 2, 3, 11, 12, 17], "signup": 1, "sign": [1, 12, 16], "up": [1, 3, 6, 8, 9, 10, 11, 13, 15, 16, 17, 18], "form": [1, 2, 6, 8, 9, 10, 13, 18], "edu": [1, 4, 11, 18], "address": [1, 10], "ever": [1, 3], "regist": 1, "actual": [1, 6, 8, 9, 10, 11, 12, 13, 14], "cnetid": [1, 3, 4, 12, 14, 18], "e": [1, 2, 3, 4, 6, 8, 9, 10, 11, 12, 14, 15, 18], "mail": [1, 6], "default": [1, 4, 8, 11, 12, 13, 14, 16, 18], "forward": [1, 10, 11, 12, 14], "never": [1, 6, 8, 9, 10], "account": [1, 2, 3, 10, 11, 12, 13, 14], "request": [1, 6, 10, 11], "first": [1, 2, 3, 4, 5, 8, 9, 10, 11, 12, 13, 14, 16, 18], "discord": 1, "invit": 1, "gg": 1, "zvjx8gv": 1, "note": [1, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16], "when": [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 16, 17, 18], "server": [1, 3, 4, 6, 12, 14, 15, 16], "limit": [1, 5, 8, 9, 10, 14, 16], "access": [1, 2, 7, 8, 10, 13, 14, 18], "until": [1, 6, 10, 12, 13], "perform": [1, 8, 9, 10, 13, 14], "an": [1, 3, 5, 6, 8, 9, 10, 11, 13, 15, 16, 18], "authent": [1, 4, 12], "step": [1, 2, 3, 4, 10, 11, 12, 14, 16, 18], "bot": 1, "further": [1, 4, 8, 9, 12, 13], "how": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18], "onc": [1, 2, 3, 4, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18], "must": [1, 4, 6, 8, 9, 11, 12], "go": [1, 2, 6, 8, 9, 11, 12, 13, 14, 16, 17, 18], "role": 1, "obtain": 1, "all": [1, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17], "abov": [1, 2, 4, 8, 9, 11, 12, 13, 14], "faculti": [1, 5], "onli": [1, 2, 3, 4, 6, 8, 9, 10, 11, 12, 13, 14, 18], "unaffili": 1, "abl": [1, 3, 4, 6, 10, 11, 12, 14, 18], "our": [1, 2, 3, 8, 9, 10, 11, 12, 13, 14, 16], "spot": 2, "read": [2, 4, 6, 8, 9, 10, 11, 13, 14, 18], "doesn": [2, 4, 8, 9, 10, 12, 14], "t": [2, 3, 4, 6, 8, 9, 10, 11, 12, 13, 14, 15, 18], "u": [2, 6, 8, 9, 11, 12, 13, 14, 18], "github": [2, 4, 6, 10, 11, 13, 14], "In": [2, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18], "gener": [2, 4, 8, 9, 10, 11, 12, 13, 16], "someth": [2, 4, 6, 10, 11, 12, 14], "fix": [2, 11], "ad": [2, 6, 11, 12, 13, 14], "file": [2, 3, 4, 8, 9, 10, 11, 12, 15, 16, 17, 19], "instead": [2, 3, 6, 8, 9, 10, 11, 12, 13, 14, 17, 18], "describ": [2, 3, 6, 8, 10, 12, 13, 14, 16], "get": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14], "help": [2, 5, 6, 7, 9, 10, 12, 13, 14], "page": [2, 3, 4, 5, 6, 8, 10, 12, 13, 16, 17, 18, 19], "To": [2, 4, 6, 8, 9, 10, 11, 12, 13, 14, 16, 18], "repositori": [2, 10, 11], "click": [2, 4, 6, 10, 11, 12, 13, 14, 16, 17, 18], "tab": [2, 8, 9, 12, 14, 16, 18], "direct": [2, 13], "green": [2, 12, 18], "button": [2, 4, 10, 12, 14, 17], "prompt": [2, 4, 12, 14, 17, 18], "creat": [2, 4, 10, 11, 13, 14], "time": [2, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 18], "shown": [2, 10, 11, 12, 13, 14], "like": [2, 3, 4, 6, 8, 9, 10, 11, 12, 13, 14, 16, 17, 18], "Then": [2, 4, 11, 12, 13, 14], "fill": [2, 4, 14, 17], "out": [2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 18], "depend": [2, 3, 4, 10, 12], "kind": [2, 5, 12], "A": [2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 14, 18, 19], "minor": 2, "error": [2, 4, 6, 8, 9, 11, 12, 13], "": [2, 3, 4, 6, 8, 9, 11, 12, 13, 14, 16, 18, 19], "text": [2, 4, 8, 9, 10, 12, 14, 15], "g": [2, 4, 6, 8, 9, 10, 12, 13, 14, 15, 18], "spell": [2, 14], "mistak": [2, 9], "incorrectli": 2, "format": [2, 6, 8, 9], "code": [2, 6, 7, 11, 12, 13, 14, 19], "block": [2, 6, 19], "field": [2, 8, 12], "label": [2, 4, 17], "right": [2, 3, 6, 9, 10, 11, 12, 13, 14, 17, 18], "sidebar": [2, 10, 16, 17, 18], "select": [2, 6, 12, 16, 17, 18, 19], "titl": [2, 10, 12, 17], "enter": [2, 4, 12, 13, 14, 18], "remot": [2, 11, 12, 14, 15], "ssh": [2, 14, 15, 16], "descript": [2, 6, 8, 9, 10, 14], "i": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18], "under": [2, 3, 12, 16, 17, 18], "write": [2, 3, 6, 8, 9, 10, 11, 12, 13, 14], "url": [2, 8, 9, 12], "where": [2, 3, 4, 5, 8, 9, 10, 11, 17, 18], "found": [2, 3, 8, 12, 13], "locat": [2, 3, 4, 10, 11, 14, 17], "section": [2, 3, 4, 6, 7, 8, 9, 11, 12, 13, 14, 15, 18], "instal": [2, 3, 9, 12, 13, 15, 18], "client": [2, 8], "second": [2, 10, 11, 12, 13, 16], "paragraph": [2, 8, 9], "current": [2, 3, 4, 11, 12, 13, 14, 19], "correct": [2, 8, 9, 11, 13, 14], "possibl": [2, 3, 6, 10, 11, 12, 14, 18], "bold": 2, "highlight": [2, 3, 11], "exact": [2, 3, 4, 6, 10, 11, 12, 14, 16], "correctli": [2, 8, 9, 10, 12, 13], "wall": 2, "essenti": [2, 10, 13], "expect": [2, 6, 8, 9, 10, 14], "output": [2, 4, 6, 8, 9, 12, 14, 18], "substanti": 2, "differ": [2, 4, 6, 10, 11, 12, 13, 14, 18], "from": [2, 3, 4, 5, 6, 8, 9, 10, 11, 13, 14, 15, 16, 18], "tool": [2, 3, 4, 7, 9, 10, 14, 15], "print": [2, 4, 6, 8, 9, 11, 12, 13, 14], "messag": [2, 4, 6, 8, 10, 11, 12, 14], "recommend": [2, 8, 13, 14, 16, 17], "wai": [2, 3, 4, 6, 8, 9, 10, 11, 12, 13, 14], "we": [2, 3, 4, 5, 6, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18], "option": [2, 3, 4, 11, 13, 14, 15, 16, 18, 19], "foo": [2, 9, 11], "sai": [2, 4, 6, 10, 11, 12, 14, 18], "deprec": 2, "futur": [2, 8, 9, 10], "version": [2, 3, 4, 6, 8, 9, 10, 11, 12, 17], "bar": [2, 4, 9, 11, 16, 17, 18], "screenshot": [2, 6], "what": [2, 5, 6, 8, 9, 10, 11, 12, 13, 14, 16], "see": [2, 3, 4, 6, 8, 9, 10, 11, 12, 13, 14, 16, 17, 18, 19], "system": [2, 3, 4, 6, 10, 11, 12, 13, 16, 17], "show": [2, 10, 11, 12, 18], "configur": [2, 4, 8, 9, 13, 15, 18], "window": [2, 3, 12, 14, 16, 18, 19], "coupl": [2, 7], "some": [2, 3, 4, 5, 6, 8, 9, 11, 12, 13, 14, 15, 16, 18], "those": [2, 3, 6, 8, 9, 10, 12, 14, 15, 18], "miss": [2, 9, 10], "name": [2, 4, 6, 10, 11, 12, 13, 14, 16, 17, 18], "open": [2, 3, 4, 8, 9, 11, 12, 14, 16, 17, 18], "them": [2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 18], "encount": [2, 3, 6, 11], "updat": [2, 4, 11, 12, 13, 14, 18], "concis": [2, 6], "summari": [2, 12], "vscode": [2, 4, 9, 15, 16, 17, 18], "advanc": 2, "warn": [2, 4, 8, 12], "featur": [2, 3, 4, 11, 12, 16, 18], "mac": [2, 3, 4, 14, 16, 17, 18], "linux": [2, 7, 8, 9, 12, 15, 16, 19], "make": [2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 19], "sure": [2, 3, 4, 6, 8, 9, 10, 11, 12, 13, 14, 16, 18], "oper": [2, 3, 4, 8, 9, 10, 12, 13, 14, 16, 17], "tell": [2, 4, 11, 12, 13, 14], "appear": [2, 4, 8, 9, 11, 12, 14, 16, 17, 18], "part": [2, 6, 8, 10, 11, 12, 13, 14, 18], "command": [2, 3, 4, 6, 8, 9, 11, 12, 16, 18, 19], "d": [2, 4, 6, 8, 9, 10, 11, 12, 13, 14, 18], "add": [2, 4, 9, 10, 11, 13, 14, 16, 17, 18], "addit": [2, 4, 6, 8, 9, 10, 11, 12, 13, 16, 17, 18], "expand": 2, "given": [2, 8, 9, 10, 12, 13, 14, 18], "clearer": 2, "easier": [2, 6, 8, 9, 10, 12, 13, 16, 19], "enhanc": 2, "x": [2, 8, 9, 10, 12, 13, 14, 16, 18, 19], "y": [2, 4, 8, 9, 10, 12, 18], "java": [2, 3, 15, 16], "style": [2, 7, 10, 16], "explain": [2, 3, 10, 18], "more": [2, 3, 4, 6, 8, 9, 11, 12, 13, 14, 18], "detail": [2, 6, 8, 9, 10, 12], "specif": [2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 18], "chang": [2, 7, 8, 9, 10, 11, 16], "thei": [2, 3, 5, 6, 8, 9, 10, 11, 12, 14, 18], "could": [2, 4, 6, 10, 11, 12, 13, 14], "benefit": [2, 6, 10, 12], "reader": [2, 8, 9], "fall": [2, 13], "categori": [2, 12], "leav": [2, 4, 10], "blank": [2, 10, 14], "care": [2, 4, 8, 9, 11, 13, 14, 18], "much": [2, 3, 4, 6, 10, 11], "mai": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 18, 19], "depart": [3, 7, 12, 14], "which": [3, 4, 6, 7, 8, 9, 10, 11, 12, 14, 15, 16, 18], "most": [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17], "well": [3, 8, 9, 10, 11, 12, 13, 14, 15, 18], "develop": [3, 10, 11, 12], "offici": 3, "ubuntu": [3, 4, 12, 14, 17], "20": [3, 12], "04": [3, 11], "type": [3, 4, 11, 12, 13, 14, 16, 18], "librari": 3, "requir": [3, 7, 8, 9, 10, 11, 14], "coursework": [3, 5, 6], "howev": [3, 6, 8, 9, 10, 11, 12, 13, 14], "doe": [3, 4, 6, 8, 9, 10, 11, 12, 13, 14, 18], "mean": [3, 4, 8, 9, 10, 11, 12, 14, 15, 18], "person": [3, 4, 6, 10, 11, 12, 14, 15, 18], "both": [3, 8, 9, 10, 11, 13, 14], "lab": [3, 11, 12, 13, 14], "seri": [3, 4, 14], "login": 3, "allow": [3, 4, 6, 8, 9, 10, 11, 12, 13, 14, 16, 18], "plan": [3, 10, 16], "stop": 3, "below": [3, 4, 6, 10, 12, 14, 18], "comfort": [3, 10, 11, 13, 14], "There": [3, 4, 8, 9, 10, 12, 13, 14], "floor": 3, "john": [3, 9], "crerar": 3, "two": [3, 4, 8, 9, 10, 11, 12, 13, 14, 17, 18], "3": [3, 4, 8, 9, 11, 12, 13], "4": [3, 4, 6, 8, 9, 10, 13, 14], "progress": [3, 4, 8, 10, 11, 17], "sit": [3, 10, 14], "outsid": [3, 5, 10], "occupi": 3, "log": [3, 4, 8, 10, 11, 14], "password": [3, 4, 12, 18], "speak": 3, "tutor": 3, "desk": 3, "conveni": [3, 4, 6, 11, 12, 13, 14, 18], "readi": [3, 10, 18], "same": [3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14], "without": [3, 4, 5, 8, 9, 11, 12, 13, 14], "physic": [3, 10, 14], "campu": [3, 4, 7, 10, 18], "common": [3, 4, 8, 9, 10, 11, 12, 14, 15, 16], "line": [3, 5, 6, 10, 11, 12, 13, 14, 16, 19], "won": [3, 8, 10, 11, 12, 14, 15, 18], "launch": [3, 14, 18], "graphic": [3, 11], "program": [3, 6, 7, 8, 10, 13, 15], "would": [3, 6, 8, 9, 10, 11, 12, 13, 14, 18], "seem": [3, 6, 8, 9, 11, 12], "big": [3, 8, 9], "constraint": 3, "still": [3, 8, 9, 10, 11, 12, 14, 15], "lot": [3, 5, 10, 11, 12], "just": [3, 4, 5, 6, 10, 11, 12, 13, 14, 18], "connect": [3, 4, 8, 12, 13, 14, 15, 16], "find": [3, 4, 5, 8, 10, 12, 13, 16, 17, 18], "set": [3, 6, 8, 9, 10, 11, 13, 14, 15, 16, 18], "anoth": [3, 4, 8, 9, 10, 11, 12, 13, 14], "seamlessli": 3, "store": [3, 12, 14, 18], "vari": [3, 4, 14], "particular": [3, 6, 8, 9, 10, 12, 14], "give": [3, 10, 12, 13, 14], "similar": [3, 4, 5, 10, 11, 14], "approach": [3, 10, 13, 14], "bandwidth": 3, "than": [3, 4, 8, 9, 10, 11, 12, 13, 14, 16, 18], "feel": [3, 6, 10], "sluggish": 3, "latenc": 3, "start": [3, 4, 6, 8, 9, 11, 12, 13, 14, 16, 18], "case": [3, 4, 6, 8, 9, 10, 11, 12, 14, 17, 18], "vm": 3, "approxim": 3, "latest": [3, 12], "check": [3, 4, 6, 8, 9, 10, 12, 13, 14, 17, 18], "faq": 3, "cover": [3, 5, 7, 9, 11, 13, 14], "number": [3, 4, 10, 12, 14, 19], "deal": [3, 10, 11], "slow": 3, "effect": [3, 6, 13, 14], "full": [3, 6, 8, 11, 12, 14, 16, 19], "insid": [3, 8, 9, 12, 13, 14, 18], "standalon": 3, "filesystem": [3, 11, 14], "few": [3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 18, 19], "want": [3, 4, 5, 6, 9, 10, 11, 12, 13, 14, 18], "consid": [3, 8, 9, 10, 11, 13, 14], "compil": [3, 8, 18], "veri": [3, 6, 8, 9, 10, 11, 12, 13, 14, 15], "opinion": 3, "choic": [3, 9, 12], "sometim": [3, 5, 6, 8, 9, 10, 13, 14], "argu": 3, "passion": 3, "why": [3, 6, 10, 12, 14], "wrong": [3, 6, 9], "ignor": [3, 11, 12, 14], "ultim": 3, "best": [3, 10, 15, 18], "don": [3, 6, 8, 9, 10, 11, 12, 14, 18], "judg": 3, "other": [3, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 18], "design": [3, 8, 9, 15], "artwork": 3, "sarah": 3, "becan": 3, "vim": [3, 14], "emac": [3, 12, 14], "nano": [3, 12, 14], "advantag": 3, "being": [3, 4, 10, 14], "practic": [3, 8, 9, 10, 14], "everi": [3, 4, 8, 9, 10, 12, 13, 18], "via": [3, 4, 8, 9, 14, 15, 16, 18], "older": [3, 12], "extrem": [3, 10], "power": [3, 13, 14, 15], "custom": 3, "pretti": [3, 6, 10, 12, 13], "languag": [3, 14, 15], "sun": 3, "even": [3, 4, 8, 10, 11, 12, 18], "primari": [3, 14], "build": [3, 17], "least": [3, 4, 8, 9, 10, 13], "familiar": [3, 9, 10, 11, 12, 13, 14, 15, 18], "situat": [3, 10, 11, 12], "user": [3, 8, 11, 12, 13, 14, 18], "interfac": [3, 8, 10, 11, 12, 14], "popular": [3, 4, 7, 9, 14, 15], "confus": 3, "its": [3, 6, 8, 9, 11, 12, 13, 14, 15], "sibl": 3, "It": [3, 4, 5, 6, 8, 9, 10, 12, 13, 14], "regular": [3, 10, 13, 14], "syntax": [3, 14], "auto": [3, 8, 9, 11, 14], "integr": [3, 10, 16], "plugin": [3, 9], "fledg": 3, "lightweight": 3, "piec": [3, 6, 10], "fewer": 3, "sourc": [3, 9, 10, 14], "free": [3, 15], "sinc": [3, 8, 9, 10, 12, 14, 17], "beginn": [3, 9, 15], "entir": [3, 8, 9, 10, 14], "visualstudio": [3, 17], "tend": [3, 10], "bit": [3, 10, 11, 12, 14, 18], "download": [3, 12, 13, 17], "period": [3, 8, 9], "charg": 3, "nag": 3, "frequent": [3, 10], "pai": [3, 10, 15], "licens": [3, 17], "wikimedia": 3, "org": 3, "wiki": 3, "sublime_text_mxunit": 3, "png": 3, "next": [3, 4, 8, 10, 12, 14, 16, 17, 18], "besid": [3, 11], "usual": [3, 6, 8, 9, 10, 12, 14, 18], "autom": [3, 18], "debugg": 3, "suit": [3, 15], "clion": 3, "pycharm": 3, "python": [3, 8, 15, 16], "intellij": 3, "idea": [3, 14], "commerci": 3, "educ": 3, "commun": 3, "less": [3, 4, 10], "paid": 3, "www": 3, "interact": [4, 6, 14, 15, 18], "environ": [4, 6, 7, 12, 13, 14, 16], "nowadai": 4, "softwar": [4, 6, 7, 10, 12, 14, 17], "ll": [4, 10, 11, 12, 13, 14], "powershel": [4, 18], "maco": [4, 6, 12, 14, 16, 18, 19], "termin": [4, 6, 12, 15], "try": [4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 18], "search": [4, 6, 14, 16, 18], "menu": [4, 12, 14, 18], "icon": [4, 12, 14, 16, 18], "11": [4, 11, 13], "8": [4, 12, 13], "7": [4, 9, 13], "quit": [4, 5, 9, 14], "distribut": [4, 14], "press": [4, 5, 6, 8, 9, 12, 14, 16, 18], "ctrl": [4, 12, 13, 14, 16, 18, 19], "alt": [4, 14, 19], "On": [4, 5, 10, 11, 12, 13, 14, 17, 19], "look": [4, 6, 9, 10, 11, 13, 14, 16, 18], "except": [4, 8, 9, 10, 12, 14], "top": [4, 8, 9, 12, 14, 17, 18], "regardless": [4, 8, 10, 12, 14, 16], "base": [4, 9, 11, 12, 13, 14, 18], "replac": [4, 11, 12, 14, 18], "lowercas": 4, "sort": [4, 5], "host": [4, 12, 18], "linuxx": 4, "128": 4, "135": 4, "xxx": 4, "establish": [4, 12], "ecdsa": 4, "kei": [4, 8, 9, 10, 14], "fingerprint": [4, 12], "sha256": [4, 12], "continu": [4, 9, 11, 12, 13, 18], "ye": [4, 8, 9, 12], "here": [4, 6, 8, 9, 10, 11, 12, 14, 16, 18], "troubleshoot": 4, "hint": [4, 13], "sensit": 4, "upper": 4, "lower": [4, 8, 9, 18], "exactli": [4, 10, 14, 16], "echo": [4, 11, 12, 13], "back": [4, 8, 9, 11, 12, 13, 14, 18], "success": [4, 12, 14, 18], "end": [4, 6, 8, 9, 10, 11, 12, 13, 14, 18], "linuxn": 4, "n": [4, 8, 11, 12, 14, 18], "between": [4, 6, 9, 10, 13], "1": [4, 8, 9, 10, 11, 12, 13, 18], "ve": [4, 6, 10, 11, 12, 13, 18], "successfulli": [4, 10, 11, 12], "came": 4, "finish": [4, 10, 11, 12, 14, 17], "close": [4, 10, 18], "exit": [4, 12, 13, 14], "network": [4, 14], "three": [4, 8, 9, 13, 16, 18], "wireless": 4, "secur": [4, 12], "eduroam": 4, "third": 4, "NOT": [4, 14], "troubl": [4, 8, 9, 10], "verifi": [4, 11, 12, 13, 14], "either": [4, 8, 9, 12, 13, 14], "occur": 4, "alwai": [4, 8, 9, 10, 14], "variou": 4, "applic": [4, 8, 10, 14, 17], "keyboard": [4, 13, 19], "corner": [4, 18], "screen": [4, 8, 9, 13, 14], "begin": [4, 8, 9, 14, 18], "pc": 4, "though": [4, 14], "visibl": 4, "recent": [4, 10, 12], "scroll": [4, 14], "down": [4, 11, 12, 14, 16], "head": [4, 11, 12, 18], "home": [4, 11, 12, 13, 14, 18], "pro": [4, 12], "2004": 4, "1803": 4, "otherwis": [4, 12], "minut": [4, 9], "restart": 4, "complet": [4, 8, 9, 10, 11, 12, 13, 14, 17], "again": [4, 12, 13, 14, 16, 18], "now": [4, 10, 11, 12, 14, 17, 18], "greater": 4, "openssh": 4, "manag": [4, 12, 13], "list": [4, 5, 8, 9, 10, 11, 12, 13, 14, 16, 17, 18, 19], "done": [4, 8, 9, 10, 11, 12, 13, 18], "pop": [4, 18], "checkbox": 4, "wait": [4, 10, 13], "typic": [4, 6, 8, 9, 10, 13, 14], "occasion": [4, 8, 9, 14], "process": [4, 10, 12, 13, 14], "debian": 4, "sudo": 4, "apt": 4, "rhel": 4, "fedora": 4, "cento": 4, "yum": 4, "broader": 5, "rang": [5, 9], "convers": 5, "materi": [5, 11, 13], "tip": [5, 7, 10, 12], "foremost": 5, "word": [5, 6, 8, 9, 14, 19], "encourag": [5, 10], "know": [5, 6, 10, 11, 12, 13, 14], "cannot": [5, 8, 14], "simpli": [5, 10, 11, 12, 13, 14], "point": [5, 7, 8, 9, 10, 11, 12, 14, 18], "learn": [5, 12, 13, 14, 15, 18], "everyth": [5, 10, 14], "alreadi": [4, 5, 6, 10, 11, 12, 13, 16, 18], "q": [5, 12, 14, 18], "session": [5, 10, 14], "multipl": [5, 6, 8, 9, 10, 11, 13], "room": 5, "chanc": 5, "someon": [5, 6, 10], "els": [5, 8, 9], "attend": 5, "answer": [5, 6], "yourself": [5, 8, 10, 12, 14], "prepar": [5, 18], "ahead": [4, 5, 11, 12, 13], "particularli": [5, 10, 13, 14], "assign": [5, 6, 7, 8, 9, 10, 11, 13, 14], "deadlin": [5, 10], "exam": [5, 10], "beforehand": 5, "let": [5, 10, 11, 12, 13, 14], "known": [5, 8, 11, 13, 14], "unknown": 5, "along": [5, 14], "previou": [5, 6, 10, 12, 13, 14], "fulli": 5, "understand": [5, 6, 10, 14], "saver": 5, "formul": [5, 6], "clear": [5, 10, 11, 14], "dai": [5, 10, 14], "dure": [5, 8], "talk": 5, "interest": [5, 14], "scope": [5, 13], "guidelin": [6, 9], "As": [6, 10, 12, 13, 14], "probabl": [6, 14], "handl": [6, 8, 9, 10, 11], "purpos": [6, 8, 9, 10, 11, 12, 13, 14], "canva": 6, "ed": 6, "challeng": [6, 10, 14], "inform": [6, 7, 8, 9, 10, 13, 14, 16], "suggest": [6, 7, 10, 12, 14, 18], "befor": [6, 8, 9, 10, 11, 12, 13, 14, 16], "post": [6, 8], "whether": [4, 6, 8, 9, 10, 12, 16], "realiz": [6, 10, 11, 12], "volum": [6, 13], "overwhelm": 6, "function": [6, 10, 11, 12, 13, 14], "bring": [6, 10], "relev": 6, "suppos": [6, 10, 11, 14], "fail": [6, 11], "test": [4, 6, 9, 10, 12, 13, 14, 18], "lucki": 6, "stuck": [6, 10], "result": [6, 11, 12, 13, 16], "task": [6, 10, 11, 13, 14, 17], "push": [6, 10, 11, 12], "my": [6, 10, 13, 14], "debug": [6, 8, 9, 10, 18], "reason": [6, 8, 9, 10, 11, 14], "concret": [6, 8, 9, 10, 13], "struggl": 6, "public": [4, 6, 12, 13], "v": [6, 8, 15, 18, 19], "privat": [4, 6, 12], "often": [6, 8, 10, 12, 13, 14, 18], "seen": [6, 12], "teach": [6, 10], "truli": 6, "matter": 6, "relat": [6, 8, 9, 11, 13, 14], "uniqu": [6, 12, 13], "notifi": 6, "famili": 6, "medic": 6, "emerg": 6, "Of": [6, 10, 11], "appli": [6, 8, 9, 14], "becaus": [6, 8, 10, 11, 12, 14, 15, 18], "ran": 6, "logist": [6, 10], "qualifi": 6, "publicli": 6, "everyon": [6, 18], "better": [6, 9, 10], "brief": 6, "avoid": [4, 6, 10, 12, 18], "wast": [6, 10], "professor": 6, "long": [6, 9, 10], "absolut": [6, 13, 14], "opposit": 6, "true": [6, 8, 9, 16], "prefer": [6, 9, 10, 12, 13, 16], "reproduc": 6, "observ": [6, 8, 9], "And": [6, 11, 12, 14], "control": [6, 10, 11, 12, 14, 19], "svn": 6, "gitlab": [6, 10], "phoenixforg": 6, "machin": [4, 6, 11, 12, 13, 14, 16, 18], "harder": 6, "chain": [6, 13], "event": 6, "lead": [6, 10, 12, 14], "input": [6, 8, 9, 11, 14], "come": [6, 10, 14, 19], "unexpect": [6, 10], "unabridg": 6, "summar": 6, "valu": [6, 8, 9, 10, 12, 13, 14], "42": [6, 8, 10], "m": [6, 8, 9, 11, 12, 18], "return": [6, 8, 9, 10, 11, 13], "identifi": [6, 8, 9, 10, 12, 14], "got": [6, 9, 10], "behav": 6, "accept": [4, 6, 8, 11, 12, 14, 17], "No": [6, 8, 9], "searchabl": 6, "pose": 6, "readabl": [6, 8, 9, 14], "copi": [4, 6, 12, 14, 16, 19], "past": [6, 8, 9, 12, 19], "elsewher": [6, 12], "share": [6, 8, 9, 11, 14], "onto": 6, "verbatim": [6, 11], "processor": [6, 14], "drag": [6, 12, 17], "shift": [6, 12, 16, 18, 19], "One": [6, 9, 10, 12], "unrel": 6, "separ": [6, 8, 9, 11, 12, 13, 16, 18], "each": [4, 6, 8, 9, 10, 11, 12, 13, 14], "ok": 6, "comment": [6, 10, 13, 14, 19], "distinguish": 6, "exist": [4, 6, 8, 9, 11, 12, 13, 14], "resolv": [6, 11, 12], "flag": [6, 13, 14], "intend": [7, 8, 9, 12, 16], "meant": 7, "norm": [7, 8], "unless": [7, 8, 9, 13], "explicitli": [7, 9, 12], "divid": [7, 11], "off": [7, 8, 9, 10, 11, 16, 18], "visual": [7, 9, 14], "studio": [7, 9, 14], "editor": [7, 8, 9, 11, 12, 13, 15, 16], "certain": [7, 12, 13, 14], "skill": [7, 8, 9, 10, 14], "itself": [7, 11, 12, 15], "project": [8, 9, 11], "These": [4, 8, 9, 10, 11, 13, 14], "perspect": [8, 9, 10], "import": [8, 9, 10, 12, 13, 14], "problem": [8, 9, 18], "quickli": [8, 9], "easi": [8, 9, 10, 12, 14, 15], "live": [8, 9, 10, 15, 18], "grader": [8, 9], "rememb": [8, 9, 10, 11, 12], "happi": [8, 9, 10], "addition": [8, 9, 12, 15], "hard": [8, 9, 10, 12, 14], "profession": [8, 9], "comprehens": 8, "guidanc": 8, "specifi": [8, 9, 10, 11, 12, 13, 14], "kernel": [8, 9], "contradict": [8, 9], "k": [8, 13, 14, 18], "r": [8, 13, 14, 18], "variant": 8, "bsd": 8, "knf": 8, "allman": 8, "choos": [8, 11, 12, 13], "consist": [8, 9, 14, 16, 18], "astyl": 8, "convert": 8, "kr": 8, "per": [8, 9, 10, 18], "level": [8, 9, 10, 14], "charact": [8, 9, 12, 14, 16], "insert": [8, 9, 11, 12, 14, 16], "whenev": [8, 9, 11], "properli": [8, 9, 12, 16], "left": [8, 9, 10, 14, 16, 17, 18], "arrow": [8, 9, 12, 14], "cursor": [8, 9, 14], "jump": [8, 9], "singl": [8, 9, 10, 11, 12, 14], "goe": [8, 9, 11, 12], "four": [8, 9, 14, 16, 18], "80": [8, 9, 16], "small": [8, 9, 10, 13], "amount": [8, 9, 10, 13], "size": [8, 9, 11, 13, 16], "todai": [8, 9], "standard": [8, 9, 13, 14], "googl": [8, 9], "pep8": [8, 9], "habit": [8, 9, 10, 14], "serv": [8, 9], "standpoint": [8, 9], "keep": [8, 9, 10, 11, 12, 14], "side": [8, 9, 17], "larg": [8, 9, 10, 14], "rule": [8, 9], "taken": [8, 9, 10, 12], "feasibl": [8, 9], "split": [8, 9, 18], "harm": [8, 9], "eas": [8, 9], "cut": [8, 9, 19], "contain": [8, 9, 10, 11, 12, 13, 14, 18, 19], "liter": [8, 9], "longer": [8, 9, 10, 12, 14, 16], "string": [8, 9, 11, 13, 14, 18], "exce": [8, 9], "broken": [8, 9, 10, 11], "significantli": [8, 9], "increas": [8, 9], "hide": [8, 9], "notic": [4, 8, 9, 10, 11, 12, 13, 14], "meet": [8, 9, 10], "beyond": [8, 9], "break": [8, 9], "fine": [8, 9, 12], "fit": [8, 9], "syntact": 8, "element": 8, "delimit": [8, 9], "newlin": 8, "very_very_very_very_very_very_very_very_very_very_long_condit": 8, "another_very_very_very_very_very_very_very_very_very_very_long_condit": 8, "strlen": [8, 11], "100": [8, 9, 10, 11, 12], "short": [8, 9, 10, 12, 14], "bodi": [8, 9, 18], "indic": [4, 8, 9, 11, 12, 13, 18], "logic": [8, 9, 12, 13], "extra": [8, 9, 10, 12], "sparingli": [8, 9], "group": [8, 9, 12], "immedi": [8, 9], "parenthes": [8, 9], "chilog": 8, "info": [8, 13], "comma": [8, 9], "semicolon": [8, 13], "int": [8, 11], "0": [8, 9, 11, 12, 13], "parenthesi": [8, 9], "argument": [8, 9, 13, 14], "call": [8, 9, 10, 11, 12, 13, 14, 16, 17, 18], "bracket": [8, 9, 14], "arrai": [8, 11], "index": [8, 9, 13], "b": [8, 9, 11, 14, 18], "around": [8, 9, 10, 14], "align": [8, 9], "2": [4, 8, 9, 10, 11, 12, 13, 18], "long_vari": [8, 9], "surround": [8, 9, 10], "binari": [8, 9], "augment": [8, 9], "comparison": [8, 9], "boolean": [8, 9], "after": [8, 9, 11, 12, 14, 16, 17, 18], "keyword": [8, 9, 14], "switch": [8, 11, 12, 14], "5": [4, 8, 9, 11, 12, 14], "arithmet": [8, 9], "submit": [8, 9, 10], "hypot2": [8, 9], "derefer": 8, "dot": [8, 14, 18], "sam": 8, "node": 8, "null": 8, "compound": [8, 9], "discourag": [8, 9], "do_blah_th": [8, 9], "do_on": [8, 9], "do_two": [8, 9], "do_thre": [8, 9], "rather": [8, 9, 10, 13, 14, 18], "wors": [8, 9], "prioriti": [8, 9], "date": [8, 9, 11, 12, 13], "phrase": [8, 9], "sentenc": [8, 9, 10], "capit": [8, 9], "letter": [8, 9, 13, 18], "alter": [8, 9], "omit": [8, 9, 12], "built": [8, 9, 10, 12, 15, 16, 18], "filenam": [8, 9, 12, 14], "author": [8, 9, 11, 12], "associ": [8, 10, 12], "critic": 8, "unrecover": 8, "recover": 8, "high": [8, 10], "trace": 8, "low": 8, "multilin": 8, "condit": [8, 9], "fmt": 8, "printf": [8, 11, 14], "paramet": [8, 9, 10, 11, 12, 14], "noth": [8, 10, 12, 13], "void": 8, "loglevel_t": 8, "char": [8, 11], "implement": [8, 10, 11, 12], "declar": 8, "correspond": [8, 10, 18], "h": [8, 11, 18], "branch": [8, 9, 10, 12], "leap": [8, 9], "divis": [8, 9], "isn": [8, 9, 10, 12], "fals": [8, 9, 16], "400": [8, 9], "special": [8, 9, 10, 11, 12, 13, 14], "unnecessari": [8, 9], "fact": [8, 9, 10, 11, 12, 14], "distract": [8, 9, 14], "state": [8, 9], "obviou": [8, 9], "increment": [8, 9], "But": [8, 9, 11, 14], "compens": [8, 9], "border": [8, 9], "struct": [8, 10, 12], "simpl": [8, 12, 14], "typedef": 8, "complex": [8, 10, 12], "float": [8, 9], "real": 8, "imag": [4, 8, 12, 18], "imaginari": 8, "complex_t": 8, "ethernet_fram": 8, "pointer": [8, 10], "byte": [8, 11, 12, 13], "raw": 8, "ethernet": 8, "frame": [8, 10], "uint8_t": 8, "size_t": 8, "arriv": 8, "interface_t": 8, "in_interfac": 8, "ethernet_frame_t": 8, "snake_cas": [8, 9], "lowercase_with_underscor": [8, 9], "sum_of_squar": [8, 9], "print_happy_birthdai": [8, 9], "total_appl": [8, 9], "constant": [8, 9], "cap": [8, 9, 11], "pi": [8, 9], "max_client": [8, 9], "max_irc_msg_len": [8, 9], "local": [4, 8, 9, 11, 12, 14, 18], "awai": [8, 9, 10, 18], "assum": [8, 9, 11, 12, 13, 14, 18], "loop": [8, 9], "num_employe": 8, "10": [8, 9, 11, 12, 13], "60": [8, 9], "50": [8, 9], "data": [8, 9, 10, 12], "employee_id": 8, "hours_work": 8, "action": [8, 9, 19], "verb": [8, 9], "read_column_from_csv": [8, 9], "column_from_csv": [8, 9], "_t": 8, "denot": [8, 12], "repres": [8, 11, 12, 14], "new": [4, 8, 10, 11, 12, 13, 14, 15, 17, 18], "obscur": 8, "list_node_t": 8, "list_t": 8, "somehow": 8, "convei": [8, 9], "ctx_t": 8, "ctx_ptr_t": 8, "mutabl": [8, 9], "introduc": [8, 9, 13, 14], "bug": [8, 9, 10], "detect": [8, 9, 11, 16], "ensur": [8, 9, 10, 14], "forbidden": [8, 9], "defin": [8, 9, 10], "runtim": [8, 9], "reachabl": [8, 9], "Such": 8, "all_cap": [8, 9], "const": 8, "modul": [8, 9, 10, 13], "static": 8, "exclud": 8, "initi": [8, 13], "pass": [8, 9, 10], "produc": [8, 9, 10, 11, 14], "wikipedia": [8, 9], "entri": [8, 9, 18], "bad": [8, 9], "blog": 8, "That": [8, 11, 12], "deepli": 8, "nest": 8, "technic": [8, 13], "none": [8, 9], "reconsid": 8, "sprinkl": [8, 9], "littl": [8, 9], "throughout": [8, 9, 10, 12, 14], "earlier": [8, 9, 10, 11, 12, 14], "msg": 8, "510": 8, "draw": 9, "heavili": 9, "mage": 9, "simplifi": 9, "programm": 9, "guido": 9, "van": 9, "rossum": 9, "barri": 9, "warsaw": 9, "wrap": [9, 11, 12, 19], "impli": 9, "brace": [9, 16], "necessari": [9, 10, 11, 12, 18], "pair": [4, 9, 10, 12], "backslash": 9, "definit": 9, "spam": 9, "ham": 9, "egg": 9, "colon": 9, "slice": 9, "dict": 9, "blah": 9, "usag": 9, "docstr": 9, "multi": [9, 10, 12], "tripl": 9, "quot": 9, "def": 9, "hypotenus": 9, "solv": 9, "pythagorean": 9, "theorem": 9, "triangl": 9, "math": 9, "sqrt": 9, "camelcas": 9, "divvyst": 9, "rout": 9, "votingbooth": 9, "f": [9, 18], "element_of_list": 9, "ab": 9, "toler": 9, "distanc": 9, "2f": 9, "c1": 9, "c2": 9, "scale": [9, 10], "unit": 9, "compar": [9, 13], "greet": 9, "Be": 9, "explicit": 9, "present": 9, "sequenc": [9, 10, 11, 13], "tupl": 9, "empti": [4, 9, 12, 14, 18], "seq": 9, "len": 9, "adher": 9, "unus": 9, "compani": 9, "reli": [9, 10], "across": 9, "neither": [9, 13], "catch": [9, 10], "clean": [9, 10, 12], "good": [9, 10], "proper": [9, 13], "report": 9, "thing": [9, 11, 12, 13, 14], "might": [9, 11, 12, 14, 17], "watch": 9, "excess": 9, "flake8": 9, "pylint": 9, "packag": [9, 17], "py": [9, 13, 14], "intent": 9, "l": [9, 13, 14, 18], "item": [9, 16], "e741": 9, "ambigu": 9, "e231": 9, "e275": 9, "13": 9, "e225": 9, "c0325": 9, "paren": 9, "superflu": 9, "c0114": 9, "rate": 9, "00": [9, 11, 12], "automat": [9, 10, 11, 12, 14], "against": [9, 14], "enabl": [9, 18], "lint": 9, "gratuit": 10, "decis": 10, "context": [10, 14], "sport": 10, "individu": [10, 12], "reward": 10, "simplic": [10, 11], "involv": [10, 11], "lightli": 10, "nor": 10, "who": [10, 13], "happen": [10, 11, 12, 14], "quarter": 10, "togeth": [10, 11, 13], "commit": [10, 11], "spend": 10, "fair": 10, "ideal": [10, 11], "mayb": 10, "organ": [10, 14], "job": 10, "importantli": 10, "although": [10, 14], "nonetheless": 10, "anyon": 10, "perfectli": 10, "normal": [10, 12, 14], "aspect": 10, "succeed": 10, "easili": [10, 11], "reach": 10, "platform": [10, 18], "messeng": 10, "schedul": [10, 12], "compat": 10, "night": 10, "owl": 10, "morn": 10, "weekend": 10, "difficult": 10, "experi": [10, 11, 12], "roughli": 10, "fourth": 10, "almost": [10, 14], "major": 10, "fresh": 10, "intro": 10, "frustrat": [10, 14], "slowli": 10, "notabl": [10, 15], "experienc": 10, "express": 10, "mentorship": 10, "relationship": 10, "fulfil": 10, "hand": 10, "hold": [10, 14], "product": 10, "decid": [4, 10, 11], "chat": 10, "quick": [10, 12], "ins": 10, "settl": 10, "routin": 10, "regularli": 10, "overview": 10, "moment": [10, 18], "anyth": [10, 12, 15], "last": [10, 11, 12, 13, 16], "term": [10, 14], "holist": 10, "assess": 10, "told": [10, 11, 12], "had": [10, 14], "midterm": 10, "focu": 10, "dog": 10, "sick": 10, "vet": 10, "reassess": 10, "adjust": 10, "respons": 10, "somewhat": 10, "firm": 10, "agre": 10, "upon": 10, "closer": 10, "soon": 10, "becom": [10, 12, 14, 15], "tough": 10, "admit": 10, "frank": 10, "opportun": 10, "regroup": 10, "figur": [10, 14], "stai": 10, "estim": 10, "effort": 10, "season": 10, "mark": [10, 11], "imagin": [10, 14], "think": [10, 12], "hang": 10, "collabor": [10, 12], "sooner": 10, "later": [10, 12, 14, 18], "plow": 10, "reveal": 10, "didn": [10, 12], "spent": 10, "activ": 10, "instinct": 10, "tangibl": 10, "handsom": 10, "shouldn": 10, "demand": 10, "span": 10, "week": 10, "iron": 10, "pre": [10, 16], "crunch": 10, "razor": 10, "edg": 10, "reiter": 10, "fun": 10, "spread": 10, "marathon": 10, "structur": [10, 12], "model": 10, "compon": 10, "algorithm": 10, "strongli": [10, 12, 14], "draft": 10, "formal": 10, "turn": [10, 16], "Will": 10, "hash": [10, 12], "tabl": 10, "sketch": 10, "hit": [10, 13, 14], "dead": 10, "chose": 10, "realli": 10, "rippl": 10, "invalu": 10, "parallel": 10, "tempt": 10, "half": 10, "put": [10, 13], "unproduct": 10, "strategi": 10, "invari": 10, "hell": 10, "did": [10, 11, 12, 13, 14], "complic": [10, 11], "lose": [4, 10], "abil": [10, 13], "balanc": 10, "goal": [10, 14], "total": [10, 11, 12], "awar": 10, "final": [10, 11, 14, 15], "face": 10, "anticip": 10, "tricki": 10, "improptu": 10, "un": [10, 12], "treat": [10, 14], "glorifi": 10, "homework": [10, 11, 12], "submiss": 10, "caveat": 10, "claim": [10, 13], "tracker": 10, "helpfulli": [10, 12], "assigne": 10, "mileston": 10, "categor": 10, "scheme": 10, "p1": 10, "task4": 10, "made": [10, 11, 12], "remain": [10, 14], "similarli": [10, 11], "symbol": [10, 13], "somewher": 10, "merg": [10, 12], "master": [10, 11], "expert": 10, "unfortun": 10, "systemat": 10, "receiv": [10, 13], "feedback": 10, "pull": [10, 11, 12], "former": 10, "latter": 10, "rel": [10, 13, 14], "sens": [10, 11], "target": 10, "unclear": 10, "adequ": 10, "shy": 10, "rubberstamp": 10, "posit": 10, "construct": [10, 13], "bump": 10, "road": 10, "invest": 10, "lazi": 10, "unengag": 10, "mindset": 10, "blame": 10, "harmon": 10, "enough": [10, 11, 12, 16], "potenti": 10, "blew": 10, "resent": 10, "perceiv": 10, "sub": [10, 11], "par": 10, "smoothli": 10, "hope": 10, "statement": 10, "enjoi": 10, "partnership": 10, "nurtur": 10, "move": [10, 14], "wasn": 10, "met": 10, "too": [10, 12, 14], "ambiti": 10, "accomplish": 10, "root": [10, 13, 14], "caus": [10, 14], "blanket": 10, "repli": 10, "touch": [10, 12, 13], "yourselv": [10, 11], "stick": 10, "faith": 10, "unrespons": 10, "concern": [10, 12], "attent": 10, "aim": 10, "scratch": [10, 15], "surfac": 10, "subject": 10, "book": 10, "brian": 10, "fitzpatrick": 10, "ben": 10, "collin": 10, "sussman": 10, "sb": [10, 11], "94": 10, "topic": [11, 13, 14], "mostli": [11, 13], "readm": [11, 12], "classmat": 11, "hw1": 11, "directori": [4, 11, 12, 13, 17, 18], "overwrit": [4, 11, 12, 13], "partner": 11, "baz": 11, "save": [4, 11, 12, 13, 14, 16, 18, 19], "overwritten": [11, 13], "consolid": 11, "overhead": 11, "coordin": 11, "scenario": 11, "amongst": 11, "sake": 11, "diverg": [11, 12], "ones": [11, 14, 18], "concurr": 11, "aris": [11, 14], "far": [11, 12], "linear": 11, "main": [11, 12, 18], "loos": 11, "independ": 11, "histori": [11, 12], "manipul": [11, 14], "thu": [11, 13], "ordinarili": 11, "foobar": 11, "toe": 11, "28": 11, "22": [11, 13], "stdio": 11, "stdlib": 11, "500": 11, "fget": 11, "stdin": [11, 13], "aka": [11, 14], "memset": 11, "reset": [11, 12], "checkout": [11, 12], "asterisk": 11, "diagram": 11, "place": [11, 12, 14], "prevent": [11, 12], "fatal": 11, "upstream": 11, "haven": [11, 12, 14], "fortun": [11, 12], "enumer": [11, 12], "object": [11, 12], "count": [11, 12], "delta": [11, 12], "compress": [11, 12], "16": [11, 12], "thread": [11, 12], "367": 11, "kib": [11, 12], "reus": [11, 12], "visit": 11, "github_usernam": [11, 12], "track": [11, 12], "onward": 11, "convent": [11, 14], "stabl": [11, 17], "cleaner": 11, "destin": [11, 14], "854bff54": 11, "2a78570": 11, "a893dc8": 11, "fast": [11, 12], "delet": [11, 12, 13, 14], "a893dc8d2843b1f00f1f083cf7a32931aaef909": 11, "sat": 11, "mar": 11, "27": [11, 13], "08": 11, "21": 11, "2021": [11, 13], "0500": 11, "2a7857065581a0c003418c308cd0330b1021d32d": 11, "12": 11, "6b336a1d68b868da708c38bf3e1683155ae2967f": 11, "53": 11, "fairli": [11, 14, 15], "trivial": 11, "descend": 11, "trickier": 11, "buffer": [11, 12], "1000": 11, "accordingli": 11, "a72bbd0": 11, "250": 11, "e5ec414": 11, "artifici": 11, "me": 11, "statu": 11, "publish": [11, 12, 16], "unmerg": 11, "path": [11, 12, 13, 14, 18], "abort": [11, 12], "resolut": 11, "modifi": [11, 12, 13, 14], "branch1": 11, "branch2": 11, "300": 11, "your_nam": 11, "recogn": 11, "yet": [11, 12, 13, 18], "conclud": 11, "e58a1ba": 11, "e58a1baa2d6d408027a04d19ca322ef4ceaae9da": 11, "25": 11, "43": 11, "e5ec414fb5422487f3d0469583461c9a260432d9": 11, "15": 11, "a72bbd0ee5302906177cc9f62d4ff55e1a02c999": 11, "57": 11, "cmsc": [11, 12, 13, 14, 18], "12100": [11, 12, 13, 14], "prof": [11, 12, 13, 14], "numer": [11, 12, 13, 14], "19": 11, "22000": 11, "nutshel": 12, "maintain": 12, "record": 12, "checkpoint": 12, "revert": 12, "web": [12, 14], "servic": 12, "pack": [12, 16], "nice": [12, 13], "said": 12, "unix": [12, 13, 14], "wsl": [12, 14], "unfamiliar": [12, 13], "vi": 12, "desktop": [12, 13, 14, 16], "csil": [12, 14], "virtual": [12, 14], "detour": 12, "intric": 12, "websit": 12, "usernam": [4, 12, 13, 14, 18], "token": 12, "resid": 12, "keygen": [4, 12], "recal": [12, 13], "signifi": 12, "rsa": [4, 12], "id_rsa": [4, 12], "proce": 12, "skip": [4, 12, 14, 16, 18], "backup": [12, 13, 14], "mv": [12, 14], "bak": 12, "pub": [4, 12], "rest": [12, 14], "passphras": [4, 12], "confirm": [12, 14], "counterintuit": 12, "layer": [12, 16], "identif": [4, 12], "cbuus2femcirbltyv": [4, 12], "pgpbtnz0v235zvlykpowios9i": [4, 12], "randomart": [4, 12], "3072": [4, 12], "o": [4, 12, 13, 14, 18], "oo": [4, 12], "drop": [12, 16], "gpg": 12, "cat": [4, 12, 13, 14], "whole": 12, "clipboard": 12, "mous": [12, 14], "nativ": 12, "cmd": [12, 19], "nthbg6kxupjwgl7e1igocspromtxdcarlvikw6e5sy8": 12, "safe": 12, "hi": 12, "shell": [12, 13, 16, 18], "worri": 12, "unabl": 12, "brows": 12, "cd": [4, 12, 13, 14], "mkdir": [12, 13, 14], "folder": [12, 14, 17], "md": 12, "setup": [4, 12], "profil": [12, 16], "txt": [12, 13, 14], "hello": [12, 13, 14, 18], "world": [12, 13, 14], "bundl": 12, "forget": 12, "forgot": 12, "gracious": 12, "behavior": [12, 14], "3e39c15": 12, "pitfal": 12, "279": 12, "392555e": 12, "0c85752": 12, "unset": 12, "remedi": 12, "wrote": 12, "sync": 12, "furthermor": 12, "stage": 12, "restor": 12, "untrack": 12, "At": 12, "previous": [12, 13, 14], "pound": 12, "tild": [12, 14], "crash": 12, "By": [12, 13, 14], "1810c54": 12, "mode": 12, "100644": 12, "export": 12, "myfavoriteeditor": 12, "bashrc": 12, "favorit": [12, 17], "mcedit": 12, "cool": 12, "cumbersom": 12, "shortcut": [12, 18], "tree": [12, 14], "nowher": 12, "6": [12, 13], "728": 12, "e3f9ef1": 12, "laptop": [4, 12, 18], "clone": 12, "p": [12, 14, 18], "tmp": 12, "temp": 12, "unsur": 12, "unpack": 12, "312": 12, "5716877": 12, "messi": 12, "conflict": 12, "inspect": 12, "undo": 12, "remov": [12, 13, 14], "advic": 12, "magic": 12, "hopefulli": 12, "lingo": 12, "nearing": 12, "scrollabl": 12, "saw": [12, 14], "browser": [12, 14], "sha": 12, "9119c6ffcebc2e3540d587180236aaf1222ee63c": 12, "commit_sha": 12, "pars": 12, "9119c6f": 12, "complain": 12, "prefix": 12, "wget": [13, 14], "nv": [13, 14], "io": [13, 14], "dev": 13, "_static": [13, 14], "zip": [13, 14, 17], "unzip": [13, 14, 17], "plai": [13, 14], "pwd": [13, 14], "music": [13, 14], "pictur": 13, "templat": 13, "video": 13, "execut": [13, 14, 18], "equival": [13, 16], "act": [13, 18], "flexibl": 13, "white": 13, "space": 13, "captur": 13, "man": 13, "rm": [13, 14], "append": 13, "Not": 13, "python3": [13, 14], "my_echo": [13, 14], "stdout": 13, "stderr": 13, "bind": 13, "output2": 13, "patient": 13, "resum": 13, "capabl": 13, "program1": 13, "program2": 13, "Or": 13, "hadn": 13, "attempt": 13, "appropri": 13, "bunch": 13, "irrelev": 13, "combin": 13, "util": 13, "grep": 13, "mkdirat": 13, "mkdtemp": 13, "temporari": 13, "mkfontdir": 13, "font": 13, "mklost": 13, "lost": 13, "mount": 13, "extend": 13, "fil": 13, "mktemp": 13, "pam_mkhomedir": 13, "pam": 13, "dir": 13, "vgmknode": 13, "recreat": 13, "printenv": 13, "tail": 13, "displai": [13, 14], "replic": 13, "restrict": 13, "dictat": 13, "view": [13, 18], "member": 13, "distinct": 13, "determin": [13, 14], "within": [13, 14, 16, 18], "order": [4, 13, 14], "shorthand": [13, 14], "renam": 13, "w": [13, 18], "filepath": 13, "usr": 13, "bin": 13, "rwxr": 13, "xr": 13, "5486384": 13, "jan": 13, "privileg": 13, "dash": 13, "cp": [13, 14], "copy2": [13, 14], "ld": 13, "chmod": 13, "chown": 13, "chgrp": 13, "uo": 13, "rw": 13, "demonstr": 13, "testfil": 13, "aug": 13, "23": 13, "ug": 13, "deni": 13, "method": 13, "sum": 13, "overal": 13, "761": 13, "accustom": 14, "drive": 14, "doubl": 14, "mb": 14, "listen": 14, "3x3": 14, "grid": 14, "bottom": [14, 18], "box": [14, 17, 18], "bash": [14, 16, 18], "ksh": 14, "tcsh": 14, "concept": 14, "sampl": 14, "bear": 14, "mind": 14, "subdirectori": 14, "illustr": 14, "slightli": 14, "html": 14, "ident": 14, "respect": 14, "script": 14, "notat": 14, "angl": 14, "holder": 14, "suppli": 14, "desir": 14, "achiev": 14, "regard": 14, "remaind": 14, "fetch": 14, "explor": 14, "directorynam": 14, "stand": 14, "recurs": 14, "undon": 14, "terminologi": 14, "placehold": 14, "firstnam": 14, "lastnam": 14, "tediou": 14, "tire": 14, "instanc": 14, "await": 14, "old": 14, "twice": 14, "train": 14, "reduc": 14, "inevit": 14, "mistyp": 14, "variabl": 14, "wildcard": 14, "extens": [14, 18], "length": 14, "especi": 14, "fyi": 14, "manual": 14, "abstract": 14, "match": [14, 16, 17], "exclus": 14, "cpp": 14, "intuit": 14, "backspac": 14, "abbrevi": 14, "asid": 14, "launcher": 14, "runnabl": 14, "gcc": 14, "clang": 14, "momentarili": 14, "javac": 14, "unlik": 14, "indefinit": 14, "misbehav": 14, "send": 14, "interrupt": 14, "signal": 14, "occas": 14, "roll": 14, "backward": 14, "eras": 14, "Being": 14, "rerun": 14, "indispens": 15, "friendli": 15, "bell": 15, "whistl": 15, "varieti": 15, "fluent": 15, "conform": 16, "primarili": 16, "squar": [16, 18], "altern": [16, 18], "panel": [16, 18], "microsoft": 16, "marketplac": 16, "focus": 16, "commonli": 16, "lastli": 16, "render": 16, "json": 16, "120": 16, "workbench": 16, "colorcustom": 16, "editorrul": 16, "foreground": 16, "ff4081": 16, "curli": 16, "vertic": 16, "red": 16, "wide": 16, "emul": 16, "plu": 16, "pick": 17, "annot": 17, "blue": 17, "vscodeusersetup": 17, "ex": 17, "agreement": 17, "darwin": 17, "finder": 17, "navig": 17, "deb": 17, "rpm": 17, "14100": 18, "front": 18, "linux1": [4, 18], "linux7": 18, "linux2": 18, "j": 18, "linux3": 18, "linux4": 18, "linux5": 18, "linux6": 18, "z": [18, 19], "her": 18, "ar0r": 18, "hmmorgan": 18, "linux_serv": 18, "accur": 18, "rectangl": 18, "skew": 18, "retri": 18, "succe": 18, "unintention": 18, "reconnect": 18, "intention": 18, "gitbash": 18, "backtick": 18, "pane": 18, "consol": 18, "narrow": 18, "hidden": 18, "dropdown": 18, "palett": 18, "techstaff": 18, "howto": 18, "handi": 19, "opt": 19, "indent": 19, "outdent": 19, "toggl": 19, "carefulli": 4, "possibli": 4, "id": 4, "servernam": 4, "cs141": 4, "env": 4, "userprofil": 4, "authorized_kei": 4}, "objects": {}, "objtypes": {}, "objnames": {}, "titleterms": {"acknowledg": [0, 11, 12, 13, 14], "get": [1, 18], "help": 1, "report": 2, "an": [2, 4, 12, 14], "issu": [2, 10], "typo": 2, "outdat": 2, "inform": 2, "suggest": 2, "new": [2, 3], "content": 2, "other": 2, "The": [3, 14], "uchicago": [3, 7], "c": [3, 7, 8, 14, 18], "softwar": 3, "environ": 3, "complet": 3, "linux": [3, 4, 13, 14, 17, 18], "unix": 3, "access": [3, 4, 12], "instruct": 3, "laboratori": 3, "csil": 3, "remot": [3, 4, 18], "ssh": [3, 4, 12, 18], "virtual": 3, "desktop": 3, "machin": 3, "recommend": [3, 9], "code": [3, 8, 9, 10, 15, 16, 17, 18], "editor": [3, 14], "termin": [3, 14, 16, 18], "base": 3, "visual": [3, 15, 16, 17, 18], "studio": [3, 15, 16, 17, 18], "sublim": 3, "text": [3, 18], "jetbrain": 3, "id": 3, "instal": [4, 16, 17], "client": 4, "window": [4, 17], "10": 4, "offic": 5, "hour": 5, "ask": 6, "question": 6, "student": 7, "resourc": 7, "guid": [7, 8, 9], "style": [8, 9], "introduct": [8, 9], "layout": [8, 9], "indent": [8, 9, 16], "maximum": [8, 9], "line": [8, 9], "length": [8, 9], "blank": [8, 9], "whitespac": [8, 9], "express": [8, 9], "statement": [8, 9], "avoid": [8, 9], "extran": [8, 9], "follow": [8, 9], "situat": [8, 9], "place": [8, 9], "us": [8, 9, 10, 14, 18], "space": [8, 9, 16], "comment": [8, 9], "header": [8, 9], "function": [8, 9], "block": [8, 9], "inlin": [8, 9], "name": [8, 9], "convent": [8, 9], "type": 8, "definit": 8, "global": [8, 9], "variabl": [8, 9], "goto": 8, "magic": [8, 9], "number": [8, 9], "python": [9, 14], "program": [9, 14], "linter": 9, "work": [10, 11, 12, 13], "team": 10, "choos": 10, "your": [10, 12], "project": 10, "partner": 10, "": 10, "commun": 10, "some": 10, "manag": 10, "basic": [10, 12, 14], "start": 10, "earli": 10, "design": 10, "Not": 10, "divid": 10, "git": [10, 11, 12], "effect": 10, "track": 10, "review": 10, "when": 10, "thing": 10, "go": 10, "wrong": 10, "learn": 10, "more": 10, "about": 10, "tutori": [11, 12, 13, 14], "advanc": [11, 13], "collabor": 11, "branch": 11, "todo": [11, 17, 18], "merg": 11, "conflict": 11, "where": [12, 14], "should": [12, 14], "you": [12, 14], "do": [12, 14], "thi": [12, 14], "set": [4, 12], "up": [4, 12, 14], "creat": 12, "kei": 12, "upload": 12, "github": 12, "initi": [12, 18], "repositori": 12, "commit": 12, "add": 12, "revisit": 12, "statu": 12, "from": 12, "multipl": 12, "locat": 12, "discard": 12, "chang": [12, 13, 14], "unstag": 12, "look": 12, "log": 12, "run": [13, 14], "command": [13, 14], "sequenti": 13, "input": 13, "output": 13, "stream": 13, "redirect": 13, "exercis": [13, 14], "pipe": 13, "file": [13, 14, 18], "permiss": 13, "owner": 13, "group": 13, "shell": 14, "navig": 14, "system": 14, "show": 14, "directori": 14, "pick": 14, "materi": 14, "wild": 14, "card": 14, "asterisk": 14, "man": 14, "page": 14, "edit": [14, 18], "graphic": 14, "compil": 14, "cycl": 14, "java": 14, "tip": [14, 19], "trick": [14, 19], "keyboard": 14, "shortcut": [14, 19], "configur": 16, "languag": 16, "extens": 16, "v": 16, "ruler": 16, "maco": 17, "server": 18, "assign": 18, "connect": 18, "setup": 18, "disconnect": 18, "hint": 18, "troubleshoot": 18, "common": 19, "passwordless": [4, 18]}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.todo": 2, "sphinx": 60}, "alltitles": {"Acknowledgements": [[0, "acknowledgements"], [11, "acknowledgements"], [13, "acknowledgements"]], "Getting Help": [[1, "getting-help"]], "Reporting an Issue": [[2, "reporting-an-issue"]], "Typos": [[2, "typos"]], "Outdated Information": [[2, "outdated-information"]], "Suggesting New Content": [[2, "suggesting-new-content"]], "Other Issues": [[2, "other-issues"]], "The UChicago CS Software Environment": [[3, "the-uchicago-cs-software-environment"]], "Completely new to Linux/UNIX?": [[3, null]], "Accessing a UChicago CS Software Environment": [[3, "accessing-a-uchicago-cs-software-environment"]], "CS Instructional Laboratory (CSIL)": [[3, "cs-instructional-laboratory-csil"]], "Remote SSH Access": [[3, "remote-ssh-access"], [4, "remote-ssh-access"]], "Virtual Desktop": [[3, "virtual-desktop"]], "The CS Virtual Machine": [[3, "the-cs-virtual-machine"]], "Recommended code editors": [[3, "recommended-code-editors"]], "Terminal-based editors": [[3, "terminal-based-editors"]], "Visual Studio Code": [[3, "visual-studio-code"], [15, "visual-studio-code"]], "Sublime Text": [[3, "sublime-text"]], "JetBrains IDEs": [[3, "jetbrains-ides"]], "Office Hours": [[5, "office-hours"]], "Asking Questions": [[6, "asking-questions"]], "UChicago CS Student Resource Guide": [[7, "uchicago-cs-student-resource-guide"]], "C Style Guide": [[8, "c-style-guide"]], "Introduction": [[8, "introduction"], [9, "introduction"]], "Code layout": [[8, "code-layout"], [9, "code-layout"]], "Indentation": [[8, "indentation"], [9, "indentation"]], "Maximum Line Length": [[8, "maximum-line-length"], [9, "maximum-line-length"]], "Blank Lines": [[8, "blank-lines"], [9, "blank-lines"]], "Whitespace in Expressions and Statements": [[8, "whitespace-in-expressions-and-statements"], [9, "whitespace-in-expressions-and-statements"]], "Avoid extraneous whitespace in the following situations:": [[8, "avoid-extraneous-whitespace-in-the-following-situations"], [9, "avoid-extraneous-whitespace-in-the-following-situations"]], "Places to use spaces": [[8, "places-to-use-spaces"], [9, "places-to-use-spaces"]], "Comments": [[8, "comments"], [9, "comments"]], "Header Comments": [[8, "header-comments"], [9, "header-comments"]], "Function Comments": [[8, "function-comments"], [9, "function-comments"]], "Block Comments": [[8, "block-comments"], [9, "block-comments"]], "Inline Comments": [[8, "inline-comments"], [9, "inline-comments"]], "Naming Conventions": [[8, "naming-conventions"], [9, "naming-conventions"]], "Type definitions": [[8, "type-definitions"]], "Global variables": [[8, "global-variables"], [9, "global-variables"]], "goto statements": [[8, "goto-statements"]], "Avoid Magic Numbers": [[8, "avoid-magic-numbers"], [9, "avoid-magic-numbers"]], "Python Style Guide": [[9, "python-style-guide"]], "Programming recommendations": [[9, "programming-recommendations"]], "Linters": [[9, "linters"]], "Working in Teams": [[10, "working-in-teams"]], "Choosing your project partner(s)": [[10, "choosing-your-project-partner-s"]], "Communication": [[10, "communication"]], "Some project management basics": [[10, "some-project-management-basics"]], "Start early": [[10, "start-early"]], "Design": [[10, "design"]], "(Not) Dividing the work": [[10, "not-dividing-the-work"]], "Using Git effectively": [[10, "using-git-effectively"]], "Issue tracking": [[10, "issue-tracking"]], "Code reviews": [[10, "code-reviews"]], "When things go wrong": [[10, "when-things-go-wrong"]], "Learning more about working in teams": [[10, "learning-more-about-working-in-teams"]], "Tutorial - Advanced Git": [[11, "tutorial-advanced-git"]], "Working collaboratively with Git": [[11, "working-collaboratively-with-git"]], "Branches": [[11, "branches"]], "Todo": [[11, "id1"], [11, "id2"], [17, "id1"], [18, "id1"]], "Merging": [[11, "merging"]], "Merge conflicts": [[11, "merge-conflicts"]], "Tutorial - Git Basics": [[12, "tutorial-git-basics"]], "Where should you do this tutorial?": [[12, "where-should-you-do-this-tutorial"], [14, "where-should-you-do-this-tutorial"]], "Setting up SSH access": [[12, "setting-up-ssh-access"]], "Creating an SSH Key": [[12, "creating-an-ssh-key"]], "Uploading your SSH key to GitHub": [[12, "uploading-your-ssh-key-to-github"]], "Creating and initializing a repository": [[12, "creating-and-initializing-a-repository"]], "Creating a commit": [[12, "creating-a-commit"]], "git add revisited and git status": [[12, "git-add-revisited-and-git-status"]], "Working from multiple locations": [[12, "working-from-multiple-locations"]], "Discarding changes and unstaging": [[12, "discarding-changes-and-unstaging"]], "Looking at the commit log": [[12, "looking-at-the-commit-log"]], "Acknowledgments": [[12, "acknowledgments"], [14, "acknowledgments"]], "Tutorial - Advanced Linux": [[13, "tutorial-advanced-linux"]], "Running Commands Sequentially": [[13, "running-commands-sequentially"]], "Working with Input/Output Streams": [[13, "working-with-input-output-streams"]], "Redirection": [[13, "redirection"]], "Exercises": [[13, "exercises"], [13, "id1"], [13, "id3"], [14, "exercises"], [14, "id2"], [14, "id3"]], "Piping": [[13, "piping"]], "File Permissions": [[13, "file-permissions"]], "Exercise": [[13, "exercise"], [14, "exercise"]], "Changing Permissions, Owner, & Group": [[13, "changing-permissions-owner-group"]], "Tutorial - Linux Basics": [[14, "tutorial-linux-basics"]], "Terminal/Shell": [[14, "terminal-shell"]], "Navigating the File System": [[14, "navigating-the-file-system"]], "Show Files": [[14, "show-files"]], "Change Directory": [[14, "change-directory"]], "Pick Up the Tutorial Materials": [[14, "pick-up-the-tutorial-materials"]], "Useful commands": [[14, "useful-commands"]], "Wild Cards (using an asterisk)": [[14, "wild-cards-using-an-asterisk"]], "Man Pages": [[14, "man-pages"]], "Editing files": [[14, "editing-files"]], "Using a terminal editor": [[14, "using-a-terminal-editor"]], "Using a graphical editor": [[14, "using-a-graphical-editor"]], "The edit/compile/run cycle in the terminal": [[14, "the-edit-compile-run-cycle-in-the-terminal"]], "Python": [[14, "python"]], "C": [[14, "c"]], "C++": [[14, "id4"]], "Java": [[14, "java"]], "Tips and Tricks": [[14, "tips-and-tricks"]], "Terminating a program": [[14, "terminating-a-program"]], "Keyboard shortcuts": [[14, "keyboard-shortcuts"]], "Configuring Visual Studio Code": [[16, "configuring-visual-studio-code"]], "Install Language Extensions for VS Code": [[16, "install-language-extensions-for-vs-code"]], "Space Indentation": [[16, "space-indentation"]], "Rulers": [[16, "rulers"]], "Terminal": [[16, "terminal"]], "Linux": [[17, "linux"], [4, "linux"]], "Installing Visual Studio Code": [[17, "installing-visual-studio-code"]], "Windows": [[17, "windows"]], "macOS": [[17, "macos"]], "Tips & Tricks": [[19, "tips-tricks"]], "Shortcuts": [[19, "shortcuts"]], "Common Shortcuts": [[19, "id1"]], "Installing an SSH Client": [[4, "installing-an-ssh-client"]], "Windows 10": [[4, "windows-10"]], "Setting up Passwordless SSH": [[4, "setting-up-passwordless-ssh"]], "Using Visual Studio Code and SSH": [[18, "using-visual-studio-code-and-ssh"]], "Server assignments": [[18, "server-assignments"]], "Remotely connecting to the CS Linux servers": [[18, "remotely-connecting-to-the-cs-linux-servers"]], "Initial setup": [[18, "initial-setup"]], "Connecting": [[18, "connecting"]], "Getting Disconnected": [[18, "getting-disconnected"]], "Using the terminal": [[18, "using-the-terminal"]], "Editing text files": [[18, "editing-text-files"]], "Hint": [[18, null]], "Troubleshooting": [[18, "troubleshooting"]], "Passwordless SSH": [[18, "passwordless-ssh"]]}, "indexentries": {}}) \ No newline at end of file diff --git a/vscode/ssh.html b/vscode/ssh.html index 0ea78ce..74e2528 100644 --- a/vscode/ssh.html +++ b/vscode/ssh.html @@ -66,6 +66,7 @@
  • Using the terminal
  • Editing text files
  • Troubleshooting
  • +
  • Passwordless SSH
  • Configuration
  • @@ -315,6 +316,13 @@

    Troubleshootinghttps://howto.cs.uchicago.edu/techstaff:vscode

    +
    +

    Passwordless SSH

    +

    You will be prompted for your password in VSCode every time you connect +(or reconnect) to the CS Linux servers. If you would like to avoid this, +you can set up passwordless SSH. See the instructions in Setting up Passwordless SSH +section.

    +