SlideShare ist ein Scribd-Unternehmen logo
1 von 35
How JSR 385 could have Saved the Mars
Climate Orbiter
Zürich IoT Day 2021 Virtual Meetup
Werner Keil
@wernerkeil
https://hobbylark.com/party-games/1999-Fun-Facts-Trivia-and-News
@UnitAPI
https://youtu.be/v1Zst19VWvo
Life on Mars 1999
https://youtu.be/2CZl7ysDKOI https://youtu.be/EdLdL-Su_fo
@thodorisbais
@wernerkeil
Mars Climate
Orbiter
• Launched on 11
December 1998
• 338 kilograms
• $125 millions
• To study Martian
climate, atmosphere
and surface changes
@wernerkeil @thodorisbais
@thodorisbais
@wernerkeil
What went wrong
@thodorisbais
@wernerkeil
lbf·s N·s
4.45
Mars Climate Orbiter
“The problem here was not the error; it was the
failure of NASA’s systems engineering, and the
checks and balances in our process, to detect the
error. That’s why we lost the spacecraft.”
Edward Weiler
NASA associate administrator of space science,
IEEE Spectrum: Why the Mars Probe went off course
@thodorisbais
@wernerkeil
Lessons Learned
@thodorisbais
@wernerkeil
• Read the software specifications
• Use JSR-385 instead of primitives
• Fail-fast
@thodorisbais
@wernerkeil
What is the Fundamental Problem?
Primitive (Java) types are primitive types
• static final double C = 1079252849;
• static final double SPEED_OF_LIGHT = 1079252849;
• static final double SPEED_OF_LIGHT_IN_KM_PER_H = 1079252849;
@thodorisbais
@wernerkeil
static final Quantity<Speed> SPEED_OF_LIGHT =
Quantities.getQuantity(1079252849, Units.KILOMETRE_PER_HOUR);
Rolling your Own Library
• Development
• Maintenance
• Upgrades & extensions
@thodorisbais
@wernerkeil
Werner Keil Thodoris Bais
Maintenance Lead JSR-385
Expert Group Member JSR-385
Let’s meet
@thodorisbais
@wernerkeil
@thodorisbais
@wernerkeil
JSR-385: Units of
Measurement API 2.0
JSR-275 Modularity
Support Java SE >=8
JSR-363
JSR-385 Basic Concepts
• Dimensions
• Units
• Quantities
• Prefixes
• Converters
• Formats
• Systems of units
@thodorisbais
@wernerkeil
Setting up a project
<dependencies>
<dependency>
<groupId>tech.units</groupId>
<artifactId>indriya</artifactId>
<version>2.1.2</version>
</dependency>
</dependencies>
@thodorisbais
@wernerkeil
–Wikipedia
“A physical quantity is a physical property of a phenomenon, body, or
substance, that can be quantified by measurement.”
Definition of a Physical Quantity
@thodorisbais
@wernerkeil
Speed of Light
c = 299,792,458 m/s
= 1,079,252,849 km/h
@thodorisbais
@wernerkeil
Value Unit
Base Units
@wernerkeil @UnitAPI
Derived Units
@wernerkeil @UnitAPI
Multiples
• km
• ms
• Mm?
• ks?
@thodorisbais
@wernerkeil
Dimensions
@thodorisbais
@wernerkeil
Systems of Unit
Systems of Units
• Metric System
• Imperial System
• US customary units
• Roman units of measurement
• Swiss units of measurement
@thodorisbais
@wernerkeil
Doing the Math
@thodorisbais
@wernerkeil
Equality and Equivalence
• kΩ ≠ mHz
• kΩ ≠ mΩ
• kΩ ≡ kΩ
• N ≅ kg·m·s-2
• kg·m-2 ≅ mg·mm-2
• 1 kΩ ≠ 1 mHz
• 1 kΩ ≠ 1 mΩ
• 1 kΩ ≡ 1 kΩ
• 1 N ≅ 1 kg·m·s-2
• 1 kg·m-2 ≅ 1 mg·mm-2
• 1 kΩ ≅ 1,000 Ω
Units Quantities
@thodorisbais
@wernerkeil
Quantity Addition
• 1 Ω + 1 Ω = 2 Ω
• 1 Ω + 1 mΩ = 1.001 Ω
• 1 mΩ + 1 Ω = 1,001 mΩ
• 1 Ω + 1 m “does not compile”
@thodorisbais
@wernerkeil
How much is 0 °C + 0 °C?
Answer
@thodorisbais
@wernerkeil
IoT Day Math Exam
Demo Time
@thodorisbais
@wernerkeil
Write a program to calculate the BMI of a person
Exercise description
@thodorisbais
@wernerkeil
1. Define two quantities
a. A mass
b. A length
2. Print them out
Useful classes:
•tech.units.indriya.quantity.Quantities
•getQuantity(java.lang.Number value, javax.measure.Unit unit)
•tech.units.indriya.unit.Units
•javax.measure.Quantity
•javax.measure.quantity.Mass
Exercise 1
@thodorisbais
@wernerkeil
• Divide the mass by the square of the height
• Print out the result
Exercise 2
@thodorisbais
@wernerkeil
a. Parse mass and height from a String
b. Read mass and height from the command line
Exercise 3
@thodorisbais
@wernerkeil
a. Define a BMI quantity
b. Define a BMI unit
c. Convert the quantity to the BMI unit before printing it out
Exercise 4
@thodorisbais
@wernerkeil
• Autodetect which argument has mass dimension and which one
has length
Exercise 5
@thodorisbais
@wernerkeil
JSR-385 Links
• JCP page
• https://jcp.org/en/jsr/detail?id=385
• GitHub pages
• https://unitsofmeasurement.github.io/
• https://github.com/unitsofmeasurement
• http://www.uom.si
• http://www.uom.systems
• Twitter
• @UnitAPI
@thodorisbais
@wernerkeil
@thodorisbais
@wernerkeil

