Brad has a variety of experience and qualifications related to scientific and engineering software development and maintenance. He has been involved in the development and/or maintenance of multiple, highly-complex, safety-related, legacy Fortran software packages used in the nuclear industry. This experience is useful for recognizing and identifying common patterns found in legacy scientific and engineering software while trying to understand and “reverse engineer” such systems in the effort of code modernization. Brad has also been involved in the development of multiple newer Fortran software packages, making use of modern software development tools and techniques. Most notably are fpm - The Fortran Package Manager and build system, Vegetables - a Fortran unit testing framework, and jsonff - a Fortran interface to the JSON data format. This experience is useful for configuring and applying modern software development tools and techniques. It is also useful in recognizing the types of modifications that can be made to legacy software and what their costs and benefits would be. Brad has experience in quality assurance, and specifically in the area of software quality assurance, having written software quality assurance procedures and plans for previous employers and projects. He has experience applying modern software development tools and techniques to improve software quality, including in the context of Nuclear Quality Assurance. Brad has taught multiple classes, and offers online courses, including on the basics of version control with git, modern Fortran basics, software design patterns in Fortran, and modern software development practices (i.e. unit testing and continuous integration) with Fortran.
Most parallel scientific programs contain compiler directives (pragmas) such as those from OpenMP, explicit calls to runtime li- brary procedures such as those implementing the Message Passing In- terface (MPI), or compiler-specific language extensions such as those provided by CUDA. By contrast, the recent Fortran standards em- power developers to express parallel algorithms without directly refer- encing lower-level parallel programming models. Fortran’s parallel features place the language within the Partitioned Global Address Space (PGAS) class of programming models. When writing programs that ex- ploit data-parallelism, application developers often find it straightfor- ward to develop custom parallel algorithms. Problems involving complex, heterogeneous, staged calculations, however, pose much greater chal- lenges. Such applications require careful coordination of tasks in a man- ner that respects dependencies prescribed by a directed acyclic graph. When rolling one’s own solution proves difficult, extending a customiz- able framework becomes attractive. The paper presents the design, imple- mentation, and use of the Framework for Extensible Asynchronous Task Scheduling (FEATS), which we believe to be the first task-scheduling tool written in modern Fortran. We describe the benefits and compro- mises associated with choosing Fortran as the implementation language, and we propose ways in which future Fortran standards can best support the use case in this paper.