Programmerere, meg selv inkludert, liker gjerne å snakke om hvor irriterende det er å bli avbrutt i arbeidet, spesielt hvis noen spør hva du driver med. Ofte er det slik at man prøver å løse en oppgave, hvorpå man oppdager at man først må løse et annet problem, og så et tredje og fjerde, ogsåvidere. Og slik kan det ha seg at man sitter på stackoverflow og leser om noe som kan virke fullstendig urelatert til det man opprinnelig drev med, når noen kommer inn og spør hvordan det går. For å forklare må man da utføre det som kalles en backtrace, altså gå gjennom alle skrittene som tok deg dit. Litt som når man bare skulle sjekke noe på wikipedia, og så sitter man plutselig og leser om noe helt annet.
Akkurat som at man har en bakover-knapp i nettleseren kunne det av og til vært kjekt å ha et hjelpemiddel for å huske hvor man egentlig kom fra når man jobber på denne måten. Først begynte jeg å tenke på interaktive hjemmesider og apper og greier, slik at man kunne ha en kul visualisering av arbeidsprosessen sin, også videre, men så innså jeg at nei, disse nymotens greiene er bare tull. Kommandolinjen er det opprinnelige brukergrensesnittet, og det er fortsatt det beste. Ferdig diskutert. Dermed implementerte jeg det jeg har valgt å kalle (anti)produktivitetsverktøyet stacktracker på fem linjer shellscript.
En stack er en datastruktur som minner litt om en bunke med for eksempel bøker. Den støtter to enkle operasjoner, push, som legger en bok øverst i bunken, og pop, som tar av en bok fra øverst i bunken. En stack opererer etter prinsippet Last In First Out (LIFO), siden du alltid tar av den øverste boken først. Stacktracker funker ved å gi deg tre kommandoer,
push,
pop og
stack, der
push legger til en oppgave på stacken,
pop fjerner den øverste oppgaven, og
stack viser deg hele stacken, inkludert det du egentlig begynte på før du måtte gjøre noe annet. La oss se på noen eksempler
> push "Skrive calcuttaguttaartikkel"
> push "Lage kaffe"
> stack
Lage kaffe
Skrive calcuttaguttaartikkel
> pop
Pop'd Lage kaffe
> stack
Skrive calcuttaguttaartikkel
For interesserte lesere har jeg lagt uten koden, i all sin herlighet, på
github. Jeg diskuterte konseptet med et par kollegaer, og jeg tror jeg har bestemt meg for å utvide funksjonaliteten til også å kunne legge ting nederst i stacken, i tilfelle du kommer på noe du heller vil gjøre senere, så følg med for nye oppdateringer. For å installere er det bare å klone repoet fra github, og lage en symlink i en mappe som ligger på pathen din, så får du automagisk med nye oppdateringer.
Comments