# tjCSL User Guides

Welcome! Here, you can find guides that are used by students and staff at TJHSST when interacting with services provided by or supported by the TJHSST Computer Systems Lab.

If you have questions about the contents of this website, please contact the Student Systems Administrators at <sysadmins@tjhsst.edu>.


# CASA

A method for accessing library databases while off campus

### **What is CASA?**

CASA is a tool created by Google to allow students to access databases that TJ subscribes to while not on the TJ campus. Instead of using a proxy, CASA ties a token to your device when you access a database while on campus.

### **CASA Set Up**

![](https://1387849666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LOujpwpsPzbFQLluKss%2F-MhKjpKZ2MFYbhQSCpJr%2F-MhKkPKFAbbDgtJzgDH-%2Fimage001.jpg?alt=media\&token=fd810a44-a8d2-439e-8eff-2ecd9ea40f53)

**Step 1:** To initiate CASA you must be on campus and connected to the FCPS WiFi.\
**Step 2:** Use keywords to search and find an article through [Google Scholar](https://scholar.google.com/intl/en/scholar/help.html). You can select any article that is from a database to which the TJ library subscribes.\
**Step 3:** Click the link to access that article. CASA will record an affiliation between your device (laptop, mobile phone, desktop, etc.) and your institution (TJ). The full text article should open in a new window.

### CASA Use

The next time that you use the same device to visit Google Scholar - on or off campus - it will automatically allow you to access any articles that are from databases that TJ subscribes to. In addition, if you are signed in to your gmail account on the device that originally generated the token, gmail can port that token to any other devices (laptop, tablet, mobile phone, desktop, etc.) that are signed into the same gmail account.

### CASA Renewal

The off-campus access is valid for up to 120 days. To renew it, simply repeat the set up steps by visiting a database through Google Scholar while on campus again.


# Library Printing

Printing in the library (note: this is not Ion printing).

Printing is available in the library before school, at lunch *if* you are signed up for library lunch, in-between classes, and during 8th period *if* you are signed up for the library study hall. &#x20;

**There is no printing during instructional time.**

Black & white printing is free; color printing is 50 cents per side.

Instructions for printing are posted by the library's Ricoh printer in the far corner of the library. &#x20;

## Sending Print Job

1\.  Download your document and save as a PDF.

2\. Using FCPS Dell laptop or a library desktop: choose PRINT, use menu slider to choose FCPS CLOUDPRINT, then PRINT.

3\. Using FCPS Chromebook: choose PRINT, then use menu slider to choose MOBILITY PRINTING, then PRINT.

## Retrieving Print Job

1\. Go to Ricoh printer in the corner of the library.

2\. Log in using your FCPS student ID number.

3\.  Enter PIN.  First time using the printer?  Assign yourself a PIN using the NEED PIN button on the screen.

4\. Log in with your FCPS student ID number and PIN.

5\.  Follow instructions on printer screen.

6\.  Log out.

## Change or Reset a Forgotten Pin

1\.  On a computer connected to FCPS Wi-Fi, go to <https://papercut.fcps.edu>&#x20;

2\.  Log in using your FCPS credentials.

3\. Choose CHANGE DETAILS in the lower left corner of the screen.

4\. Create a new PIN.

*Information as of October 2024.*


# Proxy Setup (DEPRECATED)

Follow the directions for your correct operating system and/or browser in order to set up the proxy.

{% hint style="danger" %}
**DEPRECATED:** The tjCSL Library Proxy has been deprecated. The information on this site is preserved for documentation and historical purposes. Please check the Google CASA setup [here](/library/casa).
{% endhint %}


# Android

{% hint style="danger" %}
**DEPRECATED:** The tjCSL Library Proxy has been deprecated. The information on this site is preserved for documentation and historical purposes. Please check the Google CASA setup [here](/library/casa).
{% endhint %}

{% hint style="info" %}
You MUST have set your Ion/CSL password before you can set up your TJ Proxy.
{% endhint %}

## Configure Proxy

Pull down the menu area and then long press the wifi symbol to access your wifi settings.

![](https://1387849666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LOujpwpsPzbFQLluKss%2F-Lemgo2Z-V1F06WR4rgW%2F-LemkRKY85it8BXgpnhH%2Fandroid-1.png?alt=media\&token=868f97e0-1978-4de4-b9e6-69825e37a63a)

After that, long press the network you are connected to (Fairfax in this case) and then press manage network settings.

![](https://1387849666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LOujpwpsPzbFQLluKss%2F-LfW06KsTfXAryNSeU6s%2F-LfW2LyZYQMuFpuzuvYJ%2Fandroid-2.png?alt=media\&token=3609d38a-bb81-4ce9-9aef-20f87b1ebfdd)

Press `Show advanced options`

![](https://1387849666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LOujpwpsPzbFQLluKss%2F-LfW06KsTfXAryNSeU6s%2F-LfW3e2m9LeBZRiXcKsM%2Fandroid-3.png?alt=media\&token=3320190f-0f07-4275-9a45-f9f1c5af9095)

Scroll down and then do the following:

1. Change the Proxy to Auto-config
2. Put in <https://pac.tjhsst.edu> in the PAC web address text field
3. Press connect

![](https://1387849666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LOujpwpsPzbFQLluKss%2F-LfW06KsTfXAryNSeU6s%2F-LfW5ch922ewagJW2Vua%2Fandroid-4.png?alt=media\&token=eb855759-8438-4a94-82f7-0817f19340a1)

## Testing out the Proxy

Go to <https://sites.google.com/view/tjlibraryresources/ejournals-databases> to visit the library databases page.  If you are logged into your fcpsschools account on the browser you are using, go to <https://sites.google.com/fcpsschools.net/tjlibraryresources/databases-ejournals>  Visit the Access Science page.

If you haven't logged in already, you will then see a login prompt like this.

![](https://1387849666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LOujpwpsPzbFQLluKss%2F-LfW06KsTfXAryNSeU6s%2F-LfW6tjVbdCxXGYE5n3Q%2Fandroid-5.png?alt=media\&token=9617bc99-01f9-4270-860e-59c6f7da52c5)

If you have logged in successfully, you should see `Thomas Jefferson High School` after pressing the menu button.


# Mac OS X

{% hint style="danger" %}
**DEPRECATED:** The tjCSL Library Proxy has been deprecated. The information on this site is preserved for documentation and historical purposes. Please check the Google CASA setup [here](/library/casa).
{% endhint %}

{% hint style="info" %}
You MUST have set your Ion/CSL password before you can set up your TJ Proxy.
{% endhint %}

## Configure Proxy

Follow the screenshots below to configure your proxy on Mac OS X.

* Open "System Preferences"

![](https://1387849666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LOujpwpsPzbFQLluKss%2F-LPDxJsnIplIHAuDCOeT%2F-LPDyX4VpPZJn2E30EIU%2Fproxy1.PNG?alt=media\&token=e3dc1f34-e36e-497e-9f65-01dfe08e8665)

* Click on "Network"

![](https://1387849666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LOujpwpsPzbFQLluKss%2F-LPDxJsnIplIHAuDCOeT%2F-LPDy_RBt6YYm8-s-wXu%2Fproxy2.jpg?alt=media\&token=0abcc8d0-41b9-4619-9668-9a86066c5d9f)

* Click on "Advanced"
* Choose the "Proxies" tab
* Select "Automatic Proxy Configuration"
* Enter `https://pac.tjhsst.edu`

![](https://1387849666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LOujpwpsPzbFQLluKss%2F-LPDxJsnIplIHAuDCOeT%2F-LPDyhTJkuS_iezAPLrA%2Fproxy3.jpg?alt=media\&token=903787d7-59f9-450a-a5ba-868f9588f998)

* Click "OK"

## Help

If you encounter any issues while setting up the proxy, please see [Troubleshooting Proxy issues](/library/proxy-setup/troubleshooting-proxy-issues).


# Windows

{% hint style="danger" %}
**DEPRECATED:** The tjCSL Library Proxy has been deprecated. The information on this site is preserved for documentation and historical purposes. Please check the Google CASA setup [here](/library/casa).
{% endhint %}

{% hint style="info" %}
You MUST have set your Ion/CSL password before you can set up your TJ Proxy.
{% endhint %}

## Clear Cache

Follow the instructions to clear your Edge cache.

* Open Edge.

![](https://1387849666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LOujpwpsPzbFQLluKss%2F-LPDiU4wlRHW6LuGVk_W%2F-LPDjmwNlUHWpgMiF407%2Fproxy1.jpg?alt=media\&token=d90f000c-aacf-4240-a00f-595422ba4280)

* Click the menu button (three dots, horizontally).

![](https://1387849666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LOujpwpsPzbFQLluKss%2F-LPDiU4wlRHW6LuGVk_W%2F-LPDkl0rju34caO2kdzq%2Fproxy2.jpg?alt=media\&token=0d5fb311-a222-4a6a-9ff2-d3e41e6d1732)

* Click "Settings".

![](https://1387849666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LOujpwpsPzbFQLluKss%2F-LPDiU4wlRHW6LuGVk_W%2F-LPDkt6E6DEiBBcHBd96%2Fproxy3.jpg?alt=media\&token=e0056413-f7b0-48a9-a0be-af556d474f26)

* Click "Choose what to clear".

![](https://1387849666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LOujpwpsPzbFQLluKss%2F-LPDiU4wlRHW6LuGVk_W%2F-LPDl2NZFd_lntzJUSQb%2Fproxy4.jpg?alt=media\&token=19b3d836-ea39-486f-8b19-cf1a160d83a8)

* Make sure "Cached date and files" is checked. You may wish to uncheck the other unboxes.

![](https://1387849666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LOujpwpsPzbFQLluKss%2F-LPDiU4wlRHW6LuGVk_W%2F-LPDlDDp3s2Qk-XH6LAf%2Fproxy5.jpg?alt=media\&token=bd84f292-0da0-470d-982d-ac44b1181967)

* Click "Clear."

![](https://1387849666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LOujpwpsPzbFQLluKss%2F-LPDiU4wlRHW6LuGVk_W%2F-LPDlGQuH_pHvz6_xHkv%2Fproxy6.jpg?alt=media\&token=f505906e-e5ad-4022-bfee-e5f53e67bb52)

## Configure Proxy

Follow the screenshots below to configure the database proxy on Windows.

* Click the Start menu icon. The Start menu appears

![](https://1387849666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LOujpwpsPzbFQLluKss%2F-LPDlUgc1nHVVTjeKaHk%2F-LPDmhmm0nYYpPNRNnjt%2FProxy1.PNG?alt=media\&token=332df6d1-105b-4895-9002-eca3278be9d1)

* In the search field, search "internet options" and click on the first result

![](https://1387849666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LOujpwpsPzbFQLluKss%2F-LPDlUgc1nHVVTjeKaHk%2F-LPDmkSpE-daKOTTmXdi%2FProxy2.PNG?alt=media\&token=af08c820-346e-403b-82da-828e9e3e26bf)

* A window will open. Choose the "Connections" tab

![](https://1387849666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LOujpwpsPzbFQLluKss%2F-LPDlUgc1nHVVTjeKaHk%2F-LPDmpGDx5cDGdVc4op1%2FProxy3.PNG?alt=media\&token=930aac44-c249-4467-9dc1-1fde7ce06be2)

* In the "Connections" tab, click on "LAN Settings.

![](https://1387849666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LOujpwpsPzbFQLluKss%2F-LPDlUgc1nHVVTjeKaHk%2F-LPDmu6J4Wi-9jWFJblT%2FProxy4.PNG?alt=media\&token=471b6e34-3af9-4cf9-9f2b-d5d2bdc572c0)

* In the "LAN Settings" popup, check the box "Use automatic configuration script

![](https://1387849666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LOujpwpsPzbFQLluKss%2F-LPDlUgc1nHVVTjeKaHk%2F-LPDn11JxoQCVsYEKkR-%2FProxy5.PNG?alt=media\&token=615580be-750e-4052-9ee4-9cbcf380cd4c)

* In the "Address" field, type [`https://pac.tjhsst.edu/`](https://pac.tjhsst.edu/)

![](https://1387849666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LOujpwpsPzbFQLluKss%2F-LPDlUgc1nHVVTjeKaHk%2F-LPDn3skk5ZslWqUCwGn%2FProxy6.PNG?alt=media\&token=c0d82093-aa70-4f0e-aa86-da0723d2d621)

* Click "OK" and then "OK" again.

## Test It Out

{% hint style="info" %}
You MUST use the database link provided at <https://sites.google.com/view/tjlibraryresources/ejournals-databases>
{% endhint %}

* Open Edge
* Navigate to the Library Databases page and click "Access Science".

![](https://1387849666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LOujpwpsPzbFQLluKss%2F-LPDnEbArSBDOZVweeaP%2F-LPDtCXHfnLACjlgeYSe%2Fproxy1.PNG?alt=media\&token=3dd6aa76-f60a-487c-8303-6801d26ba5ce)

* You may be presented with a password prompt.  If so, type the username and password you use to login to Ion.

{% hint style="info" %}
If this is the first time you have connected to the proxy and do not see an authentication prompt, please ensure that you have completed the steps under "Clear Cache".
{% endhint %}

![](https://1387849666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LOujpwpsPzbFQLluKss%2F-LPDnEbArSBDOZVweeaP%2F-LPDtKU6PfEiYBAhHntn%2Fproxy2.PNG?alt=media\&token=7eaeff15-6b8b-4b11-b1e7-2b81a8a7d492)

* If you see the words "Thomas Jefferson High School", you have correctly set up the database proxy.

![](https://1387849666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LOujpwpsPzbFQLluKss%2F-LPDnEbArSBDOZVweeaP%2F-LPDtR7meYFNVcz8CXX6%2Fproxy3.PNG?alt=media\&token=ed3c6eba-2503-4a80-acf8-38f8a7bd14f9)

## Help

If you encounter any issues while setting up the proxy, please see [Troubleshooting Proxy issues](/library/proxy-setup/troubleshooting-proxy-issues).


# Chrome

{% hint style="danger" %}
**DEPRECATED:** The tjCSL Library Proxy has been deprecated. The information on this site is preserved for documentation and historical purposes. Please check the Google CASA setup [here](/library/casa).
{% endhint %}

{% hint style="info" %}
You MUST have set your Ion/CSL password before you can set up your TJ Proxy.
{% endhint %}

## Clear Cache

You need to clear your browser cache for the proxy to work.  Follow these instructions to do so.

1. &#x20;Enter `chrome://settings/clearBrowserData` into your search bar
2. Go to the basic tab and select `Cached images and files`
3. Select the `Clear Data` button.

![](https://1387849666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LOujpwpsPzbFQLluKss%2F-LemY18h634nCm5rip4E%2F-LemahpcrPO4RaAje7dq%2Fchrome-1.png?alt=media\&token=57933f7e-f302-4900-ba73-1f38989e9288)

## Configure Proxy

Follow the directions below to configure your proxy in Chrome.

1. Enter `chrome://settings/system` into your search bar
2. Select `Open proxy settings` and follow the specific instructions for your operating system.
3. Follow the specific instructions for your operating system to set up Automatic Proxy Configuration via the URL <https://pac.tjhsst.edu>

![](https://1387849666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LOujpwpsPzbFQLluKss%2F-LemY18h634nCm5rip4E%2F-Lemcudm0JN0QoxuaPh8%2Fchrome-2.png?alt=media\&token=b9a5617b-fb5a-42f6-a1f4-e39095278ffd)

{% content-ref url="/pages/-LPDieRjs0Bgdf3b2kuf" %}
[Mac OS X](/library/proxy-setup/macos)
{% endcontent-ref %}

{% content-ref url="/pages/-LPDiWndgHuFctj4o3Ru" %}
[Windows](/library/proxy-setup/windows)
{% endcontent-ref %}


# Firefox

{% hint style="danger" %}
**DEPRECATED:** The tjCSL Library Proxy has been deprecated. The information on this site is preserved for documentation and historical purposes. Please check the Google CASA setup [here](/library/casa).
{% endhint %}

{% hint style="info" %}
You MUST have set your Ion/CSL password before you can set up your TJ Proxy.
{% endhint %}

## Updating Firefox

This guide uses **Firefox Quantum (Firefox version 57.0 and above)**.  Menu designs changed and look very different from every version below that, so the guide will not accurately describe the steps you should take if your version is lower.

Steps to checking what version you have&#x20;

For Windows

1. Press `Alt`
2. Mouse over `Help`
3. Click `About Firefox`

For Macs

1. Click `Firefox` at the top left
2. Click `About Firefox`

![Windows Example](https://1387849666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LOujpwpsPzbFQLluKss%2F-Le9zlMzYZN3-mMP5SZ3%2F-LeA-Tza8o9M78UDQndi%2Fupdatefirefox-1.png?alt=media\&token=6ad4176e-2858-4478-a9ca-3df1826c7f61)

![Mac Example](https://1387849666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LOujpwpsPzbFQLluKss%2F-LeIjYrdEd9vQr7H3JJT%2F-LeIkivGPZoWzOdp9GAD%2FScreen%20Shot%202019-05-06%20at%209.40.44%20PM.png?alt=media\&token=6fedf642-81ab-4e79-a2a1-a14e08185206)

If your About Firefox window shows Firefox Quantum, you have a late enough version.  Otherwise, you will need to use this menu to restart and update Firefox until the About Firefox window shows Firefox Quantum.

![Version of Firefox used in this guide](https://1387849666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LOujpwpsPzbFQLluKss%2F-Le9zlMzYZN3-mMP5SZ3%2F-LeA-sY5hQ2h5Y9SsaDy%2Fupdatefirefox-2.png?alt=media\&token=aa6a75bb-f4a2-4eb0-a95c-f902d4de0909)

![An old version of Firefox ](https://1387849666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LOujpwpsPzbFQLluKss%2F-Le9zlMzYZN3-mMP5SZ3%2F-LeA-z8tpgFYwhN6QVsr%2Fupdatefirefox-3.png?alt=media\&token=a72392b4-6d7f-4f3a-acac-94862b7c714e)

## Clearing Cache

Follow the instructions/screenshots below to setup your proxy:

Open the menu by clicking the three bars at the top-right and click on `Options`

![](https://1387849666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LOujpwpsPzbFQLluKss%2F-Le4h7Igm_T4fetC0trx%2F-Le4jZKacfTKKgFp5vST%2Ffirefox-1.png?alt=media\&token=abcc2770-6bb4-44bd-807d-1ba66180a874)

Locate the search bar to the top right of the screen.

![](https://1387849666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LOujpwpsPzbFQLluKss%2F-LeIjYrdEd9vQr7H3JJT%2F-LeIlFGbEx-1MCt95wmx%2Ffirefox-2.png?alt=media\&token=777d56c2-8ec5-4fab-99c5-efecefae90a4)

Search `clear history` and select the `Clear History` button.

![](https://1387849666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LOujpwpsPzbFQLluKss%2F-LeIjYrdEd9vQr7H3JJT%2F-LeIlkmSq0Kc43Q96Xev%2Ffirefox-3.png?alt=media\&token=03d68ded-102c-4c64-9b32-5d1a69943327)

1. Change the time range to `Everything`.
2. Make sure that `Cache` is selected under the History header
3. Select `Clear Now`.

![](https://1387849666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LOujpwpsPzbFQLluKss%2F-LeIjYrdEd9vQr7H3JJT%2F-LeImSu8iLNjB_3evoVR%2Ffirefox-4.png?alt=media\&token=f61e3a1f-df5e-48ca-93fa-254f04064f40)

## Configure Proxy

Now, search `Network Settings` and select `Settings`.

![](https://1387849666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LOujpwpsPzbFQLluKss%2F-LeImWmT2a071iNNvsJK%2F-LeIn4YM1Y29u6eNXf1S%2Ffirefox-5.png?alt=media\&token=bee6ab23-1823-4cda-a93f-bcd79b638b5d)

1. Under the Configure Proxy Access to the Internet header, select `Automatic proxy configuration URL`.
2. Put `https://pac.tjhsst.edu` in the text field below.
3. Select `Reload` and then `OK`.

![](https://1387849666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LOujpwpsPzbFQLluKss%2F-LeImWmT2a071iNNvsJK%2F-LeInxooMsMBWVnnbLv5%2Ffirefox-6.png?alt=media\&token=6c1dec2c-b571-4f20-be4e-13ea31ff3b84)

## Test it Out

Navigate to the Library Databases page a <https://sites.google.com/view/tjlibraryresources/ejournals-databases>.  Under the Science Databases, select `Access Science`.

If the link provided showed up a s a 404, you are probably logged into your fcpsschools account.  Try <https://sites.google.com/fcpsschools.net/tjlibraryresources/databases-ejournals> instead.

![](https://1387849666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LOujpwpsPzbFQLluKss%2F-LeImWmT2a071iNNvsJK%2F-LeIpBmOxkU6HVX6XxMs%2Ffirefox-7.png?alt=media\&token=20c550f6-8f78-4132-b695-22b89694a49d)

{% hint style="info" %}
You may be presented with a password prompt. If so, type the username and password you use to log in to Ion.
{% endhint %}

![Authentication prompt to access the proxy](https://1387849666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LOujpwpsPzbFQLluKss%2F-LeImWmT2a071iNNvsJK%2F-LeIpR9e2Qb_mXhxBMU9%2Ffirefox-8.png?alt=media\&token=8cdccbb2-fb93-4fd4-ae73-13d31270954c)

Once you have successfully authenticated, you should see `Access via Thomas Jefferson High School` at the top right of the site.

![Successful connection to Access Science via the proxy](https://1387849666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LOujpwpsPzbFQLluKss%2F-LeImWmT2a071iNNvsJK%2F-LeIprqMqpTxkflaF_o0%2Ffirefox-9.png?alt=media\&token=d6139f50-859b-4d46-9bf3-b1e8815fa871)

If you encounter any issues while setting up the proxy, please see [Troubleshooting Proxy issues](/library/proxy-setup/troubleshooting-proxy-issues).


# Firefox for Android

{% hint style="danger" %}
**DEPRECATED:** The tjCSL Library Proxy has been deprecated. The information on this site is preserved for documentation and historical purposes. Please check the Google CASA setup [here](/library/casa).
{% endhint %}

For anyone wondering, yes, Firefox on Android is very different from desktop Firefox.  This is especially true for setting up the proxy.

## Clearing Cache

First, go to the menu by pressing the button with three vertical dots.

![](https://1387849666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LOujpwpsPzbFQLluKss%2F-LmvjQxdCqGczIGwgd-f%2F-LmvofzYdLQeWd96k8vW%2Ffirefoxandroid-1.png?alt=media\&token=e2f63845-8039-4548-92d9-ff9c6461f1c4)

Then go to the settings.

![](https://1387849666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LOujpwpsPzbFQLluKss%2F-LmvjQxdCqGczIGwgd-f%2F-Lmw9o1C1knROP1d08jB%2Ffirefoxandroid-2.png?alt=media\&token=a5f0e451-ba0d-45f1-a525-409b6b911a52)

On the settings page, select `Clear private data`.

![](https://1387849666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LOujpwpsPzbFQLluKss%2F-Lmz3hy2xYQI5cZDLTx-%2F-Lmz3uiCj_rVJbSoTaeO%2Ffirefoxandroid-3.png?alt=media\&token=816ac49f-c6ac-4f4b-a060-6ada0dcc8777)

Make sure that the cache option is checked and then select `clear data`.

![](https://1387849666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LOujpwpsPzbFQLluKss%2F-Lmz4P2n9Ydti1CVo40r%2F-Lmz5E7BPf8yTZtZ-KZU%2Ffirefoxandroid-4.png?alt=media\&token=5d4c804f-bed0-45db-a5aa-34b9f1397027)

Once you have cleared data, exit the settings screen and type in `about:config` in the address bar.

![](https://1387849666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LOujpwpsPzbFQLluKss%2F-Lmz6DP8wwXZwZpi0BwW%2F-Lmz6mSBx7mdPInpRKTb%2Ffirefoxandroid-5.png?alt=media\&token=e51739dd-0c46-45ac-b15b-d74338411388)

In this area, search for `network.proxy.type` and give it a value of 2.  This lets Firefox know that you want to use a pac file for your proxy.

![](https://1387849666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LOujpwpsPzbFQLluKss%2F-Lmz6DP8wwXZwZpi0BwW%2F-Lmz9miL1y1uNqeDZmDd%2Ffirefoxandroid-6.png?alt=media\&token=b1216e2a-9379-40f9-be2c-62ae27c84ad9)

Then search for `network.proxy.autoconfig_url` and set it to be `https://pac.tjhsst.edu`.

![](https://1387849666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LOujpwpsPzbFQLluKss%2F-LmzArp0GCfP3nzl8zUN%2F-LmzCjIl2meVaDS1OWny%2Ffirefoxandroid-7.png?alt=media\&token=165277f1-a944-44fe-a193-9c4bac57f7eb)

## Test it Out

To test this out, go to `accessscience.com`.  You should see a prompt for a username and password pop up.  When prompted, put in the login information you would use to access Ion.

![Example prompt](https://1387849666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LOujpwpsPzbFQLluKss%2F-LmzArp0GCfP3nzl8zUN%2F-LmzDMNGjc1u0Le66OJb%2Ffirefoxandroid-8.png?alt=media\&token=b0c02c5b-b321-4b65-a504-f7238ca2734c)

When you reach Access Science, press the menu button or the three horizontal lines and you should see Thomas Jefferson High School

![](https://1387849666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LOujpwpsPzbFQLluKss%2F-LmzArp0GCfP3nzl8zUN%2F-LmzENghmUYxKdEL8327%2Ffirefoxandroid-9.png?alt=media\&token=bdb6a9e6-4b71-4d06-8d4d-8b6273506754)


# Troubleshooting Proxy Issues

{% hint style="danger" %}
**DEPRECATED:** The tjCSL Library Proxy has been deprecated. The information on this site is preserved for documentation and historical purposes. Please check the Google CASA setup [here](/library/casa).
{% endhint %}

## On all operating systems:

1. Make sure you've cleared your cache as per the instructions for your browser/operating system.
2. When you are prompted to enter your username and password, make sure to enter the password you use to login to Ion.

## On Windows:

1. If you're using Chrome or Edge, try these steps:
   1. Open the Settings app.
   2. Navigate to Network & Internet > Proxy.
   3. Enable "Use setup script."
      1. Enter "<https://pac.tjhsst.edu/>" into the "Script address" box.
   4. Click "Save."
   5. Close Settings, reopen it, navigate back to the proxy settings, and make sure that the settings are still there.
   6. If the settings have been reset, then this is a known Windows issue. Unfortunately, the only confirmed solution is to [use Firefox](/library/proxy-setup/firefox), which allows you to use different proxy settings from the rest of the system.
      1. Temporarily disabling Windows Defender (and any other antivirus software you have installed) while you access databases *might* work.

If you require further assistance, please email <sysadmins@tjhsst.edu>. Please provide a detailed description of your issue, including your operating system/browsers, in order for us to better assist you.


# Using Ion OAuth

The ultimate guide to OAuth authentication through Ion.

{% hint style="info" %}
&#x20;You can create and manage OAuth applications at <https://ion.tjhsst.edu/oauth/applications>.
{% endhint %}

### What is Ion OAuth?

With the Django OAuth Toolkit, Ion supports accessing API and other resources via [OAuth2](https://oauth.net). This allows for applications to be written using the Ion API without the need to prompt for user credentials from within the application. Instead, access tokens are used to gain access to Ion API resources. This functionality enables you to have users authenticate to your website using their Ion account. This is especially useful for apps that are meant to serve the TJ community.&#x20;

### Register an Application

Go into [OAuth Management](https://ion.tjhsst.edu/oauth/applications) on Ion and click `Create Application`. Specify the following values in the form:

* Name
  * Some descriptive name for your application.
* Client Type
  * Choose `Confidential` if your app has a backend component and your server can store the client ID and secret securely.
  * Choose `Public` if your app is purely client-side and a copy of the credentials will be distributed publicly.
* Authorization Grant Type
  * Choose `Authorization code` if your client type is `Confidential`.
  * Choose `Implicit` if your client type is `Public`.
* Redirect URIs
  * Enter one or more URLs that your application will redirect back to after the authorization is complete.
* Algorithm
  * If this option exists, leave it at the default `No OIDC support`. Ion doesn't support OpenID.

### Requesting Authorization

Inside your application, redirect to the OAuth authorization endpoint to receive an authorization code. The url is [https://ion.tjhsst.edu/oauth/authorize/](https://ion.tjhsst.edu/oauth/token/). To access the API, exchange this code for a (temporary) access token. The URL is <https://ion.tjhsst.edu/oauth/token/>.

### Python

#### python-social-auth + Django

If you want to use `python-social-auth`, a plugin is available in the ion\_oauth package. You can get an older version [here](https://pypi.org/project/ion_oauth/) or download an updated version directly from GitHub [here](https://github.com/tjcsl/ion_oauth). \
\
For a Django project add `AUTHENTICATION_BACKENDS = ['ion_oauth.oauth.IonOauth2']` and define `SOCIAL_AUTH_ION_KEY` and `SOCIAL_AUTH_ION_SECRET` in your `settings.py` file. The `redirect_uri`s for Django projects should be "http\://\<site-url>/complete/ion/" and "http\://\<site-url>/complete/ion".

#### API Requests

For a Python client, use `requests` with `requests-oauthlib`. If running locally (without HTTPS), override the SSL requirement for OAuth2.

```python
import os
os.environ['OAUTHLIB_INSECURE_TRANSPORT'] = '1'
```

Create an OAuth2Session, with the `CLIENT_ID` and `REDIRECT_URI` you entered in the application form. Redirect the user to `authorization_url`.

```python
from requests_oauthlib import OAuth2Session
oauth = OAuth2Session(CLIENT_ID,
                      redirect_uri=REDIRECT_URI,
                      scope=["read","write"])
authorization_url, state = oauth.authorization_url("https://ion.tjhsst.edu/oauth/authorize/")
```

The user authenticates, approves the request, and is redirected to the callback URL specified in `redirect_uri`, with a "code" GET parameter.

```python
token = oauth.fetch_token("https://ion.tjhsst.edu/oauth/token/",
                          code=CODE,
                          client_secret=CLIENT_SECRET)
print(token)
{'refresh_token': 'XXX', 'access_token': 'XXX', 'expires_in': 36000, 'expires_at': 1455370143.573362, 'scope': ['read', 'write'], 'token_type': 'Bearer'}
```

At this point, a valid access token has been gained, and you can request API resources.

```python
try:
    profile = oauth.get("https://ion.tjhsst.edu/api/profile")
except TokenExpiredError as e:
    args = { "client_id": CLIENT_ID, "client_secret": CLIENT_SECRET }
    token = oauth.refresh_token("https://ion.tjhsst.edu/oauth/token/", **args)

import json
print(json.loads(profile.content.decode()))
{ 'ion_username': '2016jwoglom', ... }
```

After 36,000 seconds (1 hour), the token will expire; you need to renew it. This can be handled by putting API commands inside a try-except for a `oauthlib.oauth2.TokenExpiredError`, such as seen above. Alternatively, you can provide `auto_refresh_url=refresh_url, auto_refresh_kwargs=args` as additional arguments to OAuth2Session when it is created.

```python
args = { "client_id": CLIENT_ID, "client_secret": CLIENT_SECRET }
token = oauth.refresh_token("https://ion.tjhsst.edu/oauth/token/", **args)
```

### Node.js

You can use the [simple-oauth2](https://github.com/lelylan/simple-oauth2) library to perform authentication. Below is some sample code.

**Note**: This code will not work out of the box. Read the comments carefully to determine how to integrate it into your application.

```javascript
var simpleoauth2 = require("simple-oauth2");

// make sure these variables are set
var ion_client_id = process.env.ION_CLIENT_ID;
var ion_client_secret = process.env.ION_CLIENT_SECRET;
var ion_redirect_uri = process.env.ION_REDIRECT_URI;

var oauth = simpleoauth2.create({
    client: {
        id: ion_client_id,
        secret: ion_client_secret
    },
    auth: {
        tokenHost:     'https://ion.tjhsst.edu/oauth/',
        authorizePath: 'https://ion.tjhsst.edu/oauth/authorize',
        tokenPath:     'https://ion.tjhsst.edu/oauth/token/'
    }
});

// 1) when the user visits the site, redirect them to login_url to begin authentication
var login_url = oauth.authorizationCode.authorizeURL({
    scope: "read", // remove scope: read if you also want write access
    redirect_uri: ion_redirect_uri
});

// 2) on the ion_redirect_uri endpoint, add the following code to process the authentication
var code = req.query["code"]; // GET parameter
oauth.authorizationCode.getToken({code: code, redirect_uri: ion_redirect_uri}).then((result) => {
    const token = oauth.accessToken.create(result);

    // you will want to save these variables in your session if you want to make API requests
    var refresh_token = token.token.refresh_token;
    var access_token = token.token.access_token;
    var expires_in = token.token.expires_in;

    // log the user in
});

// 3) when making an API request, add the following header:
// Authorization: Bearer {{ INSERT ACCESS TOKEN }}

// 4) to refresh the access_token, use the following code
var token = oauth.accessToken.create({
    "access_token": access_token,
    "refresh_token": refresh_token,
    "expires_in": expires_in
});

if (token.expired()) {
    token.refresh((err, result) => {
        token = result;
        // the new access token
        var access_token = token.token.access_token;
    });
}
```


# Resetting Your Ion Password

You can reset your CSL - and by extension your Ion password - at https\://resetter.tjhsst.edu.

{% hint style="info" %}
For students, your Ion username consists of your graduation year, followed by your first initial, followed by your last name up to seven letters. If your last name is longer that seven letters, the remainder gets cut off. For instance, John Schinder - a student scheduled to graduate in 2016 - would have the username 2016jschinde.\
\
For staff, your Ion usernames are identical to your FCPS usernames.
{% endhint %}

{% hint style="warning" %}
Whenever you are prompted to sign into a Google account throughout this process, you MUST use your \<student-id>@fcpsschools.net address as a student or your @fcps.edu account if you are a staff member.
{% endhint %}

### Resetting Your Password

1. Browse to <https://resetter.tjhsst.edu>.
2. Log in with your FCPS Google account.
3. Follow the prompts to reset your password.

### Possible Errors

If you see a page that informs you that you have an invalid Google login, one of two situations are possible:

1. If you attempt to authenticate with a Google account that is not your FCPS account, you will get a message like the one above. Please log in with your FCPS Google account.
2. It is possible that your account has not fully been created. You will see a page indicating Please email <accounts@tjhsst.edu> with your FCPS Student ID and TJ username. If you don't know either, just include your first and last name and your graduation year.

If you encounter any other issues, please email <accounts@tjhsst.edu>.


# Ion Announcement Guidelines

Please consult these guidelines before requesting an Ion announcement.

The criteria for announcement posting may be periodically revised, but it includes the following:

* The announcement must not violate any FCPS policy.
* The announcement must have a direct relationship to sanctioned school activities.
* It must not be inconsistent with the principal's directives.
* The announcement should **not have typos**.
* No announcement may be posted on behalf of a club not registered with the Eighth Period Office.
* The announcement's content must also:
  * be of good taste
  * promote respectful behavior
  * use proper spelling/grammar
  * avoid excessive use of bolding, capitalization, or italicization
  * avoid use of copyrighted material without proper attribution
  * remain in compliance with CSL policies
  * not violate the law
* Announcements should strive to avoid unnecessary repetition in the content being announced. For example, while it's okay for an eighth period club to advertise their existence once, announcements concerning a club should not be made every week.
* When linking to external content, the linked content should be controlled by a trusted source, of good taste, and generally consistent with a school environment. Links should also not be broken, and these links should link to the intended destination.

Ultimately, the decision on whether to post an announcement rests solely in the approving Intranet administrators, subject to the principal's supervision.


# Large Group Attendance

This page describes the process for taking attendance for large groups through Ion.

## Setup

You should create a Google Form using your FCPS Google Drive. The form needs to follow the exact format pictured below and both questions should be required.

![](https://1387849666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LOujpwpsPzbFQLluKss%2Fuploads%2FaQrA2vX74Nel8J3vXyGz%2Fform.png?alt=media\&token=4c4f92c8-8274-48b0-822d-29b479061e37)

Click through the Google Form to open the spreadsheet of responses. Your students' responses will populate here. You must change the column headers to "Name" and "Email" as shown below. Capitalization is important and this process will not work if you do not change the column names.

![](https://1387849666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LOujpwpsPzbFQLluKss%2Fuploads%2FEZNyiUXIHb6IoFKzdFC7%2Fform2.png?alt=media\&token=5f400100-5b50-49de-b3ad-afb88a646d3b)

## During the Block

Post the link to the form you created. Make sure students know that they have to sign in with their FCPS emails to complete it and that they have to enter their first and last name as they appear in Ion. Additionally, emphasize that the email that they have to enter should be their @fcpsschools.net email.

## After the Block

Go back to the spreadsheet of responses and click File -> Download -> Comma separated values. Save the file where you will be able to find it later.

Then, go into the page on Ion where you usually take attendance and click "**Take Attendance with Google Meet CSV Report:**" Upload the spreadsheet file that you downloaded.

![](https://1387849666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LOujpwpsPzbFQLluKss%2Fuploads%2FXb2zp9kYSeorCcXWl5zG%2Fform3.png?alt=media\&token=7aa1da8f-790c-4ba3-a335-276a67c5ba81)

Ion will do the rest of the work and will check off the students that it finds in the uploaded file. It will notify you of any students that were in the form, but couldn't be found as a signup. This is probably indicative of a formatting error in the students' submission. You will still be able to manually check off students to rectify these issues.


# Ion Printing

Using the Printing service on Ion

## Printing

The Printing feature on Ion is a service that the CSL provides to students and staff member to be able to print to the 3 Syslab printers and to the 9 commons printers around the school. It's a service made available to students who don't use/have a school-provided laptop, use one of our 60+ workstations in the CSL, or needs to print something on-the-go.

The contact person for the printing service and associated infrastructure is [the Printing Lead](broken://pages/-LKawF93XlR59Em-5RiH#current-leads).

### Printers

We currently have 12 functioning printers around the school. Three of them are located in the Computer Systems Lab, with one in each room:

#### In the Syslab

* Room 202 Printer:
  * Model: HP LaserJet P3015
* Room 200c Printer:
  * Model: HP LaserJet P3015
* Room 200 Printer:
  * Model: HP LaserJet P3015

#### Around the School:

These printers were add to Ion in late 2023 as the demand for use of Ion printing has increased.

* Carver Commons Printer:
  * Model: HP LaserJet 4100
* Curie Commons Printer:
  * Model: HP LaserJet 4100
* Einstein Commons Printer:
  * Model: HP LaserJet 4100
* Faraday Commons Printer:
  * Model: HP LaserJet 4100
* Gandhi Commons Printer:
  * Model: HP LaserJet 4100
* Hopper Commons Printer:
  * Model: HP LaserJet 4100
* Newton Commons Printer:
  * Model: HP LaserJet 4100
* Tesla Commons Printer:
  * Model: HP LaserJet 4100
* Turing Commons Printer:
  * Model: HP LaserJet 4100

### Ion Printing

To Print from Ion:

1. Access the web interface at [ion.tjhsst.edu/printing](https://ion.tjhsst.edu/printing). You need to be on school wifi (`Fairfax`) to access the service.
2. Select the file you want to print. Please make sure that the file type is supported as well. Here are the ones that currently are supported by Ion:
   1. **.pdf**: Adobe PDF
   2. **.ps**: Adobe PostScript
   3. **.odt**: OpenDocument Text Document
   4. **.txt**: Plain Text
   5. **.doc** and **.docx** (not recommended; format may come as off. Would recommend converting it to a PDF): Word Document
3. Select the printer you want to print to. Choosing the one close by you is highly recommended.
4. Check to see how many pages you are printing. The maximum amount of pages you can print at once is 16.
5. Check if you want your documents double-sided and/or fit-to-page.
6. Print.

## Workstation Printing

Workstation Printing can be done by going to Ion, or printing directly from the command line. To Print from the command line:

1. Access the terminal.
2. Change directory to the file you want to print (not required but recommended).
3. **Recommended:** Check which printers are online and not disabled. You can use the command `lpstat -p` to see a list of printers and their status:

<pre><code><strong>printer Carver now printing Carver-26732.  enabled since Fri 05 Jan 2024 12:43:52 PM EST
</strong>        Connected to printer.
printer Curie now printing Curie-26437.  enabled since Fri 05 Jan 2024 12:41:44 PM EST
        Connected to printer.
printer Einstein now printing Einstein-26703.  enabled since Fri 05 Jan 2024 12:17:40 PM EST
        Connected to printer.
printer Faraday now printing Faraday-26555.  enabled since Fri 05 Jan 2024 12:56:01 PM EST
        Connected to printer.
printer Gandhi is idle.  enabled since Fri 05 Jan 2024 03:05:52 AM EST
printer Hopper now printing Hopper-26618.  enabled since Fri 05 Jan 2024 11:44:17 AM EST
        Connected to printer.
printer Newton now printing Newton-26468.  enabled since Fri 05 Jan 2024 12:05:57 PM EST
        The printer is not responding.
printer Room_200C disabled since Wed 03 Jan 2024 02:49:44 PM EST -
        Paused
printer Room_202 disabled since Tue 28 Nov 2023 11:02:06 PM EST -
        Paused
printer Tesla is idle.  enabled since Fri 05 Jan 2024 12:28:41 PM EST
printer Turing now printing Turing-26572.  enabled since Fri 05 Jan 2024 11:45:57 AM EST
        Connected to printer.
</code></pre>

4. To print to a specific printer, you can use this command `lp -d <PRINTER> <FILENAME>`, where you replace the `<PRINTER>` with the printer of your choice, and the `<FILENAME>` to file you want to print.

## Abuse Protection

Jobs are currently limited to 16 pages. Abuse of printing privileges may result in appropriate punishment as determined by the Faculty Sponsor and lead Sysadmins.

## Best Practices

* Check to see if the printer contains ink or paper, if one of the two are low or missing, please contact a Sysadmin.
* If you sent to the printer a print job (you have hit the 'Print' button on Ion) and the printer seems not to work, please check the following:
  * The tray: This is where paper is stored. For the printers in the Syslab, pull the tray located at the bottom of the printer. **DO NOT OPEN THE TRAY ON THE SIDE OF THE PRINTER!** For the printers located in commons, pull the bottom tray. If there is paper there, ask a Sysadmin about the printer. Do not send another print job.
  * Disablement/Maintenance: There are in some cases where a printer may be disabled or temporarily down for maintenance and with that case can only be changed by a Printing Lead or current Lead Sysadmins.
  * Jammed: If a printer is jammed, do not attempt to unjam the printer! This will most likely cause the printer to be damaged. Instead, ask a Sysadmin or a nearby teacher to assist.
* Highly Recommend to be present at the printer when printing.
  * If in some circumstances where you printed from a different room/common than the printer is in, please pick up your documents. If this is not done, you may be subjected to a possible removal of printing privileges.
* Please avoid printing multiple times unless you have picked up your first copies.


# Forwarding TJ Email

This guide will help you setup server-side email forwarding for your TJHSST email account using Ion. This filter will automatically keep a copy of your emails in your TJHSST inbox as a backup.

{% hint style="info" %}
For any replies to emails to appear sent from your tjhsst.edu email, you **must** send them from the webmail.tjhsst.edu interface. If you reply to forwarded emails your email address will appear sent from your forwarded-to email address.
{% endhint %}

## Setting Up Forwarding

To setup forwarding with Ion, click on [this link](https://mailforwarding.tjhsst.edu). If prompted, log in with Ion. Enter the **email you want to forward to, NOT your TJ email**. Please keep in mind that we cannot forward to @fcpsschools.net emails and the application will not allow you to specify one.

You should receive an email at the address you specified within 10 minutes. Follow the link in that email and enter the password that you use to log into Ion. Any emails sent to your @tjhsst.edu will be automatically forwarded to the specified address.


# Using a 3rd Party Client

This page has the configuration details for using your TJ email account with a 3rd party client, such as Apple Mail, Microsoft Outlook, or Thunderbird.

## IMAP

You will need to use the following settings for IMAP (sometimes called incoming mail) and SMTP (sometimes called outgoing mail):

* IMAP
  * Server: imap.tjhsst.edu
  * Port: 993
  * Encryption Type: SSL
  * Username / Password: TJ Username and Password
* SMTP
  * Server: smtp.tjhsst.edu
  * Port: 465
  * Encryption Type: SSL
  * Requires Auth: YES
  * Username / Password: TJ Username and Password

## POP3

Some clients do not support IMAP, but only support the older POP3 protocol. We do not support those clients, and we recommend you use an IMAP-capable client.


# Getting Started

Director documentation has been moved to Director. Access them [here](https://director.tjhsst.edu/docs/).


# Mathematica

This page describes how to download and install Mathematica for TJHSST students.

## What is Mathematica?

[Mathematica](http://www.wolfram.com/mathematica/) is the world's most powerful global computing environment. Ideal for use in engineering, mathematics, finance, physics, chemistry, biology, and a wide range of other fields, it makes possible a new level of automation in algorithmic computation, interactive manipulation, and dynamic presentation--as well as a whole new way of interacting with the world of data.

## Installing Mathematica at home

{% hint style="warning" %}
As of October, 2025, Mathematica is no longer approved software by FCPS, and thus the following instructions may no longer work.
{% endhint %}

To install Mathematica on a personally-owned machine, please use the following instructions

{% hint style="info" %}
These instructions require that you create a Wolfram Account using your TJ email address using [this link](https://user.wolfram.com/portal/registration.html).
{% endhint %}

1. Visit [this link](https://user.wolfram.com/portal/requestAK/0a05e6568a881b476bd5ea15444b100ff94cdd2e), sign in with your Wolfram Account, and fill out the form to request an activation key.
2. After you submit the form, your activation key will be displayed and will also be sent to your TJ email.
3. To download the installers for Mathematica, follow the link on either the activation key page or in the email with your activation key.
4. Download the appropriate installer for your platform (Windows, OS X, or Linux) and install it as you would any other application for your platform.
5. After you launch Mathematica, you will be prompted to enter the activation key you received and accept the Mathematica EULA.
6. Congratulations, you now have Mathematica!

{% hint style="info" %}
If you are experiencing difficulties with installing Mathematica, please email <mathematica@tjhsst.edu>.
{% endhint %}

## How do I use Mathematica?

{% tabs %}
{% tab title="Students" %}

1. Watch the ["Hands-On Start to Mathematica" tutorial screencast](http://www.wolfram.com/broadcast/screencasts/handsonstart/).
2. Explore the [Learning Center](http://www.wolfram.com/learningcenter/) for topics relevant to your interests.
3. Launch Mathematica, open the Classroom Assistant, and perform your first few computations.
4. You're now ready for the projects that faculty will assign.
   {% endtab %}

{% tab title="Teachers" %}

1. Sign up for the ["Overview of Mathematica for Education" seminar](http://www.wolfram.com/services/education/seminars/s01.html).
2. Explore the [Learning Center](http://www.wolfram.com/learningcenter/) for topics relevant to your interests.
3. Find some prebuilt examples and courseware from the [Demonstrations Project](http://demonstrations.wolfram.com/), [MathWorld](http://mathworld.wolfram.com/), and the [Wolfram Library Archive](http://library.wolfram.com/).
4. Assign the above steps in the student section to your classes as homework.
5. Sign up for the [Faculty Program](http://www.wolfram.com/services/facultyprogram/).
   {% endtab %}

{% tab title="Research" %}

1. Sign up for the ["Overview of Mathematica for Education" seminar](http://www.wolfram.com/services/education/seminars/s01.html).
2. Take [other seminars](http://www.wolfram.com/services/education/seminars/) relevant to your work.
3. Explore the [Learning Center](http://www.wolfram.com/learningcenter/) for topics relevant to your interests.
4. Go to the [Demonstrations Project](http://demonstrations.wolfram.com/) site to see what's possible.
5. Go to the [Wolfram Library Archive](http://library.wolfram.com/) for additional resources.
   {% endtab %}
   {% endtabs %}


# Matlab

This page describes how to download and install Matlab for TJHSST students

## What is Matlab?

[Matlab](https://www.mathworks.com/products/matlab.html) is a high-performance language used for technical computing. It combines a desktop environment tuned for iterative analysis and design processes with a programming language that expresses matrix and array mathematics directly. It includes a [Live Editor](https://www.mathworks.com/products/matlab/live-editor.html) for creating scripts that combine code, output, and formatted text in an executable notebook.

## Installing Matlab at home

To install Matlab on a personally-owned machine, use the following instructions:

1. Go to <https://www.mathworks.com> and create an account.&#x20;
   * Students must use their @tjhsst.edu email
   * Faculty must use their @fcps.edu email
2. Confirm your email and follow the link to the setup page
3. Select an appropriate Department
   * e.g Student
4. Associate with license number: 18332-25780-63027-21100-78245&#x20;
   * Make sure to include the dashes
   * This will complete your account setup
5. Once your account is created, click on My Account, and go to My Downloads
6. Download one of the listed versions for your operating system and install!
   * In the installation process you will be required to log in and verify your account and installation


# Cluster Introduction

## Purpose

The cluster was purchased by the Computer Systems Lab to serve the Parallel Computing and Computer Vision classes, but is available for usage by all TJ students and staff. Several senior research labs have expressed interest in using the cluster's resources for their own purposes. Academic jobs run on the cluster will receive priority allocation of resources, but non-academic jobs are accepted as well as long as they abide by the FCPS Acceptable Use Policy (Regulation 6410).

## Specifications

The full cluster consists of 12 HPC cluster nodes, 40 Borg nodes, and 1 dedicated GPU node (zoidberg). This setup occupies almost 3 full racks in the server room. The CSL obtained the 40-node Borg cluster from NASA through an educational grant. The Borg nodes are named borg\[1-40] consecutively and the HPC nodes are named hpc\[1-12]. The login node is `infoprism`

### SSH Access

You can directly access any available cluster node through `ssh`. To `ssh` into a cluster node:

1. `ssh` into `remote.tjhsst.edu` using your TJCSL username and password
   * `ssh 2021abagali1@remote.tjhsst.edu`
2. `ssh` into a cluster node
   * `ssh borg1` (or any available node) &#x20;

## Slurm

Speaking of SLURM (the Simple Linux Utility for Resource Management), Slurm is the utility used for job control and submission. Users log in to `infoprism`, run some simple commands, specifying what they want to run, how many resources it should have, priority, and other optional arguments, and SLURM takes care of allocating cluster resources for them, and provides job accounting so users know the status of their jobs. More information at our [Slurm docs](/research/using-infoprism).


# Slurm

This document describes how to properly use the CSL's 53-node computer cluster

If you aren't familiar with the layout of the HPC Cluster, it's highly recommended that you read the parent page, [Cluster,](/research/cluster-introduction) before delving into Slurm and running jobs, to avoid any confusion over terminology used here. After you have done so, please thoroughly read this page before using the cluster.

## What is Slurm?

Slurm is a free, open-source job scheduler which provides tools and functionality for executing and monitoring parallel computing jobs. It ensures that any jobs which are run have exclusive usage of the requested amount of resources, and manages a queue if there are not enough resources available at the moment to run a job. Your processes won't be bothered by anybody else's processes; you'll have complete ownership of the resources that you request.

## How do you use it?

Slurm is very user-friendly.  You don't necessarily have to have an academic use for the cluster, but keep in mind that any use of the HPC cluster is bound by the FCPS Acceptable Use Policy, just like the rest of TJ's computing resources, and academic jobs will have priority use of Cluster resources. All TJ students are granted cluster accounts in the beginning of the year. If you believe your cluster account does not exist or is broken email <sysadmins@tjhsst.edu>

{% hint style="info" %}
As of 2027, the easiest way to use Slurm is via the "Job Composer" tab at <https://ondemand.tjhsst.edu/> - see [Open OnDemand](/research/ondemand)for more information
{% endhint %}

### The Login Node

{% hint style="warning" %}
As of October 2025, the old login node, `infocube`, has been decommissioned and replaced with the new login node: `infoprism`.
{% endhint %}

To get started with running jobs on the Cluster you should connect to the **login node**, which is `infoprism` in this case. Any of the following commands while on `ras` or  TJ CSL computer will allow you to connect to `infoprism`:

```bash
ssh infoprism
```

After connecting to `infoprism` you will be placed into your Cluster home directory (`/csl/users/<username>`).  `infoprism` is a virtual machine and does not have nearly the amount of resources as the entire Cluster does, so **do not run programs directly on infocube**. Instead, you want to tell Slurm to launch a **job**

Jobs are how you can tell Slurm what processes you want run, and how many resources those processes should have. Slurm then goes out and launches your program on one or more of the actual HPC cluster nodes. This way, time consuming tasks can run in the background without requiring that you always be connected, and jobs can be queued to run at a later time.

### Viewing information about the Cluster

Our Cluster is split into two partitions: `compute` and `gpu`. All nodes that are in the `gpu` partition are in the `compute` partition, but not vice versa. Nodes in the `gpu` partition have GPUs installed which can be accessed through Slurm.

To see information about the nodes of the cluster, you can run `sinfo`. You should get a table similar to this one:

```
PARTITION AVAIL  TIMELIMIT  NODES  STATE NODELIST
compute*     up   infinite      1    mix hpc9
compute*     up   infinite      8  alloc hpc[1-8]
compute*     up   infinite      3   idle hpc[10-12]
gpu          up   infinite      1  down* hpcgpu
```

* `idle` means that that block of nodes is not currently in use, and will be immediately allocated to any job that requests resources.
* `alloc` means that the node is busy and will not be available for any other jobs until the job is complete
* `mix` means that some of the cores within the node are allocated and others are free. Because this is annoying, it is good etiquette to allocate your jobs in multiples of full nodes (24 cores)
* `down` means that the node cannot currently be used.
* If a state ends with `*` that means those nodes cannot have jobs scheduled on them (useless nodes)
  * i.e if a node is in STATE `idle*`, no jobs will be scheduled onto that node, even though it is marked as `idle`.

To see which jobs are running and who started them, run `squeue`. You should see a table like this:

```
JOBID  PARTITION   NAME     USER    ST      TIME   NODES  NODELIST(REASON)
 882    compute   mpirun  2017ggol   R     44:56    12     hpc[1-12]
 884    compute    echo   2017ggol  PD      0:00     6     (Resources)
```

`ST` stands for state. The two common states are `R`, which means the job is currently running, and `PD`, which stands for pending. If the job is running, the rightmost column displays which nodes the job is running on. If the job is pending, the rightmost column displays why the job is not yet running. In this example, job 884 is waiting for six nodes worth of resources because job 882 is running on all 12 of the available nodes.

### Creating Programs to Run of the HPC Cluster

The HPC Cluster is comprised of 64-bit Ubuntu Linux systems. While you can run any old Linux program on the Cluster, to take advantage of the parallel processing capability that the Cluster has, it's *highly* recommended to make use of a parallel programming interface. If you're taking or have taken Parallel Computing, you will know how to write and compile a program which uses MPI. If you aren't, <http://condor.cc.ku.edu/~grobe/docs/intro-MPI-C.shtml> is a good introduction to MPI in C. See below for instructions on running an MPI program on the cluster.

When compiling your program, it's best to connect to `infoprism` (the login node explained in the section above), so that your code is compiled in a similar environment to where it will be run. The login node should have all the necessary tools to do so, such as gcc, g++, and mpicc/mpixx.\
**WARNING:** compiling your program on a workstation/any other computer that is not part of the cluster and then transferring the generated executable over to the cluster **WILL NOT WORK**. This is called *CROSS COMPILATION* and it **WILL NOT WORK**. This is not a challenge, it is a statement of fact&#x20;

### Running a Job

And now the good stuff: running a job! Slurm provides 3 main methods of doing so:

#### `salloc`

[Documentation](https://slurm.schedmd.com/salloc.html)

Salloc allocates resources for a generic job and, by default, creates a shell with access to those resources. You can specify what resources you want to allocate with command line options (run `man salloc` to see them all), but the only one you need for most uses is `-n [number]` which specifies how many cores you want to allocate. You can also specify a command simply by placing it after all command line options (ex: `salloc -n 4 echo "hello world"`). This is currently the suggested way to run MPI jobs on the cluster. To run MPI jobs, first you must load the mpi module, as stated above (`module load mpi`). After that, simply run `salloc -n [number of cores] mpiexec [your program]`. Unfortunately, the displayed name of this job is, by default, just "mpiexec", which is not helpful for anyone. To give it a name, pass salloc (NOT mpirun) `--job-name=[name]`

```bash
$ salloc -n 4 bash # spawns a bash shell with access to 4 cores
$ salloc -n 4 mpiexec ./a.out # runs an mpi program (a.out) with 4 cores
```

#### `srun`

[Documentation](https://slurm.schedmd.com/srun.html)

This is the simplest method, and is probably what you want to start out with. All you have to do is run `srun -n (processes) (path_to_program)`, where `(processes)` is the number of instances of your program that you want to run, and `(path_to_program)` is, you guessed it, the path to the program you want to run. If your program is an MPI program, you should not use `srun`, and instead use the `salloc` method described above.

If your command is successful, you should see "srun: jobid (x) submitted". You can check on the status of your job by running `sacct`. You will receive any output of your program to the console. For more resource options, run `man srun` or use the official Slurm documentation.

#### `sbatch`

[Documentation](https://slurm.schedmd.com/sbatch.html)

`sbatch` allows you to create batch files which specify a job and the resources required for the job and submit that directly to Slurm, instead of passing all the options to `srun`. Here's an example script, and assume you save it as `test.sh`:

```bash
#!/bin/bash
#SBATCH -n 4
#SBATCH --time=00:30:00
#SBATCH --ntasks-per-node=2

srun (path_to_program)
```

You could then submit the program to slurm using `sbatch test.sh`. This would tell Slurm to launch the program at `(path_to_program)`, and to launch 4 tasks, limit the maximum execution time to 30 minutes, and require that no more than two tasks run on a specific system. Here are some other examples: [https://www.hpc2n.umu.se/batchsystem/examples\_scripts.](https://www.hpc2n.umu.se/documentation/batchsystem/basic-submit-example-scripts)


# Migrating from JupyterHub to OnDemand

This page details the changes between JupyterHub and Open OnDemand

Open OnDemand is the replacement for JupyterHub - see [Open OnDemand](/research/ondemand)for information on how to use it. This page details major changes that may need to be taken into account during the migration.

{% hint style="warning" %}
As of October 2025, JupyterHub is currently deprecated, and is planned to be removed in January 2026.

For any questions, or to request an extension, please email <sysadmins@tjhsst.edu>.
{% endhint %}

## Packages Upgrades

The first major change is the Ubuntu version upgrades - the nodes are now running Ubuntu 24.04! This does mean that any virtual environments or global installations using the global python from Ubuntu 20.04 or 22.04 will now be broken, and have to be recreated. Additionally, it does imply upgrades to versions of packages like `CMake` and `OpenCV` which may require small tweaks in lesson plans or handouts.

Our recommendation for recreating these environments is to use `pixi`, so that future Ubuntu upgrades will not break the environment. In order to create a `pixi` environment, run the following commands:

```bash
cd ~/your-environment-directory
pixi init
pixi add "python==3.13" # or whatever version of python you want to pin to
pixi add "name of your package" "name of your other package"
```

Note that by default, `pixi` uses `conda-forge` to install dependencies. To install packages from [PyPI](https://pypi.org/), use the `--pypi` flag when running `pixi add`.

Additionally, the default environments for Physics, Machine Learning, Octave, and Quantum Computing have been upgraded to use newer versions of their packages. If you encounter a package missing that existed on JupyterHub, please contact <sysadmins@tjhsst.edu>.

## No More Global Packages

### Removal of Conda Environments

Conda has been phased out of Jupyter, and instead replaced with [Pixi](https://pixi.sh/). As such, the old commands like `conda activate physics` will no longer work. Instead, they have been replaced with the environments mentioned in the next section.

### Lmod Environments

JupyterHub had many packages that were installed globally, and as such could be run in the terminal without activating any environment. Starting with Ubuntu 24.04, this is no longer the case, and users must activate an environment to use any specific packages. We use [Lmod](https://lmod.readthedocs.io/en/latest/010_user.html) to manage environments. In the following, a brief overview of the commands are listed.

To see a list of available environments, run

```bash
module avail
```

For more information on a specific module, run either of these commands:

```bash
module whatis "name of module, e.g. physics"
module show "name of module, e.g. ml"
```

To load an environment - taking the "physics" environment as an example, run:

```bash
module load physics
```

After activating a module, the packages inside `physics` will be accessible (for example, try running `python3 -c "import matplotlib"`).

To deactivate the environment, the command is:

```bash
module unload physics
```


# Open OnDemand

This document describes how to use TJ's Open OnDemand instance

## What is Open OnDemand?

[Open OnDemand](https://openondemand.org/) is how you can access TJ's Cluster. It contains many different applications within it, including JupyterLab, a fully-online IDE that is very similar to Google's Colab interface. Additionally, it also contains other IDEs for other programming languages, including a fully online VS Code via Codeserver! There are also plans to add more IDEs, such as RStudio and/or MATLAB in the near future.

## How do I open an Application?

TJ's OnDemand instance is available at[ https://ondemand.tjhsst.edu](https://ondemand.tjhsst.edu/). The first time you load the page, it may take a minute or two, and you will be redirected to Ion to authenticate. Then you will be presented with a screen that looks like this:

<figure><img src="https://1387849666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LOujpwpsPzbFQLluKss%2Fuploads%2FFMM9SG5KfDEhZtpxRwgz%2Fimage.png?alt=media&amp;token=267bb81a-375d-4cb0-b837-7d85d8cc06de" alt=""><figcaption></figcaption></figure>

Here, choose the application you want. In the following, we assume you choose Jupyter. You should then be asked for a Job Profile, with the following options:

* Default (4 CPUs, 8GB RAM)
* Compute (8 CPUs, 16GB RAM)
* 1 GPU (8 CPUs, 16 GB RAM, 1 GPU)
* 2 GPUs (8 CPUs, 16 GB RAM, 2 GPUs)
* 4 GPUs (8 CPUs, 16 GB RAM, 4 GPUs)

Please only choose what you need. Depending on usage, it may take longer to spawn instances for higher resource allocations, and others may be prevented from using resources allocated to you if you are not using them.

You will then be placed in a queue to wait for your own server to spawn. Our instance is configured such that your server may be spawned on one of 53 different machines. Even though your server is spawned on random machines, all your files are stored in a common location:  `/csl/users/<username>`.&#x20;

The page will automatically update and show you the following screen once it has loaded:

<figure><img src="https://1387849666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LOujpwpsPzbFQLluKss%2Fuploads%2F94ysmipaKAlxavbkGr1P%2Fimage.png?alt=media&amp;token=b57806ca-fe77-4828-a993-fb62abc8cafb" alt=""><figcaption></figcaption></figure>

At this point, click on the blue "Connect to Jupyter" button to start the Jupyter Lab session.

## Advanced Features

### Python Interfaces for JupyterLab

After logging in, you may be greeted with a "Launcher" tab. This tab will have multiple options, including:

* Python Notebook
* Python Console
* Terminal

The Python Notebook and Python Console are two separate interfaces, and you may experiment with either of them.&#x20;

![As you see in the top two rows, the options "Notebook" and "Console" are available. Notice how they are both named "Python (default)"](https://1387849666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LOujpwpsPzbFQLluKss%2F-MHPVxhtfS8Wn71ZqyCI%2F-MHPZPLzEuM7d1h_lKjT%2Flauncher.png?alt=media\&token=549fab97-dd36-4c95-83e1-3774fd2b453e)

Both of these Python interfaces are based in the "default" Python environment, meaning they have the default packages. In most cases the default packages will suffice, but if you need to install custom packages read the [#creating-pixi-environments](#creating-pixi-environments "mention") sections.&#x20;

### Activating Ready-made Environments

The (amazing) Sysadmins provide everyone with a set of predefined environments on the launcher for different purposes (e.g. Physics, Quantum Computing, Computer Vision, etc). To activate these environments while using the terminal, you must run the following command:

```bash
module load <name of environment>
```

Note that `<name of environment>` should be replaced with the name of an environment. For example, to activate the physics environment, run:

```bash
module load physics
```

To see a list of all available modules, run:

```bash
module avail                       # see all available modules
module show <name of environment>  # more details information about a specific module
```

To undo the loading of a module, simply run:

```bash
module unload <name of environment>
```

### Creating Custom Pixi Environments

Both the Python Notebook and Console are backed by [Pixi](https://pixi.sh/latest/) environments. Familiarize yourself with Pixi environments before reading on. If you're familiar with `conda`  environments, Pixi is a faster conda with more features.

To create a personal custom Pixi environment, do the following: on `infoprism` or any cluster node run the following in your home directory (`/csl/users/<your_csl_username>`)

```bash
pixi init my_personal_environment
cd my_personal_environent
pixi add ipykernel "python>=3.13"
```

`my_personal_environment` can be replaced with whatever you want.

After creating the Pixi environment, activate it:

```bash
pixi shell
```

Finally, add the environment to JupyterLab:

```bash
python3 -m ipykernel install --user --name "my_env" --display-name "My Env"
```

The `--name` and `--display-name` parameters can be anything you wish.

After running the previous commands, your launcher should now look like this:

![Notice how a second option for both Notebook and Console is now available. The names match the "--display-name" parameter in the previous step.](https://1387849666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LOujpwpsPzbFQLluKss%2F-MHPaTn9IbTM3dy6bdBi%2F-MHPasGtxc7Nrb0pQVAA%2Fnew_launcher.png?alt=media\&token=a71be148-9802-4b2e-aa7e-cab2180ceb24)

Now you have created a personal environment you have total control of. You may use `pixi` to install any custom packages you wish. Be sure to click on your new Python Notebook/Console option (not the default option) if you wish to access your custom environment.

### Removing Environments

{% hint style="danger" %}
Removing environments is a permanent action and cannot be reversed!
{% endhint %}

Removing the Pixi environment is simple:

```bash
rm -rf /csl/users/<username>/my_personal_environment
```

Removing the entry is a little more involved:

```bash
rm -r /csl/users/<username>/.local/share/jupyter/kernels/<name>
```

* The `<name>` parameter must match the `--name` parameter passed to the `python -m ipykernel ...` step, **NOT --display-name**! You may also `ls` around in this directory to find your matching environment and then `rm -r` the directory
* After removing the directory, reload JupyterHub and the entry will now be removed.


# QIIME2

This document describes how to use qiime2 and other biology packages on JupyterHub and the Cluster

## Disclaimer

Before working with JupyterLab and the Cluster, it is **highly** recommended that you read all the previous articles on the [Cluster](/research/cluster-introduction), [Slurm](/research/using-infoprism), and [OnDemand](/research/ondemand). Running into the Cluster without knowing how the various features work will not be an enjoyable experience for you.

## Running Qiime2

### Logging in&#x20;

1. Create a JupyterLab session on OnDemand (see [OnDemand](/research/ondemand))
2. You will be placed into a queue until a computer is allocated to you (one of 40+ machines)
3. Once logged in, select "File > New > Terminal" this will give you a terminal on the machine you are n
   * This is the same effect as Running `ssh [Ion username]@remote.tjhsst.edu` and then `ssh [computer]` from there.

### Activating qiime2

`qiime2` and related packages are installed in the `qiime2` module. This environment can also be accessed through JupyterLab with the "Console" and "Notebook" options (Python only). To access `qiime2` from the terminal run the following:

```bash
module load qiime2
```

Now you can run `qiime` to access Qiime2

### Qiime2 Through Jupyter

After accessing Jupyter, you should see the following on the "launcher":

![Notice the Qiime2 options in Notebook and Console. Also notice the R(qiime2) options](https://1387849666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LOujpwpsPzbFQLluKss%2F-MI_LhhqGBnvsJbNBbEi%2F-MI_Q7uMwKe1Rxy5Wbyw%2FScreenshot_20201001_142837.png?alt=media\&token=b9feaea7-eac1-4c4e-b6f1-842d1cc0bb50)

The `qiime2` options will spawn a Python Notebook or Console depending on what you choose. The `R(qiime2)` will spawn an R Notebook or Console depending on what you choose.


# Visual Studio Code (VS Code)

Some Frequently Asked Questions (FAQs) about the VS Code offered on OnDemand

The following FAQ's assume that you can open a VS Code session on OnDemand. For information on how to do this, check out the [Open OnDemand](/research/ondemand)page.

## How can I open a terminal?

At the bottom of your screen, you should see a solid bar with icons, the keyboard layout, and a few other pieces of information (although the exact color scheme may vary)

<figure><img src="https://1387849666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LOujpwpsPzbFQLluKss%2Fuploads%2FCxCcKUwv6odsSTmDDgxX%2Fimage.png?alt=media&amp;token=73afd834-887d-46b3-9303-513a1a7f4a9a" alt=""><figcaption></figcaption></figure>

To open a terminal, drag the top of this bar upwards

<figure><img src="https://1387849666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LOujpwpsPzbFQLluKss%2Fuploads%2FvpdUzvUytgW9cKahkKd8%2Fimage.png?alt=media&amp;token=f4e71ea4-18e5-4b9a-83a6-69c9d9d6720d" alt=""><figcaption></figcaption></figure>

## How can I configure hidden files?

Some files (like `.git`, or other "dotfiles") are not meant to be shown. To prevent these files from showing, go to "Files ⇾ Preferences ⇾ Settings" and search for the `files.exclude` option. Then, add the following patterns:

```
**/__pycache__/
**/.*
```

This will hide by default any files with a name starting with a period `.`, and also folders named `__pycache__` (which contains compiled python byte code). If you would like to add other patterns, note that this setting uses a glob syntax and not regex.


# Zoidberg

## What is Zoidberg

Zoidberg is a very powerful server with **4 NVIDIA Telsa K80** GPUs. It is part of the HPC Cluster in name and location only. It's treated as mostly separate, and can be used outside of [Slurm](/research/using-infoprism). Zoidberg is by far the most powerful HPC node as well, potentially the most powerful machine in the entire CSL.

It can be used to run large machine learning projects that require a lot of power.

## Accessing Zoidberg

First, ssh into TJ's remote access server, using your TJ Username (e.g. 2021jdoe)

```
ssh tj-username@remote.tjhsst.edu
```

Afterwards, ssh into zoidberg.

```
ssh zoidberg
```

## Conda

To run machine learning projects with python, it is recommended to set up virtual environments for each project (so each project can use different versions of python packages if needed).&#x20;

To achieve this, it is best to use Conda on the Zoidberg environment.

Conda is a package management tool that is pretty powerful. If you want to learn more about it, here are the docs for [Conda](https://docs.conda.io/projects/conda/en/latest/).

## How to use Conda

### Creating a new environment

```
conda create -n VENV_NAME python
```

### Activating a new environment

```
conda activate VENV_NAME
```

### Deactivating a new environment

```
conda deactivate
```

### Installing a package

```
conda install PACKAGE_NAME
```


# tmux

How and why you should use tmux to run your jobs.

## What is tmux

"**tmux** is a [terminal multiplexer](https://en.wikipedia.org/wiki/Terminal_multiplexer) for [Unix-like](https://en.wikipedia.org/wiki/Unix-like) [operating systems](https://en.wikipedia.org/wiki/Operating_system). It allows multiple [terminal](https://en.wikipedia.org/wiki/Computer_terminal) sessions to be accessed simultaneously in a single window. It is useful for running more than one [command-line](https://en.wikipedia.org/wiki/Command-line_interface) program at the same time. **It can also be used to detach** [**processes**](https://en.wikipedia.org/wiki/Process_\(computing\)) **from their controlling terminals, allowing** [**SSH**](https://en.wikipedia.org/wiki/Secure_Shell) **sessions to remain active without being visible.**" - Wikipedia

In other words, tmux allows you to start a session to run your job and then exit the terminal window without killing your process.&#x20;

## Creating a new tmux session

```
tmux new -s "name"
```

This will create (and open) a new tmux session with the given name. In the session, you can then run your job the way you normally would over ssh.&#x20;

## Detaching a tmux session

Detaching the session allows you to close your ssh connection (and then close the terminal) **without** killing the process running in the tmux session.&#x20;

The session can be detached by clicking control-b and then typing a d.

## Attaching a tmux session

After sshing back into the remote server, to "re-open" or attach a tmux session, use the following command. This can be used to see if your process finished running and/or the output of the process.&#x20;

```
tmux attach-session -t "name"
```

## Killing a tmux session

After your process finishes running in the tmux session, you can then kill it off with the following work.&#x20;

```
tmux kill-session -t "name"
```

This will close off any process running in the session, so make sure that your job is done.&#x20;

## Listing all active sessions

```
tmux ls
```


# FCPS Linux Wi-Fi Setup

Setup a Linux device on the FCPS network using Cloudpath

{% hint style="warning" %}
All content in this article is shared for informational and educational purposes only. Use of any code or procedures described is done at your own risk. TJCSL assumes no liability for any errors or adverse effects that may result from the use of the information provided.
{% endhint %}

Firstly, you'll want to connect to the `FCPSonboarding` network using your network manager of choice. Then, depending on your specific setup, you may need to go to `http://www.neverssl.com` or [this link](https://wifienrollment.fcps.edu/enroll/FairfaxCountyPublicSchools/Production/process#) to see the captive portal below. If FCPSonboarding isn't working for you, click the second link above on a known-working network (possibly your hotspot, during lunch).

<figure><img src="https://1387849666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LOujpwpsPzbFQLluKss%2Fuploads%2FWM3PQiKMsd2e1AabQBCM%2FScreenshot%202026-01-05%20at%202.57.39%E2%80%AFPM.png?alt=media&amp;token=d4d10675-bbb9-49a4-85bf-04fdd1f36264" alt=""><figcaption></figcaption></figure>

Scroll down, accept the terms, and click "Start."

Next, click "Staff and Students," and enter your FCPS Student ID password (i.e. your Schoology credentials).

![Select "Staff and Students"](https://1387849666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LOujpwpsPzbFQLluKss%2Fuploads%2FJ7jRhmk7T0VO5D4l5aYi%2FScreenshot%202026-01-05%20at%203.00.46%E2%80%AFPM.png?alt=media\&token=b1df913e-6865-4fa7-8b89-1f7bd78ac07f)

![Enter your FCPS Student ID and password and then login. DO NOT ENTER THE CREDENTIALS ABOVE!](https://1387849666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LOujpwpsPzbFQLluKss%2Fuploads%2FwTSDFPlQEpzd0lR4Dglq%2FScreenshot%202026-01-05%20at%202.58.30%E2%80%AFPM.png?alt=media\&token=dce80756-83d8-4e86-aff5-25839e471b84)

You should see something like this. Select "Show all operating systems" at the bottom of the page (you might have to scroll down!).

![If you're using Linux, DON'T DOWNLOAD Cloudpath! Select "Show all operating systems."](https://1387849666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LOujpwpsPzbFQLluKss%2Fuploads%2F7QQRb4Fn5ziDeXhSWn50%2FScreenshot%202026-01-05%20at%203.01.15%E2%80%AFPM.png?alt=media\&token=28ae9d9d-6f45-45ce-abd7-dfd52edcde1e)

Scroll down (again) and select "Other Operating Systems."

![](https://1387849666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LOujpwpsPzbFQLluKss%2Fuploads%2FDXE675y48WypwWzlLXaU%2FScreenshot%202026-01-05%20at%203.01.23%E2%80%AFPM.png?alt=media\&token=cb812905-bc78-494f-b2c1-e564aa9d9e7e)

Download both the CA certificate and the user certificate to your machine (step 1 and 2, respectively). From here, the steps will depend on your specific Linux setup (mainly your network manager of choice), but there are instructions for the most common setups below:

#### wpa\_supplicant

Assuming you've downloaded the proper certificate files from both steps, run the following commands from the same folder that your certificates were downloaded in. You might be prompted to enter your FCPS password during the process. **YOU MUST REPLACE THE TEMPLATE VARIABLES IN <> WITH THE CORRECT VALUES.**

```
# disable bash history temporarily because of sensitive info
set +o history

# ensure initial wpa_supplicant directory
sudo mkdir -p /etc/wpa_supplicant/wifi_certs

# openssl must be installed beforehand! it's probably already installed.
# converts the p12 to a key and crt for wpa_supplicant compatibility
openssl pkcs12 -in <FCPS_ID>@student_byodfcpsedu.p12 -nocerts -out user.key
openssl pkcs12 -in <FCPS_ID>@student_byodfcpsedu.p12 -clcerts -nokeys -out user.crt

# move the certificates and set proper permissions (important!)
# change the wildcard if there are multiple
mv CA-*.cer FCPS.cer # for readability
sudo mv user.key user.crt FCPS.cer /etc/wpa_supplicant/wifi_certs/
sudo chmod 600 /etc/wpa_supplicant/wifi_certs/user.key
sudo chmod 644 /etc/wpa_supplicant/wifi_certs/user.crt /etc/wpa_supplicant/wifi_certs/FCPS.cer

# the following solution is semi-automated, but feel free to replace this with wpa_cli
# basically it just adds the FCPSbyod config to wpa_supplicant
sudo cp /etc/wpa_supplicant/wpa_supplicant.conf /etc/wpa_supplicant/wpa_sup.bak

sudo tee -a /etc/wpa_supplicant/wpa_supplicant.conf > /dev/null <<EOF

network={
    ssid="FCPSbyod"
    scan_ssid=1
    key_mgmt=WPA-EAP
    eap=TLS
    identity="<FCPS_ID>@student_byod.fcps.edu" # this differs for guest connections
    ca_cert="/etc/wpa_supplicant/wifi_certs/FCPS.cer"
    client_cert="/etc/wpa_supplicant/wifi_certs/user.crt"
    private_key="/etc/wpa_supplicant/wifi_certs/user.key"
    private_key_passwd="<FCPS_PASSWORD>"
}
EOF

sudo chmod 600 /etc/wpa_supplicant/wpa_supplicant.conf # sensitive password!

# finish up by restarting wpa_supplicant
sudo systemctl restart wpa_supplicant

# renew dhcp ONLY if using dhclient. differs for dhcpd and other dhcp managers.
sudo dhclient -r
sudo dhclient

# reenable history
set -o history
```

Reference [this](https://wiki.archlinux.org/index.php/WPA_supplicant) for further information.

#### NetworkManager (preferred)

Assuming you've downloaded the proper certificate files from both steps, run the following commands from the same folder that your certificates were downloaded in. You might be prompted to enter your FCPS password during the process. **YOU MUST REPLACE THE TEMPLATE VARIABLES IN <> WITH THE CORRECT VALUES.**

```
# disable bash history temporarily because of sensitive info
set +o history

# ensure initial ssl cert directories
sudo mkdir -p /etc/ssl/certs/
sudo mkdir -p /etc/ssl/private/

# openssl must be installed beforehand! it's probably already installed.
# converts the p12 to a key and crt for networkmanager compatibility
# enter your fcps password if asked
openssl pkcs12 -in <FCPS_ID>@student_byodfcpsedu.p12 -nocerts -out user.key
openssl pkcs12 -in <FCPS_ID>@student_byodfcpsedu.p12 -clcerts -nokeys -out user.crt

# move the certificates and set proper permissions (important!)
# change the wildcard if there are multiple
mv CA-*.cer FCPS.cer # for file identification and readability

sudo mv user.key user.crt /etc/ssl/private/
sudo mv FCPS.cer /etc/ssl/certs/
sudo chmod 600 /etc/ssl/private/user.key
sudo chmod 644 /etc/ssl/private/user.crt /etc/ssl/certs/FCPS.cer

# the following solution is semi-automated, but feel free to replace this with a
# different networkmanager solution (possibly a tui)

# add our FCPSbyod interface to nmcli (NetworkManager)
# note: replace wlan0 with your actual wireless interface name (check with 'ip link')
sudo nmcli connection add \
  type wifi \
  con-name "FCPSbyod" \
  ifname wlan0 \
  ssid "FCPSbyod" \
  wifi-sec.key-mgmt wpa-eap \
  802-1x.eap tls \
  802-1x.identity "<FCPS_ID>@student_byod.fcps.edu" \
  802-1x.ca-cert "/etc/ssl/certs/FCPS.cer" \
  802-1x.client-cert "/etc/ssl/private/user.crt" \
  802-1x.private-key "/etc/ssl/private/user.key" \
  802-1x.private-key-password "<FCPS_PASSWORD>" \
  802-1x.domain-suffix-match "nescloudpath-pv01.fcps.edu"

# connect to the new interface, which should handle dhcp
nmcli connection up FCPSbyod

# reenable history
set -o history
```

Note: As of somewhere around `NetworkManager` version 1.36.x (which ships by default in Ubuntu 22.04 LTS, Fedora 36, and probably some other major Linux distributions), `NetworkManager` will fail to connect if `Domain` is not properly set to `nescloudpath-pv01.fcps.edu` and will give **NO** helpful information about why.

#### GNOME Desktop Environment

<figure><img src="https://1387849666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LOujpwpsPzbFQLluKss%2Fuploads%2F4V4rj7nwrr2tORl0yz7B%2Fimage.png?alt=media&amp;token=43c5c6d3-0497-447e-935e-3d068a1d28af" alt=""><figcaption><p>This image is just for UI reference. DO NOT ENTER VALUES FROM THIS IMAGE!</p></figcaption></figure>

Some desktop environments, GNOME below, allow you to configure this through built-in utilities. You can configure GNOME like this, with Identity being `<FCPS ID>@student_byod.fcps.edu`, the User Certificate and Private Key being the User CA you converted (see commands above), the CA certificate being the CA certificate you downloaded, and the Private key password your FCPS password.


