Teknisk egenkapital og gjeld

23.09.2020

Paul Graham sin klassiker Beating The Averages forteller at Lisp er et hemmelig våpen, hvor konkurrentene dine blir stående igjen i støvet som legger seg etter din enorme effektivitet og produktivitet.

Kanskje tidlig på 2000-tallet. Men i dag må språkene se seg slått av plattformene.

Koden vår renner nå over med tredjeparts avhengigheter, fra et gedigent økosystem av tidsbesparende hjelpemidler.

Men er disse avhengighetene egenkapital, eller er de gjeld?

Les artikkelen

Rebusløp

16.09.2020

Kode skal være lett å lese. Men hva betyr dette i praksis? Hva er lett å lese og hva er det koden skal formidle til leseren? Hvorfor leser vi kode i det hele tatt?

Les artikkelen

Sy sammen s-expressions med thread-first og -last

10.06.2020

Når man er ny til Clojure er macro-ene -> og ->> temmelig forvirrende. Ikke bare er de vanskelige å søke etter på nett, men koden ser også helt mystisk ut. Heldigvis er det ikke lenge til du blir nyforelska og bruker dem overalt. Kanskje etter denne bloggposten?

Les artikkelen

Nostalgibølge

20.05.2020

Jeg husker det som om det var i går. Dagen da Commodore ble byttet ut med en Amiga 500. Det var første gang jeg så en sinusbølge flyte over skjermen. Hvordan lager man egentlig det?

Les artikkelen

Clojure zippers - snasen traversering og manipulering av trær

13.05.2020

Har du hørt om zippers før? Ikke glidlåser altså, men en teknikk for å representere aggregerte datastrukturer slik at de kan enkelt traverseres og manipuleres nærmest vilkårlig. La oss utforske zippers litt nærmere og se hvordan du kan bruke de i Clojure.

Les artikkelen

MQTT - Hva er det?

06.05.2020

MQTT er et lettvekts publish-subscribe meldingssystem. Men hva i alle dager står forkortelsen for? Hva kan man bruke det til? Og hvordan fungerer det, egentlig?

Les artikkelen

Partisjonering av data

29.04.2020

map, filter og reduce er nyttige verktøy som mange har i verktøykassa si. Oppi der burde også partition være, og jeg skal vise deg hvorfor.

Les artikkelen

Når databasemodellen blir domenemodellen

15.04.2020

Domene-kode kan med rette kalles kjernen i applikasjonene vi utvikler, men den gjør ikke mye nytte for seg uten støttende infrastruktur, som lagring av data og kommunikasjon med andre systemer.

Men hva skjer når infrastrukturen er med på å forme domene-koden?

Les artikkelen

Bruk av SameSite og problemet det løser

08.04.2020

Cookies lar oss ta vare på informasjon mellom ulike forespørsler over ellers tilstandsløs HTTP, og brukes ofte til å implementere sikkerheten i webløsninger. Det er imidlertid noen ting som er viktig å være klar over ved bruk av cookies. I denne bloggposten skal vi se mer på bruk av SameSite-attributtet.

Les artikkelen

Hack slack sin URL-redirect

01.04.2020

Har du også irritert deg over Slack sin trege redirect-funksjon? Her her en oppskrift for å redusere irritasjonen med din egen URL-redirecter.

Les artikkelen

Brukergrensesnitt i kode på Apples plattformer

25.03.2020

Hvorfor jeg foretrekker å utvikle iOS- og macOS-brukergrensesnitt i kode fremfor å bruke Interface Builder

Les artikkelen

Profilering av kode i Go

18.03.2020

Noen ganger er ytelse kritisk for at ting skal fungere ordentlig. Et bibliotek for parsing av binære værdata er en av de gangene. Med Go har vi mulighet til å kunne si akkurat hvilken kodelinje som tar tid eller som allokerer minne.

Les artikkelen

Elixir: Prosesser og meldinger

11.03.2020

