.. _new_development: Developing academic software ============================ .. warning:: This page is still being built! .. admonition:: TODO Discuss getting computing equpiment (advisor's responsibility, but also useful to know it's something to ask for): laptop/dev workstation, monitors, peripherals, etc. Understand HPC that's available to you (university HPC, lab server, etc). Then talk about programming languages. Could be research-specific, but generally good to know a systems language (C, C++, Rust) and a scripting language (Python, Perl). Understand parallelization in those languages. Also useful to know data analysis and visualization langauges or packages (R, numpy/scipy/matplotlib, etc.). Documentation languages. Sphinx + RST, Markdown, GitHub pages, Hugo, etc. Development environments (Linux/WSL/command line). Customization. Managing Git repositories. Lab server, etc. Branching patterns.