Development Tools
This section contains descriptions of common tools that we use for development.
If you're looking for operations tools, you likely meant to go to the Operations Tools section.
Recommended Installs
What you install from below will depend on the projects in which you are involved. Jax has many software stacks with which we work, but there are really two predominant full-stack development environments, Python and Java.
Most of the Clinical projects and Human Phenome Ontology (HPO) are Java/Groovy stack which uses MySQL databases. Many of the research projects use Python with a PostgreSQL database.
However, projects can vary, for example the Glaucoma Discovery Platform uses Python and MySQL.
Before you install too many tools, find out what your first one or two projects will be. Many of the tools you will want if working on Python projects will only be installed under a virtualenv, in which case the project README.md should give instructions for setting up that environment.
Development Tool Index
Messaging
- Slack
- JAX-wide slack instance here: https://thejacksonlaboratory.slack.com
- IT will set up an account for you, and your colleagues will get you added to relevant private channels.
- Microsoft Teams
Languages
- Python3
- PyEnv is a useful tool to manage multiple python
version on your local machine.
- Install with Homebrew on MacOS
brew install pyenv
- Install with Homebrew on MacOS
- Python Poetry is a tool for managing python projects
, virtual environments, and dependencies.
- Install only according to the official documentation
- PyEnv is a useful tool to manage multiple python
version on your local machine.
- Java
- Typescript
UI Development & Frontend Frameworks
- npm - Software registry for JavaScript code
- npx - Tool for managing and running local versions for npm
- Angular - Application Framework used to develop the majority of CompSci web applications
- Nx - Build system with support for key tools used in development of Angular projects
Backend Web Frameworks
IDEs
JetBrains
We have a license for JetBrain projects (contact Daniel Durkin, Gregg TeHennepe)
- IntelliJ Idea (Java/Groovy)
- PyCharm (Python)
- WebStorm (Angular and other web technologies)
- DataGrip (SQL)
You can also install the jetbrains toolbox to manage all of these tools. - ToolBox (Toolbox for managing JetBrains tools)
JetBrains License
To get a Computation Sciences license for JetBrains, submit a ticket at the Computation Sciences Helpdesk Daniel Durkin or Govindarajan Ramamoorthy to get added to this license, and then you should be able to download and install the appropriate tools for your projects from the JetBrains site: https://www.jetbrains.com/
Visual Studio Code
Containerization
- Singularity
- Singularity is a tool to run container images on a High Performance Computing (HPC) system.
- Docker
- Docker is a tool to run container images everywhere but HPC, which is most use-cases.
OCI: Open Container Initiative
The Open Container Initiative is an open governance structure for the express purpose of creating open industry standards around container formats and runtimes.
This is not likely to be something you use directly, but it's good to prioritize using images and containers that are OCI complient.
For more information on containerization, see the Containerization page. operations documentation page.
Databases
- Postgresql
- Mysql
- BigQuery
- Neo4j