Making a splash with SPLASH – Josh Calcino
My internship at ADACS began in June 2020, a couple of weeks after submitting my Ph.D. thesis, and during the interstate travel bans due to COVID-19. For this reason, I resided in Brisbane during the internship, however, the team at ADACS is very accustomed to the virtual environment. So although we never met in person during my internship, it never felt like I was working in solitude.
My project was focused on providing additional functionality to the smoothed-particle hydrodynamics (SPH) visualisation code SPLASH. This is a code I used extensively during my Ph.D., so it was a useful experience to be able to understand and contribute to its functionality. My internship was largely funded by my Ph.D. co-supervisor, so naturally, my project would relate heavily to my Ph.D. research (though this is mostly not the case at ADACS).
There were many things that I could do to improve the SPLASH code, and the first thing was to allow a single compiled binary of the code to accept many different data formats. The previous version required the code to be compiled specifically to run different data formats (e.g. ASCII, or Phantom SPH binary files). It was very useful to learn a compiled lower-level language such as Fortran. Although Python is certainly the dominant computer language within astrophysics, computationally intensive programs are almost exclusively written with C/C++ or Fortran. I did not get the opportunity to learn any of these languages during my Ph.D., so to do this during an internship at ADACS, where many of the team are familiar with these languages, was very helpful.
In the next stage of my internship, I started to write a Python package that would act as a wrapper around some of the functionality in SPLASH. This also allowed me to learn new skills that I had not yet found the opportunity to do so during my Ph.D. In particular, I learned how to package a Python code I had written to be uploaded onto pip, so that anyone could now pip install my code. I also developed tests and ReadTheDocs documentation for the code. These are skills that I will certainly use later on during my research career.
During my internship the team had begun to implement an agile framework to increase the efficiency of their workflow. Although this is used extensively among software teams, it is not something I had come across. I found that this drastically increased my productivity, and the daily stand-up meetings were an excellent way to quickly overcome minor challenges that might otherwise take the whole day to solve.
I would definitely recommend an ADACS internship to anyone who would like to improve their coding skills, and experience work outside of an academic setting (even if you plan on a career in academia!). I believe the skills and experiences I acquired during my internship at ADACS will continue to be useful to me during my career.