Weitere ähnliche Inhalte

Ähnlich wie How JSR 385 could have Saved the Mars Climate Orbiter - Zurich IoT Day 2021

How JSR 385 could have Saved the Mars Climate Orbiter JFall 2019
How JSR 385 could have Saved the Mars Climate Orbiter JFall 2019How JSR 385 could have Saved the Mars Climate Orbiter JFall 2019
How JSR 385 could have Saved the Mars Climate Orbiter JFall 2019Thodoris Bais
 
How JSR 385 could have Saved the Mars Climate Orbiter - Adopt-a-JSR Day
How JSR 385 could have Saved the Mars Climate Orbiter - Adopt-a-JSR DayHow JSR 385 could have Saved the Mars Climate Orbiter - Adopt-a-JSR Day
How JSR 385 could have Saved the Mars Climate Orbiter - Adopt-a-JSR DayWerner Keil
 
Kecsm2012uren
Kecsm2012urenKecsm2012uren
Kecsm2012urenurvics
 
How JSR 385 Could have Saved the Mars Climate Orbiter DWX June 2019
How JSR 385 Could have Saved the Mars Climate Orbiter DWX June 2019How JSR 385 Could have Saved the Mars Climate Orbiter DWX June 2019
How JSR 385 Could have Saved the Mars Climate Orbiter DWX June 2019Thodoris Bais
 

Ähnlich wie How JSR 385 could have Saved the Mars Climate Orbiter - Zurich IoT Day 2021 (6)

How JSR 385 could have Saved the Mars Climate Orbiter JFall 2019
How JSR 385 could have Saved the Mars Climate Orbiter JFall 2019How JSR 385 could have Saved the Mars Climate Orbiter JFall 2019
How JSR 385 could have Saved the Mars Climate Orbiter JFall 2019
 
M2
M2M2
M2
 
How JSR 385 could have Saved the Mars Climate Orbiter - Adopt-a-JSR Day
How JSR 385 could have Saved the Mars Climate Orbiter - Adopt-a-JSR DayHow JSR 385 could have Saved the Mars Climate Orbiter - Adopt-a-JSR Day
How JSR 385 could have Saved the Mars Climate Orbiter - Adopt-a-JSR Day
 
