Bruk verktøy effektivt!

På JavaZone 2022 hadde jeg en 20 minutters lyntale, en demo, av en god del verktøy som jeg bruker i hverdagen, “Verktøyene jeg alltid bruker, om jeg så koder Java, JavaScript eller Elixir”. Denne bloggposten går igjennom alle verktøyene og teknikkene sånn at du slipper å notere underveis i presentasjonen.

Window manager – Moom

Å bruke en god window manager er et must, da den lar deg kjapt plassere vinduer der du vil, uten å måtte bruke mus eller trackpad. Dette er spesielt viktig når man bytter mellom skjermkonfigurasjoner, sett kjapt opp appene dine sånn at de gir mest mulig info. Vinduene snapper magisk på plass.

Jeg har i mange år brukt Moom, et kommersielt produkt.

moom

Text expander – Alfred for Mac Snippets

Hvorfor bruke tid på å skrive det samme om og om igjen, når datamaskinen kan gjøre det for deg? En text expander kan hjelpe deg med dette, la meg vise med noen eksempler:

<<AK
Alf Kristian

Hvorfor skrive navnet sitt om og om igjen liksom…

<<AS
Alf Kristian Støyle

<<-a
- Alf Kristian

<<mvh
Mvh
Alf Kristian

<<ks
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Alf Kristian Støyle
KODEMAKER
+47 997 92 226
kodemaker.no/alf-kristian/

<<k@
alf.kristian@kodemaker.no

Jeg har mange varianter av navn og hilsener. Jeg liker f.eks. ikke faste e-post footere. Bedre å gjøre det litt mer personlig.

Så noen litt mer avanserte:

<<uuid
C543F07B-3CBC-4474-B507-5DFDFB7837D0

||uuid
cfe4ee27-7085-449f-9beb-b03a09a95849

Sistnevnte kopierer også uuid til copy bufferet mitt, som jo kan være hendig.

<<awk
awk '{ print $<cursor> }'

Det er egentlig bare fantasien som setter grense her. Jeg bruker for tiden << som trigger, men det har endret seg mange ganger, ut ifra hva som funker best.

Jeg har pr i dag ca 60 expansions, ikke alle brukes så mye. Om jeg skulle glemme noen, vet jeg hvor jeg finner dem. Det viktige her er jo å lage seg et system som er lett å huske for deg.

Jeg bruker Snippets i Alfred for Mac, som krever Powerpack, et kommersielt produkt.

Følger med litt morsom ascii art også.

Alfred snippets

Clipboard history – Alfred for Mac Clipboard History

Clipboard er «en ting», et sted, som OS’et husker for deg når du kopierer. Dette blir en skjør greie, som du må ta vare på. Om du mot formodning kopierer noe nytt, så er de første borte. Om du skulle trenge det første du kopierte så må du huske hvor du kopierte det fra. Dette er mentalt krevende, og også helt unødvendig.

Et godt clipboard history verktøy gjør at du kan lagre utallige kopieringer, og søke dem fram siden. Så i stedet for å være en skjør ting, så blir clipboard et nyttig verktøy.

Du trenger ikke lenger huske hvor noe ble kopiert fra, fordi du vet at det ligger et sted. Når en blir vant til å bruke det, så begynner man å kopiere ting en kanskje tror en trenger siden. Det blir en viktig del av din arbeidsflyt.

Alfred snippets

Jeg bruker her Clipboard History i Alfred for Mac, som krever Powerpack. Som nevnt, dette er et kommersielt produkt.

Lettvekts text editor – Sublime Text

Ofte ønsker jeg å redigere tekst uten at verktøyet kommer i veien. Det krever en ren teksteditor med masse features, og som ikke prøver å være så smart. Til dette bruker jeg Sublime Text.

Sublime starter lynkjapt, og lar meg redigere tekst uten å være i veien, og har masse features for å hjelpe meg med nettopp det, redigere tekst.

Se presentasjonen for noe av det jeg bruker sublime til!

Sublime Text er et kommersielt verktøy, og ja, her finnes det mange alternativer. Det viktige her er å bli god i en editor, som er rask og tilgjengelig over alt.

Sublime Text

git commit template

Dette er et lite verktøy i git, som nudger deg til å skrive bedre commit meldinger. Dette er bare en tekstfil, som jeg har gitt innholdet:

# If this commit is applied, it will... -------------------72 chars----|


# What is this ? Why was this change made? ------------------------80 chars----|

Hver gang jeg skal skrive en ny commit melding kommer dette opp. Og selv om jeg ikke alltid følger denne malen, så gir det meg dårlig samvittighet når jeg jukser. Så dette hjelper meg til å skrive bedre commits.

Personlig er jeg ikke så glad i kommentarer i kode. Disse har en tendens til å bli utdatert, en endrer kode, men glemmer å endre kommentar. Derav “every comment is a lie”. En commit melding derimot er en kommentar som er skrevet på riktig sted til riktig tid, og dermed lyver det heller ikke. Så skrive gode commit meldinger!

