Writing code

You must use version control, as described here.

Coding better

  • Some helpful coding tips (mostly Matlab) are on this medium blog.
  • And >20h of tutorials, including version control by Jeremy Howard, on YouTube.

Text editors

Full-featured text editors are necessary for efficient coding.

VS Code

VS Code is a full featured and efficient integrated text editor for coding.

Terminals

  • On Mac, iTerm2 is free and far superior to the in-built terminal app.
  • :fire: If you are fancy, you can change to using the fish shell, which has lots of cool features.
  • :fire: If you want to set up your Mac with lots of cool terminal superpowers, look no further.

Cluster computing

  • ALL code on a cluster should be a clone of a git repository on GitHub. You should have another clone on a local computer that you can edit, and keep all versions synchronized through push/pull. You never want to have any risk of versions of the same code becoming out of synch.
  • As well on your local computer, you should take the time to set up an ssh-key for Github on the server, to avoid typing in your password each time.
  • You should have a nice interactive way of getting data/outputs to/from the server. The best is Transmit; free alternatives are Cyberduck, or FileZilla.
  • You should set up an ssh key for each server you use regularly, to avoid typing in your password every time you connect.
  • To avoid typing in the full username and servername every time you connect to your server, you set up an ssh config file.

Software on GitHub

  • You should make a DOI on Zenodo for any software that you release on GitHub.
  • You could consider a workflow for tracking views and download statistics, as described here.