diff --git a/day5_extras/1_welcome+login/10_ECAR2023_jupyter4hpc_welcome+introduction_5.pdf b/day5_extras/1_welcome+login/10_ECAR2023_jupyter4hpc_welcome+introduction_5.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..67c5055380d8ef90747bfe143df9ac1a492bba2f
Binary files /dev/null and b/day5_extras/1_welcome+login/10_ECAR2023_jupyter4hpc_welcome+introduction_5.pdf differ
diff --git a/day5_extras/1_welcome+login/SLURMWrapper.mp4 b/day5_extras/1_welcome+login/SLURMWrapper.mp4
new file mode 100644
index 0000000000000000000000000000000000000000..9ec38ecda7333418094d9b001022a39f92869eb0
Binary files /dev/null and b/day5_extras/1_welcome+login/SLURMWrapper.mp4 differ
diff --git a/day5_extras/2_my_own_jupyterlab/1-JupyterLab-from-condaforge.ipynb b/day5_extras/2_my_own_jupyterlab/1-JupyterLab-from-condaforge.ipynb
new file mode 100644
index 0000000000000000000000000000000000000000..2485b2007a94f6cb73a900a773f19a2ddb58252b
--- /dev/null
+++ b/day5_extras/2_my_own_jupyterlab/1-JupyterLab-from-condaforge.ipynb
@@ -0,0 +1,1077 @@
+{
+ "cells": [
+  {
+   "attachments": {
+    "67258d94-84e6-4a0c-ae8f-c74332ec082e.jpg": {
+     "image/jpeg": "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"
+    }
+   },
+   "cell_type": "markdown",
+   "id": "f7b6c34a-a874-4158-8015-3802bb5b3c01",
+   "metadata": {
+    "tags": [],
+    "toc-hr-collapsed": false
+   },
+   "source": [
+    "![jsc-logo.jpg](attachment:67258d94-84e6-4a0c-ae8f-c74332ec082e.jpg)\n",
+    "Author: [Jens Henrik Göbbert](mailto:j.goebbert@fz-juelich.de)\n",
+    "------------------------------------"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "665ed8a0-c103-4e27-912b-8dd9993cddbd",
+   "metadata": {},
+   "source": [
+    "# Supercomputing with JupyterLab - Tips & Tricks\n",
+    "\n",
+    "This is the first time you are using JupyterLab on an HPC system? Let us show you some tips & tricks.\n",
+    "\n",
+    "This notebook might be special to the environment at Juelich Supercomputing Centre, Forschungszentrum Juelich, Germany.\n",
+    "\n",
+    "-------------------------"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "adopted-characterization",
+   "metadata": {},
+   "source": [
+    "### Install your own JupyterLab from conda\n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "extended-response",
+   "metadata": {},
+   "source": [
+    "### Prepare Conda Settings"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "alternative-paris",
+   "metadata": {},
+   "source": [
+    "Selectable **CONDA_TARGET_DIR** path for the central conda installation, should be in the project filesystem"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 1,
+   "id": "streaming-commissioner",
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "/p/project/coecschool22/goebbert1/miniconda3\n"
+     ]
+    }
+   ],
+   "source": [
+    "export CONDA_TARGET_DIR=${PROJECT}/${USER}/miniconda3 ## ${HOME}/miniconda3\n",
+    "echo $CONDA_TARGET_DIR # double check"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "operating-soviet",
+   "metadata": {},
+   "source": [
+    "Selectable **CONDA_ENV** name, will be used to specify the environment name\n",
+    "  - must be lowercase"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 2,
+   "id": "related-sessions",
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "my_jupyterlab3\n"
+     ]
+    }
+   ],
+   "source": [
+    "CONDA_ENV=my_jupyterlab3\n",
+    "\n",
+    "export CONDA_ENV=$(echo \"${CONDA_ENV}\" | awk '{print tolower($0)}')\n",
+    "echo ${CONDA_ENV} # double check"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "olive-table",
+   "metadata": {},
+   "source": [
+    "---\n",
+    "## 1. Download/Install Miniconda"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "confidential-pharmacy",
+   "metadata": {},
+   "source": [
+    "Start here if you want to run the full installation.\n",
+    "If you want to create another environment in an existing conda setup go to **create environment**.  \n",
+    "If you want to attach yourself to an existing environment go to **create user kernel**."
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "composed-spending",
+   "metadata": {},
+   "source": [
+    "* 1.1 - Download Minconda installer"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 3,
+   "id": "adapted-constraint",
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "--2022-10-24 23:39:44--  https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh\n",
+      "Resolving repo.continuum.io (repo.continuum.io)... 104.18.200.79, 104.18.201.79, 2606:4700::6812:c94f, ...\n",
+      "Connecting to repo.continuum.io (repo.continuum.io)|104.18.200.79|:443... connected.\n",
+      "HTTP request sent, awaiting response... 301 Moved Permanently\n",
+      "Location: https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh [following]\n",
+      "--2022-10-24 23:39:44--  https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh\n",
+      "Resolving repo.anaconda.com (repo.anaconda.com)... 104.16.130.3, 104.16.131.3, 2606:4700::6810:8203, ...\n",
+      "Connecting to repo.anaconda.com (repo.anaconda.com)|104.16.130.3|:443... connected.\n",
+      "HTTP request sent, awaiting response... 200 OK\n",
+      "Length: 76607678 (73M) [application/x-sh]\n",
+      "Saving to: ‘/p/project/ccstvs/goebbert1/home_juwels/Miniconda3.sh’\n",
+      "\n",
+      "/p/project/ccstvs/g 100%[===================>]  73.06M  61.7MB/s    in 1.2s    \n",
+      "\n",
+      "2022-10-24 23:39:45 (61.7 MB/s) - ‘/p/project/ccstvs/goebbert1/home_juwels/Miniconda3.sh’ saved [76607678/76607678]\n",
+      "\n"
+     ]
+    }
+   ],
+   "source": [
+    "wget --output-document=$HOME/Miniconda3.sh https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "substantial-provider",
+   "metadata": {},
+   "source": [
+    "* 1.2 - Create target directory"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 4,
+   "id": "secret-maker",
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "/p/project/coecschool22/goebbert1/miniconda3\n"
+     ]
+    }
+   ],
+   "source": [
+    "mkdir -p ${CONDA_TARGET_DIR}\n",
+    "echo $CONDA_TARGET_DIR # double check"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "streaming-shopping",
+   "metadata": {},
+   "source": [
+    "* 1.3 - Install Miniconda"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 5,
+   "id": "characteristic-woman",
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "PREFIX=/p/project/coecschool22/goebbert1/miniconda3\n",
+      "Unpacking payload ...\n",
+      "Collecting package metadata (current_repodata.json): done                       \n",
+      "Solving environment: done\n",
+      "\n",
+      "## Package Plan ##\n",
+      "\n",
+      "  environment location: /p/project/coecschool22/goebbert1/miniconda3\n",
+      "\n",
+      "  added / updated specs:\n",
+      "    - _libgcc_mutex==0.1=main\n",
+      "    - _openmp_mutex==4.5=1_gnu\n",
+      "    - brotlipy==0.7.0=py39h27cfd23_1003\n",
+      "    - ca-certificates==2022.3.29=h06a4308_1\n",
+      "    - certifi==2021.10.8=py39h06a4308_2\n",
+      "    - cffi==1.15.0=py39hd667e15_1\n",
+      "    - charset-normalizer==2.0.4=pyhd3eb1b0_0\n",
+      "    - colorama==0.4.4=pyhd3eb1b0_0\n",
+      "    - conda-content-trust==0.1.1=pyhd3eb1b0_0\n",
+      "    - conda-package-handling==1.8.1=py39h7f8727e_0\n",
+      "    - conda==4.12.0=py39h06a4308_0\n",
+      "    - cryptography==36.0.0=py39h9ce1e76_0\n",
+      "    - idna==3.3=pyhd3eb1b0_0\n",
+      "    - ld_impl_linux-64==2.35.1=h7274673_9\n",
+      "    - libffi==3.3=he6710b0_2\n",
+      "    - libgcc-ng==9.3.0=h5101ec6_17\n",
+      "    - libgomp==9.3.0=h5101ec6_17\n",
+      "    - libstdcxx-ng==9.3.0=hd4cf53a_17\n",
+      "    - ncurses==6.3=h7f8727e_2\n",
+      "    - openssl==1.1.1n=h7f8727e_0\n",
+      "    - pip==21.2.4=py39h06a4308_0\n",
+      "    - pycosat==0.6.3=py39h27cfd23_0\n",
+      "    - pycparser==2.21=pyhd3eb1b0_0\n",
+      "    - pyopenssl==22.0.0=pyhd3eb1b0_0\n",
+      "    - pysocks==1.7.1=py39h06a4308_0\n",
+      "    - python==3.9.12=h12debd9_0\n",
+      "    - readline==8.1.2=h7f8727e_1\n",
+      "    - requests==2.27.1=pyhd3eb1b0_0\n",
+      "    - ruamel_yaml==0.15.100=py39h27cfd23_0\n",
+      "    - setuptools==61.2.0=py39h06a4308_0\n",
+      "    - six==1.16.0=pyhd3eb1b0_1\n",
+      "    - sqlite==3.38.2=hc218d9a_0\n",
+      "    - tk==8.6.11=h1ccaba5_0\n",
+      "    - tqdm==4.63.0=pyhd3eb1b0_0\n",
+      "    - tzdata==2022a=hda174b7_0\n",
+      "    - urllib3==1.26.8=pyhd3eb1b0_0\n",
+      "    - wheel==0.37.1=pyhd3eb1b0_0\n",
+      "    - xz==5.2.5=h7b6447c_0\n",
+      "    - yaml==0.2.5=h7b6447c_0\n",
+      "    - zlib==1.2.12=h7f8727e_1\n",
+      "\n",
+      "\n",
+      "The following NEW packages will be INSTALLED:\n",
+      "\n",
+      "  _libgcc_mutex      pkgs/main/linux-64::_libgcc_mutex-0.1-main\n",
+      "  _openmp_mutex      pkgs/main/linux-64::_openmp_mutex-4.5-1_gnu\n",
+      "  brotlipy           pkgs/main/linux-64::brotlipy-0.7.0-py39h27cfd23_1003\n",
+      "  ca-certificates    pkgs/main/linux-64::ca-certificates-2022.3.29-h06a4308_1\n",
+      "  certifi            pkgs/main/linux-64::certifi-2021.10.8-py39h06a4308_2\n",
+      "  cffi               pkgs/main/linux-64::cffi-1.15.0-py39hd667e15_1\n",
+      "  charset-normalizer pkgs/main/noarch::charset-normalizer-2.0.4-pyhd3eb1b0_0\n",
+      "  colorama           pkgs/main/noarch::colorama-0.4.4-pyhd3eb1b0_0\n",
+      "  conda              pkgs/main/linux-64::conda-4.12.0-py39h06a4308_0\n",
+      "  conda-content-tru~ pkgs/main/noarch::conda-content-trust-0.1.1-pyhd3eb1b0_0\n",
+      "  conda-package-han~ pkgs/main/linux-64::conda-package-handling-1.8.1-py39h7f8727e_0\n",
+      "  cryptography       pkgs/main/linux-64::cryptography-36.0.0-py39h9ce1e76_0\n",
+      "  idna               pkgs/main/noarch::idna-3.3-pyhd3eb1b0_0\n",
+      "  ld_impl_linux-64   pkgs/main/linux-64::ld_impl_linux-64-2.35.1-h7274673_9\n",
+      "  libffi             pkgs/main/linux-64::libffi-3.3-he6710b0_2\n",
+      "  libgcc-ng          pkgs/main/linux-64::libgcc-ng-9.3.0-h5101ec6_17\n",
+      "  libgomp            pkgs/main/linux-64::libgomp-9.3.0-h5101ec6_17\n",
+      "  libstdcxx-ng       pkgs/main/linux-64::libstdcxx-ng-9.3.0-hd4cf53a_17\n",
+      "  ncurses            pkgs/main/linux-64::ncurses-6.3-h7f8727e_2\n",
+      "  openssl            pkgs/main/linux-64::openssl-1.1.1n-h7f8727e_0\n",
+      "  pip                pkgs/main/linux-64::pip-21.2.4-py39h06a4308_0\n",
+      "  pycosat            pkgs/main/linux-64::pycosat-0.6.3-py39h27cfd23_0\n",
+      "  pycparser          pkgs/main/noarch::pycparser-2.21-pyhd3eb1b0_0\n",
+      "  pyopenssl          pkgs/main/noarch::pyopenssl-22.0.0-pyhd3eb1b0_0\n",
+      "  pysocks            pkgs/main/linux-64::pysocks-1.7.1-py39h06a4308_0\n",
+      "  python             pkgs/main/linux-64::python-3.9.12-h12debd9_0\n",
+      "  readline           pkgs/main/linux-64::readline-8.1.2-h7f8727e_1\n",
+      "  requests           pkgs/main/noarch::requests-2.27.1-pyhd3eb1b0_0\n",
+      "  ruamel_yaml        pkgs/main/linux-64::ruamel_yaml-0.15.100-py39h27cfd23_0\n",
+      "  setuptools         pkgs/main/linux-64::setuptools-61.2.0-py39h06a4308_0\n",
+      "  six                pkgs/main/noarch::six-1.16.0-pyhd3eb1b0_1\n",
+      "  sqlite             pkgs/main/linux-64::sqlite-3.38.2-hc218d9a_0\n",
+      "  tk                 pkgs/main/linux-64::tk-8.6.11-h1ccaba5_0\n",
+      "  tqdm               pkgs/main/noarch::tqdm-4.63.0-pyhd3eb1b0_0\n",
+      "  tzdata             pkgs/main/noarch::tzdata-2022a-hda174b7_0\n",
+      "  urllib3            pkgs/main/noarch::urllib3-1.26.8-pyhd3eb1b0_0\n",
+      "  wheel              pkgs/main/noarch::wheel-0.37.1-pyhd3eb1b0_0\n",
+      "  xz                 pkgs/main/linux-64::xz-5.2.5-h7b6447c_0\n",
+      "  yaml               pkgs/main/linux-64::yaml-0.2.5-h7b6447c_0\n",
+      "  zlib               pkgs/main/linux-64::zlib-1.2.12-h7f8727e_1\n",
+      "\n",
+      "\n",
+      "Preparing transaction: done\n",
+      "Executing transaction: done\n",
+      "installation finished.\n",
+      "WARNING:\n",
+      "    You currently have a PYTHONPATH environment variable set. This may cause\n",
+      "    unexpected behavior when running the Python interpreter in Miniconda3.\n",
+      "    For best results, please verify that your PYTHONPATH only points to\n",
+      "    directories of packages that are compatible with the Python interpreter\n",
+      "    in Miniconda3: /p/project/coecschool22/goebbert1/miniconda3\n"
+     ]
+    }
+   ],
+   "source": [
+    "bash $HOME/Miniconda3.sh -b -u -p ${CONDA_TARGET_DIR}"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 6,
+   "id": "intellectual-pipeline",
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "/p/software/juwels/stages/2022/software/JupyterKernel-PyDeepLearning/1.1-gcccoremkl-11.2.0-2021.4.0-2022.3.4/lib/python3.9/site-packages:/p/software/juwels/stages/2022/software/JupyterKernel-Octave/6.4.0-gcccoremkl-11.2.0-2021.4.0-2022.3.4/lib/python3.9/site-packages:/p/software/juwels/stages/2022/software/JupyterKernel-Julia/1.7.1-gcccoremkl-11.2.0-2021.4.0-2022.3.4/lib/python3.9/site-packages:/p/software/juwels/stages/2022/software/JupyterKernel-Cling/0.9-gcccoremkl-11.2.0-2021.4.0-2022.3.4/lib/python3.9/site-packages:/p/software/juwels/stages/2022/software/JupyterKernel-Bash/0.7.2-gcccoremkl-11.2.0-2021.4.0-2022.3.4/lib/python3.9/site-packages:/p/software/juwels/stages/2022/software/JupyterProxy-XpraHTML5/0.3.4-gcccoremkl-11.2.0-2021.4.0-2022.3.4/lib/python3.9/site-packages:/p/software/juwels/stages/2022/software/Jupyter/2022.3.4-gcccoremkl-11.2.0-2021.4.0/lib/python3.9/site-packages:/p/software/juwels/stages/2022/software/Shapely/1.8.0-GCCcore-11.2.0/lib/python3.9/site-packages:/p/software/juwels/stages/2022/software/numba/0.55.1-gcccoremkl-11.2.0-2021.4.0/lib/python3.9/site-packages:/p/software/juwels/stages/2022/software/scikit-image/0.18.3-gcccoremkl-11.2.0-2021.4.0/lib/python3.9/site-packages:/p/software/juwels/stages/2022/software/dask/2021.9.1-gcccoremkl-11.2.0-2021.4.0/lib/python3.9/site-packages:/p/software/juwels/stages/2022/software/bokeh/2.4.1-gcccoremkl-11.2.0-2021.4.0/lib/python3.9/site-packages:/p/software/juwels/stages/2022/software/typing-extensions/3.10.0.0-GCCcore-11.2.0/lib/python3.9/site-packages:/p/software/juwels/stages/2022/software/PyYAML/5.4.1-GCCcore-11.2.0/lib/python3.9/site-packages:/p/software/juwels/stages/2022/software/scikit-learn/1.0.1-gcccoremkl-11.2.0-2021.4.0/lib/python3.9/site-packages:/p/software/juwels/stages/2022/software/scikit-build/0.11.1-GCCcore-11.2.0/lib/python3.9/site-packages:/p/software/juwels/stages/2022/software/xarray/0.20.1-gcccoremkl-11.2.0-2021.4.0/lib/python3.9/site-packages:/p/software/juwels/stages/2022/software/sympy/1.8-gcccoremkl-11.2.0-2021.4.0/lib/python3.9/site-packages:/p/software/juwels/stages/2022/software/gmpy2/2.1.0b5-gcccoremkl-11.2.0-2021.4.0/lib/python3.9/site-packages:/p/software/juwels/stages/2022/software/Seaborn/0.11.2-gcccoremkl-11.2.0-2021.4.0/lib/python3.9/site-packages:/p/software/juwels/stages/2022/software/matplotlib/3.4.3-gcccoremkl-11.2.0-2021.4.0/lib/python3.9/site-packages:/p/software/juwels/stages/2022/software/Pillow-SIMD/9.0.1-GCCcore-11.2.0/lib/python3.9/site-packages:/p/software/juwels/stages/2022/software/Tkinter/3.9.6-GCCcore-11.2.0/lib/python3.9/site-packages:/p/software/juwels/stages/2022/software/netcdf4-python/1.5.7-GCCcore-11.2.0-serial/lib/python3.9/site-packages:/p/software/juwels/stages/2022/software/h5py/3.5.0-GCCcore-11.2.0-serial/lib/python3.9/site-packages:/p/software/juwels/stages/2022/software/ITK/5.2.1-GCCcore-11.2.0-nompi/lib/python3.9/site-packages:/p/software/juwels/stages/2022/software/SciPy-bundle/2021.10-gcccoremkl-11.2.0-2021.4.0/lib/python3.9/site-packages:/p/software/juwels/stages/2022/software/pybind11/2.7.1-GCCcore-11.2.0/lib/python3.9/site-packages:/p/software/juwels/stages/2022/software/Python/3.9.6-GCCcore-11.2.0/easybuild/python\n"
+     ]
+    }
+   ],
+   "source": [
+    "# verify that PYTHONPATH only points to directories of packages\n",
+    "# that are compatible with the Python interpreter in Miniconda3\n",
+    "echo $PYTHONPATH"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 7,
+   "id": "boring-tokyo",
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "\n"
+     ]
+    }
+   ],
+   "source": [
+    "# for now we unset the PYTHONPATH\n",
+    "# if you want to use modules with conda, you might need to think about this step again\n",
+    "unset PYTHONPATH\n",
+    "echo $PYTHONPATH"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 8,
+   "id": "defensive-retail",
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "no change     /p/project/coecschool22/goebbert1/miniconda3/condabin/conda\n",
+      "no change     /p/project/coecschool22/goebbert1/miniconda3/bin/conda\n",
+      "no change     /p/project/coecschool22/goebbert1/miniconda3/bin/conda-env\n",
+      "no change     /p/project/coecschool22/goebbert1/miniconda3/bin/activate\n",
+      "no change     /p/project/coecschool22/goebbert1/miniconda3/bin/deactivate\n",
+      "no change     /p/project/coecschool22/goebbert1/miniconda3/etc/profile.d/conda.sh\n",
+      "no change     /p/project/coecschool22/goebbert1/miniconda3/etc/fish/conf.d/conda.fish\n",
+      "no change     /p/project/coecschool22/goebbert1/miniconda3/shell/condabin/Conda.psm1\n",
+      "no change     /p/project/coecschool22/goebbert1/miniconda3/shell/condabin/conda-hook.ps1\n",
+      "no change     /p/project/coecschool22/goebbert1/miniconda3/lib/python3.9/site-packages/xontrib/conda.xsh\n",
+      "no change     /p/project/coecschool22/goebbert1/miniconda3/etc/profile.d/conda.csh\n",
+      "modified      /p/project/ccstvs/goebbert1/home_juwels/.bashrc\n",
+      "\n",
+      "==> For changes to take effect, close and re-open your current shell. <==\n",
+      "\n"
+     ]
+    }
+   ],
+   "source": [
+    "${CONDA_TARGET_DIR}/bin/conda init bash"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "furnished-infrared",
+   "metadata": {},
+   "source": [
+    "**ATTENTION:** Conda modifies $HOME/.bashrc\n",
+    "\n",
+    "```bash\n",
+    "# >>> conda initialize >>>\n",
+    "# !! Contents within this block are managed by 'conda init' !!\n",
+    "__conda_setup=\"$('/home/jovyan/miniconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)\"\n",
+    "if [ $? -eq 0 ]; then\n",
+    "    eval \"$__conda_setup\"\n",
+    "else\n",
+    "    if [ -f \"/home/jovyan/miniconda3/etc/profile.d/conda.sh\" ]; then\n",
+    "        . \"/home/jovyan/miniconda3/etc/profile.d/conda.sh\"\n",
+    "    else\n",
+    "        export PATH=\"/home/jovyan/miniconda3/bin:$PATH\"\n",
+    "    fi\n",
+    "fi\n",
+    "unset __conda_setup\n",
+    "# <<< conda initialize <<<\n",
+    "```"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "textile-vacation",
+   "metadata": {},
+   "source": [
+    "* 1.4 - Disable automatic activation"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 9,
+   "id": "proved-version",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "${CONDA_TARGET_DIR}/bin/conda config --set auto_activate_base false"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "surprised-carolina",
+   "metadata": {},
+   "source": [
+    "---\n",
+    "## 2. Create conda environment with JupyterLab 3 installed"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "offensive-crack",
+   "metadata": {},
+   "source": [
+    "Create new conda environment. The following steps can be repeated if multiple environments should be created. If the Python version differ towards the external Python version, a mix of Conda modules and external modules will not be possible"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 10,
+   "id": "central-rebecca",
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "Collecting package metadata (current_repodata.json): done\n",
+      "Solving environment: done\n",
+      "\n",
+      "## Package Plan ##\n",
+      "\n",
+      "  environment location: /p/project/coecschool22/goebbert1/miniconda3/envs/my_jupyterlab3\n",
+      "\n",
+      "  added / updated specs:\n",
+      "    - ipywidgets\n",
+      "    - jupyterlab=3\n",
+      "    - matplotlib\n",
+      "    - nodejs\n",
+      "    - pandas=0.24\n",
+      "    - pip\n",
+      "\n",
+      "\n",
+      "The following packages will be downloaded:\n",
+      "\n",
+      "    package                    |            build\n",
+      "    ---------------------------|-----------------\n",
+      "    _libgcc_mutex-0.1          |      conda_forge           3 KB  conda-forge\n",
+      "    _openmp_mutex-4.5          |            2_gnu          23 KB  conda-forge\n",
+      "    anyio-3.6.2                |     pyhd8ed1ab_0          83 KB  conda-forge\n",
+      "    argon2-cffi-21.3.0         |     pyhd8ed1ab_0          15 KB  conda-forge\n",
+      "    argon2-cffi-bindings-21.2.0|   py38h0a891b7_2          34 KB  conda-forge\n",
+      "    asttokens-2.0.8            |     pyhd8ed1ab_0          24 KB  conda-forge\n",
+      "    attrs-22.1.0               |     pyh71513ae_1          48 KB  conda-forge\n",
+      "    babel-2.10.3               |     pyhd8ed1ab_0         6.7 MB  conda-forge\n",
+      "    backcall-0.2.0             |     pyh9f0ad1d_0          13 KB  conda-forge\n",
+      "    backports-1.0              |             py_2           4 KB  conda-forge\n",
+      "    backports.functools_lru_cache-1.6.4|     pyhd8ed1ab_0           9 KB  conda-forge\n",
+      "    beautifulsoup4-4.11.1      |     pyha770c72_0          96 KB  conda-forge\n",
+      "    bleach-5.0.1               |     pyhd8ed1ab_0         124 KB  conda-forge\n",
+      "    brotlipy-0.7.0             |py38h0a891b7_1004         342 KB  conda-forge\n",
+      "    bzip2-1.0.8                |       h7f98852_4         484 KB  conda-forge\n",
+      "    ca-certificates-2022.9.24  |       ha878542_0         150 KB  conda-forge\n",
+      "    certifi-2022.9.24          |     pyhd8ed1ab_0         155 KB  conda-forge\n",
+      "    cffi-1.15.1                |   py38h4a40e3a_1         229 KB  conda-forge\n",
+      "    charset-normalizer-2.1.1   |     pyhd8ed1ab_0          36 KB  conda-forge\n",
+      "    cryptography-38.0.2        |   py38h80a4ca7_1         1.6 MB  conda-forge\n",
+      "    cycler-0.11.0              |     pyhd8ed1ab_0          10 KB  conda-forge\n",
+      "    debugpy-1.6.3              |   py38hfa26641_0         2.0 MB  conda-forge\n",
+      "    decorator-5.1.1            |     pyhd8ed1ab_0          12 KB  conda-forge\n",
+      "    defusedxml-0.7.1           |     pyhd8ed1ab_0          23 KB  conda-forge\n",
+      "    entrypoints-0.4            |     pyhd8ed1ab_0           9 KB  conda-forge\n",
+      "    executing-1.1.1            |     pyhd8ed1ab_0          23 KB  conda-forge\n",
+      "    flit-core-3.7.1            |     pyhd8ed1ab_0          44 KB  conda-forge\n",
+      "    freetype-2.12.1            |       hca18f0e_0         884 KB  conda-forge\n",
+      "    icu-67.1                   |       he1b5a44_0        12.9 MB  conda-forge\n",
+      "    idna-3.4                   |     pyhd8ed1ab_0          55 KB  conda-forge\n",
+      "    importlib-metadata-4.11.4  |   py38h578d9bd_0          33 KB  conda-forge\n",
+      "    importlib_resources-5.10.0 |     pyhd8ed1ab_0          29 KB  conda-forge\n",
+      "    ipykernel-6.16.1           |     pyh210e3f2_0         100 KB  conda-forge\n",
+      "    ipython-8.5.0              |     pyh41d4057_1         552 KB  conda-forge\n",
+      "    ipython_genutils-0.2.0     |             py_1          21 KB  conda-forge\n",
+      "    ipywidgets-8.0.2           |     pyhd8ed1ab_1         109 KB  conda-forge\n",
+      "    jedi-0.18.1                |     pyhd8ed1ab_2         799 KB  conda-forge\n",
+      "    jinja2-3.1.2               |     pyhd8ed1ab_1          99 KB  conda-forge\n",
+      "    json5-0.9.5                |     pyh9f0ad1d_0          20 KB  conda-forge\n",
+      "    jsonschema-4.16.0          |     pyhd8ed1ab_0          65 KB  conda-forge\n",
+      "    jupyter_client-7.4.3       |     pyhd8ed1ab_0          91 KB  conda-forge\n",
+      "    jupyter_core-4.11.1        |   py38h578d9bd_0          81 KB  conda-forge\n",
+      "    jupyter_server-1.21.0      |     pyhd8ed1ab_0         239 KB  conda-forge\n",
+      "    jupyterlab-3.5.0           |     pyhd8ed1ab_0         6.0 MB  conda-forge\n",
+      "    jupyterlab_pygments-0.2.2  |     pyhd8ed1ab_0          17 KB  conda-forge\n",
+      "    jupyterlab_server-2.16.1   |     pyhd8ed1ab_0          49 KB  conda-forge\n",
+      "    jupyterlab_widgets-3.0.3   |     pyhd8ed1ab_0         222 KB  conda-forge\n",
+      "    kiwisolver-1.4.4           |   py38h43d8883_0          76 KB  conda-forge\n",
+      "    ld_impl_linux-64-2.39      |       hc81fddc_0         759 KB  conda-forge\n",
+      "    libblas-3.9.0              |16_linux64_openblas          13 KB  conda-forge\n",
+      "    libcblas-3.9.0             |16_linux64_openblas          13 KB  conda-forge\n",
+      "    libffi-3.4.2               |       h7f98852_5          57 KB  conda-forge\n",
+      "    libgcc-7.2.0               |       h69d50b8_2         304 KB  conda-forge\n",
+      "    libgcc-ng-12.2.0           |      h65d4601_19         931 KB  conda-forge\n",
+      "    libgfortran-ng-12.2.0      |      h69a702a_19          22 KB  conda-forge\n",
+      "    libgfortran5-12.2.0        |      h337968e_19         1.8 MB  conda-forge\n",
+      "    libgomp-12.2.0             |      h65d4601_19         455 KB  conda-forge\n",
+      "    liblapack-3.9.0            |16_linux64_openblas          13 KB  conda-forge\n",
+      "    libnsl-2.0.0               |       h7f98852_0          31 KB  conda-forge\n",
+      "    libopenblas-0.3.21         |pthreads_h78a6416_3        10.1 MB  conda-forge\n",
+      "    libpng-1.6.38              |       h753d276_0         371 KB  conda-forge\n",
+      "    libsodium-1.0.18           |       h36c2ea0_1         366 KB  conda-forge\n",
+      "    libsqlite-3.39.4           |       h753d276_0         803 KB  conda-forge\n",
+      "    libstdcxx-ng-12.2.0        |      h46fd767_19         4.3 MB  conda-forge\n",
+      "    libuuid-2.32.1             |    h7f98852_1000          28 KB  conda-forge\n",
+      "    libzlib-1.2.13             |       h166bdaf_4          64 KB  conda-forge\n",
+      "    markupsafe-2.1.1           |   py38h0a891b7_1          22 KB  conda-forge\n",
+      "    matplotlib-3.2.2           |                1           6 KB  conda-forge\n",
+      "    matplotlib-base-3.2.2      |   py38h5d868c9_1         7.1 MB  conda-forge\n",
+      "    matplotlib-inline-0.1.6    |     pyhd8ed1ab_0          12 KB  conda-forge\n",
+      "    mistune-2.0.4              |     pyhd8ed1ab_0          67 KB  conda-forge\n",
+      "    nbclassic-0.4.5            |     pyhd8ed1ab_0         7.7 MB  conda-forge\n",
+      "    nbclient-0.7.0             |     pyhd8ed1ab_0          65 KB  conda-forge\n",
+      "    nbconvert-7.2.2            |     pyhd8ed1ab_0           6 KB  conda-forge\n",
+      "    nbconvert-core-7.2.2       |     pyhd8ed1ab_0         189 KB  conda-forge\n",
+      "    nbconvert-pandoc-7.2.2     |     pyhd8ed1ab_0           5 KB  conda-forge\n",
+      "    nbformat-5.7.0             |     pyhd8ed1ab_0         106 KB  conda-forge\n",
+      "    ncurses-6.3                |       h27087fc_1        1002 KB  conda-forge\n",
+      "    nest-asyncio-1.5.6         |     pyhd8ed1ab_0          10 KB  conda-forge\n",
+      "    nodejs-6.13.1              |                0        11.9 MB  conda-forge\n",
+      "    notebook-6.5.1             |     pyha770c72_0         266 KB  conda-forge\n",
+      "    notebook-shim-0.2.0        |     pyhd8ed1ab_0          15 KB  conda-forge\n",
+      "    numpy-1.23.4               |   py38h7042d01_0         7.1 MB  conda-forge\n",
+      "    openssl-3.0.5              |       h166bdaf_2         2.8 MB  conda-forge\n",
+      "    packaging-21.3             |     pyhd8ed1ab_0          36 KB  conda-forge\n",
+      "    pandas-0.24.2              |   py38hb3f55d8_1        11.5 MB  conda-forge\n",
+      "    pandoc-2.19.2              |       h32600fe_1        30.0 MB  conda-forge\n",
+      "    pandocfilters-1.5.0        |     pyhd8ed1ab_0          11 KB  conda-forge\n",
+      "    parso-0.8.3                |     pyhd8ed1ab_0          69 KB  conda-forge\n",
+      "    pexpect-4.8.0              |     pyh9f0ad1d_2          47 KB  conda-forge\n",
+      "    pickleshare-0.7.5          |          py_1003           9 KB  conda-forge\n",
+      "    pip-22.3                   |     pyhd8ed1ab_0         1.5 MB  conda-forge\n",
+      "    pkgutil-resolve-name-1.3.10|     pyhd8ed1ab_0           9 KB  conda-forge\n",
+      "    prometheus_client-0.15.0   |     pyhd8ed1ab_0          50 KB  conda-forge\n",
+      "    prompt-toolkit-3.0.31      |     pyha770c72_0         254 KB  conda-forge\n",
+      "    psutil-5.9.3               |   py38h0a891b7_0         348 KB  conda-forge\n",
+      "    ptyprocess-0.7.0           |     pyhd3deb0d_0          16 KB  conda-forge\n",
+      "    pure_eval-0.2.2            |     pyhd8ed1ab_0          14 KB  conda-forge\n",
+      "    pycparser-2.21             |     pyhd8ed1ab_0         100 KB  conda-forge\n",
+      "    pygments-2.13.0            |     pyhd8ed1ab_0         821 KB  conda-forge\n",
+      "    pyopenssl-22.1.0           |     pyhd8ed1ab_0         122 KB  conda-forge\n",
+      "    pyparsing-3.0.9            |     pyhd8ed1ab_0          79 KB  conda-forge\n",
+      "    pyrsistent-0.18.1          |   py38h0a891b7_1          92 KB  conda-forge\n",
+      "    pysocks-1.7.1              |     pyha2e5f31_6          19 KB  conda-forge\n",
+      "    python-3.8.13              |ha86cf86_0_cpython        25.2 MB  conda-forge\n",
+      "    python-dateutil-2.8.2      |     pyhd8ed1ab_0         240 KB  conda-forge\n",
+      "    python-fastjsonschema-2.16.2|     pyhd8ed1ab_0         242 KB  conda-forge\n",
+      "    python_abi-3.8             |           2_cp38           4 KB  conda-forge\n",
+      "    pytz-2022.5                |     pyhd8ed1ab_0         238 KB  conda-forge\n",
+      "    pyzmq-24.0.1               |   py38hfc09fa9_0         508 KB  conda-forge\n",
+      "    readline-8.1.2             |       h0f457ee_0         291 KB  conda-forge\n",
+      "    requests-2.28.1            |     pyhd8ed1ab_1          53 KB  conda-forge\n",
+      "    send2trash-1.8.0           |     pyhd8ed1ab_0          17 KB  conda-forge\n",
+      "    setuptools-59.8.0          |   py38h578d9bd_1        1017 KB  conda-forge\n",
+      "    six-1.16.0                 |     pyh6c4a22f_0          14 KB  conda-forge\n",
+      "    sniffio-1.3.0              |     pyhd8ed1ab_0          14 KB  conda-forge\n",
+      "    soupsieve-2.3.2.post1      |     pyhd8ed1ab_0          34 KB  conda-forge\n",
+      "    sqlite-3.39.4              |       h4ff8645_0         789 KB  conda-forge\n",
+      "    stack_data-0.5.1           |     pyhd8ed1ab_0          24 KB  conda-forge\n",
+      "    terminado-0.16.0           |     pyh41d4057_0          18 KB  conda-forge\n",
+      "    tinycss2-1.2.1             |     pyhd8ed1ab_0          23 KB  conda-forge\n",
+      "    tk-8.6.12                  |       h27826a3_0         3.3 MB  conda-forge\n",
+      "    tomli-2.0.1                |     pyhd8ed1ab_0          16 KB  conda-forge\n",
+      "    tornado-6.2                |   py38h0a891b7_0         653 KB  conda-forge\n",
+      "    traitlets-5.5.0            |     pyhd8ed1ab_0          85 KB  conda-forge\n",
+      "    typing_extensions-4.4.0    |     pyha770c72_0          29 KB  conda-forge\n",
+      "    urllib3-1.26.11            |     pyhd8ed1ab_0         102 KB  conda-forge\n",
+      "    wcwidth-0.2.5              |     pyh9f0ad1d_2          33 KB  conda-forge\n",
+      "    webencodings-0.5.1         |             py_1          12 KB  conda-forge\n",
+      "    websocket-client-1.4.1     |     pyhd8ed1ab_0          42 KB  conda-forge\n",
+      "    wheel-0.37.1               |     pyhd8ed1ab_0          31 KB  conda-forge\n",
+      "    widgetsnbextension-4.0.3   |     pyhd8ed1ab_0         1.6 MB  conda-forge\n",
+      "    xz-5.2.6                   |       h166bdaf_0         409 KB  conda-forge\n",
+      "    zeromq-4.3.4               |       h9c3ff4c_1         351 KB  conda-forge\n",
+      "    zipp-3.9.0                 |     pyhd8ed1ab_0          13 KB  conda-forge\n",
+      "    ------------------------------------------------------------\n",
+      "                                           Total:       173.3 MB\n",
+      "\n",
+      "The following NEW packages will be INSTALLED:\n",
+      "\n",
+      "  _libgcc_mutex      conda-forge/linux-64::_libgcc_mutex-0.1-conda_forge\n",
+      "  _openmp_mutex      conda-forge/linux-64::_openmp_mutex-4.5-2_gnu\n",
+      "  anyio              conda-forge/noarch::anyio-3.6.2-pyhd8ed1ab_0\n",
+      "  argon2-cffi        conda-forge/noarch::argon2-cffi-21.3.0-pyhd8ed1ab_0\n",
+      "  argon2-cffi-bindi~ conda-forge/linux-64::argon2-cffi-bindings-21.2.0-py38h0a891b7_2\n",
+      "  asttokens          conda-forge/noarch::asttokens-2.0.8-pyhd8ed1ab_0\n",
+      "  attrs              conda-forge/noarch::attrs-22.1.0-pyh71513ae_1\n",
+      "  babel              conda-forge/noarch::babel-2.10.3-pyhd8ed1ab_0\n",
+      "  backcall           conda-forge/noarch::backcall-0.2.0-pyh9f0ad1d_0\n",
+      "  backports          conda-forge/noarch::backports-1.0-py_2\n",
+      "  backports.functoo~ conda-forge/noarch::backports.functools_lru_cache-1.6.4-pyhd8ed1ab_0\n",
+      "  beautifulsoup4     conda-forge/noarch::beautifulsoup4-4.11.1-pyha770c72_0\n",
+      "  bleach             conda-forge/noarch::bleach-5.0.1-pyhd8ed1ab_0\n",
+      "  brotlipy           conda-forge/linux-64::brotlipy-0.7.0-py38h0a891b7_1004\n",
+      "  bzip2              conda-forge/linux-64::bzip2-1.0.8-h7f98852_4\n",
+      "  ca-certificates    conda-forge/linux-64::ca-certificates-2022.9.24-ha878542_0\n",
+      "  certifi            conda-forge/noarch::certifi-2022.9.24-pyhd8ed1ab_0\n",
+      "  cffi               conda-forge/linux-64::cffi-1.15.1-py38h4a40e3a_1\n",
+      "  charset-normalizer conda-forge/noarch::charset-normalizer-2.1.1-pyhd8ed1ab_0\n",
+      "  cryptography       conda-forge/linux-64::cryptography-38.0.2-py38h80a4ca7_1\n",
+      "  cycler             conda-forge/noarch::cycler-0.11.0-pyhd8ed1ab_0\n",
+      "  debugpy            conda-forge/linux-64::debugpy-1.6.3-py38hfa26641_0\n",
+      "  decorator          conda-forge/noarch::decorator-5.1.1-pyhd8ed1ab_0\n",
+      "  defusedxml         conda-forge/noarch::defusedxml-0.7.1-pyhd8ed1ab_0\n",
+      "  entrypoints        conda-forge/noarch::entrypoints-0.4-pyhd8ed1ab_0\n",
+      "  executing          conda-forge/noarch::executing-1.1.1-pyhd8ed1ab_0\n",
+      "  flit-core          conda-forge/noarch::flit-core-3.7.1-pyhd8ed1ab_0\n",
+      "  freetype           conda-forge/linux-64::freetype-2.12.1-hca18f0e_0\n",
+      "  icu                conda-forge/linux-64::icu-67.1-he1b5a44_0\n",
+      "  idna               conda-forge/noarch::idna-3.4-pyhd8ed1ab_0\n",
+      "  importlib-metadata conda-forge/linux-64::importlib-metadata-4.11.4-py38h578d9bd_0\n",
+      "  importlib_resourc~ conda-forge/noarch::importlib_resources-5.10.0-pyhd8ed1ab_0\n",
+      "  ipykernel          conda-forge/noarch::ipykernel-6.16.1-pyh210e3f2_0\n",
+      "  ipython            conda-forge/noarch::ipython-8.5.0-pyh41d4057_1\n",
+      "  ipython_genutils   conda-forge/noarch::ipython_genutils-0.2.0-py_1\n",
+      "  ipywidgets         conda-forge/noarch::ipywidgets-8.0.2-pyhd8ed1ab_1\n",
+      "  jedi               conda-forge/noarch::jedi-0.18.1-pyhd8ed1ab_2\n",
+      "  jinja2             conda-forge/noarch::jinja2-3.1.2-pyhd8ed1ab_1\n",
+      "  json5              conda-forge/noarch::json5-0.9.5-pyh9f0ad1d_0\n",
+      "  jsonschema         conda-forge/noarch::jsonschema-4.16.0-pyhd8ed1ab_0\n",
+      "  jupyter_client     conda-forge/noarch::jupyter_client-7.4.3-pyhd8ed1ab_0\n",
+      "  jupyter_core       conda-forge/linux-64::jupyter_core-4.11.1-py38h578d9bd_0\n",
+      "  jupyter_server     conda-forge/noarch::jupyter_server-1.21.0-pyhd8ed1ab_0\n",
+      "  jupyterlab         conda-forge/noarch::jupyterlab-3.5.0-pyhd8ed1ab_0\n",
+      "  jupyterlab_pygmen~ conda-forge/noarch::jupyterlab_pygments-0.2.2-pyhd8ed1ab_0\n",
+      "  jupyterlab_server  conda-forge/noarch::jupyterlab_server-2.16.1-pyhd8ed1ab_0\n",
+      "  jupyterlab_widgets conda-forge/noarch::jupyterlab_widgets-3.0.3-pyhd8ed1ab_0\n",
+      "  kiwisolver         conda-forge/linux-64::kiwisolver-1.4.4-py38h43d8883_0\n",
+      "  ld_impl_linux-64   conda-forge/linux-64::ld_impl_linux-64-2.39-hc81fddc_0\n",
+      "  libblas            conda-forge/linux-64::libblas-3.9.0-16_linux64_openblas\n",
+      "  libcblas           conda-forge/linux-64::libcblas-3.9.0-16_linux64_openblas\n",
+      "  libffi             conda-forge/linux-64::libffi-3.4.2-h7f98852_5\n",
+      "  libgcc             conda-forge/linux-64::libgcc-7.2.0-h69d50b8_2\n",
+      "  libgcc-ng          conda-forge/linux-64::libgcc-ng-12.2.0-h65d4601_19\n",
+      "  libgfortran-ng     conda-forge/linux-64::libgfortran-ng-12.2.0-h69a702a_19\n",
+      "  libgfortran5       conda-forge/linux-64::libgfortran5-12.2.0-h337968e_19\n",
+      "  libgomp            conda-forge/linux-64::libgomp-12.2.0-h65d4601_19\n",
+      "  liblapack          conda-forge/linux-64::liblapack-3.9.0-16_linux64_openblas\n",
+      "  libnsl             conda-forge/linux-64::libnsl-2.0.0-h7f98852_0\n",
+      "  libopenblas        conda-forge/linux-64::libopenblas-0.3.21-pthreads_h78a6416_3\n",
+      "  libpng             conda-forge/linux-64::libpng-1.6.38-h753d276_0\n",
+      "  libsodium          conda-forge/linux-64::libsodium-1.0.18-h36c2ea0_1\n",
+      "  libsqlite          conda-forge/linux-64::libsqlite-3.39.4-h753d276_0\n",
+      "  libstdcxx-ng       conda-forge/linux-64::libstdcxx-ng-12.2.0-h46fd767_19\n",
+      "  libuuid            conda-forge/linux-64::libuuid-2.32.1-h7f98852_1000\n",
+      "  libzlib            conda-forge/linux-64::libzlib-1.2.13-h166bdaf_4\n",
+      "  markupsafe         conda-forge/linux-64::markupsafe-2.1.1-py38h0a891b7_1\n",
+      "  matplotlib         conda-forge/linux-64::matplotlib-3.2.2-1\n",
+      "  matplotlib-base    conda-forge/linux-64::matplotlib-base-3.2.2-py38h5d868c9_1\n",
+      "  matplotlib-inline  conda-forge/noarch::matplotlib-inline-0.1.6-pyhd8ed1ab_0\n",
+      "  mistune            conda-forge/noarch::mistune-2.0.4-pyhd8ed1ab_0\n",
+      "  nbclassic          conda-forge/noarch::nbclassic-0.4.5-pyhd8ed1ab_0\n",
+      "  nbclient           conda-forge/noarch::nbclient-0.7.0-pyhd8ed1ab_0\n",
+      "  nbconvert          conda-forge/noarch::nbconvert-7.2.2-pyhd8ed1ab_0\n",
+      "  nbconvert-core     conda-forge/noarch::nbconvert-core-7.2.2-pyhd8ed1ab_0\n",
+      "  nbconvert-pandoc   conda-forge/noarch::nbconvert-pandoc-7.2.2-pyhd8ed1ab_0\n",
+      "  nbformat           conda-forge/noarch::nbformat-5.7.0-pyhd8ed1ab_0\n",
+      "  ncurses            conda-forge/linux-64::ncurses-6.3-h27087fc_1\n",
+      "  nest-asyncio       conda-forge/noarch::nest-asyncio-1.5.6-pyhd8ed1ab_0\n",
+      "  nodejs             conda-forge/linux-64::nodejs-6.13.1-0\n",
+      "  notebook           conda-forge/noarch::notebook-6.5.1-pyha770c72_0\n",
+      "  notebook-shim      conda-forge/noarch::notebook-shim-0.2.0-pyhd8ed1ab_0\n",
+      "  numpy              conda-forge/linux-64::numpy-1.23.4-py38h7042d01_0\n",
+      "  openssl            conda-forge/linux-64::openssl-3.0.5-h166bdaf_2\n",
+      "  packaging          conda-forge/noarch::packaging-21.3-pyhd8ed1ab_0\n",
+      "  pandas             conda-forge/linux-64::pandas-0.24.2-py38hb3f55d8_1\n",
+      "  pandoc             conda-forge/linux-64::pandoc-2.19.2-h32600fe_1\n",
+      "  pandocfilters      conda-forge/noarch::pandocfilters-1.5.0-pyhd8ed1ab_0\n",
+      "  parso              conda-forge/noarch::parso-0.8.3-pyhd8ed1ab_0\n",
+      "  pexpect            conda-forge/noarch::pexpect-4.8.0-pyh9f0ad1d_2\n",
+      "  pickleshare        conda-forge/noarch::pickleshare-0.7.5-py_1003\n",
+      "  pip                conda-forge/noarch::pip-22.3-pyhd8ed1ab_0\n",
+      "  pkgutil-resolve-n~ conda-forge/noarch::pkgutil-resolve-name-1.3.10-pyhd8ed1ab_0\n",
+      "  prometheus_client  conda-forge/noarch::prometheus_client-0.15.0-pyhd8ed1ab_0\n",
+      "  prompt-toolkit     conda-forge/noarch::prompt-toolkit-3.0.31-pyha770c72_0\n",
+      "  psutil             conda-forge/linux-64::psutil-5.9.3-py38h0a891b7_0\n",
+      "  ptyprocess         conda-forge/noarch::ptyprocess-0.7.0-pyhd3deb0d_0\n",
+      "  pure_eval          conda-forge/noarch::pure_eval-0.2.2-pyhd8ed1ab_0\n",
+      "  pycparser          conda-forge/noarch::pycparser-2.21-pyhd8ed1ab_0\n",
+      "  pygments           conda-forge/noarch::pygments-2.13.0-pyhd8ed1ab_0\n",
+      "  pyopenssl          conda-forge/noarch::pyopenssl-22.1.0-pyhd8ed1ab_0\n",
+      "  pyparsing          conda-forge/noarch::pyparsing-3.0.9-pyhd8ed1ab_0\n",
+      "  pyrsistent         conda-forge/linux-64::pyrsistent-0.18.1-py38h0a891b7_1\n",
+      "  pysocks            conda-forge/noarch::pysocks-1.7.1-pyha2e5f31_6\n",
+      "  python             conda-forge/linux-64::python-3.8.13-ha86cf86_0_cpython\n",
+      "  python-dateutil    conda-forge/noarch::python-dateutil-2.8.2-pyhd8ed1ab_0\n",
+      "  python-fastjsonsc~ conda-forge/noarch::python-fastjsonschema-2.16.2-pyhd8ed1ab_0\n",
+      "  python_abi         conda-forge/linux-64::python_abi-3.8-2_cp38\n",
+      "  pytz               conda-forge/noarch::pytz-2022.5-pyhd8ed1ab_0\n",
+      "  pyzmq              conda-forge/linux-64::pyzmq-24.0.1-py38hfc09fa9_0\n",
+      "  readline           conda-forge/linux-64::readline-8.1.2-h0f457ee_0\n",
+      "  requests           conda-forge/noarch::requests-2.28.1-pyhd8ed1ab_1\n",
+      "  send2trash         conda-forge/noarch::send2trash-1.8.0-pyhd8ed1ab_0\n",
+      "  setuptools         conda-forge/linux-64::setuptools-59.8.0-py38h578d9bd_1\n",
+      "  six                conda-forge/noarch::six-1.16.0-pyh6c4a22f_0\n",
+      "  sniffio            conda-forge/noarch::sniffio-1.3.0-pyhd8ed1ab_0\n",
+      "  soupsieve          conda-forge/noarch::soupsieve-2.3.2.post1-pyhd8ed1ab_0\n",
+      "  sqlite             conda-forge/linux-64::sqlite-3.39.4-h4ff8645_0\n",
+      "  stack_data         conda-forge/noarch::stack_data-0.5.1-pyhd8ed1ab_0\n",
+      "  terminado          conda-forge/noarch::terminado-0.16.0-pyh41d4057_0\n",
+      "  tinycss2           conda-forge/noarch::tinycss2-1.2.1-pyhd8ed1ab_0\n",
+      "  tk                 conda-forge/linux-64::tk-8.6.12-h27826a3_0\n",
+      "  tomli              conda-forge/noarch::tomli-2.0.1-pyhd8ed1ab_0\n",
+      "  tornado            conda-forge/linux-64::tornado-6.2-py38h0a891b7_0\n",
+      "  traitlets          conda-forge/noarch::traitlets-5.5.0-pyhd8ed1ab_0\n",
+      "  typing_extensions  conda-forge/noarch::typing_extensions-4.4.0-pyha770c72_0\n",
+      "  urllib3            conda-forge/noarch::urllib3-1.26.11-pyhd8ed1ab_0\n",
+      "  wcwidth            conda-forge/noarch::wcwidth-0.2.5-pyh9f0ad1d_2\n",
+      "  webencodings       conda-forge/noarch::webencodings-0.5.1-py_1\n",
+      "  websocket-client   conda-forge/noarch::websocket-client-1.4.1-pyhd8ed1ab_0\n",
+      "  wheel              conda-forge/noarch::wheel-0.37.1-pyhd8ed1ab_0\n",
+      "  widgetsnbextension conda-forge/noarch::widgetsnbextension-4.0.3-pyhd8ed1ab_0\n",
+      "  xz                 conda-forge/linux-64::xz-5.2.6-h166bdaf_0\n",
+      "  zeromq             conda-forge/linux-64::zeromq-4.3.4-h9c3ff4c_1\n",
+      "  zipp               conda-forge/noarch::zipp-3.9.0-pyhd8ed1ab_0\n",
+      "\n",
+      "\n",
+      "\n",
+      "Downloading and Extracting Packages\n",
+      "_openmp_mutex-4.5    | 23 KB     | ##################################### | 100% \n",
+      "pkgutil-resolve-name | 9 KB      | ##################################### | 100% \n",
+      "traitlets-5.5.0      | 85 KB     | ##################################### | 100% \n",
+      "ptyprocess-0.7.0     | 16 KB     | ##################################### | 100% \n",
+      "libgomp-12.2.0       | 455 KB    | ##################################### | 100% \n",
+      "cffi-1.15.1          | 229 KB    | ##################################### | 100% \n",
+      "argon2-cffi-bindings | 34 KB     | ##################################### | 100% \n",
+      "bzip2-1.0.8          | 484 KB    | ##################################### | 100% \n",
+      "jupyter_core-4.11.1  | 81 KB     | ##################################### | 100% \n",
+      "nbclassic-0.4.5      | 7.7 MB    | ##################################### | 100% \n",
+      "backcall-0.2.0       | 13 KB     | ##################################### | 100% \n",
+      "sqlite-3.39.4        | 789 KB    | ##################################### | 100% \n",
+      "urllib3-1.26.11      | 102 KB    | ##################################### | 100% \n",
+      "ipython-8.5.0        | 552 KB    | ##################################### | 100% \n",
+      "jedi-0.18.1          | 799 KB    | ##################################### | 100% \n",
+      "_libgcc_mutex-0.1    | 3 KB      | ##################################### | 100% \n",
+      "matplotlib-inline-0. | 12 KB     | ##################################### | 100% \n",
+      "icu-67.1             | 12.9 MB   | ##################################### | 100% \n",
+      "python-fastjsonschem | 242 KB    | ##################################### | 100% \n",
+      "tomli-2.0.1          | 16 KB     | ##################################### | 100% \n",
+      "pyparsing-3.0.9      | 79 KB     | ##################################### | 100% \n",
+      "libgfortran-ng-12.2. | 22 KB     | ##################################### | 100% \n",
+      "executing-1.1.1      | 23 KB     | ##################################### | 100% \n",
+      "liblapack-3.9.0      | 13 KB     | ##################################### | 100% \n",
+      "pytz-2022.5          | 238 KB    | ##################################### | 100% \n",
+      "libnsl-2.0.0         | 31 KB     | ##################################### | 100% \n",
+      "pandoc-2.19.2        | 30.0 MB   | ##################################### | 100% \n",
+      "wheel-0.37.1         | 31 KB     | ##################################### | 100% \n",
+      "jsonschema-4.16.0    | 65 KB     | ##################################### | 100% \n",
+      "importlib-metadata-4 | 33 KB     | ##################################### | 100% \n",
+      "python_abi-3.8       | 4 KB      | ##################################### | 100% \n",
+      "python-3.8.13        | 25.2 MB   | ##################################### | 100% \n",
+      "ncurses-6.3          | 1002 KB   | ##################################### | 100% \n",
+      "ipython_genutils-0.2 | 21 KB     | ##################################### | 100% \n",
+      "zipp-3.9.0           | 13 KB     | ##################################### | 100% \n",
+      "asttokens-2.0.8      | 24 KB     | ##################################### | 100% \n",
+      "libsodium-1.0.18     | 366 KB    | ##################################### | 100% \n",
+      "jinja2-3.1.2         | 99 KB     | ##################################### | 100% \n",
+      "prometheus_client-0. | 50 KB     | ##################################### | 100% \n",
+      "send2trash-1.8.0     | 17 KB     | ##################################### | 100% \n",
+      "freetype-2.12.1      | 884 KB    | ##################################### | 100% \n",
+      "readline-8.1.2       | 291 KB    | ##################################### | 100% \n",
+      "terminado-0.16.0     | 18 KB     | ##################################### | 100% \n",
+      "jupyterlab_pygments- | 17 KB     | ##################################### | 100% \n",
+      "libsqlite-3.39.4     | 803 KB    | ##################################### | 100% \n",
+      "libgfortran5-12.2.0  | 1.8 MB    | ##################################### | 100% \n",
+      "defusedxml-0.7.1     | 23 KB     | ##################################### | 100% \n",
+      "pyrsistent-0.18.1    | 92 KB     | ##################################### | 100% \n",
+      "pandocfilters-1.5.0  | 11 KB     | ##################################### | 100% \n",
+      "libzlib-1.2.13       | 64 KB     | ##################################### | 100% \n",
+      "libblas-3.9.0        | 13 KB     | ##################################### | 100% \n",
+      "anyio-3.6.2          | 83 KB     | ##################################### | 100% \n",
+      "nbformat-5.7.0       | 106 KB    | ##################################### | 100% \n",
+      "nbconvert-7.2.2      | 6 KB      | ##################################### | 100% \n",
+      "libffi-3.4.2         | 57 KB     | ##################################### | 100% \n",
+      "jupyterlab-3.5.0     | 6.0 MB    | ##################################### | 100% \n",
+      "psutil-5.9.3         | 348 KB    | ##################################### | 100% \n",
+      "pexpect-4.8.0        | 47 KB     | ##################################### | 100% \n",
+      "nest-asyncio-1.5.6   | 10 KB     | ##################################### | 100% \n",
+      "nbconvert-core-7.2.2 | 189 KB    | ##################################### | 100% \n",
+      "typing_extensions-4. | 29 KB     | ##################################### | 100% \n",
+      "json5-0.9.5          | 20 KB     | ##################################### | 100% \n",
+      "brotlipy-0.7.0       | 342 KB    | ##################################### | 100% \n",
+      "mistune-2.0.4        | 67 KB     | ##################################### | 100% \n",
+      "tk-8.6.12            | 3.3 MB    | ##################################### | 100% \n",
+      "cryptography-38.0.2  | 1.6 MB    | ##################################### | 100% \n",
+      "pickleshare-0.7.5    | 9 KB      | ##################################### | 100% \n",
+      "widgetsnbextension-4 | 1.6 MB    | ##################################### | 100% \n",
+      "beautifulsoup4-4.11. | 96 KB     | ##################################### | 100% \n",
+      "libpng-1.6.38        | 371 KB    | ##################################### | 100% \n",
+      "websocket-client-1.4 | 42 KB     | ##################################### | 100% \n",
+      "matplotlib-3.2.2     | 6 KB      | ##################################### | 100% \n",
+      "tinycss2-1.2.1       | 23 KB     | ##################################### | 100% \n",
+      "ipykernel-6.16.1     | 100 KB    | ##################################### | 100% \n",
+      "setuptools-59.8.0    | 1017 KB   | ##################################### | 100% \n",
+      "libcblas-3.9.0       | 13 KB     | ##################################### | 100% \n",
+      "pandas-0.24.2        | 11.5 MB   | ##################################### | 100% \n",
+      "charset-normalizer-2 | 36 KB     | ##################################### | 100% \n",
+      "libstdcxx-ng-12.2.0  | 4.3 MB    | ##################################### | 100% \n",
+      "flit-core-3.7.1      | 44 KB     | ##################################### | 100% \n",
+      "importlib_resources- | 29 KB     | ##################################### | 100% \n",
+      "openssl-3.0.5        | 2.8 MB    | ##################################### | 100% \n",
+      "jupyter_server-1.21. | 239 KB    | ##################################### | 100% \n",
+      "libgcc-ng-12.2.0     | 931 KB    | ##################################### | 100% \n",
+      "backports.functools_ | 9 KB      | ##################################### | 100% \n",
+      "libopenblas-0.3.21   | 10.1 MB   | ##################################### | 100% \n",
+      "attrs-22.1.0         | 48 KB     | ##################################### | 100% \n",
+      "nbconvert-pandoc-7.2 | 5 KB      | ##################################### | 100% \n",
+      "zeromq-4.3.4         | 351 KB    | ##################################### | 100% \n",
+      "cycler-0.11.0        | 10 KB     | ##################################### | 100% \n",
+      "pyzmq-24.0.1         | 508 KB    | ##################################### | 100% \n",
+      "jupyterlab_server-2. | 49 KB     | ##################################### | 100% \n",
+      "pycparser-2.21       | 100 KB    | ##################################### | 100% \n",
+      "tornado-6.2          | 653 KB    | ##################################### | 100% \n",
+      "python-dateutil-2.8. | 240 KB    | ##################################### | 100% \n",
+      "packaging-21.3       | 36 KB     | ##################################### | 100% \n",
+      "backports-1.0        | 4 KB      | ##################################### | 100% \n",
+      "ipywidgets-8.0.2     | 109 KB    | ##################################### | 100% \n",
+      "parso-0.8.3          | 69 KB     | ##################################### | 100% \n",
+      "markupsafe-2.1.1     | 22 KB     | ##################################### | 100% \n",
+      "bleach-5.0.1         | 124 KB    | ##################################### | 100% \n",
+      "six-1.16.0           | 14 KB     | ##################################### | 100% \n",
+      "notebook-shim-0.2.0  | 15 KB     | ##################################### | 100% \n",
+      "wcwidth-0.2.5        | 33 KB     | ##################################### | 100% \n",
+      "stack_data-0.5.1     | 24 KB     | ##################################### | 100% \n",
+      "decorator-5.1.1      | 12 KB     | ##################################### | 100% \n",
+      "libgcc-7.2.0         | 304 KB    | ##################################### | 100% \n",
+      "matplotlib-base-3.2. | 7.1 MB    | ##################################### | 100% \n",
+      "certifi-2022.9.24    | 155 KB    | ##################################### | 100% \n",
+      "entrypoints-0.4      | 9 KB      | ##################################### | 100% \n",
+      "notebook-6.5.1       | 266 KB    | ##################################### | 100% \n",
+      "pure_eval-0.2.2      | 14 KB     | ##################################### | 100% \n",
+      "numpy-1.23.4         | 7.1 MB    | ##################################### | 100% \n",
+      "requests-2.28.1      | 53 KB     | ##################################### | 100% \n",
+      "argon2-cffi-21.3.0   | 15 KB     | ##################################### | 100% \n",
+      "jupyterlab_widgets-3 | 222 KB    | ##################################### | 100% \n",
+      "nbclient-0.7.0       | 65 KB     | ##################################### | 100% \n",
+      "nodejs-6.13.1        | 11.9 MB   | ##################################### | 100% \n",
+      "pip-22.3             | 1.5 MB    | ##################################### | 100% \n",
+      "xz-5.2.6             | 409 KB    | ##################################### | 100% \n",
+      "pygments-2.13.0      | 821 KB    | ##################################### | 100% \n",
+      "idna-3.4             | 55 KB     | ##################################### | 100% \n",
+      "debugpy-1.6.3        | 2.0 MB    | ##################################### | 100% \n",
+      "kiwisolver-1.4.4     | 76 KB     | ##################################### | 100% \n",
+      "soupsieve-2.3.2.post | 34 KB     | ##################################### | 100% \n",
+      "pysocks-1.7.1        | 19 KB     | ##################################### | 100% \n",
+      "webencodings-0.5.1   | 12 KB     | ##################################### | 100% \n",
+      "pyopenssl-22.1.0     | 122 KB    | ##################################### | 100% \n",
+      "ld_impl_linux-64-2.3 | 759 KB    | ##################################### | 100% \n",
+      "jupyter_client-7.4.3 | 91 KB     | ##################################### | 100% \n",
+      "ca-certificates-2022 | 150 KB    | ##################################### | 100% \n",
+      "sniffio-1.3.0        | 14 KB     | ##################################### | 100% \n",
+      "babel-2.10.3         | 6.7 MB    | ##################################### | 100% \n",
+      "libuuid-2.32.1       | 28 KB     | ##################################### | 100% \n",
+      "prompt-toolkit-3.0.3 | 254 KB    | ##################################### | 100% \n",
+      "Preparing transaction: done\n",
+      "Verifying transaction: done\n",
+      "Executing transaction: done\n",
+      "#\n",
+      "# To activate this environment, use\n",
+      "#\n",
+      "#     $ conda activate my_jupyterlab3\n",
+      "#\n",
+      "# To deactivate an active environment, use\n",
+      "#\n",
+      "#     $ conda deactivate\n",
+      "\n"
+     ]
+    }
+   ],
+   "source": [
+    "${CONDA_TARGET_DIR}/bin/conda create -n ${CONDA_ENV} --override-channels --strict-channel-priority -c conda-forge -c anaconda --yes jupyterlab=3 ipywidgets nodejs pip pandas=0.24 matplotlib"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "measured-finance",
+   "metadata": {},
+   "source": [
+    "----------------------------------------------------\n",
+    "## 3. Activate Conda Environment"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 11,
+   "id": "regional-haiti",
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "/p/project/coecschool22/goebbert1/miniconda3\n",
+      "my_jupyterlab3\n",
+      "(my_jupyterlab3) (my_jupyterlab3) (my_jupyterlab3) (my_jupyterlab3) (my_jupyterlab3) \n",
+      "(my_jupyterlab3) "
+     ]
+    },
+    {
+     "ename": "",
+     "evalue": "1",
+     "output_type": "error",
+     "traceback": []
+    }
+   ],
+   "source": [
+    "# verify that PYTHONPATH only points to directories of packages\n",
+    "# that are compatible with the Python interpreter in Miniconda3\n",
+    "unset PYTHONPATH\n",
+    "\n",
+    "# just to show that jupyterlab starts\n",
+    "# we have to ensure that the bash-kernel shell\n",
+    "# does not have JUPYTER*- environment variables set from the running JupyterLab (which serves this notebook)\n",
+    "unset JUPYTER_PATH\n",
+    "unset JUPYTERLAB_DIR\n",
+    "unset JUPYTER_DATA_DIR\n",
+    "unset JUPYTER_CONFIG_PATH\n",
+    "\n",
+    "# Activate your Python virtual environment\n",
+    "echo ${CONDA_TARGET_DIR}\n",
+    "echo ${CONDA_ENV}\n",
+    "source \"${CONDA_TARGET_DIR}\"/bin/activate \"${CONDA_ENV}\"\n",
+    "    \n",
+    "# Ensure python packages installed in conda are always prefered, not necessary if module purge is used\n",
+    "#export PYTHONPATH=${CONDA_PREFIX}/lib/python3.6/site-packages:${PYTHONPATH}\n",
+    "\n",
+    "echo $PYTHONPATH"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 12,
+   "id": "sticky-intensity",
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "/p/project/coecschool22/goebbert1/miniconda3/envs/my_jupyterlab3/bin/jupyter\n",
+      "(my_jupyterlab3) "
+     ]
+    },
+    {
+     "ename": "",
+     "evalue": "1",
+     "output_type": "error",
+     "traceback": []
+    }
+   ],
+   "source": [
+    "which jupyter"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "instrumental-virtue",
+   "metadata": {},
+   "source": [
+    "---------\n",
+    "## 4. Start the fresh installed JupyterLab from the Conda Environment"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "proved-samoa",
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "(my_jupyterlab3) [I 2022-10-24 23:49:58.128 ServerApp] jupyterlab | extension was successfully linked.\n",
+      "[I 2022-10-24 23:49:58.137 ServerApp] nbclassic | extension was successfully linked.\n",
+      "[I 2022-10-24 23:49:58.261 LabApp] JupyterLab extension loaded from /p/project/coecschool22/goebbert1/miniconda3/envs/my_jupyterlab3/lib/python3.8/site-packages/jupyterlab\n",
+      "[I 2022-10-24 23:49:58.261 LabApp] JupyterLab application directory is /p/project/coecschool22/goebbert1/miniconda3/envs/my_jupyterlab3/share/jupyter/lab\n",
+      "[I 2022-10-24 23:49:58.264 ServerApp] jupyterlab | extension was successfully loaded.\n",
+      "[I 2022-10-24 23:49:58.268 ServerApp] nbclassic | extension was successfully loaded.\n",
+      "[I 2022-10-24 23:49:58.268 ServerApp] Serving notebooks from local directory: /p/project/coecschool22/goebbert1/prace-2022.04-jupyter4hpc/day_2/5_my_own_jupyterlab\n",
+      "[I 2022-10-24 23:49:58.268 ServerApp] Jupyter Server 1.21.0 is running at:\n",
+      "[I 2022-10-24 23:49:58.268 ServerApp] http://localhost:8888/lab?token=8d055ad8360be4ae9aededca7b3771fd4fd3c94c29fef6c8\n",
+      "[I 2022-10-24 23:49:58.268 ServerApp]  or http://127.0.0.1:8888/lab?token=8d055ad8360be4ae9aededca7b3771fd4fd3c94c29fef6c8\n",
+      "[I 2022-10-24 23:49:58.268 ServerApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).\n",
+      "[C 2022-10-24 23:49:58.802 ServerApp] \n",
+      "    \n",
+      "    To access the server, open this file in a browser:\n",
+      "        file:///p/project/ccstvs/goebbert1/home_juwels/.local/share/jupyter/runtime/jpserver-31337-open.html\n",
+      "    Or copy and paste one of these URLs:\n",
+      "        http://localhost:8888/lab?token=8d055ad8360be4ae9aededca7b3771fd4fd3c94c29fef6c8\n",
+      "     or http://127.0.0.1:8888/lab?token=8d055ad8360be4ae9aededca7b3771fd4fd3c94c29fef6c8\n"
+     ]
+    }
+   ],
+   "source": [
+    "## JUST FOR TESTING !!!\n",
+    "jupyter lab --no-browser"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "colored-nickel",
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python 3 (ipykernel)",
+   "language": "python",
+   "name": "python3"
+  },
+  "language_info": {
+   "codemirror_mode": {
+    "name": "ipython",
+    "version": 3
+   },
+   "file_extension": ".py",
+   "mimetype": "text/x-python",
+   "name": "python",
+   "nbconvert_exporter": "python",
+   "pygments_lexer": "ipython3",
+   "version": "3.8.16"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}
diff --git a/day5_extras/2_my_own_jupyterlab/2-manually-connect-to-JupyterLab.ipynb b/day5_extras/2_my_own_jupyterlab/2-manually-connect-to-JupyterLab.ipynb
new file mode 100644
index 0000000000000000000000000000000000000000..bd51029de01710ad80803ed558cef5e93541d82f
--- /dev/null
+++ b/day5_extras/2_my_own_jupyterlab/2-manually-connect-to-JupyterLab.ipynb
@@ -0,0 +1,248 @@
+{
+ "cells": [
+  {
+   "attachments": {
+    "67258d94-84e6-4a0c-ae8f-c74332ec082e.jpg": {
+     "image/jpeg": "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"
+    }
+   },
+   "cell_type": "markdown",
+   "id": "2ea39561-7031-4e43-922c-439caa7957c6",
+   "metadata": {
+    "tags": [],
+    "toc-hr-collapsed": false
+   },
+   "source": [
+    "![jsc-logo.jpg](attachment:67258d94-84e6-4a0c-ae8f-c74332ec082e.jpg)\n",
+    "Author: [Jens Henrik Göbbert](mailto:j.goebbert@fz-juelich.de)\n",
+    "------------------------------------"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "ce6bf220-69b3-47db-92c4-87eeb22395d9",
+   "metadata": {},
+   "source": [
+    "# Supercomputing with JupyterLab - Tips & Tricks\n",
+    "\n",
+    "This is the first time you are using JupyterLab on an HPC system? Let us show you some tips & tricks.\n",
+    "\n",
+    "This notebook might be special to the environment at Juelich Supercomputing Centre, Forschungszentrum Juelich, Germany.\n",
+    "\n",
+    "-------------------------"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "contained-explanation",
+   "metadata": {},
+   "source": [
+    "### How to manually start and connect to JupyterLab"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "small-panic",
+   "metadata": {},
+   "source": [
+    "#### Exercise 1:\n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "simple-syndrome",
+   "metadata": {},
+   "source": [
+    "1. Open a Terminal\n",
+    "   - if you use the terminal from within a running JupyterLab, you need to clean up a bit\n",
+    "```\n",
+    "unset JUPYTER_PATH\n",
+    "unset JUPYTERLAB_DIR\n",
+    "unset JUPYTER_DATA_DIR\n",
+    "unset JUPYTER_CONFIG_PATH\n",
+    "```\n",
+    "2. Decide what JupyterLab you want to start\n",
+    "   - a) preinstalled JupyterLab from a module\n",
+    "   - b) JupyterLab from your own conda-environment"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "breeding-probe",
+   "metadata": {},
+   "source": [
+    "#### A) Using a preinstalled JupyterLab from a module\n",
+    "\n",
+    "Run the following commands to prepare your shell\n",
+    "```bash\n",
+    "module purge\n",
+    "module use $OTHERSTAGES\n",
+    "module load Stages/2022\n",
+    "module load GCCcore/.11.2.0\n",
+    "module load JupyterCollection\n",
+    "```\n",
+    "\n",
+    "Start JupyterLab\n",
+    "```bash\n",
+    "jupyter lab --no-browser\n",
+    "```"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "round-flush",
+   "metadata": {},
+   "source": [
+    "#### B) JupyterLab from your own conda-environment\n",
+    "\n",
+    "Prepare preinstalled conda environment:\n",
+    "```bash\n",
+    "export CONDA_TARGET_DIR=/p/project/coecschool22/goebbert1/miniconda3\n",
+    "CONDA_ENV=my_jupyterlab3\n",
+    "\n",
+    "# >>> conda initialize >>>\n",
+    "__conda_setup=\"$('/p/project/coecschool22/goebbert1/miniconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)\"\n",
+    "if [ $? -eq 0 ]; then\n",
+    "    eval \"$__conda_setup\"\n",
+    "else\n",
+    "    if [ -f \"/p/project/coecschool22/goebbert1/miniconda3/etc/profile.d/conda.sh\" ]; then\n",
+    "        . \"/p/project/coecschool22/goebbert1/miniconda3/etc/profile.d/conda.sh\"\n",
+    "    else\n",
+    "        export PATH=\"/p/project/coecschool22/goebbert1/miniconda3/bin:$PATH\"\n",
+    "    fi\n",
+    "fi\n",
+    "unset __conda_setup\n",
+    "# <<< conda initialize <<<\n",
+    "```"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "spiritual-mustang",
+   "metadata": {},
+   "source": [
+    "Load conda environment\n",
+    "```bash\n",
+    "# verify that PYTHONPATH only points to directories of packages\n",
+    "# that are compatible with the Python interpreter in Miniconda3\n",
+    "unset PYTHONPATH\n",
+    "\n",
+    "# just to show that jupyterlab starts\n",
+    "# we have to ensure that the bash-kernel shell\n",
+    "# does not have JUPYTER*- environment variables set from the running JupyterLab (which serves this notebook)\n",
+    "unset JUPYTER_PATH\n",
+    "unset JUPYTERLAB_DIR\n",
+    "unset JUPYTER_DATA_DIR\n",
+    "unset JUPYTER_CONFIG_PATH\n",
+    "\n",
+    "# Activate your Python virtual environment\n",
+    "echo ${CONDA_TARGET_DIR}\n",
+    "echo ${CONDA_ENV}\n",
+    "source \"${CONDA_TARGET_DIR}\"/bin/activate \"${CONDA_ENV}\"\n",
+    "    \n",
+    "# Ensure python packages installed in conda are always prefered, not necessary if module purge is used\n",
+    "#export PYTHONPATH=${CONDA_PREFIX}/lib/python3.6/site-packages:${PYTHONPATH}\n",
+    "\n",
+    "echo $PYTHONPATH\n",
+    "```\n",
+    "\n",
+    "Start JupyterLab\n",
+    "```bash\n",
+    "jupyter lab --no-browser\n",
+    "```"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "boolean-tamil",
+   "metadata": {},
+   "source": [
+    "---------\n",
+    "### Tunnel the new JupyterLab to your local machine\n",
+    "\n",
+    "**Linux or Mac:**  \n",
+    "If your operating system is Linux or Mac use: "
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "olive-madonna",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "ssh -N -L <LOCAL_PORT>:<JLAB_NODE>:<JLAB_PORT> <USERID>@<LOGIN_NODE>.fz-juelich.de\n",
+    "# example: ssh -N -L 8888:juwels04:8888 goebbert1@juwels01.fz-juelich.de\n",
+    "\n",
+    "# if you want to tunnel directly to <LOGIN_NODE> only, then you must set JLAB_NODE to \"localhost\""
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "scientific-commission",
+   "metadata": {},
+   "source": [
+    "**Attention:**\n",
+    "- LOGIN_NODE - Hostname of login node from the view of your local machine\n",
+    "- JLAB_NODE - Hostname of the node running JupyterLab from the view of LOGIN_NODE\n",
+    "- LOCAL_PORT - port on your local machine\n",
+    "- JLAB_PORT - port on the node running JupyterLab"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "under-willow",
+   "metadata": {},
+   "source": [
+    "**Windows:**\n",
+    "In case your operating system is Windows, the setup of the tunnel depends on your ssh client.\n",
+    "Here a short overview on how-to setup a tunnel with **PuTTY** is given.\n",
+    "\n",
+    "It is assumed that PuTTY is already configured in a way that a general ssh connection to JUWELS is possible.\n",
+    "That means that host name, user name and the private ssh key (using PuTTY's Pageant) are correctly set.\n",
+    "You already made a first connection to JUWELS using PUTTY.\n",
+    "\n",
+    "To establish the ssh tunnel start PUTTY and enter the \"SSH-->tunnels\" tab in the PuTTY configuration window before connecting to JUWELS.\n",
+    "You have to enter the source port (eg. <LOCAL_PORT> = 8888) and the destination (eg. juwels01.fz-juelich.de:8888) and than press add.\n",
+    "After pressing add, the tunnel should appear in the list of forwarded ports and you can establish the tunnel by pressing the open button."
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "ordered-tract",
+   "metadata": {},
+   "source": [
+    "![](PuTTY-add-tunnel.png)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "unexpected-sharing",
+   "metadata": {},
+   "source": [
+    "![](PuTTY-tunnel-added.png)"
+   ]
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python 3 (ipykernel)",
+   "language": "python",
+   "name": "python3"
+  },
+  "language_info": {
+   "codemirror_mode": {
+    "name": "ipython",
+    "version": 3
+   },
+   "file_extension": ".py",
+   "mimetype": "text/x-python",
+   "name": "python",
+   "nbconvert_exporter": "python",
+   "pygments_lexer": "ipython3",
+   "version": "3.9.6"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}
diff --git a/day5_extras/2_my_own_jupyterlab/3-switch-default-Jupyterlab.ipynb b/day5_extras/2_my_own_jupyterlab/3-switch-default-Jupyterlab.ipynb
new file mode 100644
index 0000000000000000000000000000000000000000..8d888dd68351b467562a9ff28632d0c623e9247e
--- /dev/null
+++ b/day5_extras/2_my_own_jupyterlab/3-switch-default-Jupyterlab.ipynb
@@ -0,0 +1,120 @@
+{
+ "cells": [
+  {
+   "attachments": {
+    "67258d94-84e6-4a0c-ae8f-c74332ec082e.jpg": {
+     "image/jpeg": "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"
+    }
+   },
+   "cell_type": "markdown",
+   "id": "ece9406a-a238-4c26-8a8e-f3f582d3a5e6",
+   "metadata": {
+    "tags": [],
+    "toc-hr-collapsed": false
+   },
+   "source": [
+    "![jsc-logo.jpg](attachment:67258d94-84e6-4a0c-ae8f-c74332ec082e.jpg)\n",
+    "Author: [Jens Henrik Göbbert](mailto:j.goebbert@fz-juelich.de)\n",
+    "------------------------------------"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "d36452be-8e07-4876-ab0d-ba4d58c4c0cf",
+   "metadata": {},
+   "source": [
+    "# Supercomputing with JupyterLab - Tips & Tricks\n",
+    "\n",
+    "This is the first time you are using JupyterLab on an HPC system? Let us show you some tips & tricks.\n",
+    "\n",
+    "This notebook might be special to the environment at Juelich Supercomputing Centre, Forschungszentrum Juelich, Germany.\n",
+    "\n",
+    "-------------------------"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "stuffed-collapse",
+   "metadata": {},
+   "source": [
+    "### Switch the default JupyterLab installation"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "spectacular-placement",
+   "metadata": {},
+   "source": [
+    "#### Exercise 1:\n",
+    "1. Open `$JUPYTER_LOG_DIR/.start`\n",
+    "2. Check for call of optional start-script\n",
+    "3. Create own start-script\n",
+    "   - `$HOME/.jupyter/start_jupyter-jsc.sh`"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "successful-intranet",
+   "metadata": {},
+   "source": [
+    "```bash\n",
+    "module purge\n",
+    "module load Stages/2022\n",
+    "module load GCCcore/.11.2.0\n",
+    "\n",
+    "module use /p/usersoftware/swmanage/goebbert1/stage2022/jupyter33/easybuild/$SYSTEMNAME/modules/all/Compiler/GCCcore/11.2.0/\n",
+    "\n",
+    "module load Python\n",
+    "module load JupyterCollection/2022.3.3\n",
+    "```"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "civil-stupid",
+   "metadata": {},
+   "source": [
+    "Starting a JupyterLab through Jupyter-JSC now on the cluster using this $HOME  \n",
+    "- will now source `$HOME/.jupyter/start_jupyter-jsc.sh` before it starts JupyterLab\n",
+    "- and therefore will now use `JupyterCollection/2022.3.3` from `Stage/2022`."
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "extra-tooth",
+   "metadata": {},
+   "source": [
+    "#### Exercise 2:\n",
+    "What is this `JupyterCollection` ?  \n",
+    "\n",
+    "1. Check `which jupyter`\n",
+    "2. Check the jupyter installation\n",
+    "   - `cd $EBROOTJUPYTERCOLLECTION/easybuild/`\n",
+    "   - `vim JupyterCollection-2021.3.2-gcccoremkl-10.3.0-2021.2.0.eb`\n",
+    "3. Check the easybuild files of our Jupyter module on Github:\n",
+    "   - https://github.com/easybuilders/JSC/"
+   ]
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python 3 (ipykernel)",
+   "language": "python",
+   "name": "python3"
+  },
+  "language_info": {
+   "codemirror_mode": {
+    "name": "ipython",
+    "version": 3
+   },
+   "file_extension": ".py",
+   "mimetype": "text/x-python",
+   "name": "python",
+   "nbconvert_exporter": "python",
+   "pygments_lexer": "ipython3",
+   "version": "3.8.5"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}
diff --git a/day5_extras/2_my_own_jupyterlab/PuTTY-add-tunnel.png b/day5_extras/2_my_own_jupyterlab/PuTTY-add-tunnel.png
new file mode 100644
index 0000000000000000000000000000000000000000..d1ffca13393f998810a179c657c82a743bf7d480
Binary files /dev/null and b/day5_extras/2_my_own_jupyterlab/PuTTY-add-tunnel.png differ
diff --git a/day5_extras/2_my_own_jupyterlab/PuTTY-tunnel-added.png b/day5_extras/2_my_own_jupyterlab/PuTTY-tunnel-added.png
new file mode 100644
index 0000000000000000000000000000000000000000..8b2d0e3a01e94c6bf3daf6d1845ceab56ce948a2
Binary files /dev/null and b/day5_extras/2_my_own_jupyterlab/PuTTY-tunnel-added.png differ
diff --git a/day5_extras/6_cloud-hpc_challenges/1-hdf-cloud_mount-hpc-storage.ipynb b/day5_extras/6_cloud-hpc_challenges/1-hdf-cloud_mount-hpc-storage.ipynb
new file mode 100644
index 0000000000000000000000000000000000000000..8560ec542c23b4fba779749fdff37327bbac47ef
--- /dev/null
+++ b/day5_extras/6_cloud-hpc_challenges/1-hdf-cloud_mount-hpc-storage.ipynb
@@ -0,0 +1,256 @@
+{
+ "cells": [
+  {
+   "attachments": {
+    "67258d94-84e6-4a0c-ae8f-c74332ec082e.jpg": {
+     "image/jpeg": "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"
+    }
+   },
+   "cell_type": "markdown",
+   "id": "exclusive-nursery",
+   "metadata": {
+    "toc-hr-collapsed": false
+   },
+   "source": [
+    "![jsc-logo.jpg](attachment:67258d94-84e6-4a0c-ae8f-c74332ec082e.jpg)\n",
+    "Author: [Jens Henrik Göbbert](mailto:j.goebbert@fz-juelich.de)\n",
+    "------------------------------------"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "worldwide-presence",
+   "metadata": {},
+   "source": [
+    "# Supercomputing with JupyterLab - Tips & Tricks\n",
+    "\n",
+    "This is the first time you are using JupyterLab on an HPC system? Let us show you some tips & tricks.\n",
+    "\n",
+    "This notebook might be special to the environment at Juelich Supercomputing Centre, Forschungszentrum Juelich, Germany.# JupyterLab Tour\n",
+    "\n",
+    "-------------------------"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "retired-crest",
+   "metadata": {},
+   "source": [
+    "#### Exercise 1:\n",
+    "**ONLY FOR HDF-CLOUD**  \n",
+    "**!!DANGEROUS!! YOU ARE MOUNTING WRITEABLE**  \n",
+    "Mount the $HOMEs from GPFS on the HDF Cloud"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 1,
+   "id": "abd7420b-36b8-4f8b-91fc-cc10f6d45013",
+   "metadata": {
+    "tags": []
+   },
+   "outputs": [],
+   "source": [
+    "import json\n",
+    "import os\n",
+    "from contextlib import closing\n",
+    "\n",
+    "import pyunicore.client as unicore_client\n",
+    "import requests"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "2da2cb6f-d6c6-4bbe-a7bb-8dd488615181",
+   "metadata": {},
+   "source": [
+    "During the login process in Jupyter-JSC, you have authenticated yourself against the identity management system [*Unity-IdM*](https://www.unity-idm.eu) .  \n",
+    "This IdM issues temporary tokens (comparable to user+password) on request, which can be use for authentication to other services that are also connected to the same IdM.  \n",
+    "Here we use the JupyterHub-API (+your JUPYTERHUB_API_TOKEN) to get a new temporary token for the next steps."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 2,
+   "id": "643d4c6b-927e-4d25-a3b0-1e6755a6cae3",
+   "metadata": {
+    "tags": []
+   },
+   "outputs": [],
+   "source": [
+    "def get_access_token():\n",
+    "    remote_node = os.getenv(\"REMOTE_NODE\")\n",
+    "    remote_hub_port = os.getenv(\"REMOTE_PORT\")\n",
+    "    hub_api_url = f\"http://{remote_node}:{remote_hub_port}/hub/api/user\"\n",
+    "    headers = {\"Authorization\": \"token {}\".format(os.getenv(\"JUPYTERHUB_API_TOKEN\"))}\n",
+    "    with closing(requests.get(hub_api_url, headers=headers)) as r:\n",
+    "        if r.status_code == 200:\n",
+    "            resp = json.loads(r.content.decode(\"utf-8\"))\n",
+    "        else:\n",
+    "            raise Exception(\n",
+    "                \"Could not receive access token: {} {}\".format(\n",
+    "                    r.status_code, r.content.decode(\"utf-8\")\n",
+    "                )\n",
+    "            )\n",
+    "    # No HPC accounts -> no access token in this script\n",
+    "    if (\n",
+    "        \"auth_state\" in resp.keys()\n",
+    "        and \"oauth_user\" in resp[\"auth_state\"].keys()\n",
+    "        and \"hpc_infos_attribute\" in resp[\"auth_state\"][\"oauth_user\"]\n",
+    "        and len(resp[\"auth_state\"][\"oauth_user\"][\"hpc_infos_attribute\"]) > 0\n",
+    "    ):\n",
+    "        return resp[\"auth_state\"][\"access_token\"]\n",
+    "    else:\n",
+    "        return None"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "540563d1-59ca-4d28-86f7-171c98310a68",
+   "metadata": {},
+   "source": [
+    "Having that `access_token` we can now ask unicore for information about the HPC account of the user the token belongs to.  \n",
+    "We will receive the `uid` and the base of all its home directories as `remote_base_dir`.  \n",
+    "\n",
+    "That information is required to ask the service [*UFTP*](https://apps.fz-juelich.de/jsc/hps/judac/uftp.html) all details needed for the mound command."
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "aa5c5156-9afd-4b7b-a78f-7bb40aef2222",
+   "metadata": {},
+   "source": [
+    "**ATTENTION:** Set `ro` or `rw` for mounting readonly or writable"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 3,
+   "id": "78c3f65d-1039-482f-900b-c9b0173b490d",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "def get_mount_command(access_token):\n",
+    "    _auth = \"https://uftp.fz-juelich.de:9112/UFTP_Auth/rest/auth/\"\n",
+    "    _tr = unicore_client.Transport(access_token)\n",
+    "    _info = _tr.get(url=_auth)\n",
+    "    _uid = _info[\"JUDAC\"][\"uid\"]\n",
+    "    remote_base_dir = \"/p/home/jusers/%s\" % _uid\n",
+    "\n",
+    "    # authenticate\n",
+    "    _req = {\n",
+    "        \"persistent\": \"true\",\n",
+    "        \"serverPath\": \"%s/___UFTP___MULTI___FILE___SESSION___MODE___\" % remote_base_dir,\n",
+    "    }\n",
+    "    _reply = _tr.post(url=_auth + \"/JUDAC\", json=_req).json()\n",
+    "    uftp_pwd = _reply[\"secret\"]\n",
+    "    uftp_host = _reply[\"serverHost\"]\n",
+    "    uftp_port = _reply[\"serverPort\"]\n",
+    "    return f\"curlftpfs -s -o rw,uid=1094,gid=100,ftp_method=singlecwd,enable_epsv,user=anonymous:{uftp_pwd} {uftp_host}:{uftp_port}\""
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "e7f6af90-bd33-4a55-9659-973bcaa3da67",
+   "metadata": {},
+   "source": [
+    "------------------------------------\n",
+    "Let's bring all pieces together:"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 7,
+   "id": "b0fa1183-2983-4702-94b1-b4567fea4df3",
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "curlftpfs -s -o rw,uid=1094,gid=100,ftp_method=singlecwd,enable_epsv,user= <...>\n"
+     ]
+    }
+   ],
+   "source": [
+    "access_token = get_access_token()\n",
+    "if not access_token:\n",
+    "    print(\"Error: No access token\")\n",
+    "mount_cmd = get_mount_command(access_token)\n",
+    "# e.g. curlftpfs -s -o ro,uid=1094,gid=100,ftp_method=singlecwd,enable_epsv,user=anonymous:fwngibbflwngfllaycpc judacsrv.fz-juelich.de:64333\n",
+    "print(mount_cmd.partition(\"anonymous:\")[0], \"<...>\") # do not print the token"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 8,
+   "id": "45c2ff24-a735-459a-8b53-ceeb74752635",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "%%bash -s \"$mount_cmd\"\n",
+    "mkdir -p $HOME/uftp-mount-rw\n",
+    "$1 $HOME/uftp-mount-rw"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 9,
+   "id": "30a5b1e5-4f11-465a-a27d-e0b2c5973ec0",
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "total 68\n",
+      "drwx------ 3 jovyan users  4096 Mar 14 23:53 deep\n",
+      "drwx------ 3 jovyan users  4096 Mar 31 21:42 hdfml\n",
+      "drwx------ 3 jovyan users  4096 Mar 25 11:11 judac\n",
+      "drwx------ 3 jovyan users 16384 Apr  5  2022 jureca\n",
+      "drwx------ 3 jovyan users  4096 Aug 14  2021 juropa3exp\n",
+      "drwx------ 3 jovyan users 16384 Mar 31 23:15 jusuf\n",
+      "drwx------ 3 jovyan users 16384 Apr  1 10:45 juwels\n",
+      "drwx------ 3 jovyan users  4096 Mar  9 21:50 shared\n"
+     ]
+    }
+   ],
+   "source": [
+    "# ...\n",
+    "!ls -l $HOME/uftp-mount-rw"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "5a4ff2ac-8731-4ce2-ab79-e89b6d3887a6",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# unmount\n",
+    "!fusermount -u $HOME/uftp-mount-rw"
+   ]
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python 3 (ipykernel)",
+   "language": "python",
+   "name": "python3"
+  },
+  "language_info": {
+   "codemirror_mode": {
+    "name": "ipython",
+    "version": 3
+   },
+   "file_extension": ".py",
+   "mimetype": "text/x-python",
+   "name": "python",
+   "nbconvert_exporter": "python",
+   "pygments_lexer": "ipython3",
+   "version": "3.8.5"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}