Nå blir datoer enklere i JavaScript: «Gleder meg!»
Det nye Temporal-API-et, Figma-CLI og farlige nettleser-API-er, i ukas ForrigeUke.
Dette var uken for pekere 🫵, forelskelser😻, voldelige illustrasjoner🥊 - og 193 ting som skjedde i frontend-verden!
Finnes det "farlige" nettleser-APIer?🫣
Polypane skrev en tankevekkende artikkel om nettleser-APIer.
JavaScript har nemlig mange nyttige APIer som er tett integrert med funksjonaliteten i nettleseren. Det gjør utviklerhverdagen enklere, fordi vi kan lene oss på ferdigbygde mekanismer i stedet for å implementere alt selv. Et godt eksempel er Geolocation-APIet, som får nettleseren til å be brukeren om tillatelse til å dele posisjonen sin, og gjør denne informasjonen tilgjengelig dersom brukeren samtykker.
Men hvordan vet egentlig nettleseren hvor du befinner deg?
Selve API-grensesnittet er standardisert og godt dokumentert av MDN, og W3C vedlikeholder spesifikasjonen for geolokasjon. Likevel er den faktiske implementasjonen helt opp til nettleserleverandøren.
I praksis betyr det at nettleseren typisk sender informasjon ut av brukerens maskin for å beregne posisjonen, og hvor disse dataene havner, avhenger av hvilken nettleser du bruker. Google Chrome og Firefox sender geolokasjonsdata til Google, mens Safari sender dem til Apple. Mindre eller uavhengige nettlesere stilles i tillegg overfor et handikap, siden de ofte ikke har ressurser til å drifte egne backend-tjenester for dette formålet.
Brukerdata kan altså ende opp hos flere aktører, selv når vi benytter veletablerte nettleser-APIer. Som utviklere bør vi derfor alltid prøve å forstå hva som faktisk skjer bak kulissene, og ta personvern på alvor, til og med når vi bruker kjente APIer.
Temporal-API i Google Chrome 📅
Når vi først er inne på API-er, er det verdt å nevne at Google Chrome kom ut med versjon 144 i forrige uke, som blant annet la til støtte for det nye Temporal-API-et.
JavaScript har nemlig vært låst til det gamle Date-API-et helt siden språkets spede begynnelse, og alderen har satt sine tydelige spor i form av uheldige designvalg og overraskende oppførsel.
Phil Nash illustrerer dette i en bloggpost der han irriterte seg over JavaScripts Date-API. Han forsøkte å lage et datoobjekt for 1. februar 2024 ved å ta utgangspunkt i 1. januar 2024 og deretter endre måneden til februar:
const date = new Date("2024-01-01T00:00:00.000Z");
date.toISOString();
// => "2024-01-01T00:00:00.000Z"
date.setMonth(1);
date.toISOString();
// => "2023-03-04-T00:00:00.000Z" ???
Resultatet ble imidlertid 4. mars 2023.
- Årsaken var at datoen først ble tolket i hans lokale tidssone på vestkysten av USA.
- Datoen ble derfor konvertert fra UTC+0 til UTC-8, som tilsvarte 31. desember 2023 klokken 16:00.
- Da han deretter endret måneden til februar, ble det i praksis forsøkt å lage datoen 31. februar 2023, en dato som ikke finnes.
- Date-APIet håndterer slike tilfeller ved å rulle videre til neste måned, som i dette tilfellet ble 3. mars 2023. Til slutt ble tidspunktet konvertert tilbake til UTC+0, noe som resulterte i midnatt 4. mars 2023.
Det er godt å se at jeg ikke er alene om å bli forvirret av tidssoner, og akkurat som Phil Nash, gleder jeg meg til bredere støtte for Temporals i JavaScript!
Temporal-APIet er nå på stadium 3 i TC39-prosessen. Det betyr at nettleserleverandører har begynt å implementere det for testing, slik at man kan avdekke kompatibilitetsutfordringer før det eventuelt blir en offisiell del av ECMAScript-standarden.
Hvis du vil lære mer om Temporal, anbefaler jeg at du leser bloggposten til Sarah Gooding som gir god oversikt over situasjonen.
Figma-CLI som KI-agenter kan bruke uten å spise opp hele kontekst-vinduet ditt 🖼️
Forrige uke dukket det opp et nytt og interessant prosjekt på GitHub: et kommandolinje-verktøy som lar oss styre Figma direkte fra terminalen!
'Arch linux'-entusiaster gleder seg sikkert til å endelig kunne dykke ned i design-verden gjennom terminalen, men for oss dødelige er meningen hovedsakelig at vi skal kunne delegere design-oppgaver til KI-agenter. CLI-et inkluderer over 100 kommandoer, og lar oss lage rammer, tekst, komponenter, endre stiler, og mye mer.
Prosjektet eksponerer et tradisjonelt MCP-server-endepunkt, men skaperen Danila Poyarkov argumenterer at man aller helst bør få KIen til å bruke CLIet direkte. MCP-servere har ofte blitt kritisert for å bruke for mange tokens, noe som øker kostnader, og reduserer i praksis kontekstvinduet. Med et kompakt CLI-verktøy slipper agenter å måtte fylle konteksten med lange JSON-definisjoner med MCP-støy. I stedet kan de bruke kortere, mer direkte kommandoer som burde være lettere og raskere for språkmodellene å generere.
Samtidig har Joe Njenga har skrevet en bloggpost som forklarer hvorfor MCP-servere bruker så mange tokens. Her trekker han frem en løsning implementert av Anthropic, skaperne av Claude Code. Ganske nylig har de nemlig introdusert et MCP-søkeverktøy som lar modeller oppdage og laste inn verktøy dynamisk i stedet for å lese inn alle verktøy-definisjonene i starten av hver samtale. Ifølge Anthropic kunne dette redusere token-forbruket med opptil 46,9%!
Det er interessant å se hvordan utfordringen med stort token-forbruk angripes fra ulike hold. KI-agenter og verktøy som Claude Code er fortsatt i en tidlig og eksperimentell fase, og det er gøy å se at både MCP-utviklere og modell-leverandører aktivt utforsker løsninger på hver sin side.
Hvilke løsninger som faktisk etablerer seg, gjenstår å se når økosystemet modnes og blir mer samstemt. Kanskje ender det opp med at kontekst-vinduer blir så store, og token-priser så billige, at hele token-problemstillingen blir irrelevant.
Men hvis token-effektivisering kan få ned RAM-prisene litt raskere, så er jeg helhjertet for.
Det var alt for denne gang, ha en fin uke 👋