Elixir er et relativt nytt språk som kjører på Erlang VM’en BEAM. Dette er en annerledes plattform, som har vist seg å være svært robust, skalerbar og tillater høy oppetid. En av årsakene til dette er minnehåndteringen, som er svært annerledes fra mange andre plattformer.

Les artikkelen

Kontinuerlig utrulling - også på klienten

04.03.2020

Du har en Single Page Application (SPA). Brukerne har typisk appen åpen i nettleseren lenge - mange dager, eller til og med uker. Samtidig sitter du og dytter ut nye versjoner opptil flere ganger om dagen. Hvordan i alle dager skal du sørge for at folk ikke blir sittende på en gammel frontend som kanskje har bugs du allerede har fiksa, eller bruker en utdatert API-klient? Vel, her får du ett forslag.

Les artikkelen

Hjælp, vi må ha en app!

26.02.2020

Det finnes veldig mange teknologier der ute, og det kan fort bli vanskelig å navigere i jungelen når man skal velge hva man skal gå for. Hvilken teknologi passer min app best?

Les artikkelen

Python og ytelse

19.02.2020

De siste årene har jeg brukt Python sammen med OpenCV til å implementere en del bildeanalyse. Prosessering av bilder kan fort bli litt krevende for datamaskinen - og når man vil behandle mange bilder på kort tid er det viktig å skrive effektiv kode. Her beskriver jeg en teknikk jeg har brukt for å se på Python-kode og effektivitet.

Les artikkelen

Kontinuerlig bygging med make

12.02.2020

Kontinuerlig integrasjon, javel. Hva med kontinuerlig bygging når du allerede bruker make(fordi du leste min forrige bloggpost)?

Les artikkelen

Klippe med CSS

05.02.2020

CSS slutter aldri å overraske. Noen ganger ramler man over noe som man i utgangspunktet ikke ser nytteverdien av, men som kombinert med litt kreativitet produserer et interessant resultat.

Les artikkelen

En enkel frontendarkitektur som funker

29.01.2020

Det er mange store stilaser å velge blant for din frontendarkitektur, men trenger du all leamikken? Her er en enkel arkitektur som jeg har hatt mye glede av.

Les artikkelen

Alle utviklere bør kjenne til persistente datastrukturer

21.01.2020

Den første tingen jeg leter etter når jeg skal lære meg et nytt programmeringsspråk, er immutable og persistente datastrukturer. Dette er en yrkesskade jeg har fått fra Clojure. Jeg har en tendens til å strukturere hele systemet mitt rundt disse datastrukturene. De er smarte, kjappe, effektive, immutable og fremragende.

I denne bloggposten skal jeg gi deg den samme skavanken.

Les artikkelen

Bildeanalyse #3: Objekter

15.01.2020

Her kommer del 3 i bloggserien min om bildeanalyse. Denne gangen er det deteksjon av objekter i et bilde som er temaet. Først bruker vi noen geometri-triks for å finne rett utsnitt av bildet - så plukker vi ut objektene, og finner egenskaper ved disse som lar oss si noe om hva det er vi ser på.

Les artikkelen

Kubernetes deployments uten nedetid

08.01.2020

Når du deployer appen din til det romskipet av en rigg som er Kubernetes så skjer det uten noen form for nedetid, ikkesant? Dårlige nyheter: med mindre du har gått veldig aktivt inn for det har tjenestene dine svært sannsynlig litt nedetid under deployment. Men hvorfor?

Les artikkelen

Devops! Dev? Ops!

17.12.2019

Det skorter for tiden ikke på bedrifter i IT-sfæren som skryter av at de driver med Devops. Men gjør de egentlig det? Hvis løsningen er et «devops-team» eller stillingsutlysninger for «en devopser», er sjansen dessverre liten for at vi henter ut det beste devops har å by på.

Les artikkelen

Et raskere internett med QUIC

11.12.2019