Git commit template konfigureres i din ~/.gitconfig file med:

[commit]
	template = ~/.gitmsg.txt

git og git sine commit templates er naturligvis open source.

sdk manager – asdf

Synes nesten denne fortjener en egen blogg post, så derfor skrev jeg likegodt det for en stund tilbake. Har du kontroll på ditt utviklingsmiljø?.

Men kort fortalt, asdf et verktøy som holder styr på alle versjoner av alle sdk’er, compilere, vm’er, eller andre tools, der du er avhengig av en gitt versjon. Og det fungerer nærmest magisk og sømløst. Om du og teamet ditt blir enige om å bruke dette, vil dere alltid være på samme versjon, av f.eks. java, maven, tomcat, elixir, erlang, node, pnpm, clojure, terraform, swift osv. osv.

asdf er open source og gratis.

terminal – iTerm2

macOS sin innebygde terminal er litt for basic for min smak. Jeg trenger en terminal som støtter min arbeidsflyt, og har derfor brukt iTerm2 i mange år.

Den lar meg f.eks.

  • Splitte tabs, horisontalt eller vertikalt
  • Ekspandere en splittet tab til full skjerm
  • Holder styr på tidene en kommando ble kjørt
  • Lar meg se bakover i historien, som om jeg har kjørt «kill» på et buffer
  • Kopierer automatisk tekst som er markert
  • Gjenkjenner URL’er, og dermed gjør det lett å åpne i nettleser

iTerm2 er et stort produkt, med masse features. Du finner nesten garantert en løsning på det du måtte ønske deg. Men da det er såpass stort, kan det ta litt tid å sette opp på en måte du er fornøyd med. Ikke la det stoppe deg, prøv iTerm2!

iTerm2 er open source.

iTerm2

tcp/http tunnel – ngrok

ngrok er et verktøy som gir en offentlig URL til servere som kjører på min maskin, og det er ekstremt nyttig. Det er hovedsaklig fire ting jeg bruker dette til:

  • La andre teste mine greier, uten å være avhengig av test miljøer. F.eks. få feedback fra designerne før jeg pusher ut mine frontend endringer.
  • Teste på mobile enheter. Ved å ha en public url kan jeg, og andre kjapt teste hvordan noe funker på mobil, stort enklere blir det ikke.
  • Teste webhooks. Om du benytter eksterne tjenester som vil «kalle din server», så er det mye bedre at de kaller de på din maskin mens du utvikler. Med ngrok blir det trivielt.
  • Teste mine lokale tjenester med validatorier på Internet, f.eks. securityheaders.io.

ngrok er et kommersielt produkt.

Separate kontainere i nettleser - Multi-Account Containers i Firefox

Vi har vel alle en hovednettleser, som vi benytter til det meste, for meg er dette Firefox. En av killer featurene til denne nettleseren er en plugin som lages av Mozilla, Multi-Account containers. Den lar meg bruke samme nettleser for mange kontoer, men der disse er helt separert. F.eks. har jeg 3 google kontoer, en personlig, en jobb og en hos kunde, og det er et styr å bytte mellom disse vanligvis. Men med Multi-Account Containers, har de separate tabs, som aldri «ser hverandre». Det er som å ha mange instanser av samme nettleser i en.

Dette gjør det enkelt for meg å holde forskjellige kontoer separert i samme nettleser. Og om jeg ikke ønsker å forhold meg f.eks. til jobb, så kan jeg bare lukke alle jobb tabbene. De kan lett åpnes igjen.

Både Firefox Multi-Account Containers og Firefox er open source.

Multi-account containers

github navigasjon

github er laget av utviklere for utviklere, og er slettes ikke eneste site av denne typen. Men dersom du bruker et slik nettsted mye, kan det være nyttig å bruke litt tid til å bli kjent med verktøyene som tilbys. github har laget masse keyboard shortcuts for effektiv navigasjon. De jeg bruker mye er:

  • t – åpne fil
  • l – gå til linje i fil
  • b – åpne blame for alle linjer
  • s – gå til søkelinja

Her finnes det mange flere.

Github i seg selv er closed source og kommersielt, men dette er et web verktøy, så det helt gratis å lære litt shortcuts.

Datamaskinen er ditt kraftigste verktøy

Verktøyene som nevnes her er de jeg bruker, og dermed kan gå god for. Jeg bruker macOS, så ikke alle er tilgjengelige på Windows og Linux. Men det finnes stort alternativer.

Jeg håper du tok deg tid til å se presentasjonen, slik at du ser verktøyene “in action”. Hovedpoenget med presentasjonen er ikke verktøyene i seg selv, men ha et bevisst forhold til hvordan en bruker datamaskinen. Jo mer effektivt den brukes, jo mer tid får en til å koding.