<jupyter_start><jupyter_text>About the JupyterLab Environment Introduction This environment you're in is probably not what you expected. It's called JupyterLab and we are very thankfull to the team who created it.![title](../img/JupyterLab.png)![title](../img/GPG3_FullServoDistanceGoogly_1-1-300x300.jpg)It allows you to code interactively which is awesome when collecting data. Each project is in a notebook ( extension is **.ipynb** instead of a **.py** file ) but rest assured, it's still Python!  About the Kernel The magic behind the scene happens with the *kernel*. The only kernel installed on DexterOS is Python3.  You can see it at the top right corner: ![title](../img/kernel.png)The empty circle indicates the kernel is not doing anything. It will change to a full circle if the kernel is busy.  Should you ever write an infinite loop or deal with data that's too big, this will be your first sign of trouble. The following is an infinite loop. If you run it, you will see the kernel get busy and not come back to an idle state. ![title](../img/busy_kernel.png)Press the ![title](../img/stop.png) icon to interrupt the kernel and get out of the infinite loop.<jupyter_code>from time import sleep

while True:
    sleep(1)<jupyter_output><empty_output><jupyter_text>An error shows up when you interrupt the kernel but it's nothing to worry about.You can also reset a notebook to its pristine condition by choosing *Kernel/Restart Kernel And Clear All Outputs...*from the Jupyterlab menu![title](/.lessons_python/img/restart_and_clear.png)This brings the notebook to its original state as if you had never run the code in it. Now it's possible to kill the kernel but still have a robot that keeps on going forever. Take a look at the following code.  (Make sure your GoPiGo has room to spin and won't fall off a table)<jupyter_code>import easygopigo3 as easy
g = easy.EasyGoPiGo3()
while True:
    g.right()<jupyter_output><empty_output>
StarcoderdataJupyterStructuredCleanDedup