QUIC er en protokoll med opprinnelse fra Google som første gang så dagens lys i 2012. Navnet ble foreslått som et akronym for «Quick UDP Internet Connections», men QUIC er i dag alene ansett som navnet på protokollen. Det er en ung protokoll sammenlignet med mange andre som benyttes på internett i dag. Eksempelvis er TCP, som i sin helhet erstattes av QUIC, opprinnelig fra 1974.

Les artikkelen

Inputvalidering i Kotlin med Arrow

04.12.2019

Arrow er et nyttig bibliotek som er ment som en utvidelse av Kotlins standardbibliotek med fokus på funksjonell programmering. I dette innlegget skal vi se på hvordan vi kan bruke datatypen Validated til å gjøre inputvalidering morsommere, mer effektivt og ikke minst funksjonelt.

Les artikkelen

JavaScript Coercion 101

27.11.2019

Det er lite vi utviklere elsker mer enn å peke på galskap i JavaScript, så som [] + 2 === "2", men dersom jobben din er å skrive kode i dette språket, eller språk som kompilerer til JavaScript uten å skjule denne oppførselen (eksempelvis TypeScript og ClojureScript) vil du spare mye tid i feilsøking og koding ved å forstå hvorfor ting er som de er.

Les artikkelen

Hva i $@ $< * er en Makefile

20.11.2019

Etter å ha slåss mot og med maven, gradle, grunt og diverse moderne byggeverktøy så er det deilig å se at den gamle traveren make ofte er et bedre og enklere alternativ.

Les artikkelen

Jaro-Winkler - svart magi?

13.11.2019

JaroWinkler er en formel som kan benyttes til mye - også adressevask.

Les artikkelen

Jeg velger Windows 10, det beste utviklingsmiljøet (for meg)

06.11.2019

Linux, macOS eller Windows 10? Jeg har landa på den siste.

Les artikkelen

Maskert config med Clojure

30.10.2019

Clojure sine åpne datastrukturer er utrolig deilig å jobbe med, de brukes til alt, også config. Men ikke all config er lik, f.eks. bør ikke secrets logges. I oppstart av enhver app er det fordelaktig at config logges, så hvordan håndtere dette problemet? Her er et triks for å maskere secrets i config.

Les artikkelen

HTTPS-sertifikater og tillitsnivåer

23.10.2019

Du har kanskje sett at når du browser nettbanken din så står hele navnet på banken ved siden av URL-en. Hva er dette for noe?

Les artikkelen

CSS animasjoner i ClojureScript - Del 1: CLJSS

16.10.2019

I 2018 fikk jeg sjansen til å jobbe i et spillprosjekt. Da ble det etterhvert mange og sammensatte animasjoner som bød på flere spennende utfordringer. I dette innlegget skriver jeg litt om hvordan vi løste CSS in JS for ClojureScript og hvordan vi brukte det til animasjoner.

Les artikkelen

Verdt å vite om Set i JavaScript

09.10.2019

Hvordan funker et Set i JavaScript og når passer det å bruke det?

Les artikkelen

Et lite Clojure-triks til å bli glad av

02.10.2019

Det viktigste og beste med Clojure er pure functions og immutability, men i dag skal jeg skrive om noe ganske annet. Jeg skal skrive om en småting som gjør meg glad når jeg koder.

Les artikkelen

Når AWS-regninga blir skyhøy

25.09.2019

Det er fort gjort å komme opp og gå i skyen, men før du får sukk for deg har du en løsning der du nærmest skuffer penger i retning Amazon. Hva gjør du den dagen du oppdager at AWS-regninga er mye høyere enn du hadde forventet?

Les artikkelen

Bildeanalyse #2: Linjer

18.09.2019

Dette er del 2 i min lille bloggserie om bildeanalyse. Her ser vi videre på en vanlig utfordring - hvordan man finner linjer i et bilde. Dette er nyttig på en rekke områder. Vi går gjennom grunnprinsippene for å finne linjer, og så viser jeg frem en del små triks jeg har funnet ut at kan være fine når man driver med OpenCV og linjer i bilder.

Les artikkelen

Introduksjon til bildeanalyse

11.09.2019