Kecsm2012uren
Kecsm2012urenKecsm2012uren
Kecsm2012uren
 
Lect1(unit).ppt
Lect1(unit).pptLect1(unit).ppt
Lect1(unit).ppt
 
How JSR 385 Could have Saved the Mars Climate Orbiter DWX June 2019
How JSR 385 Could have Saved the Mars Climate Orbiter DWX June 2019How JSR 385 Could have Saved the Mars Climate Orbiter DWX June 2019
How JSR 385 Could have Saved the Mars Climate Orbiter DWX June 2019
 

Mehr von Werner Keil

Securing eHealth, eGovernment and eBanking with Java - DWX '21
Securing eHealth, eGovernment and eBanking with Java - DWX '21Securing eHealth, eGovernment and eBanking with Java - DWX '21
Securing eHealth, eGovernment and eBanking with Java - DWX '21Werner Keil
 
OpenDDR and Jakarta MVC - JavaLand 2021
OpenDDR and Jakarta MVC - JavaLand 2021OpenDDR and Jakarta MVC - JavaLand 2021
OpenDDR and Jakarta MVC - JavaLand 2021Werner Keil
 
OpenDDR and Jakarta MVC - Java2Days 2020 Virtual
OpenDDR and Jakarta MVC - Java2Days 2020 VirtualOpenDDR and Jakarta MVC - Java2Days 2020 Virtual
OpenDDR and Jakarta MVC - Java2Days 2020 VirtualWerner Keil
 
NoSQL Endgame - Java2Days 2020 Virtual
NoSQL Endgame - Java2Days 2020 VirtualNoSQL Endgame - Java2Days 2020 Virtual
NoSQL Endgame - Java2Days 2020 VirtualWerner Keil
 
JCON 2020: Mobile Java Web Applications with MVC and OpenDDR
JCON 2020: Mobile Java Web Applications with MVC and OpenDDRJCON 2020: Mobile Java Web Applications with MVC and OpenDDR
JCON 2020: Mobile Java Web Applications with MVC and OpenDDRWerner Keil
 
Money, Money, Money, can be funny with JSR 354 (Devoxx BE)
Money, Money, Money, can be funny with JSR 354 (Devoxx BE)Money, Money, Money, can be funny with JSR 354 (Devoxx BE)
Money, Money, Money, can be funny with JSR 354 (Devoxx BE)Werner Keil
 
Money, Money, Money, can be funny with JSR 354 (DWX 2019)
Money, Money, Money, can be funny with JSR 354 (DWX 2019)Money, Money, Money, can be funny with JSR 354 (DWX 2019)
Money, Money, Money, can be funny with JSR 354 (DWX 2019)Werner Keil
 
NoSQL: The first New Jakarta EE Specification (DWX 2019)
NoSQL: The first New Jakarta EE Specification (DWX 2019)NoSQL: The first New Jakarta EE Specification (DWX 2019)
NoSQL: The first New Jakarta EE Specification (DWX 2019)Werner Keil
 
JNoSQL: The Definitive Solution for Java and NoSQL Databases
JNoSQL: The Definitive Solution for Java and NoSQL DatabasesJNoSQL: The Definitive Solution for Java and NoSQL Databases
JNoSQL: The Definitive Solution for Java and NoSQL DatabasesWerner Keil
 
Eclipse JNoSQL: The Definitive Solution for Java and NoSQL Databases
Eclipse JNoSQL: The Definitive Solution for Java and NoSQL DatabasesEclipse JNoSQL: The Definitive Solution for Java and NoSQL Databases
Eclipse JNoSQL: The Definitive Solution for Java and NoSQL DatabasesWerner Keil
 
Physikal - Using Kotlin for Clean Energy - KUG Munich
Physikal - Using Kotlin for Clean Energy - KUG MunichPhysikal - Using Kotlin for Clean Energy - KUG Munich
Physikal - Using Kotlin for Clean Energy - KUG MunichWerner Keil
 
