######################### Preparation and Resources ######################### This page lists general tutorials and other resources that supplement the JEDI-specific Academy training. If you are unfamiliar with one or more of these topics (such as git/GitHub or C++), it is recommended that you learn about them **before the Academy**. The links below should be regarded as a starting point; feel free to explore other internet resources that you may find. And, though these resources are provided as Academy preparation materials, you are encouraged to return to this page as needed after the Academy to further enrich your understanding. If you have any requests or suggestions for additional content, please `contact the JEDI core team `_. See also the main `JEDI Documentation `_. Git Flow -------- An essential project management and code development paradigm followed by JEDI. It is highly recommended that you read the article and keep a copy of the diagram handy for reference. * `The Git Flow manifesto `_ * `Git-Flow Diagram (pdf) <../resources/Git-branching-model.pdf>`_ * `git-flow-avh extension to git (with up-to-date installation instructions) `_ * `git-flow-avh cheat sheet `_ * `git-flow within JEDI `_ git, GitHub, and ZenHub ----------------------- ``git`` is the version control system used by JEDI and ``GitHub`` is web-based platform where the JEDI code is stored and distributed. But ``GitHub`` is more than that: it is also a powerful forum for managing issues and promoting collaboration. This is particularly true when combined with the third-party project management tool ZenHub, which is used extensively in JEDI. * `git tutorials provided by Atlassian `_ *(Note: focus on the git activities, not on Bitbucket, which is an alternative to GitHub)* * GitHub itself has `instructive guides `_ and `extensive help pages `_ * `ZenHub guides `_ are also informative and useful git-lfs ----------------------- As of January 2020, GitHub repotrs having over 40 million users and more than 100 million repositories. How do they handle all that data? One way is by limiting the repository size. In JEDI we do not store binary data files (such as netcdf) on GitHub. Rather, we store and distribute data files on the cloud, either directly through `Amazon Web Services `_ or indirectly through the GitHub Large File Service (LFS). * `How and why JEDI uses Git-LFS `_ * `GitHub's description of Git-LFS `_ * `A Git-LFS tutorial `_ * `Git-LFS binaries available for download `_ YAML ---- JEDI configuration files are written in YAML. * `What is YAML? `_ * `Language specification (version 1.2) `_ C++ --- The high-level JEDI code leverages the powerful object-oriented capabilities of C++. Though the learning curve can seem intimidating if you have no prior experience with it, you will soon appreciate how beneficial it can be. * `cplusplus.com `_ is a useful source of tutorials and articles, and also as a language reference * `direct link to cplusplus.com tutorials `_ * `C++ Tutorials from www.geeksforgeeks.org `_ * `Tutorialspoint `_ The english is sometimes a little clumsy here but there are some useful examples * How to write good, modern C++ (moderate): `CppCoreGuidelines `_ and `tips on type and resource safety `_ * `C++ language reference (technical) `_ * `The Boost C++ Library `_ * `The Eigen C++ Library `_ Doxygen and Sphinx ------------------ Sphinx is used to generate the high-level `JEDI documentation `_, as well as the page you are reading now. Sphinx generates html files from restructured text (rst) files. Doxygen is used for :doc:`low-level documenation of classes, functions, modules, and subroutines `. * `Sphinx documentation and downloads `_ * `Restructured text primer (from Sphinx) `_ * `Doxygen documentation and downloads `_ * `JEDI Doxygen page `_ Data Assimilation and Numerical Weather Prediction -------------------------------------------------- Though we focus more on the technical details of JEDI in the Academy, JEDI is, after all, a system for Data Assimilation (DA) in Numerical Weather Prediction (NWP). If you are new to DA, here are a few resources to get you started. * The European Centre for Medium-Range Weather Forecasting has some good `lecture notes on DA and NWP `_ We recommend in particular the article on `Data Assimilation Concepts and Methods `_ by Bouttier and Courtier (1999)