Vil du teste noe nytt, men mangler noe å kode?

Kirill Miazine har en idé til deg: Kode uptime.is på nytt, gjennom #UptimeChallenge.

Som dette bildet overhodet ikke viser, er Kirill Miazine egentlig advokat. Men han koder også, og inviterer nå andre til å kode om hans gamle hobbyprosjekt uptime.is. 📸: Privat
Som dette bildet overhodet ikke viser, er Kirill Miazine egentlig advokat. Men han koder også, og inviterer nå andre til å kode om hans gamle hobbyprosjekt uptime.is. 📸: Privat Vis mer

Her er en situasjon vi er villige til å vedde flere titalls kroner på at du har vært i:

  1. Du har funnet en ny teknologi du vil teste - et språk, et rammeverk, et bibliotek, et eller annet.
  2. Du veit at den beste måten å bli kjent med teknologien på, er å faktisk kode noe. Kanskje et lite hobbyprosjekt.
  3. Problemet er bare at du ikke har noen idé om hva du skal kode.

Programmerende IT-advokat i Føyen Torkildsen, Kirill Miazine, har en løsning: Du kan lage din egen versjon av oppetidskalkulatoren hans, uptime.is!

Velkommen til #UptimeChallenge.

image: Vil du teste noe nytt, men mangler noe å kode?

Egna til testing

- Jeg tenkte at mange helt sikkert sliter med å finne på noe de kan lage, så jeg satte med ned, skrev en kort spesifikasjon av oppetidskalkulatoren og la ut en melding på uptime.is, forteller Miazine til kode24.

uptime.is er Miazine sin oppetidskalkulator. Du kan for eksempel plotte inn en såkalt service level agreement (SLA) på 99,9 prosent, og enkelt se hvor mye nedetid dette faktisk kan innebære (over 10 minutter i uka, for de som lurte).

Poenget er: Webapplikasjonen løser en spesifikk oppgave som kan løses på uendelig mange måter med uendelig mange teknologier. Og ved å spesifisere hva oppetidskalkulatoren skal klare, uten å spesifisere hvordan, vil Miazine gi norske kodere en konkret oppgave å teste ut ny teknologi på.

- Jeg lærte meg nylig språket Go. For å bli bedre kjent med det, og med språkets standardbibliotek, lagde jeg et API for uptime.is, sier Miazine, og kommer med enda et eksempel:

- For ti år var jeg på JavaZone sammen med Oslo Perl Mongers - jeg digger Perl. Da kom jeg i prat med en kar som endte opp med å implementere kalkulatoren i Mojolicious, for å vise hvordan Mojolicious virker.

«Det er bare fantasien som setter grenser, men resultatet bør oppfylle spesifikasjonen til uptime.is.»

Definer utfordringen sjælv

#UptimeChallenge er ikke en konkurranse, og det skal ikke kåres noen vinner. Det er altså mer et tilbud enn en tradisjonell utfordring, strengt tatt.

- Utfordringen blir vel at den som tar utfordringen definerer den litt selv, smiler Miazine.

- Det er bare fantasien som setter grenser, men resultatet bør oppfylle spesifikasjonen til uptime.is, så det vil i praksis bli en vevapplikasjon. Ellers er det fritt fram for å prøve. En nybegynner kan kanskje prøve seg med PHP, men det er ikke noe i veien for å lage noe som vil minne om denne videoen:

It's because of the way our backend works.Vis mer Vis mer

- Personlig kunne jeg tenkt meg å prøve de forskjellige serverless-teknologiene etter hvert.

Slik blir du med

Selv om du ikke akkurat er med i trekningen om en million dollars, vil Miazine gjerne se hva du koder, og la deg kunne se hva andre koder.

Dette kan du sørge for ved å legge koden din et sted hvor den er søkbar med nummertegn #UptimeChallenge.

- Så ser vi hva som skjer, sier Miazine, som ikke har noen videre planer for utfordringen.

- Og hvorfor burde man bli med?

- For å lære og ha det gøy!

Miazine er ikke på Facebook selv, men vi i kode24 vil selvfølgelig også tipse om å legge ut koden du skriver på kode24-klubben, for berømmelse og ære.

Koda i LISP

Kirill Miazine bjudar på når det kommer til hvordan den originale uptime.is er koda. Her ser du LISP-koden som står for konverteringen:

(define (dur2secs dur)
  (if (regex {^\d+$} dur)
    (integer dur)
    (apply add (map (fn (x)
                        (mul
                          (integer (0 -1 x))
                          (case (x -1)
                            ("d" 86400)
                            ("h" 3600)
                            ("t" 3600)
                            ("m" 60)
                            ("s" 1)
                            (true 1))))
                    (find-all {\d+[dhtms]} dur)))))

- Jeg finner en slags indre glede når funksjoner kan bli så rene og fine, gliser Miazine.

- Er det mange som bruker uptime.is, egentlig?

- Jeg har ikke logger eller statistikk, forteller den personvernsbevisste IT-advokaten.

- Men antar at det er snakk om et godt sekssifret antall besøkende i måneden.