Physikal - JSR 363 and Kotlin for Clean Energy - Java2Days 2017
Physikal - JSR 363 and Kotlin for Clean Energy - Java2Days 2017Physikal - JSR 363 and Kotlin for Clean Energy - Java2Days 2017
Physikal - JSR 363 and Kotlin for Clean Energy - Java2Days 2017Werner Keil
 
Performance Monitoring for the Cloud - Java2Days 2017
Performance Monitoring for the Cloud - Java2Days 2017Performance Monitoring for the Cloud - Java2Days 2017
Performance Monitoring for the Cloud - Java2Days 2017Werner Keil
 
Eclipse Science F2F 2016 - JSR 363
Eclipse Science F2F 2016 - JSR 363Eclipse Science F2F 2016 - JSR 363
Eclipse Science F2F 2016 - JSR 363Werner Keil
 
Java2Days - Security for JavaEE and the Cloud
Java2Days - Security for JavaEE and the CloudJava2Days - Security for JavaEE and the Cloud
Java2Days - Security for JavaEE and the CloudWerner Keil
 
Apache DeviceMap - Web-Dev-BBQ Stuttgart
Apache DeviceMap - Web-Dev-BBQ StuttgartApache DeviceMap - Web-Dev-BBQ Stuttgart
Apache DeviceMap - Web-Dev-BBQ StuttgartWerner Keil
 
The First IoT JSR: Units of Measurement - JUG Berlin-Brandenburg
The First IoT JSR: Units of Measurement - JUG Berlin-BrandenburgThe First IoT JSR: Units of Measurement - JUG Berlin-Brandenburg
The First IoT JSR: Units of Measurement - JUG Berlin-BrandenburgWerner Keil
 
JSR 354: Money and Currency API - Short Overview
JSR 354: Money and Currency API - Short OverviewJSR 354: Money and Currency API - Short Overview
JSR 354: Money and Currency API - Short OverviewWerner Keil
 
JavaLand: Quantified Social - Fitness-Geräte und -Portale mit Agorava
JavaLand: Quantified Social - Fitness-Geräte und -Portale mit AgoravaJavaLand: Quantified Social - Fitness-Geräte und -Portale mit Agorava
JavaLand: Quantified Social - Fitness-Geräte und -Portale mit AgoravaWerner Keil
 
Enterprise 2.0 with Open Source Frameworks like Agorava
Enterprise 2.0 with Open Source Frameworks like AgoravaEnterprise 2.0 with Open Source Frameworks like Agorava
Enterprise 2.0 with Open Source Frameworks like AgoravaWerner Keil
 

Mehr von Werner Keil (20)

Securing eHealth, eGovernment and eBanking with Java - DWX '21
Securing eHealth, eGovernment and eBanking with Java - DWX '21Securing eHealth, eGovernment and eBanking with Java - DWX '21
Securing eHealth, eGovernment and eBanking with Java - DWX '21
 
OpenDDR and Jakarta MVC - JavaLand 2021
OpenDDR and Jakarta MVC - JavaLand 2021OpenDDR and Jakarta MVC - JavaLand 2021
OpenDDR and Jakarta MVC - JavaLand 2021
 
OpenDDR and Jakarta MVC - Java2Days 2020 Virtual
OpenDDR and Jakarta MVC - Java2Days 2020 VirtualOpenDDR and Jakarta MVC - Java2Days 2020 Virtual
OpenDDR and Jakarta MVC - Java2Days 2020 Virtual
 
NoSQL Endgame - Java2Days 2020 Virtual
NoSQL Endgame - Java2Days 2020 VirtualNoSQL Endgame - Java2Days 2020 Virtual
NoSQL Endgame - Java2Days 2020 Virtual
 
JCON 2020: Mobile Java Web Applications with MVC and OpenDDR
JCON 2020: Mobile Java Web Applications with MVC and OpenDDRJCON 2020: Mobile Java Web Applications with MVC and OpenDDR
JCON 2020: Mobile Java Web Applications with MVC and OpenDDR
 
