Numbers are normally treated as straight entities, but they often are not that straight. Most numbers, indeed, carry with them a dimensional aspect: money is in of some currency, while in physics speed is in meters per second, fluids are in liter and so on.
Are you a unit of measurement domain expert? Even if the units of measurement system you’re used to? These are the questions normally asked by Thodoris and Werner to the audience of their speech about the JSR standard. And they did this it again in their talk at Codemotion Milan 2019.
If you are a Java developer, do not miss the opportunity to attend Codemotion Berlin 2019 ! Many talks will cover Java technologies (check our agenda here). Tickets are still available: get yours here!
An uncommon mistake in measurement units and poor project management lead to damage exceeding 300 million dollars twenty years ago. It was a project toward Mars, an important topic in Codemotion Milan 2019, mostly inspired by the 1969 landing on the Moon. Codemotion spoke to Don Eyles, the programmer of the Lunar Module, at the end of 2018.
A 300 M$ software failure
The Mars Climate Orbiter launched on December 11, 1998, to study martian climate, atmosphere and surface aspects. Knowing about the climate is a major component to understand if the Red Planet supported life forms in the past.
This probe was to act as the communications relay in the Mars Surveyor ’98 program for Mars Polar Lander. The total cost of this mission was $327.6 million.
The planned trajectory was at 226 km orbit, but it was wrong: the minimum good altitude was 80 km, but it could be set only at 57 km -but it wasn’t a fix.
On September 23, 1999, at 09:00:46 UTC, the space probe began this planned orbital maneuver. After about 4 minutes, the spacecraft passed behind Mars, 49 seconds earlier than expected and out of control. The communication with the probe was never re-established: the device crashed on the planet.
There was responsibility for this failure? Sure: it was a software problem. Lockheed Martin’s and NASA’s software specs collided. The software specifications asked for the thrust to be calculated in Newton seconds. But LM used pounds, not Newtons. One pound of force is about 4.45 newtons. LM wrote some software using the wrong units, but NASA never performed the due tests to that software.
Project management on measurement units is at a higher level today, also in lower level projects than a Mars probe. There is the need to pay attention to primitive data types, as is JSR 385. This is a major evolution of the Unit API 1.0 (JSR 363) specification, focused on the SI System redefinition, modularity, and support for Java SE 8/9 and above. JSR 363 specified Java packages for modeling and working with measurement values, quantities, and their corresponding units.
The most important lesson here is in software engineering: when you put your software into production, you do many C- and B-grade errors that are extremely hard to detect. A straightforward speech has been given at Codemotion Milan 2019 by Thodoris Bais and Werner Keil.
We wanted to know from Thodoris and Werner why they chose to give their voluntary work to the JSR and how this relates to the good practices for being a coder.
“Motivation is the first thing to everybody, and also to a developer, and each person needs to find his way, a balance between gravity and aspiration”, said Thodoris; “You have to push yourself on a daily basis, on more inspiring projects, and JSR is a good choice for a programmer”. Thodoris serves the Expert Group of JSR-385 and contributes to the prosperity of the software community in several ways, helping them communities in making their first steps.
Thodoris reminds the lesson from the Java Evangelist Bruno Souza:
There are five things that a programmer should do every day: write, read, solve, deliver, and share
Let’s explain why also the obvious ones. Write code every single day, like is also told of every kind of writing, novel included. Read code every day, especially lines you don’t fully understand because they open your mind. Solving problems is very useful to both your mindset and happiness. Delivering code also helps you, your company and your client. And at the end of this process, never forget to share your code, the parts you may share.
Thodoris currently works as a Scrum Master for ABN Amro bank.
A suggestion for everybody’s career is to be very vertical in something than constantly update on horizontal subjects. The vertical and horizontal direction combine in a so-called T-shape career project.
Werner Keil’s vertical path is clearly Java. He is Founder and Director at Creative Arts & Technologies and helps Global 500 Enterprises across industries and leading IT vendors. AI and IoT are great trends today.
Java has much to do with games and real time, and then to certain IoT approaches. Real-time versions of Java are not the most common use-case for this language, but they do exist.
Werner participates in an impressive number of projects: he is Eclipse and Apache Committer and JCP member in JSRs like 354 (Money), 358/364 (JCP.next), Java ME 8, 362 (Portlet 3), 365 (CDI 2), 366 (Java EE 8), 374 (JSON-P 1.1), 375 (Security), 382 (Config) or 385 (Units 2.0, also Spec Lead).
“Java also has a leg on AI, with its semantics bringing also in than direction”. And the maturity of its ecosystem allows giving many lessons to younger languages and frameworks.