|
| 1 | +--- |
| 2 | +title: CCMI CDT software week demo |
| 3 | +date: 2026-03-19 |
| 4 | +date-format: long |
| 5 | +institute: UCL Centre for Advanced Research Computing |
| 6 | +title-image: https://raw.githubusercontent.com/UCL-ARC/python-tooling/main/images/banner.svg |
| 7 | +title-image-width: 70% |
| 8 | +background-image: images/arc-banner.svg |
| 9 | +--- |
| 10 | + |
| 11 | +## 👥 Contributors {.smaller} |
| 12 | + |
| 13 | +:::{.column width="90%"} |
| 14 | + |
| 15 | +:::::: {.columns} |
| 16 | +::: {.column width="11.1%"} |
| 17 | +[](https://paddyroddy.github.io/) |
| 18 | +::: |
| 19 | +::: {.column width="11.1%"} |
| 20 | +[](http://scnlf.me) |
| 21 | +::: |
| 22 | +::: {.column width="11.1%"} |
| 23 | +[](https://www.davidstansby.com/) |
| 24 | +::: |
| 25 | +::: {.column width="11.1%"} |
| 26 | +[](http://matt-graham.github.io) |
| 27 | +::: |
| 28 | +::: {.column width="11.1%"} |
| 29 | +[](https://sfmig.github.io/) |
| 30 | +::: |
| 31 | +::: {.column width="11.1%"} |
| 32 | +[](https://github.com/p-j-smith/) |
| 33 | +::: |
| 34 | +::: {.column width="11.1%"} |
| 35 | +[](https://github.com/ruaridhg) |
| 36 | +::: |
| 37 | +::: {.column width="11.1%"} |
| 38 | +[](https://github.com/mxochicale) |
| 39 | +::: |
| 40 | +::: {.column width="11.1%"} |
| 41 | +[](https://github.com/yidilozdemir) |
| 42 | +::: |
| 43 | +::: |
| 44 | + |
| 45 | +:::::: {.columns} |
| 46 | +::: {.column width="11.1%"} |
| 47 | +[](https://giordano.github.io/) |
| 48 | +::: |
| 49 | +::: {.column width="11.1%"} |
| 50 | +[](http://t-young31.github.io/) |
| 51 | +::: |
| 52 | +::: {.column width="11.1%"} |
| 53 | +[](https://github.com/alessandrofelder) |
| 54 | +::: |
| 55 | +::: {.column width="11.1%"} |
| 56 | +[](http://adamltyson.com/) |
| 57 | +::: |
| 58 | +::: {.column width="11.1%"} |
| 59 | +[](https://willgraham01.github.io/) |
| 60 | +::: |
| 61 | +::: {.column width="11.1%"} |
| 62 | +[](https://github.com/nikk-nikaznan) |
| 63 | +::: |
| 64 | +::: {.column width="11.1%"} |
| 65 | +[](https://github.com/katiebuntic) |
| 66 | +::: |
| 67 | +::: {.column width="11.1%"} |
| 68 | +[](https://github.com/robertvi) |
| 69 | +::: |
| 70 | +::: {.column width="11.1%"} |
| 71 | +[](http://dpshelio.github.io) |
| 72 | +::: |
| 73 | +::: |
| 74 | + |
| 75 | +:::::: {.columns} |
| 76 | +::: {.column width="11.1%"} |
| 77 | +[](http://luke.lapira.eu/) |
| 78 | +::: |
| 79 | +::: {.column width="11.1%"} |
| 80 | +[](https://saransh-cpp.github.io/) |
| 81 | +::: |
| 82 | +::: {.column width="11.1%"} |
| 83 | +[](http://drandrewmitchell.com/) |
| 84 | +::: |
| 85 | +::: {.column width="11.1%"} |
| 86 | +[](https://profiles.ucl.ac.uk/96751-kimberly-meechan) |
| 87 | +::: |
| 88 | +::: {.column width="11.1%"} |
| 89 | +[](https://github.com/jamesprime) |
| 90 | +::: |
| 91 | +::: {.column width="11.1%"} |
| 92 | +[](https://github.com/cuteshaun) |
| 93 | +::: |
| 94 | +::: {.column width="11.1%"} |
| 95 | +[](http://james.briant.co.uk/) |
| 96 | +::: |
| 97 | +::: {.column width="11.1%"} |
| 98 | +[](https://github.com/stellaprins) |
| 99 | +::: |
| 100 | +::: {.column width="11.1%"} |
| 101 | +[](https://github.com/connoraird) |
| 102 | +::: |
| 103 | +::: |
| 104 | + |
| 105 | +::: |
| 106 | + |
| 107 | +:::notes |
| 108 | +This project is the result of the contributions of a large number of people from across ARC and also other departments in UCL such as the Department of Mechanical Engineering and Sainsburys Wellcome Centre. Of particular note are David Stansby, who had the initial idea and organized the original doc-a-thon sessions which got the ball rolling on the project, and Paddy Roddy and Sam Cunliffe, who both have made significant contributions and done a lot of the on-going event organization and project management. |
| 109 | +::: |
| 110 | + |
| 111 | +## 💡 Introduction |
| 112 | + |
| 113 | +:::::: {.columns} |
| 114 | +::: {.column .fragment width="25%"} |
| 115 | +{height="300px"} |
| 116 | +::: |
| 117 | +::: {.column .fragment width="25%"} |
| 118 | +{height="300px"} |
| 119 | +::: |
| 120 | +::: {.column .fragment width="25%"} |
| 121 | +{height="300px"} |
| 122 | +::: |
| 123 | +::: {.column .fragment width="25%"} |
| 124 | +{height="300px"} |
| 125 | +::: |
| 126 | +::: |
| 127 | + |
| 128 | +:::notes |
| 129 | +To give a bit of initial context: |
| 130 | + |
| 131 | +The Python programming language is widely used in research software, due to its ease of use, wide ecosystem of existing libraries and open-source licencing. |
| 132 | + |
| 133 | +Python packages are a way to organize Python code into reusable components, and so are a vital part of building sustainable research software in Python. |
| 134 | + |
| 135 | +A common dilemma faced by researchers using Python is the paralysis of choice that comes from the incredibly wide range of tools available for developing, testing, documenting and benchmarking Python packages, with it often unclear what constitutes good choices of tools to use. |
| 136 | + |
| 137 | +The `python-tooling` project is a set of resources developed by UCL ARC to help researchers in choosing and setting up tooling to use in Python research software projects. |
| 138 | +::: |
| 139 | + |
| 140 | +## 🔎 Overview |
| 141 | + |
| 142 | +:::{.no-bullet} |
| 143 | +- 🚦 Tool recommendations website <br /> <https://github-pages.arc.ucl.ac.uk/python-tooling> |
| 144 | +- 🍪 Package cookiecutter template <br /> <https://github.com/UCL-ARC/python-tooling> |
| 145 | +::: |
| 146 | + |
| 147 | +:::notes |
| 148 | +The project consists of |
| 149 | + |
| 150 | +- a website which uses a traffic light system to give recommendations on tools and services that are useful when building a Python package, |
| 151 | +- and a cookiecutter template that can be used to quickly set up a Python package with our tooling recommendations to ensure that a new project adheres with good research software development practice. |
| 152 | +::: |
| 153 | + |
| 154 | +## 🚦 Tool recommendations website |
| 155 | + |
| 156 | +:::notes |
| 157 | +The website has pages giving recommendations on a range of different categories of tools and services, such as utilities for benchmarking and profiling code to improve performance, generating documentation and writing and running tests. |
| 158 | + |
| 159 | +On each page a table listing relevant tools and packages with a link to the package or service, a short summary and a traffic light recommendation for each. |
| 160 | + |
| 161 | +The traffic lights are meant to give a quick opinionated suggestion of the tools we most recommend for a particular task. |
| 162 | +::: |
| 163 | + |
| 164 | +```{=html} |
| 165 | +<iframe src="https://github-pages.arc.ucl.ac.uk/python-tooling" title="UCL ARC Python tooling website" width="1000" height="500" style="border:none;" ></iframe> |
| 166 | +``` |
| 167 | + |
| 168 | +## 🍪 Template demo |
| 169 | + |
| 170 | +<div id="python-tooling-demo"></div> |
| 171 | +<script src="/js/asciinema-player.min.js"></script> |
| 172 | +<script> |
| 173 | +AsciinemaPlayer.create('images/python-tooling.cast', document.getElementById('python-tooling-demo'), { |
| 174 | + speed: 0.75, |
| 175 | + cols: 115, |
| 176 | + height: 16, |
| 177 | + autoPlay: false, |
| 178 | + preload: true |
| 179 | +}); |
| 180 | +</script> |
| 181 | + |
| 182 | +:::notes |
| 183 | + |
| 184 | +``` |
| 185 | +uvx cookiecutter gh:ucl-arc/python-tooling --checkout-latest |
| 186 | +``` |
| 187 | + |
| 188 | +::: |
| 189 | + |
| 190 | +## 🧑🏫 Tutorial |
| 191 | + |
| 192 | + |
| 193 | + |
| 194 | +<https://github-pages.arc.ucl.ac.uk/python-tooling/pages/tutorial.html> |
0 commit comments