Money, Money, Money, can be funny with JSR 354 (Devoxx BE)
Money, Money, Money, can be funny with JSR 354 (Devoxx BE)Money, Money, Money, can be funny with JSR 354 (Devoxx BE)
Money, Money, Money, can be funny with JSR 354 (Devoxx BE)
 
Money, Money, Money, can be funny with JSR 354 (DWX 2019)
Money, Money, Money, can be funny with JSR 354 (DWX 2019)Money, Money, Money, can be funny with JSR 354 (DWX 2019)
Money, Money, Money, can be funny with JSR 354 (DWX 2019)
 
NoSQL: The first New Jakarta EE Specification (DWX 2019)
NoSQL: The first New Jakarta EE Specification (DWX 2019)NoSQL: The first New Jakarta EE Specification (DWX 2019)
NoSQL: The first New Jakarta EE Specification (DWX 2019)
 
JNoSQL: The Definitive Solution for Java and NoSQL Databases
JNoSQL: The Definitive Solution for Java and NoSQL DatabasesJNoSQL: The Definitive Solution for Java and NoSQL Databases
JNoSQL: The Definitive Solution for Java and NoSQL Databases
 
Eclipse JNoSQL: The Definitive Solution for Java and NoSQL Databases
Eclipse JNoSQL: The Definitive Solution for Java and NoSQL DatabasesEclipse JNoSQL: The Definitive Solution for Java and NoSQL Databases
Eclipse JNoSQL: The Definitive Solution for Java and NoSQL Databases
 
Physikal - Using Kotlin for Clean Energy - KUG Munich
Physikal - Using Kotlin for Clean Energy - KUG MunichPhysikal - Using Kotlin for Clean Energy - KUG Munich
Physikal - Using Kotlin for Clean Energy - KUG Munich
 
Physikal - JSR 363 and Kotlin for Clean Energy - Java2Days 2017
Physikal - JSR 363 and Kotlin for Clean Energy - Java2Days 2017Physikal - JSR 363 and Kotlin for Clean Energy - Java2Days 2017
Physikal - JSR 363 and Kotlin for Clean Energy - Java2Days 2017
 
Performance Monitoring for the Cloud - Java2Days 2017
Performance Monitoring for the Cloud - Java2Days 2017Performance Monitoring for the Cloud - Java2Days 2017
Performance Monitoring for the Cloud - Java2Days 2017
 
Eclipse Science F2F 2016 - JSR 363
Eclipse Science F2F 2016 - JSR 363Eclipse Science F2F 2016 - JSR 363
Eclipse Science F2F 2016 - JSR 363
 
Java2Days - Security for JavaEE and the Cloud
Java2Days - Security for JavaEE and the CloudJava2Days - Security for JavaEE and the Cloud
Java2Days - Security for JavaEE and the Cloud
 
Apache DeviceMap - Web-Dev-BBQ Stuttgart
Apache DeviceMap - Web-Dev-BBQ StuttgartApache DeviceMap - Web-Dev-BBQ Stuttgart
Apache DeviceMap - Web-Dev-BBQ Stuttgart
 
The First IoT JSR: Units of Measurement - JUG Berlin-Brandenburg
The First IoT JSR: Units of Measurement - JUG Berlin-BrandenburgThe First IoT JSR: Units of Measurement - JUG Berlin-Brandenburg
The First IoT JSR: Units of Measurement - JUG Berlin-Brandenburg
 
JSR 354: Money and Currency API - Short Overview
JSR 354: Money and Currency API - Short OverviewJSR 354: Money and Currency API - Short Overview
JSR 354: Money and Currency API - Short Overview
 
JavaLand: Quantified Social - Fitness-Geräte und -Portale mit Agorava
JavaLand: Quantified Social - Fitness-Geräte und -Portale mit AgoravaJavaLand: Quantified Social - Fitness-Geräte und -Portale mit Agorava
JavaLand: Quantified Social - Fitness-Geräte und -Portale mit Agorava
 
Enterprise 2.0 with Open Source Frameworks like Agorava
Enterprise 2.0 with Open Source Frameworks like AgoravaEnterprise 2.0 with Open Source Frameworks like Agorava
Enterprise 2.0 with Open Source Frameworks like Agorava
 

