I started units-of-measure in early 2017 for use on my high school’s FIRST Robotics Competition team, The Funky Monkeys.

With many programmers and a 17,000 line, student-managed code base, unit-related bugs are inevitable. One option may be to document the units of every single variable while enforcing even stricter code-review, but this is not always possible, especially in the heat of competition.

units-of-measure prevents incorrect code from ever deploying to our robot in the first place.

When developing control system software, real-time performance is a priority. This is why I’ve decided to use inline classes before they have fully matured.

units-of-measure was originally distributed as an annotation processor, but was later repackaged as a gradle plugin to support multiplatform builds.