Time is...complicated. It seems simple enough when you are close to the surface of the Earth and you have a device in your pocket that is constantly connected to atomic clocks. But go to outer space and things get uncomfortable pretty quickly. This talk explores how AstroTime.jl has evolved and how it can help you deal with the intricacies of time such as leap seconds and different time scales. Even if you are neither an astronomer nor an astronaut!
The AstroTime.jl library has been in development since 2013 (originally as part of Astrodynamics.jl). It provides the
Epoch type as a replacement and complement to Julia's
Epoch can handle sub-nanosecond accuracy over a time span several times the age of the universe with support for all commonly used astronomical time scales.
Since its inception, AstroTime.jl has gone through several major design iterations as our understanding of the scope and complexity of the problem domain has grown. The public API on the other hand has remained remarkably stable which is a great testament to Julia's expressive and versatile type system. While AstroTime.jl is built on the solid foundations of the
Dates standard library, it also fixes some of the shortcomings of the latter and might also highlight further areas of possible improvement.
AstroTime.jl was meant to be only a small stepping stone on the way to making Julia a multiplanetary programming language but it has become a great project in its own right. We want to share the journey so far and maybe get you exited about something as mundane as time. Or spacetime, rather, relatively speaking...