Kürzlich hochgeladen

Powerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara LaskowskaPowerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara LaskowskaCzechDreamin
 
Designing for Hardware Accessibility at Comcast
Designing for Hardware Accessibility at ComcastDesigning for Hardware Accessibility at Comcast
Designing for Hardware Accessibility at ComcastUXDXConf
 
Intro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджераIntro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджераMark Opanasiuk
 
WebAssembly is Key to Better LLM Performance
WebAssembly is Key to Better LLM PerformanceWebAssembly is Key to Better LLM Performance
WebAssembly is Key to Better LLM PerformanceSamy Fodil
 
Where to Learn More About FDO _ Richard at FIDO Alliance.pdf
Where to Learn More About FDO _ Richard at FIDO Alliance.pdfWhere to Learn More About FDO _ Richard at FIDO Alliance.pdf
Where to Learn More About FDO _ Richard at FIDO Alliance.pdfFIDO Alliance
 
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo DiehlFuture Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo DiehlPeter Udo Diehl
 
Speed Wins: From Kafka to APIs in Minutes
Speed Wins: From Kafka to APIs in MinutesSpeed Wins: From Kafka to APIs in Minutes
Speed Wins: From Kafka to APIs in Minutesconfluent
 
Microsoft CSP Briefing Pre-Engagement - Questionnaire
Microsoft CSP Briefing Pre-Engagement - QuestionnaireMicrosoft CSP Briefing Pre-Engagement - Questionnaire
Microsoft CSP Briefing Pre-Engagement - QuestionnaireExakis Nelite
 
IESVE for Early Stage Design and Planning
IESVE for Early Stage Design and PlanningIESVE for Early Stage Design and Planning
IESVE for Early Stage Design and PlanningIES VE
 
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...FIDO Alliance
 
Demystifying gRPC in .Net by John Staveley
Demystifying gRPC in .Net by John StaveleyDemystifying gRPC in .Net by John Staveley
Demystifying gRPC in .Net by John StaveleyJohn Staveley
 
AI revolution and Salesforce, Jiří Karpíšek
AI revolution and Salesforce, Jiří KarpíšekAI revolution and Salesforce, Jiří Karpíšek
AI revolution and Salesforce, Jiří KarpíšekCzechDreamin
 
What's New in Teams Calling, Meetings and Devices April 2024
What's New in Teams Calling, Meetings and Devices April 2024What's New in Teams Calling, Meetings and Devices April 2024
What's New in Teams Calling, Meetings and Devices April 2024Stephanie Beckett
 
TopCryptoSupers 12thReport OrionX May2024
TopCryptoSupers 12thReport OrionX May2024TopCryptoSupers 12thReport OrionX May2024
TopCryptoSupers 12thReport OrionX May2024Stephen Perrenod
 
The Metaverse: Are We There Yet?
The  Metaverse:    Are   We  There  Yet?The  Metaverse:    Are   We  There  Yet?
The Metaverse: Are We There Yet?Mark Billinghurst
 
Breaking Down the Flutterwave Scandal What You Need to Know.pdf
Breaking Down the Flutterwave Scandal What You Need to Know.pdfBreaking Down the Flutterwave Scandal What You Need to Know.pdf
Breaking Down the Flutterwave Scandal What You Need to Know.pdfUK Journal
 
Google I/O Extended 2024 Warsaw
Google I/O Extended 2024 WarsawGoogle I/O Extended 2024 Warsaw
Google I/O Extended 2024 WarsawGDSC PJATK
 
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...CzechDreamin
 
Optimizing NoSQL Performance Through Observability
Optimizing NoSQL Performance Through ObservabilityOptimizing NoSQL Performance Through Observability
Optimizing NoSQL Performance Through ObservabilityScyllaDB
 
How we scaled to 80K users by doing nothing!.pdf
How we scaled to 80K users by doing nothing!.pdfHow we scaled to 80K users by doing nothing!.pdf
How we scaled to 80K users by doing nothing!.pdfSrushith Repakula
 

