đŸŽČ — mikrobloggeriet olorm - olorm-60 · olorm-61

Kode med SI-enheter: en smakebit

Jeg (Teodor) skal presentere pÄ online-konferanse denne uka: fredag 17. oktober, 2025. Det er pengemessig gratis, og koster deg kun halvtimen jeg skal bruke til Ä snakke.

Dagens OLORM er en utfordring: Kan budskapet i presentasjonen min tilpasses til Javascript, og kjernen formidles for Javascript-kyndig leser pÄ fem minutter? Jeg prÞver.

Du har kanskje skrevet kode som denne:

const iterationTimeMs = 300;
const iterations = 53;
const totalTimeSeconds = iterationTimeMs * iterations / 1000;

Det er vel ikke sÄ ille?

Jo! Jeg ser en ting som “distraherer” koden. En kode-leopard, om du vil.

Fordi *-operatoren ikke kan forskjellen pÄ millisekunder og sekunder, mÄ vi regne ut enheten i hodet! Den mentalgymnastikken Þker kognitiv last for oss utviklere. Mentalgynastikken Þker ogsÄ sannsynligheten for feil, vi mÄ huske pÄ Ä bruke de magiske tallene (her 1000) rett for Ä fÄ rett enhet.

Den samme kodesnutten kunne sett sÄnn ut:

import * as munit from "munit";
import * as si from "munit/si";

const iterationTime = munit.mult(300, si.milli, si.second);
const iterations = 53;
const totalTime = munit.mult(iterationTime, iterations);

Bedre?

Som alltid, Ă„ trekke inn biblioteker Ăžker “tyngden” pĂ„ programmet ditt. Og Ă©n enklelt konvertering fra millisekunder til sekunder er kanskje greit? Jeg skrev forresten en bug i koden Ăžverst i fĂžrste versjon: iterationTimeMs * iterations * 1000;. Resultatet ble Ă©n million ganger for stort!

Strukturert modellering av tall med enhet (SI eller andre ting, feks valuta) gir mer verdi jo vanskeligere problemet ditt her. PrÞv deg pÄ kilonewton per meter, sammen med lengder i millimeter, og momenter i kilonewtonmeter! FÞrst med mentalgymnastikk, vanlige javascript-tall og enhetskonvertering i hodet. SÄ med operasjoner som forstÄr tall med SI-enhet.

Det var hele smakebiten. Kom pÄ Macroexpand 2025 for Ä se resten!

Les mer eller meld deg pÄ konferansen (penge-gratis, online) pÄ scicloj.github.io/macroexpand-2025/

Eventuelt hjelp meg Ä nÄ pÄ verdensveven ved Ä lage stÄhei pÄ Linkedin.

Ha en fortsatt god mandag!
Hilsen Teodor