Bildeanalyse, kunsten å lese informasjon fra bilder, er en artig og utfordrende del av IT-faget. Man kan gjøre tekstgjenkjenning, bygge automatiserte industriprosesser, lage nymotens dartspill og en hel del andre greier. Her beskriver vi en måte man kan komme i gang på og forklarer noen av de enkleste prinsippene som kan være kjekke å kunne.

Les artikkelen

Terningene er kastet med CSS

04.09.2019

Snart er det JavaZone, og da blir det kosetime med Christian og meg. Vi skal lage et nytt zombiespill - denne gangen med terninger.

Terningspill er langt morsommere hvis man kan se terningene rulle, så jeg brettet opp ermene (ikke armene) og skrev litt CSS i forberedelse til presentasjonen. Her er det jeg lærte om å kaste terninger med CSS.

Les artikkelen

Public keys og private keys

28.08.2019

Som utvikler trenger du å vite hva public keys og private keys er, og hva du kan bruke de til. I denne artikkelen lærer du alt du trenger å vite - uten noe matematikk!

Les artikkelen

Tid - hvor vanskelig kan det være? Del II

21.08.2019

I del én lærte vi hvilke datatyper vi trenger i kode for å håndtere tid, men hvordan er det vi lagrer dem i en database?

Les artikkelen

Tid - hvor vanskelig kan det være?

14.08.2019

Jeg har drevet med programmering i snart 20 år, og i nesten hvert eneste prosjekt jeg har vært med i har vi endt opp med problemer, misforståelser og diskusjoner rundt tid. Er det mulig? Hvor vanskelig kan det være?

Les artikkelen

Enklere backender med færre rammeverk - og Swift?

07.08.2019

Er Swift klar for serverside, og hva finnes av biblioteker og rammeverk?

Les artikkelen

Magit er den beste måten å bruke Git på

31.07.2019

Magit er det proffe og effektive verktøyet for å jobbe med Git.

Les artikkelen

AWS Free Tier

24.07.2019

En liten historie om hvordan EFS nærmest tok livet av Kubernetes-clusteret vårt, og hvordan du kan unngå å havne i samme knipa — selvom du ikke bruker EFS.

Les artikkelen

Et gammelt triks i en ny kontekst

17.07.2019

Det er lett å ta gamle triks med seg inn i en ny hverdag. Den første Clojure-koden jeg skrev ligner ikke spesielt mye på den jeg skriver i dag. I denne bloggposten skriver jeg kort om én av tingene jeg har gradvis lært meg av med.

Les artikkelen

La applikasjonen din overleve et Kafka-krasj

10.07.2019

Du kan sikre deg mot å miste kritiske meldinger når kafka er nede ved å bruke «store-and-forward» i de applikasjonene dine som produserer meldinger til kafka.

Les artikkelen

Fleksibel layout med CSS Grids

03.07.2019

CSS grids har endelig gitt oss en enkel og fleksibel modell for layout på nett. Med bare noen få properties kan du stort sett pakke float helt bort, få full kontroll over kilde-rekkefølge og et kraftig verktøy for responsiv design på kjøpet.

Les artikkelen

Universell Utforming - en sjekkliste

26.06.2019

I 2018 fikk SAS tvangsbøter fra Difi på 150 000 per dag for brudd på likestillings- og diskrimineringsloven. Er dette noe som kan ramme andre? (Spoiler - JA!)

Les artikkelen

Data hører hjemme i en database, også på framsiden

19.06.2019

Putt tilstand i ClojureScript-appen din i en DataScript-database for å få kontroll på tilstanden på framsiden.

Les artikkelen

Hva jeg skulle ønske noen hadde fortalt meg om React Native

11.06.2019

Jeg har vært med Kodemaker sitt team på 4 hos Bring og laget en native mobilapp som sjåførene bruker mens de er ute og plukker opp og leverer pakker. Vi bruker React Native. Her er en liten samling med ting jeg skulle ønske jeg visste før vi startet prosjektet.

Les artikkelen