Kürzlich hochgeladen (20)

Powerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara LaskowskaPowerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara Laskowska
 
Designing for Hardware Accessibility at Comcast
Designing for Hardware Accessibility at ComcastDesigning for Hardware Accessibility at Comcast
Designing for Hardware Accessibility at Comcast
 
Intro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджераIntro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджера
 
WebAssembly is Key to Better LLM Performance
WebAssembly is Key to Better LLM PerformanceWebAssembly is Key to Better LLM Performance
WebAssembly is Key to Better LLM Performance
 
Where to Learn More About FDO _ Richard at FIDO Alliance.pdf
Where to Learn More About FDO _ Richard at FIDO Alliance.pdfWhere to Learn More About FDO _ Richard at FIDO Alliance.pdf
Where to Learn More About FDO _ Richard at FIDO Alliance.pdf
 
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo DiehlFuture Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
 
Speed Wins: From Kafka to APIs in Minutes
Speed Wins: From Kafka to APIs in MinutesSpeed Wins: From Kafka to APIs in Minutes
Speed Wins: From Kafka to APIs in Minutes
 
Microsoft CSP Briefing Pre-Engagement - Questionnaire
Microsoft CSP Briefing Pre-Engagement - QuestionnaireMicrosoft CSP Briefing Pre-Engagement - Questionnaire
Microsoft CSP Briefing Pre-Engagement - Questionnaire
 
IESVE for Early Stage Design and Planning
IESVE for Early Stage Design and PlanningIESVE for Early Stage Design and Planning
IESVE for Early Stage Design and Planning
 
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
 
Demystifying gRPC in .Net by John Staveley
Demystifying gRPC in .Net by John StaveleyDemystifying gRPC in .Net by John Staveley
Demystifying gRPC in .Net by John Staveley
 
AI revolution and Salesforce, Jiří Karpíšek
AI revolution and Salesforce, Jiří KarpíšekAI revolution and Salesforce, Jiří Karpíšek
AI revolution and Salesforce, Jiří Karpíšek
 
What's New in Teams Calling, Meetings and Devices April 2024
What's New in Teams Calling, Meetings and Devices April 2024What's New in Teams Calling, Meetings and Devices April 2024
What's New in Teams Calling, Meetings and Devices April 2024
 
TopCryptoSupers 12thReport OrionX May2024
TopCryptoSupers 12thReport OrionX May2024TopCryptoSupers 12thReport OrionX May2024
TopCryptoSupers 12thReport OrionX May2024
 
The Metaverse: Are We There Yet?
The  Metaverse:    Are   We  There  Yet?The  Metaverse:    Are   We  There  Yet?
The Metaverse: Are We There Yet?
 
Breaking Down the Flutterwave Scandal What You Need to Know.pdf
Breaking Down the Flutterwave Scandal What You Need to Know.pdfBreaking Down the Flutterwave Scandal What You Need to Know.pdf
Breaking Down the Flutterwave Scandal What You Need to Know.pdf
 
Google I/O Extended 2024 Warsaw
Google I/O Extended 2024 WarsawGoogle I/O Extended 2024 Warsaw
Google I/O Extended 2024 Warsaw
 
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
 
Optimizing NoSQL Performance Through Observability
Optimizing NoSQL Performance Through ObservabilityOptimizing NoSQL Performance Through Observability
Optimizing NoSQL Performance Through Observability
 
How we scaled to 80K users by doing nothing!.pdf
How we scaled to 80K users by doing nothing!.pdfHow we scaled to 80K users by doing nothing!.pdf
How we scaled to 80K users by doing nothing!.pdf
 

How JSR 385 could have Saved the Mars Climate Orbiter - Zurich IoT Day 2021

