{"version":3,"kind":"Article","sha256":"26f60fd796ef47cfbd13b636f34cb87c0c0782625f973ca68cbf9492ec07403b","slug":"software","location":"/content/software.md","dependencies":[],"frontmatter":{"title":"Software","content_includes_title":false,"authors":[{"nameParsed":{"literal":"Freek Pols","given":"Freek","family":"Pols"},"name":"Freek Pols","id":"contributors-myst-generated-uid-0"},{"nameParsed":{"literal":"Luuk Fröling","given":"Luuk","family":"Fröling"},"name":"Luuk Fröling","id":"contributors-myst-generated-uid-1"},{"nameParsed":{"literal":"Robert Lanzafame","given":"Robert","family":"Lanzafame"},"name":"Robert Lanzafame","id":"contributors-myst-generated-uid-2"},{"nameParsed":{"literal":"Kirstie Whitaker","given":"Kirstie","family":"Whitaker"},"name":"Kirstie Whitaker","id":"contributors-myst-generated-uid-3"},{"nameParsed":{"literal":"Jim Madge","given":"Jim","family":"Madge"},"name":"Jim Madge","id":"contributors-myst-generated-uid-4"}],"date":"2025-11-02","license":{"content":{"id":"CC-BY-4.0","url":"https://creativecommons.org/licenses/by/4.0/","name":"Creative Commons Attribution 4.0 International","free":true,"CC":true}},"github":"https://github.com/jupyter-book/workshop-template","edit_url":null,"abbreviations":{"JB2":"Jupyter Book 2","CI/CD":"Continuous Integration/Continuous Deployment","GHA":"GitHub Actions","GH":"GitHub","IDE":"Integrated Development Environment","VSC":"Visual Studio Code","CLI":"commmand line interface"},"source_url":"https://github.com/jupyter-book/workshop-template/blob/main/content/software.md","thumbnail":"/build/VSCterminal-229bccc00483591e3b595ee72f4f4e8f.png","exports":[{"format":"md","filename":"software.md","url":"/build/software-f9bb5fbfd4ea31491f158cb388cb64ae.md"}]},"mdast":{"type":"root","children":[{"type":"div","class":"font-light text-sm mb-4 updated-date-container","children":[{"type":"text","value":"Updated: 03 Nov 2025","key":"hnjov1PUJZ"}],"key":"rnh0W22A2c"},{"type":"block","children":[{"type":"paragraph","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"children":[{"type":"text","value":"This page provides an overview of commonly used software, with limited instructions for using them.","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"I1PrFdgxB8"}],"key":"qzmm6Ognug"},{"type":"heading","depth":2,"position":{"start":{"line":6,"column":1},"end":{"line":6,"column":1}},"children":[{"type":"text","value":"Integrated Development Environment (","key":"EQ2gTjuv8h"},{"type":"abbreviation","title":"Integrated Development Environment","children":[{"type":"text","value":"IDE","key":"pBliYRdyBr"}],"key":"wpZ28Q7RWE"},{"type":"text","value":")","key":"Uord3fdhnu"}],"identifier":"integrated-development-environment-ide","label":"Integrated Development Environment (IDE)","html_id":"integrated-development-environment-ide","implicit":true,"key":"Gm34Z1iWjz"},{"type":"paragraph","position":{"start":{"line":8,"column":1},"end":{"line":8,"column":1}},"children":[{"type":"text","value":"An ","key":"eXW8ZL9NO1"},{"type":"abbreviation","title":"Integrated Development Environment","children":[{"type":"text","value":"IDE","key":"OfWPMYRnKN"}],"key":"Eatc9bhwq4"},{"type":"text","value":" is required to complete many of the exercises in this workshop. Many of them could be completed in a simple text editor, however, an ","key":"i6BXjnUKLf"},{"type":"abbreviation","title":"Integrated Development Environment","children":[{"type":"text","value":"IDE","key":"YS3ak1P6Dj"}],"key":"f2PPuZfDrR"},{"type":"text","value":" that includes features such as version control with Git, environment management and a ","key":"avSCUQffH8"},{"type":"abbreviation","title":"commmand line interface","children":[{"type":"text","value":"CLI","key":"vjCe47Xym5"}],"key":"JdknKgNZfX"},{"type":"text","value":" would be useful. As such, the instructions herein often refer to Jupyter Lab. However, you can choose your own ","key":"lOEMVFQPqs"},{"type":"abbreviation","title":"Integrated Development Environment","children":[{"type":"text","value":"IDE","key":"fIQM3jPp9v"}],"key":"tmrqs7pYsz"},{"type":"text","value":", noting that the main requirements are dictated by the use of Jupyeter Notebook (","key":"wtMJtKGAVP"},{"type":"inlineCode","value":"*.ipynb","position":{"start":{"line":8,"column":1},"end":{"line":8,"column":1}},"key":"vy6i3F1bBI"},{"type":"text","value":") files:","position":{"start":{"line":8,"column":1},"end":{"line":8,"column":1}},"key":"biXWFqi3mz"}],"key":"Apr1pUPOlW"},{"type":"list","ordered":false,"spread":false,"position":{"start":{"line":10,"column":1},"end":{"line":12,"column":1}},"children":[{"type":"listItem","spread":true,"position":{"start":{"line":10,"column":1},"end":{"line":10,"column":1}},"children":[{"type":"paragraph","children":[{"type":"text","value":"ability to edit notebooks natively (i.e., not editing the raw JSON),","position":{"start":{"line":10,"column":1},"end":{"line":10,"column":1}},"key":"H0OgmDMFil"}],"key":"RNcclPr6Nt"}],"key":"Ty8a0f06xU"},{"type":"listItem","spread":true,"position":{"start":{"line":11,"column":1},"end":{"line":12,"column":1}},"children":[{"type":"paragraph","children":[{"type":"text","value":"access to a Jupyter server and Python kernel for executing notebooks.","position":{"start":{"line":11,"column":1},"end":{"line":11,"column":1}},"key":"R6egpVnlye"}],"key":"h7cqbJaM0c"}],"key":"xmV2KAGL7n"}],"key":"T96LheP3p5"},{"type":"heading","depth":3,"position":{"start":{"line":13,"column":1},"end":{"line":13,"column":1}},"children":[{"type":"text","value":"Jupyter Lab","position":{"start":{"line":13,"column":1},"end":{"line":13,"column":1}},"key":"crBDV5nWCa"}],"identifier":"jupyter-lab","label":"Jupyter Lab","html_id":"jupyter-lab","implicit":true,"key":"GUQ5O5nsHJ"},{"type":"paragraph","position":{"start":{"line":15,"column":1},"end":{"line":15,"column":1}},"children":[{"type":"text","value":"To run Jupyter Notebooks we can use ","key":"QfskHFHgNG"},{"type":"abbreviation","title":"Integrated Development Environment","children":[{"type":"text","value":"IDE","key":"Ng5bkM5N0l"}],"key":"iGewmrw3xP"},{"type":"text","value":"’s as Jupyter Notebook or Jupyter Lab. Jupyter Notebook is a web-based interface that allows users to create and share documents with live code, visualizations, and narrative text in a linear format. Jupyter Lab, on the other hand, is a more advanced interface offering a flexible and modular environment with multiple panels, including notebooks, terminals, and text editors, providing a more versatile experience for interactive computing. I prefer to use Jupyter lab.","key":"MJkjC1iEJS"}],"key":"YRK8fvlnqJ"},{"type":"heading","depth":3,"position":{"start":{"line":17,"column":1},"end":{"line":17,"column":1}},"children":[{"type":"text","value":"GitHub web-based editor","position":{"start":{"line":17,"column":1},"end":{"line":17,"column":1}},"key":"W02dfeJ7Sr"}],"identifier":"github-web-based-editor","label":"GitHub web-based editor","html_id":"github-web-based-editor","implicit":true,"key":"sz93FeEOob"},{"type":"paragraph","position":{"start":{"line":19,"column":1},"end":{"line":19,"column":1}},"children":[{"type":"text","value":"The ","position":{"start":{"line":19,"column":1},"end":{"line":19,"column":1}},"key":"Mf5ES1ZJ30"},{"type":"link","url":"http://github.dev","position":{"start":{"line":19,"column":1},"end":{"line":19,"column":1}},"children":[{"type":"text","value":"github.dev","position":{"start":{"line":19,"column":1},"end":{"line":19,"column":1}},"key":"pWjCsFD2zi"}],"urlSource":"http://github.dev","key":"BrzODfMsx9"},{"type":"text","value":" web editor makes it possible to edit files directly in the browser. This is an excellent option if you are unable to install software on your computer. To activate it, simply navigate to a GitHub repository and press ","position":{"start":{"line":19,"column":1},"end":{"line":19,"column":1}},"key":"pWEqSJRoei"},{"type":"inlineCode","value":".","position":{"start":{"line":19,"column":1},"end":{"line":19,"column":1}},"key":"MOfiNtPs9b"},{"type":"text","value":". It’s really that easy!","position":{"start":{"line":19,"column":1},"end":{"line":19,"column":1}},"key":"sOAIOPLQu2"}],"key":"p9sgUZGXxJ"},{"type":"admonition","kind":"tip","children":[{"type":"admonitionTitle","children":[{"type":"text","value":"Tip","key":"rINWQVU6lY"}],"key":"akviG8EOEx"},{"type":"paragraph","position":{"start":{"line":22,"column":1},"end":{"line":22,"column":1}},"children":[{"type":"text","value":"Note that while this ","key":"nJC6kT715B"},{"type":"abbreviation","title":"Integrated Development Environment","children":[{"type":"text","value":"IDE","key":"InfsJFpOPf"}],"key":"OjwvrAw2rs"},{"type":"text","value":" can be used for many of the exercises in this workshop, and you can ","key":"EzNwjuyJfd"},{"type":"emphasis","position":{"start":{"line":22,"column":1},"end":{"line":22,"column":1}},"children":[{"type":"text","value":"edit","position":{"start":{"line":22,"column":1},"end":{"line":22,"column":1}},"key":"CBR1fQMNsC"}],"key":"vj1DAPIjLc"},{"type":"text","value":" Jupyter Notebook files, you will ","position":{"start":{"line":22,"column":1},"end":{"line":22,"column":1}},"key":"rOaOxXXrww"},{"type":"emphasis","position":{"start":{"line":22,"column":1},"end":{"line":22,"column":1}},"children":[{"type":"text","value":"not","position":{"start":{"line":22,"column":1},"end":{"line":22,"column":1}},"key":"AKI7rUJT8T"}],"key":"LOwxdA1oBA"},{"type":"text","value":" be able to use iexecute notebooks directly in the browser (however, notebooks will be executed during build in the GitHub Actions workflow).","position":{"start":{"line":22,"column":1},"end":{"line":22,"column":1}},"key":"Ve06dnUhIr"}],"key":"ZEWJJ3waij"}],"key":"jFglM1svOc"},{"type":"paragraph","position":{"start":{"line":25,"column":1},"end":{"line":25,"column":1}},"children":[{"type":"text","value":"You can find out more about this useful tool ","position":{"start":{"line":25,"column":1},"end":{"line":25,"column":1}},"key":"dzxjM7d3wa"},{"type":"link","url":"https://docs.github.com/en/codespaces/the-githubdev-web-based-editor","position":{"start":{"line":25,"column":1},"end":{"line":25,"column":1}},"children":[{"type":"text","value":"here","position":{"start":{"line":25,"column":1},"end":{"line":25,"column":1}},"key":"jFF383m0lL"}],"urlSource":"https://docs.github.com/en/codespaces/the-githubdev-web-based-editor","key":"uvM9LZRbR3"},{"type":"text","value":".","position":{"start":{"line":25,"column":1},"end":{"line":25,"column":1}},"key":"y8EudkozXR"}],"key":"sfpUEevPdR"},{"type":"heading","depth":3,"position":{"start":{"line":27,"column":1},"end":{"line":27,"column":1}},"children":[{"type":"abbreviation","title":"Visual Studio Code","children":[{"type":"text","value":"VSC","key":"QJOwXK9vZZ"}],"key":"Kl3NJwdMWY"}],"identifier":"vsc","label":"VSC","html_id":"vsc","implicit":true,"key":"PLOiBRIQAM"},{"type":"paragraph","position":{"start":{"line":28,"column":1},"end":{"line":28,"column":1}},"children":[{"type":"text","value":"A popular code editor is ","position":{"start":{"line":28,"column":1},"end":{"line":28,"column":1}},"key":"YbgTYC4WBP"},{"type":"link","url":"https://code.visualstudio.com/","position":{"start":{"line":28,"column":1},"end":{"line":28,"column":1}},"children":[{"type":"text","value":"Visual Studio Code","position":{"start":{"line":28,"column":1},"end":{"line":28,"column":1}},"key":"znKFCJR0Ep"}],"urlSource":"https://code.visualstudio.com/","key":"LQK2Xw9AFe"},{"type":"text","value":" (","key":"eAKSlPJQOH"},{"type":"abbreviation","title":"Visual Studio Code","children":[{"type":"text","value":"VSC","key":"WiiI6WlROl"}],"key":"JecueWrcof"},{"type":"text","value":"). It allows you to program in different languages, where it recognizes the commands in that language and adjusts the FONT so that it becomes better readable. Moreover, it allows you to install various packages (such as Jupyter Notebook). It also integrates GIT and allows to code using Co-Pilot, an AI pair programmer. We advise to use ","key":"GZY1XJqJHz"},{"type":"abbreviation","title":"Visual Studio Code","children":[{"type":"text","value":"VSC","key":"sWPWAI9XIX"}],"key":"x2HWGLKpe8"},{"type":"text","value":" as it allows for multiple programming languages.","key":"LNnMLqfuo8"}],"key":"nUPSEtq2rL"},{"type":"heading","depth":4,"position":{"start":{"line":30,"column":1},"end":{"line":30,"column":1}},"children":[{"type":"text","value":"Terminal","position":{"start":{"line":30,"column":1},"end":{"line":30,"column":1}},"key":"wlc8PxLsuf"}],"identifier":"terminal","label":"Terminal","html_id":"terminal","implicit":true,"key":"GLpNJXEXgR"},{"type":"paragraph","position":{"start":{"line":31,"column":1},"end":{"line":31,"column":1}},"children":[{"type":"text","value":"The terminal in ","key":"GFepQP7wXU"},{"type":"abbreviation","title":"Visual Studio Code","children":[{"type":"text","value":"VSC","key":"MSmkk61xmt"}],"key":"x8pr2ciyW9"},{"type":"text","value":" is a tool that lets you interact with your computer’s command line directly within the editor. It’s used to run commands, scripts, or programs without leaving the coding environment. For example, you can compile code, run a development server, install dependencies, or manage files. It’s very helpful for developers because it allows you to code and execute commands in one place, streamlining your workflow.","key":"MqajGFV0q4"}],"key":"f7XkACBj7R"},{"type":"container","kind":"figure","children":[{"type":"image","url":"/build/VSCterminal-229bccc00483591e3b595ee72f4f4e8f.png","alt":"The VSC terminal to interact with the computer using the command line","width":"100%","data":{"altTextIsAutoGenerated":true},"urlSource":"figures/VSCterminal.png","key":"qMh9j51BVh"},{"type":"caption","children":[{"type":"paragraph","position":{"start":{"line":38,"column":1},"end":{"line":38,"column":1}},"children":[{"type":"captionNumber","kind":"figure","label":"fig_VSCterminal","identifier":"fig_vscterminal","html_id":"fig-vscterminal","enumerator":"1","children":[{"type":"text","value":"Figure ","key":"eWseEVoeTl"},{"type":"text","value":"1","key":"pFaSdeqpBf"},{"type":"text","value":":","key":"oRGqaHZZdi"}],"template":"Figure %s:","key":"NrkghSmRpK"},{"type":"text","value":"The ","key":"p7YsjsbXwJ"},{"type":"abbreviation","title":"Visual Studio Code","children":[{"type":"text","value":"VSC","key":"tRU0fF27uJ"}],"key":"ZY0KtcXal2"},{"type":"text","value":" terminal to interact with the computer using the command line","key":"s0GLwHZRBN"}],"key":"S2Pw12gb9V"}],"key":"L36FWYha7Z"}],"label":"fig_VSCterminal","identifier":"fig_vscterminal","enumerator":"1","html_id":"fig-vscterminal","key":"OUJKXl20n8"},{"type":"heading","depth":4,"position":{"start":{"line":41,"column":1},"end":{"line":41,"column":1}},"children":[{"type":"text","value":"Extensions","position":{"start":{"line":41,"column":1},"end":{"line":41,"column":1}},"key":"zqyPf3U5Wb"}],"identifier":"extensions","label":"Extensions","html_id":"extensions","implicit":true,"key":"b5SN4z8V8y"},{"type":"paragraph","position":{"start":{"line":42,"column":1},"end":{"line":42,"column":1}},"children":[{"type":"text","value":"Extensions in Visual Studio Code (","key":"rgRS5CIMsP"},{"type":"abbreviation","title":"Visual Studio Code","children":[{"type":"text","value":"VSC","key":"UaPcSJ6bBy"}],"key":"FsAsuMXSqO"},{"type":"text","value":") are powerful add-ons that enhance the functionality of the editor by providing additional features, tools, and support for various programming languages, frameworks, and technologies. Extensions allow you to customize and tailor ","key":"eKwuJqb2Qj"},{"type":"abbreviation","title":"Visual Studio Code","children":[{"type":"text","value":"VSC","key":"gZfsypScGg"}],"key":"nw1slQlRjO"},{"type":"text","value":" to suit your specific development needs.","key":"hfL7rTWm27"}],"key":"cjWhzAKq5L"},{"type":"heading","depth":5,"position":{"start":{"line":44,"column":1},"end":{"line":44,"column":1}},"children":[{"type":"text","value":"How to Install Extensions:","position":{"start":{"line":44,"column":1},"end":{"line":44,"column":1}},"key":"GwVMby65lc"}],"identifier":"how-to-install-extensions","label":"How to Install Extensions:","html_id":"how-to-install-extensions","implicit":true,"key":"sq8OZv0Rix"},{"type":"list","ordered":false,"spread":false,"position":{"start":{"line":45,"column":1},"end":{"line":56,"column":1}},"children":[{"type":"listItem","spread":true,"position":{"start":{"line":45,"column":1},"end":{"line":47,"column":1}},"children":[{"type":"paragraph","position":{"start":{"line":45,"column":1},"end":{"line":45,"column":1}},"children":[{"type":"text","value":"Access Extensions View:","position":{"start":{"line":45,"column":1},"end":{"line":45,"column":1}},"key":"HvjAaOALbR"}],"key":"VZJ6oKJrvB"},{"type":"list","ordered":false,"spread":false,"position":{"start":{"line":46,"column":1},"end":{"line":47,"column":1}},"children":[{"type":"listItem","spread":true,"position":{"start":{"line":46,"column":1},"end":{"line":47,"column":1}},"children":[{"type":"paragraph","children":[{"type":"text","value":"Click on the Extensions icon in the Activity Bar on the side (or press Ctrl+Shift+X / Cmd+Shift+X).","position":{"start":{"line":46,"column":1},"end":{"line":46,"column":1}},"key":"R36HoQSKg3"}],"key":"fvKCUfc2uG"}],"key":"MyB8zAzzqz"}],"key":"eYznmXQiq3"}],"key":"NHovBpQG2G"},{"type":"listItem","spread":true,"position":{"start":{"line":48,"column":1},"end":{"line":50,"column":1}},"children":[{"type":"paragraph","position":{"start":{"line":48,"column":1},"end":{"line":48,"column":1}},"children":[{"type":"text","value":"Search for Extensions:","position":{"start":{"line":48,"column":1},"end":{"line":48,"column":1}},"key":"C4zBnJHCWs"}],"key":"ptqCWhLeaM"},{"type":"list","ordered":false,"spread":false,"position":{"start":{"line":49,"column":1},"end":{"line":50,"column":1}},"children":[{"type":"listItem","spread":true,"position":{"start":{"line":49,"column":1},"end":{"line":50,"column":1}},"children":[{"type":"paragraph","children":[{"type":"text","value":"In the Extensions view, you can search for the name or keywords related to the extension you want to install.","position":{"start":{"line":49,"column":1},"end":{"line":49,"column":1}},"key":"rzpBmStiuh"}],"key":"LMzLoPIApN"}],"key":"Skh3bjXYks"}],"key":"ry6IrI5Nb6"}],"key":"grwOCXhiXY"},{"type":"listItem","spread":true,"position":{"start":{"line":51,"column":1},"end":{"line":53,"column":1}},"children":[{"type":"paragraph","position":{"start":{"line":51,"column":1},"end":{"line":51,"column":1}},"children":[{"type":"text","value":"Install the Extension:","position":{"start":{"line":51,"column":1},"end":{"line":51,"column":1}},"key":"pzkLFbKEYi"}],"key":"ZLX1CFsjoA"},{"type":"list","ordered":false,"spread":false,"position":{"start":{"line":52,"column":1},"end":{"line":53,"column":1}},"children":[{"type":"listItem","spread":true,"position":{"start":{"line":52,"column":1},"end":{"line":53,"column":1}},"children":[{"type":"paragraph","children":[{"type":"text","value":"Click the Install button on the desired extension, and it will automatically be added to ","key":"epz4VX3QeW"},{"type":"abbreviation","title":"Visual Studio Code","children":[{"type":"text","value":"VSC","key":"vx1Fu3GhVd"}],"key":"XofYXMOWCT"},{"type":"text","value":".","key":"rbccdjt8S2"}],"key":"fy39NhdDxv"}],"key":"qUqeca9LP9"}],"key":"ZNnStDC3BV"}],"key":"BoOQ0WYWvz"},{"type":"listItem","spread":true,"position":{"start":{"line":54,"column":1},"end":{"line":56,"column":1}},"children":[{"type":"paragraph","position":{"start":{"line":54,"column":1},"end":{"line":54,"column":1}},"children":[{"type":"text","value":"Manage Installed Extensions:","position":{"start":{"line":54,"column":1},"end":{"line":54,"column":1}},"key":"nf5NPCIfSs"}],"key":"mKxFZefbP7"},{"type":"list","ordered":false,"spread":false,"position":{"start":{"line":55,"column":1},"end":{"line":56,"column":1}},"children":[{"type":"listItem","spread":true,"position":{"start":{"line":55,"column":1},"end":{"line":56,"column":1}},"children":[{"type":"paragraph","children":[{"type":"text","value":"You can view, enable, disable, or uninstall extensions from the same Extensions view.","position":{"start":{"line":55,"column":1},"end":{"line":55,"column":1}},"key":"BXV7SjIjNa"}],"key":"sdjrLISMUu"}],"key":"WCarJ123Vf"}],"key":"h2ttJyUFlw"}],"key":"sFubRwv4wx"}],"key":"zdCqnYAJkA"},{"type":"heading","depth":5,"position":{"start":{"line":57,"column":1},"end":{"line":57,"column":1}},"children":[{"type":"text","value":"Popular Extensions in ","key":"d0zBbEUyPR"},{"type":"abbreviation","title":"Visual Studio Code","children":[{"type":"text","value":"VSC","key":"Ots4TWKekH"}],"key":"VmTdEenJNe"},{"type":"text","value":":","key":"XHhgqhua1D"}],"identifier":"popular-extensions-in-vsc","label":"Popular Extensions in VSC:","html_id":"popular-extensions-in-vsc","implicit":true,"key":"SpXzpulHzh"},{"type":"list","ordered":false,"spread":false,"position":{"start":{"line":58,"column":1},"end":{"line":66,"column":1}},"children":[{"type":"listItem","spread":true,"position":{"start":{"line":58,"column":1},"end":{"line":58,"column":1}},"children":[{"type":"paragraph","children":[{"type":"text","value":"Python: Provides linting, debugging, IntelliSense, and more for Python development.","position":{"start":{"line":58,"column":1},"end":{"line":58,"column":1}},"key":"Qu2OsabTK6"}],"key":"UT4StUpZrV"}],"key":"jQZ4Ah4h5F"},{"type":"listItem","spread":true,"position":{"start":{"line":59,"column":1},"end":{"line":59,"column":1}},"children":[{"type":"paragraph","children":[{"type":"text","value":"Jupyter: Provides support for Jupyter notebooks within ","key":"sV3c1HiXyQ"},{"type":"abbreviation","title":"Visual Studio Code","children":[{"type":"text","value":"VSC","key":"gar6MDFMxb"}],"key":"MEhEIXqTfn"},{"type":"text","value":".","key":"yxq9SEH1TV"}],"key":"DwxwbaqTDY"}],"key":"zRysac53XS"},{"type":"listItem","spread":true,"position":{"start":{"line":60,"column":1},"end":{"line":60,"column":1}},"children":[{"type":"paragraph","children":[{"type":"text","value":"Arduino: Provides support for programming in Arduino.","position":{"start":{"line":60,"column":1},"end":{"line":60,"column":1}},"key":"Oo2vCQsFgX"}],"key":"LkW9xL6L4P"}],"key":"daFowbK1Mz"},{"type":"listItem","spread":true,"position":{"start":{"line":61,"column":1},"end":{"line":61,"column":1}},"children":[{"type":"paragraph","children":[{"type":"text","value":"Code Spell Checker: Has a great spelling checker, also available for Dutch","position":{"start":{"line":61,"column":1},"end":{"line":61,"column":1}},"key":"uPfKkwZ9ca"}],"key":"QsBQam6dzS"}],"key":"tHn2E7SIAn"},{"type":"listItem","spread":true,"position":{"start":{"line":62,"column":1},"end":{"line":62,"column":1}},"children":[{"type":"paragraph","children":[{"type":"text","value":"Github Copilot: Your AI pair programmer. Helps you in writing code.","position":{"start":{"line":62,"column":1},"end":{"line":62,"column":1}},"key":"BURbj4E120"}],"key":"frZAhXsNoq"}],"key":"fjYwjwWQmt"},{"type":"listItem","spread":true,"position":{"start":{"line":63,"column":1},"end":{"line":63,"column":1}},"children":[{"type":"paragraph","children":[{"type":"text","value":"LaTeX workshop: LaTeX coding, preview, compiling.","position":{"start":{"line":63,"column":1},"end":{"line":63,"column":1}},"key":"Y3A65dTbCp"}],"key":"ohR1vk0Jhq"}],"key":"v9RUzXszXF"},{"type":"listItem","spread":true,"position":{"start":{"line":64,"column":1},"end":{"line":66,"column":1}},"children":[{"type":"paragraph","children":[{"type":"text","value":"MyST-Markdown: The official Markdown syntax extension","position":{"start":{"line":64,"column":1},"end":{"line":64,"column":1}},"key":"TMZomvZ6gv"}],"key":"PSJAVRBqmZ"}],"key":"Fc577RyC7K"}],"key":"cuvOAoNYM9"},{"type":"heading","depth":2,"position":{"start":{"line":67,"column":1},"end":{"line":67,"column":1}},"children":[{"type":"text","value":"Virtual Environment and Dependencies","position":{"start":{"line":67,"column":1},"end":{"line":67,"column":1}},"key":"lw5Z1BpbtX"}],"identifier":"virtual-environment-and-dependencies","label":"Virtual Environment and Dependencies","html_id":"virtual-environment-and-dependencies","implicit":true,"key":"KPaWKl86oa"},{"type":"paragraph","position":{"start":{"line":69,"column":1},"end":{"line":69,"column":1}},"children":[{"type":"text","value":"It is assumed that you are able to create and activate a virtual environment in order to complete this workshop using a personal computer. As the primary tools are Python packages available using ","position":{"start":{"line":69,"column":1},"end":{"line":69,"column":1}},"key":"RtveVIFAwO"},{"type":"inlineCode","value":"pip","position":{"start":{"line":69,"column":1},"end":{"line":69,"column":1}},"key":"FtOmBaPVrJ"},{"type":"text","value":", the choice of environment manager is somewhat trivial. To keep things simple we suggest using Python ","position":{"start":{"line":69,"column":1},"end":{"line":69,"column":1}},"key":"MF7HE0rnl1"},{"type":"inlineCode","value":"venv","position":{"start":{"line":69,"column":1},"end":{"line":69,"column":1}},"key":"jlsr1P5KXb"},{"type":"text","value":" or Conda.","position":{"start":{"line":69,"column":1},"end":{"line":69,"column":1}},"key":"Vyr1W9MuPn"}],"key":"LG4UTn4o3n"},{"type":"paragraph","position":{"start":{"line":71,"column":1},"end":{"line":71,"column":1}},"children":[{"type":"text","value":"Python’s ","position":{"start":{"line":71,"column":1},"end":{"line":71,"column":1}},"key":"lqa5FWHgIl"},{"type":"inlineCode","value":"venv","position":{"start":{"line":71,"column":1},"end":{"line":71,"column":1}},"key":"L9ZT30JT9y"},{"type":"text","value":" is used in the GitHub Actions workflows.","position":{"start":{"line":71,"column":1},"end":{"line":71,"column":1}},"key":"aIUTisSF2e"}],"key":"jdBTHX9Xs4"},{"type":"heading","depth":3,"position":{"start":{"line":73,"column":1},"end":{"line":73,"column":1}},"children":[{"type":"text","value":"Python Dependencies","position":{"start":{"line":73,"column":1},"end":{"line":73,"column":1}},"key":"k6fge0bYhp"}],"identifier":"python-dependencies","label":"Python Dependencies","html_id":"python-dependencies","implicit":true,"key":"ZQoQLWgndI"},{"type":"paragraph","position":{"start":{"line":75,"column":1},"end":{"line":75,"column":1}},"children":[{"type":"text","value":"Python dependencies are managed in file ","position":{"start":{"line":75,"column":1},"end":{"line":75,"column":1}},"key":"ISYIlPweOC"},{"type":"inlineCode","value":"requirements.txt","position":{"start":{"line":75,"column":1},"end":{"line":75,"column":1}},"key":"T2jZVQznml"},{"type":"text","value":", the contents of which are included here:","position":{"start":{"line":75,"column":1},"end":{"line":75,"column":1}},"key":"oEyohLU1hX"}],"key":"MUA2UByQlP"},{"type":"include","file":"../requirements.txt","literal":true,"caption":[{"type":"text","value":"Python dependencies in file ","position":{"start":{"line":78,"column":1},"end":{"line":78,"column":1}},"key":"X95HXKVnpz"},{"type":"inlineCode","value":"requirements.txt","position":{"start":{"line":78,"column":1},"end":{"line":78,"column":1}},"key":"My4dgPYsGQ"}],"children":[{"type":"container","kind":"code","children":[{"type":"code","value":"jupyter-book>=2.0.0\njupyter\nmatplotlib>=3.10.7\n","lang":"txt","filename":"requirements.txt","key":"t3hMJD60n1"},{"type":"caption","children":[{"type":"paragraph","children":[{"type":"captionNumber","kind":"code","label":"include-requirements","identifier":"include-requirements","html_id":"include-requirements","enumerator":"1","children":[{"type":"text","value":"Program ","key":"jgHUX3CKoW"},{"type":"text","value":"1","key":"WwKU4vAG6Y"},{"type":"text","value":":","key":"YAOtGZyKr8"}],"template":"Program %s:","key":"oXx6XZMojc"},{"type":"text","value":"Python dependencies in file ","position":{"start":{"line":78,"column":1},"end":{"line":78,"column":1}},"key":"X95HXKVnpz"},{"type":"inlineCode","value":"requirements.txt","position":{"start":{"line":78,"column":1},"end":{"line":78,"column":1}},"key":"My4dgPYsGQ"}],"key":"dQac40JVZm"}],"key":"PLOGK1fTFg"}],"label":"include-requirements","identifier":"include-requirements","enumerator":"1","html_id":"include-requirements","key":"jj7p1bvXG2"}],"key":"cLWaYnqzbP"},{"type":"paragraph","position":{"start":{"line":82,"column":1},"end":{"line":82,"column":1}},"children":[{"type":"text","value":"Note that only ","position":{"start":{"line":82,"column":1},"end":{"line":82,"column":1}},"key":"QbPMdHT20X"},{"type":"inlineCode","value":"jupyter-book","position":{"start":{"line":82,"column":1},"end":{"line":82,"column":1}},"key":"OhR98BpBBH"},{"type":"text","value":" is needed for building the book as described in most of the lessons in this workshop. The remaining packages are for the ","position":{"start":{"line":82,"column":1},"end":{"line":82,"column":1}},"key":"arZDitOrEP"},{"type":"emphasis","position":{"start":{"line":82,"column":1},"end":{"line":82,"column":1}},"children":[{"type":"text","value":"executable content","position":{"start":{"line":82,"column":1},"end":{"line":82,"column":1}},"key":"adLUe0vgIr"}],"key":"Uxy74gj9Dz"},{"type":"text","value":" lesson, which requires editing and executing Jupyter Notebooks (","position":{"start":{"line":82,"column":1},"end":{"line":82,"column":1}},"key":"Q6ieXAbSFA"},{"type":"inlineCode","value":"*.ipynb","position":{"start":{"line":82,"column":1},"end":{"line":82,"column":1}},"key":"HIBGLmuuyp"},{"type":"text","value":" files). In addition, ","position":{"start":{"line":82,"column":1},"end":{"line":82,"column":1}},"key":"JIBTI25ZZN"},{"type":"inlineCode","value":"jupyter","position":{"start":{"line":82,"column":1},"end":{"line":82,"column":1}},"key":"uFAruPd938"},{"type":"text","value":" is a metapackage that includes a number of other commonly used packages (e.g., Jupyter Lab, IPython, etc.): it is included here to cover the range of preferences and ","key":"yTV1Oh54jN"},{"type":"abbreviation","title":"Integrated Development Environment","children":[{"type":"text","value":"IDE","key":"dPhyWhUFfC"}],"key":"kjrzSWYKNy"},{"type":"text","value":"’s used by workshop participants; many of these are described briefly in the table below. For each individual participant, a smaller subset of packages could be used in practice.","key":"OdwxzV8Nqd"}],"key":"yzOu11DDYF"},{"type":"paragraph","position":{"start":{"line":84,"column":1},"end":{"line":84,"column":1}},"children":[{"type":"text","value":"To install these dependencies ensure ","position":{"start":{"line":84,"column":1},"end":{"line":84,"column":1}},"key":"LwCeR30CWl"},{"type":"inlineCode","value":"requirements.txt","position":{"start":{"line":84,"column":1},"end":{"line":84,"column":1}},"key":"lWfkuqmFF2"},{"type":"text","value":" is in your working directory and run ","position":{"start":{"line":84,"column":1},"end":{"line":84,"column":1}},"key":"l5FebMoStj"},{"type":"inlineCode","value":"pip install -r requirements.txt","position":{"start":{"line":84,"column":1},"end":{"line":84,"column":1}},"key":"PCohsFJau5"},{"type":"text","value":".","position":{"start":{"line":84,"column":1},"end":{"line":84,"column":1}},"key":"v0zXxflbP7"}],"key":"hYR4rwcuGs"},{"type":"table","position":{"start":{"line":86,"column":1},"end":{"line":97,"column":1}},"children":[{"type":"tableRow","position":{"start":{"line":86,"column":1},"end":{"line":86,"column":1}},"children":[{"type":"tableCell","header":true,"position":{"start":{"line":86,"column":1},"end":{"line":86,"column":1}},"children":[{"type":"text","value":"Package","position":{"start":{"line":86,"column":1},"end":{"line":86,"column":1}},"key":"h0XD5kLdQn"}],"key":"TjevfsqVng"},{"type":"tableCell","header":true,"position":{"start":{"line":86,"column":1},"end":{"line":86,"column":1}},"children":[{"type":"text","value":"Description","position":{"start":{"line":86,"column":1},"end":{"line":86,"column":1}},"key":"MNlQFZ64jV"}],"key":"AMkaA79Jvg"}],"key":"JWdcNpOi72"},{"type":"tableRow","position":{"start":{"line":88,"column":1},"end":{"line":88,"column":1}},"children":[{"type":"tableCell","position":{"start":{"line":88,"column":1},"end":{"line":88,"column":1}},"children":[{"type":"text","value":"jupyter-book>=2.0.0","position":{"start":{"line":88,"column":1},"end":{"line":88,"column":1}},"key":"kgxCKVwYJ0"}],"key":"etDaz6oEdr"},{"type":"tableCell","position":{"start":{"line":88,"column":1},"end":{"line":88,"column":1}},"children":[{"type":"text","value":"Tool to build publication-quality books and documentation from Jupyter notebooks and Markdown.","position":{"start":{"line":88,"column":1},"end":{"line":88,"column":1}},"key":"ClIYLhIeaY"}],"key":"THbK3gJ9o8"}],"key":"eCCVHcIsXw"},{"type":"tableRow","position":{"start":{"line":89,"column":1},"end":{"line":89,"column":1}},"children":[{"type":"tableCell","position":{"start":{"line":89,"column":1},"end":{"line":89,"column":1}},"children":[{"type":"text","value":"jupyterlab","position":{"start":{"line":89,"column":1},"end":{"line":89,"column":1}},"key":"Ml69tiXsfK"}],"key":"NG1Fdbjki4"},{"type":"tableCell","position":{"start":{"line":89,"column":1},"end":{"line":89,"column":1}},"children":[{"type":"text","value":"Web-based interactive development environment for notebooks, code, and data.","position":{"start":{"line":89,"column":1},"end":{"line":89,"column":1}},"key":"kUxCrwUnXM"}],"key":"co7ciszxMf"}],"key":"EcmQ3ymvxr"},{"type":"tableRow","position":{"start":{"line":90,"column":1},"end":{"line":90,"column":1}},"children":[{"type":"tableCell","position":{"start":{"line":90,"column":1},"end":{"line":90,"column":1}},"children":[{"type":"text","value":"ipykernel","position":{"start":{"line":90,"column":1},"end":{"line":90,"column":1}},"key":"GHS9S3D4Ev"}],"key":"OepAAq9snd"},{"type":"tableCell","position":{"start":{"line":90,"column":1},"end":{"line":90,"column":1}},"children":[{"type":"text","value":"IPython kernel for Jupyter, enables running Python code in notebooks. Necessary for ","key":"C5dBhY0GNm"},{"type":"abbreviation","title":"Visual Studio Code","children":[{"type":"text","value":"VSC","key":"lI5BAKGwCR"}],"key":"kDQF6UCV4D"},{"type":"text","value":" to edit and execute notebook files.","key":"A2JGj77vPM"}],"key":"gKmUGTwS9t"}],"key":"nXLuUzHtSF"},{"type":"tableRow","position":{"start":{"line":91,"column":1},"end":{"line":91,"column":1}},"children":[{"type":"tableCell","position":{"start":{"line":91,"column":1},"end":{"line":91,"column":1}},"children":[{"type":"text","value":"ipywidgets","position":{"start":{"line":91,"column":1},"end":{"line":91,"column":1}},"key":"SRGSBc6Wbo"}],"key":"VCLlGioy3O"},{"type":"tableCell","position":{"start":{"line":91,"column":1},"end":{"line":91,"column":1}},"children":[{"type":"text","value":"Interactive HTML widgets for Jupyter notebooks and JupyterLab.","position":{"start":{"line":91,"column":1},"end":{"line":91,"column":1}},"key":"Gk4b3gU4qc"}],"key":"t8gsXBEQTw"}],"key":"xEPWmhsPMG"},{"type":"tableRow","position":{"start":{"line":92,"column":1},"end":{"line":92,"column":1}},"children":[{"type":"tableCell","position":{"start":{"line":92,"column":1},"end":{"line":92,"column":1}},"children":[{"type":"text","value":"jupyter","position":{"start":{"line":92,"column":1},"end":{"line":92,"column":1}},"key":"ErAmiJxM4L"}],"key":"XqEVOJU9Yn"},{"type":"tableCell","position":{"start":{"line":92,"column":1},"end":{"line":92,"column":1}},"children":[{"type":"text","value":"A metapackage that requires jupyterlab, ipywidgets and ipykernel, amongst other packages.","position":{"start":{"line":92,"column":1},"end":{"line":92,"column":1}},"key":"Y9R1uEV2Kg"}],"key":"pcyptx6meQ"}],"key":"NdPmktfHME"},{"type":"tableRow","position":{"start":{"line":93,"column":1},"end":{"line":93,"column":1}},"children":[{"type":"tableCell","position":{"start":{"line":93,"column":1},"end":{"line":93,"column":1}},"children":[{"type":"text","value":"mystmd","position":{"start":{"line":93,"column":1},"end":{"line":93,"column":1}},"key":"i8dlu5eQZ7"}],"key":"qANFuAaAcT"},{"type":"tableCell","position":{"start":{"line":93,"column":1},"end":{"line":93,"column":1}},"children":[{"type":"text","value":"MyST Markdown support for Jupyter Book / Sphinx.","position":{"start":{"line":93,"column":1},"end":{"line":93,"column":1}},"key":"TDTqHdM63W"}],"key":"xb3u6nle0R"}],"key":"ltizTYlsX0"},{"type":"tableRow","position":{"start":{"line":94,"column":1},"end":{"line":94,"column":1}},"children":[{"type":"tableCell","position":{"start":{"line":94,"column":1},"end":{"line":94,"column":1}},"children":[{"type":"text","value":"jupyterlab_myst","position":{"start":{"line":94,"column":1},"end":{"line":94,"column":1}},"key":"Yx4XOHgdH5"}],"key":"qGAQmcstrU"},{"type":"tableCell","position":{"start":{"line":94,"column":1},"end":{"line":94,"column":1}},"children":[{"type":"text","value":"JupyterLab extension to render MyST Markdown and improve notebook/Markdown integration.","position":{"start":{"line":94,"column":1},"end":{"line":94,"column":1}},"key":"lbZcROrrTZ"}],"key":"aWcXZQi006"}],"key":"qkvr5fWAYE"},{"type":"tableRow","position":{"start":{"line":95,"column":1},"end":{"line":95,"column":1}},"children":[{"type":"tableCell","position":{"start":{"line":95,"column":1},"end":{"line":95,"column":1}},"children":[{"type":"text","value":"numpy","position":{"start":{"line":95,"column":1},"end":{"line":95,"column":1}},"key":"GCpxRccONC"}],"key":"C1SAbYA9Ws"},{"type":"tableCell","position":{"start":{"line":95,"column":1},"end":{"line":95,"column":1}},"children":[{"type":"text","value":"Core library for numerical computing with arrays and linear algebra.","position":{"start":{"line":95,"column":1},"end":{"line":95,"column":1}},"key":"fAyrjjlFsQ"}],"key":"KVvA5VwUyZ"}],"key":"EXDZH1G3gp"},{"type":"tableRow","position":{"start":{"line":96,"column":1},"end":{"line":96,"column":1}},"children":[{"type":"tableCell","position":{"start":{"line":96,"column":1},"end":{"line":96,"column":1}},"children":[{"type":"text","value":"matplotlib","position":{"start":{"line":96,"column":1},"end":{"line":96,"column":1}},"key":"kP6vIapt6A"}],"key":"T0cYZV5Wsm"},{"type":"tableCell","position":{"start":{"line":96,"column":1},"end":{"line":96,"column":1}},"children":[{"type":"text","value":"2D plotting library for generating figures and visualizations.","position":{"start":{"line":96,"column":1},"end":{"line":96,"column":1}},"key":"YyQPugj7bc"}],"key":"wxNY6Fj6iB"}],"key":"RJQe4G9zE3"},{"type":"tableRow","position":{"start":{"line":97,"column":1},"end":{"line":97,"column":1}},"children":[{"type":"tableCell","position":{"start":{"line":97,"column":1},"end":{"line":97,"column":1}},"children":[{"type":"text","value":"scipy","position":{"start":{"line":97,"column":1},"end":{"line":97,"column":1}},"key":"obxYWE9pix"}],"key":"JYU0ZVfkI2"},{"type":"tableCell","position":{"start":{"line":97,"column":1},"end":{"line":97,"column":1}},"children":[{"type":"text","value":"Scientific computing library.","position":{"start":{"line":97,"column":1},"end":{"line":97,"column":1}},"key":"NxZfVuiT4V"}],"key":"diCvSiIgcL"}],"key":"U0EP6r191t"}],"key":"dRQTgKiQgf"},{"type":"heading","depth":2,"position":{"start":{"line":99,"column":1},"end":{"line":99,"column":1}},"children":[{"type":"text","value":"PDF Generation with Typst","position":{"start":{"line":99,"column":1},"end":{"line":99,"column":1}},"key":"g5PyfkVYbt"}],"identifier":"pdf-generation-with-typst","label":"PDF Generation with Typst","html_id":"pdf-generation-with-typst","implicit":true,"key":"Do6dP3KaXj"},{"type":"paragraph","position":{"start":{"line":101,"column":1},"end":{"line":101,"column":1}},"children":[{"type":"text","value":"For this template we use Typst to produce a high quality PDF (explained in detail as part of the PDF Output lesson). If you want to create PDF’s locally, you’ll have to install Typst. The ","position":{"start":{"line":101,"column":1},"end":{"line":101,"column":1}},"key":"qEniVznLyT"},{"type":"link","url":"https://github.com/typst/typst?tab=readme-ov-file#installation","position":{"start":{"line":101,"column":1},"end":{"line":101,"column":1}},"children":[{"type":"text","value":"Typst installation instructions","position":{"start":{"line":101,"column":1},"end":{"line":101,"column":1}},"key":"rbevDA75V7"}],"urlSource":"https://github.com/typst/typst?tab=readme-ov-file#installation","error":true,"key":"aGAQDCZvjo"},{"type":"text","value":" provides several options to install Typst: we strongly recommend using the latest releases.","position":{"start":{"line":101,"column":1},"end":{"line":101,"column":1}},"key":"jErgXt7l2E"}],"key":"OQDg9tdXPm"},{"type":"paragraph","position":{"start":{"line":103,"column":1},"end":{"line":103,"column":1}},"children":[{"type":"text","value":"If you get a confusing error, a good first step is to upgrade your version of Typst.","position":{"start":{"line":103,"column":1},"end":{"line":103,"column":1}},"key":"Y2wN5IsX2i"}],"key":"jDbSMJHISF"}],"key":"FjjyIiLZJX"}],"key":"stCCn82n2N"},"references":{"cite":{"order":[],"data":{}}},"footer":{"navigation":{"prev":{"title":"Advanced start 🌶","url":"/advanced-start","group":"Jupyter Book 2 Workshop Template"},"next":{"title":"Gallery","url":"/gallery","group":"Jupyter Book 2 Workshop Template"}}},"domain":"http://localhost:3000"}