Hinweis der Redaktion

  1. Software engineers
  2. Launched on the 19th of December 1998 at 18:45 UTC. It was launched from Cape Canaveral aboard a delta to launch the eco. the complete burn sequence lasted 42’ and brought the spacecraft into a so called human transform orbit from earth to Mars. The orbit is 669million kilometers long and takes 9.5 months to complete > over a pregnancy Primary science objectives of the mission: determine the distribution of water in Mars monitor the daily atmospheric conditions record changes of the Martian surface (due to wind) determine temperature profiles in the atmosphere look for evidence of past climate change So that was a whole set of things the MCO was supposed to do
  3. into a trajectory above 226km above the surface of Mars It probably got disintegrated in the atmosphere and disappeared. Minimum altitude to survive was 80km
  4. A piece of software provided by Lockheed Martin produced results for the total impulse by the thruster firing in pound force seconds, whereas the trajectory calculation software provided by NASA expected it to be in Newton seconds. The software specification said it should have been in Newton seconds so Luckheed Martin clearly made a mistake
  5. if Lockheed Martin had done a good job, it would have never happened Use JSR-385 instead of primitives Fail fast <== don’t rely on the checksum balancer to discover problems
  6. Mars 2020 Rover contains components from multiple different countries (most of them use the Metric System)
  7. using a primitive to represent a quantity is fundamentally conflicting with OOP and DDD, cuz you’re using a type representing just a number to represent a quantity which has a unit —- built in into the property and it contains both the value and the unit —- No way to misinterpret the SPEED of light at the bottom as that number in km/h
  8. wanna do it properly? define ur own library how difficult can it be? it’s just a value and a unit lot of work —> many units meter, time units, electrical resistance , TEMPERATURES?, divide & multiply Are you a UoM domain expert? so even if you use the SI system every day do you really understand how it works? TBH I didn’t even answer that question to myself. I would be surprised if you know all the peculiarities around SI. There is a number of strange things, even though it is designed as the rational system as compared to some other systems.
  9. This JSR is a major evolution of the Unit API 1.0 (JSR 363) specification. Focussed on the SI System redefinition, modularity and support for Java SE 8/9 and above. JSR 363 This JSR specifies Java packages for modelling and working with measurement values, quantities and their corresponding units.
  10. Dimensions: length Unit: metre Quantity: 5 metres prefixes: kilo, milli, etc. converters: km/h —> m/s or mph formatting: print out the quantity and parse the quantity of the unit systems of units: metric, imperial and handle them in a good way
  11. It doesn’t do some kinds of optimisations that one could think it would be nice to have
  12. Yesterday I travelled 1.6Mm??? 1hour = 3.6ks, but “come back in 1ks”???
  13. Yesterday I travelled 1.6Mm??? 1hour = 3.6ks, but “come back in 1ks”???
  14. Yesterday I travelled 1.6Mm??? 1hour = 3.6ks, but “come back in 1ks”???
  15. Metre, kilogram, second, ampere… Foot, ounce, pound, gallon, Fahrenheit, horsepower Foot, ounce, pound, gallon, Fahrenheit, gallon, … Pes, uncia, libra, … Fot, favn, mål, tønne, snes, …
  16. Should you have functions to normalize expressions into what could be closer to the base unit That’s something you could consider, and also for quantities for example that 1 mg per mm-2 is automatically normalized to 1kg m-2 Special paint for small devices It’s not just about comparing the values and the units you have to convert to one unit and do the comparison in one reference unit
  17. We use the 1st unit if we can If it leads to an overflow, we can fall back to the second unit Otherwise, if it leads to an overflow in both units, we just throw an overflow error
  18. All 3 answers are correct depending on the situation. absolute or relative quantity? We hadn’t modelled this. So, again, are you a domain expert in ur system? Do you really know the SI system so that you can write a library to handle this stuff? Why are we using degrees celsius. Undoubtedly, it’s easy (0-100 degrees), but degrees celsius is not such a good unit to measure temperature. JavaZone example with Time (i.e. day light, saving time, etc., formatting problem with US month – dd - yyyy, countries using F and celsius)
  19. kg/m^2 a thing that matters for the BMI index is to express the units as kilograms and meters and not cm for example. We’ll see as we go through th exercise that we can handle that in a good way
  20. So you see? this is not difficult to do, so instead of defining an Integer to hold 75 as the mass, that’s not much of simplification compared to this