tillbaka till startsidan

78. Du för världen framåt

Lyssna på Spotify lyssna! Lyssna på iTunes

Vi börjar med att återkoppla en smula från förra avsnittets ämne med några av våra lyssnares teamaktiviteter och när det är avklarat berättar Anton om saker han gjort för att minska det som skaver i applikationen han utvecklar. Det blir snack om allt från att seeda databaser och CLIer för att automatisera till att undvika beroenden till externa tjänster och hemliga menyer. Dessutom en hel del om att leva på gränsen till en databasdump, vikten av hårdkodade IDn, end-2-end-tester och mycket mycket annat.

Om du gillar podden blir vi väldigt glada för en liten recension i iTunes eller en prenumeration på Spotify. Följ oss och säg hej på @asdfpodden på Instagram eller Twitter (Anton, Therése) <3

Länkar

Avsnittets skämt:

How come you always see a lot of JavaScript developers do a pinky swear?
They make a lot of promises.
Skrapa här!!
Transkribering
Transkriberingen är gjord av nån "AI-grej". Du kan förbättra den genom att klicka precis här :)
00:00:00
"How come you always see a lot of JavaScript developers do a pinky swear?"
00:00:04
"Ehh..."
00:00:06
"Jag vet inte."
00:00:08
"They make a lot of promises."
00:00:10
"Ah, fuck!"
00:00:12
"Vad irriterande!"
00:00:14
"Jag skulle kunna komma på!"
00:00:16
"Ja, den där var ändå..."
00:00:18
"Du fick alla ledtrådar!"
00:00:20
"Jag fick alla ledtrådar!"
00:00:22
"Jag tänkte så här, ""Pinkie-promiss, vad fan är det?"""
00:00:24
"Alltså..."
00:00:26
"Så jävla dåligt!"
00:00:28
"Herregud. Välkomna till ett nytt avsnitt av ASD för er."
00:00:33
"Varmt välkomna. Det var inte så bra stämning i början."
00:00:38
"Vi sänker den istället. Vi höjer den nu."
00:00:41
"Vi pratade ju om att vara nakna med sina kollegor."
00:00:47
"Eller om teamaktiviteter lite bredare."
00:00:50
"Och vi fick ju lite input på, för det första att folk tyckte väldigt mycket som dig,"
00:00:58
"att att vara nakna med sina kollegor är helt idiotiskt."
00:01:02
"Ja, eller? Ja."
00:01:07
"Ja, det var ändå majoriteten. Det var väl jag som fortfarande försökte vara rolig och inte hålla med."
00:01:13
"Men sen fick vi också lite andra saker som jag tyckte var, för det första så var det någon som hade nakenbadat i isvak."
00:01:19
"Det tyckte jag var väldigt, väldigt roligt."
00:01:21
"Alltså, för det låter som..."
00:01:24
"Det är liksom någonting med att man..."
00:01:27
"För det första liksom så här, ja, först ska vi vara nakna."
00:01:30
"Men sen ska vi också göra in en isvag."
00:01:33
"- Men det känns spontant som att man inte behöver vara naken för den här aktiviteten."
00:01:39
"- Nej, nej, det håller jag också verkligen med om."
00:01:43
"Det känns som en så jävla sjuk idé att bara komma på att..."
00:01:48
"Fan, nu ska vi köra riktigt teambuilding hörni. Bada vid natten i en gisvak."
00:01:52
"Men sen fick jag också höra två saker som jag tyckte var,"
00:01:56
"jag vet inte hur kul jag skulle tycka att de är, men ändå intressanta."
00:02:00
"Den ena var att någon hade gått på en tangokurs med sitt team."
00:02:04
"Ja, alltså är inte tango en väldigt sexuell dans?"
00:02:09
"Är det inte en av de mest sexuella, sensuella danserna av ballroom-typ?"
00:02:14
"Det kanske är så."
00:02:16
"Och det kanske är lite dumt att bli ihopparad med någon kollega som man ska dansa tätt in till."
00:02:23
"Ja, för jag hör typ någon sån här gammal let's dance,"
00:02:27
"""Ah, han är matadoren och kvinnan är hans skynke."""
00:02:33
"""Ni jobbar tillsammans."""
00:02:35
"""Nej men jag vet inte."""
00:02:37
"Jag tyckte det var kanske inte så kul att göra, men kul att höra att andra har gjort."
00:02:44
"Så det är typ skadeglädje?"
00:02:47
"Jo, det är isvaken också."
00:02:50
"Sen var det också någon som skrev att de hade lagat mat tillsammans."
00:02:55
"Man lagade en treliters middag och så var man typ 20 personer och fick man uppgifter."
00:03:01
"Det tyckte jag faktiskt lät ganska trevligt ändå."
00:03:05
"Men har inte du gjort det?"
00:03:07
"Nej, jag tror inte det."
00:03:09
"Men vadå, ni delade ju upp er på middagar hemma hos folk?"
00:03:11
"Lagade mat tillsammans?"
00:03:13
"När då? Har jag berättat det här för dig?"
00:03:15
"Nej, men..."
00:03:17
"Håller jag på att få en stroke?"
00:03:19
"Nej, jag vet inte. Alltså det är bolaget..."
00:03:21
"Ni hade någon julfest eller julaktivitet?"
00:03:23
"Ja, just det. Då lagade man mat hemma."
00:03:25
"Det här var mer... Det beskrevs som att man fick komma till ett ordentligt kök."
00:03:29
"Alltså ett typ av restaurangkök."
00:03:31
"Och så var det någon italiensk tante eller gumma som tog och skrek ""Prego, prego"" på en."
00:03:38
"Okej, så det är mer det du vill ha, du vill ha skrikande."
00:03:42
"Ja, sen det beskrevs också som att eftersom det var så många så behövde man inte laga så mycket mat,"
00:03:47
"utan man gled mest runt i köket med ett glas vin i handen och pratade skit med folk."
00:03:50
"Det kanske var det som lockade mig mest."
00:03:52
"Ja, det känns väldigt mycket on brand för dig att göra det."
00:03:56
"Jag tänkte att jag skulle kunna hacka lite grönsaker och sen skulle jag kunna dricka vin."
00:03:59
"Det skulle vara perfekt."
00:04:02
"Men fint ändå att du plockade med de grejerna."
00:04:04
"Jag plockade med två andra saker."
00:04:06
"Jag gillar att du fick en liten tldl."
00:04:10
"Anton tycker det är okej att vara naken."
00:04:12
"Therese tycker lite mindre så."
00:04:14
"Ja, du var beskrivningen av hela avsnittet."
00:04:17
"Otrolig sammanfattning, måste jag säga."
00:04:20
"Absolut, absolut."
00:04:21
"Och sen så läste jag någonting annat typ så här."
00:04:23
"""Ja, men om man basta för att vara naken så gör man det inte av rätt anledning."""
00:04:28
"Nej, och någon annan bara ""Det spelar ingen roll, man är fortfarande naken!"""
00:04:32
"Och den sidan är jag på."
00:04:34
"Ja, absolut."
00:04:36
"Absolut."
00:04:37
"Så vi hade lite olika fokus tror jag."
00:04:39
"Ja, jag tror också det."
00:04:40
"Ja, ja, det var i alla fall kul, det jag ville komma fram till med det här var att det var kul att få lite input på avsnittet."
00:04:46
"Jag tycker ju om när det blir pratat om att engagera folk och att få höra om andras erfarenheter."
00:04:51
"Särskilt när de inte håller med mig."
00:04:53
"För det är fan det roligaste."
00:04:55
"Med det sagt så tänkte jag prata om något jag har suttit med på jobbet på sistone."
00:04:59
"Vilket är att, jag vet inte."
00:05:01
"Vi har ju pratat lite grann om developer experience tidigare i en avsnitt."
00:05:04
"Men jag vet inte riktigt om det här går in under det paraplyet eller inte."
00:05:07
"Men jag har i alla fall försökt"
00:05:11
"gjort livet lite mindre friktionsfyllt."
00:05:19
"lite mer friktionsfritt. Ni fattar, jag försökte ta bort friktioner och sådana saker som skavar när vi sitter och utvecklar vår"
00:05:26
"applikation lokalt."
00:05:27
"Och vi bygger en Next-applikation, så det är React och Node."
00:05:32
"Jag tror att det är ganska generella problem ändå. Några av de problem som jag har försökt"
00:05:40
"förbättra är att när man utvecklas så behöver man ha en databas."
00:05:44
"Den databasen måste ofta innehålla"
00:05:48
"ganska mycket data."
00:05:49
"Du vill ha massa olika fall du kan gå in och testa på och när du utvecklar en feature så vill du"
00:05:54
"lätt kunna återställa det där till ett basfall och sen kunna justera den datan."
00:05:59
"Den andra grejen är att"
00:06:03
"när man bygger en applikation så har man ofta beroenden till"
00:06:08
"tredjepartstjänster."
00:06:10
"Och där har jag också känt att det har varit lite så här"
00:06:12
"det är lite jobbigt att behöva vara beroende av tredjepartstjänster och särskilt när det är så här, även om det är interna tjänster som man drar teambygger"
00:06:19
"eller om man har en integration mot Google för någon typ av platssök eller kartor eller vad som helst."
00:06:29
"Den sista grejen som jag, det är inte riktigt ett problem, men det var mer att ganska ofta så ville vi ta ett id på någonting i vår applikation"
00:06:42
"Och sen ville vi leta upp ett annat ID, med hjälp av det IDet."
00:06:48
"Eller bara gå till en annan URL med hjälp av det IDet, eller vad som helst."
00:06:50
"Utan att det nödvändigtvis finns det inbyggt för användaren i applikationen."
00:06:54
"Så de tre grejerna har jag suttit och funderat på på sistone."
00:06:58
"Känns det som ett problem du känner igen dig i?"
00:07:01
"Eller är det bara att jag har hittat på det här för att ha något att göra?"
00:07:04
"- Alltså var det inte fyra problem? Var det bara tre problem?"
00:07:07
"- Jag tror att det är tre. Jag tror att det ena var..."
00:07:09
"Databas och att ha massa data i den och skit."
00:07:15
"Ja precis, jag tolkar det som två."
00:07:18
"Ja just det, och sen var det externa beroenden och sen det här med massa iden och saker som man behöver leta upp själv."
00:07:23
"Ja, jag känner igen mig i alla de här grejerna."
00:07:30
"Men ofta känner jag också att jag är såhär, jag kommer inte lösa det här så att jag bara..."
00:07:35
"Du lever med smärtan."
00:07:39
"Ja, jag är också extremt duktig på att anpassa mig till ohållbara situationer."
00:07:45
"Jag bara lever dem."
00:07:47
"Det är väldigt många som ofta är såhär, vi kan inte göra det här, vi kan förbättra det här, vi kan bygga ett skript så vi inte behöver göra det här manuellt."
00:07:54
"Jag är bara såhär, jag jobbar med det jag har och jobbar med det."
00:07:58
"Ja, jag förstår. Om vi börjar med, vi kan vi ta just databasdelen först."
00:08:07
"Ofta på tidigare ställen som jag varit på, eller på vissa tidigare ställen som jag varit på i alla fall, så är det ofta att man har lite problem, särskilt när setupen börjar bli lite komplex och vad man faktiskt försöker göra."
00:08:19
"så har man lite problem med att säga, ska alla sätta upp en databas lokalt?"
00:08:24
"Hur ska det funka?"
00:08:26
"Man vill liksom undvika att om det börjar nyutveckla i timmen så ska det ta två veckor att komma igång."
00:08:30
"För att man behöver sätta upp någon jävla miljö lokalt på sin dator."
00:08:33
"Och det där är ju en jävla mardröm."
00:08:35
"Ja, jag vet. På stället jag är nu så vet jag ju att det finns en liksom proddump"
00:08:41
"att man kan dra in en lokal så att man verkligen får upp en lokal miljö."
00:08:45
"Det har jag inte orkat göra än."
00:08:47
"Jag lever ju fortfarande på gränsen runt den."
00:08:51
"Det där tycker jag också är så här, för en proddump kan ju vara nice att dra in den,"
00:08:58
"men det är så jävla mycket data då helt plötsligt."
00:09:01
"Ja, men det är också så här att den tar nog hela natten att köra,"
00:09:05
"plus att vad jag hörde senast var att den var trasig och ingen vet riktigt hur man fixar den."
00:09:09
"Så att det är lite så här..."
00:09:11
"Ja, jag förstår."
00:09:13
"Så att det kan ju skapa viss friktion, som du säger."
00:09:16
"Jag förstår, jag är med på den biten."
00:09:19
"Vi har försökt att lösa det här, för vi kör med en lokal databas."
00:09:26
"Annars kan man köra, vissa kör emot en databas i en miljö för att slippa sätta upp det lokalt."
00:09:32
"Det kan ju också funka, men det kommer med sin egen problem."
00:09:34
"Att säga att du vill förändra databasmodellen eller schemat i databasen."
00:09:39
"Det blir ju kaos ganska snabbt."
00:09:42
"Vi kör ett ORM, ett verktyg för att hantera vår databas som heter Prisma."
00:09:49
"Som jag har väl pratat om tidigare i podden."
00:09:51
"Någon gång i alla fall tror jag. Ingen aning, kanske."
00:09:53
"Jo, men vi har pratat om Prisma i ett eget avsnitt tror jag."
00:09:56
"Ja, men du ser till och med det. Om jag hittar det avsnittet så ska jag länka det."
00:10:00
"Och så att han ser att han har pratat om det. Herregud, vi är ju bra."
00:10:04
"Ja, men jag tänker att jag är den som tar upp Prisma."
00:10:09
"Du introducerade Prisma för mig sen satt jag och jobbade i Prisma för mig själv."
00:10:13
"Du lärde mig om Delete Cascade."
00:10:16
"Ja, just det."
00:10:18
"Sådana här saker förtränger jag. Det här kommer jag aldrig ihåg."
00:10:20
"Det är en bra anledning att vi har en sökfunktion på vår hemtida nu."
00:10:23
"Bara för att säga det igen, för att jag tycker att det är så kul."
00:10:25
"Så där kan man gå in, söka på Prisma så kan man hitta alla avsnitt när vi pratar Prisma."
00:10:29
"Ja, det jag skulle säga var att vi kör i Prisma och den kommer med en funktion för att kunna sida sin databas när man kör den lokalt."
00:10:38
"Så vi har byggt ovanpå den egentligen för att kunna sida vår databas."
00:10:43
"Och det finns ju andra ORM som förmodligen har samma funktion och har man inte det så kan man bygga det själv."
00:10:50
"Och det är så jävla trevligt att kunna göra det för det vi sidgör egentligen är att för det första rensar den hela databasen."
00:10:58
"Så den tar bort allting som finns."
00:11:01
"Och sen kör den om det här baserat på, nu har vi byggt om det så att vi har liksom ett, inte jättestort, men vi har ett JavaScript objekt"
00:11:10
"som motsvarar egentligen strukturen på databasen, alltså schemat och relationerna som i ett träd."
00:11:18
"Och det den gör är egentligen att den tar det här JavaScript objektet, förvandlar det till objekt som den kan stoppa in i databasen"
00:11:26
"och sen kopplar den ihop alla relationer som de ska vara."
00:11:29
"Så vill jag förändra någonting i den här sidan så är det faktiskt väldigt enkelt nu,"
00:11:34
"bara för att det enda man behöver göra är att titta på det här JavaScript-objektet"
00:11:37
"och sedan lägga till ett till element i den, vad det nu kan vara man vill göra."
00:11:43
"Och det är så jävla skönt att bara ha det där."
00:11:47
"Och sen, jag ska väl kanske säga, att sen kör vi vår databas med Docker,"
00:11:53
"Vi har ett litet CLI för vår applikation som spinner upp hela vår infrastruktur."
00:11:59
"Så den skapar upp en Postgres databas, en Redis och vad fan är det mer vi har."
00:12:05
"- En Docker Compose. - Exakt."
00:12:09
"Och det är också väldigt trevligt."
00:12:11
"Men just det här att man har någonting i sin..."
00:12:15
"Man behöver inte bry sig så jävla mycket om att man måste skapa upp den här datan."
00:12:19
"utan då kan man göra det i sidan istället för någon specifik fall man behöver göra"
00:12:23
"om man sitter och utbygger någon feature som berör det."
00:12:25
"Och så kan man bara köra om den här sidan."
00:12:27
"Och sen så sitter man och testar lite grann och så behöver man göra om det och då kör man om sidan igen."
00:12:30
"Ja, alltså jag har satt jättemycket med sidanet."
00:12:34
"Inte lika fancy, så jag hade inte ett JavaScript-objekt utan jag hade en fielder"
00:12:38
"jag manuellt stoppade in saker i databasen."
00:12:40
"För att det var inte så mycket, det var greenfield, det satt för mig själv och så vidare."
00:12:46
"Men jag körde ju om den där hur många gånger som helst."
00:12:49
"Det var så jävla skönt."
00:12:51
"Jag har aldrig varit med om att det vart så skönt att bara så..."
00:12:54
"""Ja, nu har jag data här."""
00:12:55
"Tack och lov att jag inte behövde sitta och manuellt trycka in allting."
00:12:59
"För jag byggde lite så här ett gränssnitt också för att skapa upp saker via formulär som man skickar in."
00:13:06
"Så jag hade ju fått sitta och skapa upp dem själv."
00:13:08
"Det var ju tradigt så in i helvete."
00:13:11
"En annan sak som jag tycker också är väldigt smart gjort av oss i det här är att i normala fall så genererar man ju upp alla id på saker i databasen."
00:13:21
"Men här har vi i sidan så hårdkodar vi in id på ganska mycket."
00:13:25
"Eller på de sakerna vi berörs om."
00:13:27
"Alltid ska ha samma id när ni vill testa."
00:13:29
"Exakt. För det första då så kan man ju alltid ha samma url."
00:13:33
"Så sitter man och bygger en feature och om man sidar om så kan man refresha sidan och så finns ändå det elementet kvar i databasen."
00:13:39
"även om det är helt ny sidat."
00:13:41
"Och det är också så jävla skönt."
00:13:43
"Och det är också gjort att vi kan ha en sida"
00:13:45
"i applikationen som bara visas lokalt"
00:13:48
"som har då länkar till alla de här sidade grejerna."
00:13:52
"Så att det är liksom genvägar om man vill hoppa till"
00:13:54
"en ansökan eller en intervju eller vad fan det nu är vi har i vår applikation."
00:14:01
"Och det är också skitsmidigt."
00:14:04
"För att det sparar ganska mycket tid på att bara sitta och klicka runt i applikationen"
00:14:07
"och få hitta på rätt ställe."
00:14:09
"Ja, alltså det är det värsta man vet när man vet att man testar ett flöde djupt ner"
00:14:14
"så måste man sitta och klicka sig igenom hela det."
00:14:17
"Ja, jag byggde en jävla så här ID-verifiering i en iframe"
00:14:24
"och det var slutet som hade olika avslut som jag skulle kolla på."
00:14:28
"Fy fan vad tid det här tog alltså."
00:14:30
"Ja, det förstår jag verkligen."
00:14:32
"Och det här är också ett sidospår, men det är alltså..."
00:14:35
"Vi kör ju också end-to-end-tester och det har ju inte någonting med sidorna att göra för vi har använt end-to-end-data i testerna."
00:14:42
"Men just det här med att man sitter och klippar igenom saker, det är skitskönt att bara kunna ha ett end-to-end-test eller ett par som man vet testa de stora flödena och de case man har. Så jävla trevligt."
00:14:54
"Ja, men du måste ju utveckla sakerna först för att kunna göra ett test."
00:14:59
"Men den här liksom, kan ni sida upp en testdatabas också så ni kan köra allt det via den?"
00:15:06
"Ja precis, vi sidar nästan ingenting i testerna för att de ska vara så produktionslika som möjligt."
00:15:17
"Så där skapar vi egentligen, i och med att vi går igenom hela flödet, då skapas all data på vägen."
00:15:23
"Sen är det pyttelite C-data."
00:15:26
"Så end-to-end-testerna skapar datat."
00:15:28
"Ja, men i en separat testdatabas när vi kör dem."
00:15:31
"Oj, oj, oj."
00:15:34
"Så himla fancy."
00:15:36
"Det är också väldigt trevligt."
00:15:38
"Vi kan inte prata om testerna i ett annat avsnitt kanske."
00:15:40
"Men det är också väldigt trevligt att vi har fått till nu ganska bra."
00:15:43
"Både integrationstesterna som testar databaslagret."
00:15:47
"Det är inte ett lager riktigt, men testar databasgrejer."
00:15:52
"Och end-to-end-testerna spinner liksom upp en helt egen databas som de går emot."
00:15:58
"Och det gör det ju då väldigt trevligt att kunna köra dem helt isolerat jämfört med allt annat."
00:16:04
"Ja, det kan jag tänka mig."
00:16:09
"Jaha, vad hade vi sedan då? Vi hade externa beroenden."
00:16:13
"Det har man kämpat med, speciellt att du satt också och det var alltid någon så här"
00:16:18
"""Ja den här och den är i samma mesh och den här här borta och du måste få in rätt URL"""
00:16:24
"""Om du råkar ha någonting på AVS då är det nästan körd"" och bla bla bla bla."
00:16:29
"Exakt och det där är också en grej man sätter sig in på så jävla mycket, i en jävla evighet på andra ställen."
00:16:39
"Det är ofta att man har något externt beroende och det är inte alltid att man kör en Google-sökning för att hitta någon plats."
00:16:47
"Det är inte alltid att man vill köra det lokalt, för det första så kostar det pengar."
00:16:51
"Så det är inte sagt att du vill göra det över huvud taget."
00:16:54
"Sen kan det också vara beroende till andra tjänster, fast internt, men som andra team sköter om."
00:17:02
"Och det kan ju också vara så här, nu har de råkat paja sin testmiljö som vi går emot."
00:17:06
"Då funkar inte vår app."
00:17:08
"Och det är också en jävla tråkig grej att springa på."
00:17:12
"Ja, man vill ju inte att bara för att köra det lokalt så måste hela totala kedjan vara lokal."
00:17:21
"Alltså det är för mycket."
00:17:23
"Man vill ju inte behöva ha en Docker Compose för alla andra Teams appar också."
00:17:31
"Nej, precis. Man drar i hörnet så kommer hela meschen med. Det är rockigt."
00:17:39
"Hur har du löst det här då?"
00:17:41
"När du slutade och jag började på, vi har delat team så att säga, så var det ändå löst ganska bra beroende av andra tjänster."
00:17:53
"För att det finns ju också säkerhetsnivåer, man måste ha någon typ av token för att anropa dem och grejer."
00:17:58
"Det var löst väldigt bra i att du bara började köra ett CLI-kommando"
00:18:03
"så gick den och hämtade tokens till alla tjänster du var beroende av"
00:18:06
"baserat på vad du hade i din env-fil."
00:18:09
"Just det, den kom jag ihåg."
00:18:11
"Då kunde du hämta upp tokens och uppdatera din env-fil och så kunde man köra."
00:18:15
"De här tokensen levde kanske en dag, så man fick göra det en gång per dag ungefär."
00:18:18
"Det funkade okej, men problemet är fortfarande"
00:18:22
"att du har ett faktiskt beroende till de här tjänsterna."
00:18:26
"Och det här är löst nu av ett verktyg, eller vad fan ska jag kalla det, som är så jävla bra."
00:18:35
"Alltså jag är helt såld på det. Jag kan inte hajpa det för mycket."
00:18:38
"Som heter Mock Service Worker."
00:18:41
"Så MSW."
00:18:43
"Och det det gör är att det använder då den här Service Worker standarden, eller featuren som finns i browsers och i Node."
00:18:53
"som innebär att du kan spina upp en till, man ska inte kalla det tråd riktigt, men typen till tråd som du kan göra uträkningar på."
00:19:04
"Så du kan använda den för att säga att du kan, ska du göra en tung uträkning så kan du starta en Service Worker och låta den göra den"
00:19:12
"medans du gör något annat i din vanliga applikation. Och då ska den inte låsa sig. Man kan paralellisera lite grann."
00:19:19
"En annan feature i det här är också att service workers kan ligga som någon typ av middleware mellan dina requests."
00:19:27
"Så det Mock Service Worker gör är att de hakar in på det där och tillåter dig att fånga requests som går från din applikation."
00:19:37
"Oavsett om det är via browsern eller via Node."
00:19:39
"Och så kan du fånga de där requesten och returnera egentligen vad du vill."
00:19:43
"Och det som är så jävla bra med det här, ska vi säga, är att det påverkar inte din applikationskod överhuvudtaget."
00:19:52
"Alltså din applikation vet inte att den här service worker ligger och snurrar."
00:19:56
"Så du behöver liksom inte mocka i ditt test till exempel."
00:19:59
"Så i end-to-end-testerna så mockar vi ingenting."
00:20:02
"För att vi har en mock service worker som ligger och snurrar, den mockar ju så att säga."
00:20:08
"Men i själva applikationen mockar vi ingenting, eller i testerna mockar vi ingenting."
00:20:11
"Men spinner den in egen på ett eget projekt då?"
00:20:16
"Nej, den ligger fortfarande i projektet."
00:20:19
"Det är bara att vi har en liten environment-variabel."
00:20:22
"Så kör man med typ mock-enabled eller mock-external-enabled,"
00:20:27
"jag kommer inte rita vad den heter."
00:20:29
"Då snurrar den igång, service-worken, när du startar applikationen också."
00:20:34
"Det är svårt att överdriva hur bra jag tycker att det är."
00:20:42
"För det funkar så jävla bra."
00:20:44
"Det är också jävligt nice gjort att om du inte mockar någonting men du kör med mocken igång"
00:20:50
"då får du en varning som säger ""du gjorde det här requestet till den här url med en post"""
00:20:57
"till exempel, men du mockade den inte."
00:21:00
"Bara så att du vet."
00:21:02
"Och då kan man se det och bara ""ja, fan, den här har jag glömt att mocka""."
00:21:04
"Så kan man gå in och lägga in den här mocken och så kör man på det."
00:21:06
"Men då måste du också ha väldigt lätt att hantera olika case."
00:21:10
"Alltså verkligen så här, när jag skickar det här då vill jag specifikt ta tillbaka det här."
00:21:14
"När jag skickar det här så vill jag att du omvandlar det till det här."
00:21:17
"Absolut."
00:21:18
"Alltså du spesar ju liksom i den här så spesar du typ så här, om du anropar den här urällen så returnerar det här."
00:21:24
"Men den funkar ju som typ som du sätter upp API endpoints i Express,"
00:21:31
"till exempel, eller Kua eller vad som helst."
00:21:32
"I det att du kan ta in parametrar så du kan ha dynamiska id, till exempel i de här url:erna som du spesar."
00:21:40
"Så att du kan baserat på vad du skickar så kan du returnera olika saker."
00:21:43
"Så att för vår del, till exempel då som vi hämtar ganska mycket data från ett legacy-system"
00:21:48
"och då vill vi ju liksom att idet som kommer tillbaka på det objektet som vi hämtar"
00:21:54
"ska matcha det idet man requestade."
00:21:56
"Då tar vi den från urlen som man har skickat"
00:21:59
"eller från post-bodyn"
00:22:01
"och så lägger vi in det i svaret och så får man tillbaka det."
00:22:03
"Det är som att du får riktig data"
00:22:06
"bara att din externa tjänst ligger i en liten javaskriftfil"
00:22:10
"där du har spesat vad den ska returnera."
00:22:12
"- Det är verkligen att den agerar på själva requestet också."
00:22:16
"- Ja, så du har tillgång till hela requestet"
00:22:18
"och body och headers och allting"
00:22:20
"så du kan göra vad du vill som du behöver göra på andra ställen."
00:22:23
"Det är ganska smutt, för annars kunde jag ändå tänka mig att det skulle vara lite mer hårdkodat."
00:22:29
"Att man bara så här, ja men gör du ett request så får du tillbaka det här."
00:22:32
"Ja, nej, den är ändå väldigt dynamisk faktiskt."
00:22:36
"Ja, det där skulle man haft om man inte satt i lite mer av en monolit så att säga."
00:22:44
"Så jag har inte riktigt det problemet."
00:22:47
"Jag är lite orolig över att jag alltid går mot någon typ av prodgtm dock, men det är ett annat problem."
00:22:54
"Där har jag ingen smart lösning åt dig tyvärr."
00:22:59
"Inte."
00:23:01
"Jag tycker faktiskt att det har gjort det väldigt mycket enklare och just då att du också kan köra den här i end-to-end tester till exempel."
00:23:09
"Det var så vi började egentligen."
00:23:11
"Vi började med att jag ville bygga end-to-end-tester."
00:23:15
"Då drog jag in den här för att kunna mocka de externa tjänsterna."
00:23:18
"Man vill inte behöva sätta upp att du ska göra riktiga anrop mot tjänster i devmiljön när du kör dina end-to-end-tester."
00:23:25
"Det funkar ju liksom inte."
00:23:27
"Det är lite tråkigt."
00:23:29
"Då började vi med att vi drog in det där."
00:23:31
"Sen har vi också börjat att köra den."
00:23:33
"När vi kör lokalt så kan man skriva, antingen kör vi npm run dev."
00:23:36
"Och då kör vi mot externa tjänster, så kör vi npm run dev colon mocked."
00:23:40
"Och då kör vi helt mockat."
00:23:43
"Och det som också är ganska nice, det händer lite då och då att jag sitter på tåg och jobbar."
00:23:47
"Ganska dålig uppkoppling."
00:23:50
"Nu funkar applikationerna och utvecklar lokalt helt utan internet."
00:23:53
"Ja, det är lite sjukt."
00:23:58
"Ja, men det känns också lite som att det är så det borde vara."
00:24:01
"Jo, men det skulle ju funka för mig med."
00:24:04
"Och min monolit."
00:24:05
"Ja, absolut."
00:24:07
"Jag kommer ihåg det där, det var väldigt många tjänster och fler blev de som skulle kommunicera med varandra."
00:24:14
"Så jag kan tänka mig att det där underlättade otroligt mycket."
00:24:16
"Jag tycker verkligen att det har blivit riktigt bra."
00:24:21
"Och jag tror också att det var inget jätteproblem tidigare."
00:24:26
"Det hände liksom inte jätteofta att någon tjänst i dev slutade funka eller att den gick ner eller vad det kunde vara."
00:24:31
"Men det hände liksom tillräckligt ofta för att man skulle bli lite lite störd av det."
00:24:37
"Alltså att det ska väl lite grann, man bara ""ah, nu händer det där"" eller ""ah, nu blir det sådär""."
00:24:41
"Samma sak, alltså databasgrejen känns ju som att den stör dig mer aktivt i dagligarbetet."
00:24:46
"Här var det mer liksom såhär, ""ja, vad gör jag nu då?"""
00:24:49
"Ja, men speciellt när ni var i ett state, eller vi var i ett state där allt var greenfield."
00:24:57
"För då hade man ju ingen respekt för proddsättning."
00:25:02
"Då kunde det kännas att det bara dyka här och där för att man skickar ut någonting och testar någonting."
00:25:06
"Och det var ju inte konstigt kanske att det var så, för det var ju fullt under utveckling."
00:25:11
"Ja, nämen exakt. Och nu har vi till exempel, alla team har hållit på att flytta massa tjänster för vi har hållit på att byta målleverantör."
00:25:17
"Och då är det ju också lite grann så här, vilket mål ska vi gå mot?"
00:25:24
"Alla tjänsteflyttade samtidigt."
00:25:26
"Då måste man se till att hålla koll på det i sin lokala miljö också."
00:25:30
"Det är lite mecket."
00:25:32
"- Vad var den sista nu då?"
00:25:36
"- Jag tycker den här är lika rolig, men jag tror att det är viktigt."
00:25:39
"Nu låter jag så jävla pretentiös."
00:25:41
"Men det är viktigt att påminna sig själv ibland om att"
00:25:46
"det går ju att bygga saker i applikationer"
00:25:49
"som man gör för utvecklarnas skull också."
00:25:52
"Alltså som sparar tid för utvecklarna."
00:25:55
"Ja just det, det var med att hitta iden av andra iden av japportet."
00:25:59
"Exakt, exakt."
00:26:00
"Det exempel jag har nu är att jag har byggt en hemlig meny i vår app typ."
00:26:07
"Som man får upp om man trippelklickar på option tre gånger på en Mac."
00:26:11
"Och allt tre gånger blir det väl fan på en Windows då."
00:26:15
"Det som den gör egentligen, det är en React-komponent som man måste lägga in den på varje route som vi har den på egentligen."
00:26:21
"Eller som vi vill ha den på."
00:26:24
"Och det man kan göra är att man skickar in ett litet dataobjekt."
00:26:26
"Jag tror att det är typat som any i min TypeScript-definition."
00:26:30
"Så man kan skicka in vad som helst."
00:26:32
"Men det den gör egentligen är att den tittar på det här objektet och"
00:26:35
"baserat på vad den hittar i objektet"
00:26:38
"så genererar den upp lite olika genvägar."
00:26:41
"Så en grej som den gör är att du kan"
00:26:45
"ta upp den här och så kan du klicka på kopiera data."
00:26:48
"och då kan du bara copy-pasta eller kopiera all data till din clipboard."
00:26:52
"Så vill man få tag i all data som vi har i den här sidan så kan man ta upp den."
00:26:55
"Men det är också ganska smidigt ibland."
00:26:58
"Men det andra är att den tittar på vilka"
00:27:01
"properties som finns på det objektet och baserat på dem så genererar den olika saker."
00:27:05
"Det enklaste exemplet är till exempel att man är inne på en intervju."
00:27:13
"Vi bygger rekryteringssystem."
00:27:15
"Men om man är inne på en intervju så kan man via den här menyn då"
00:27:20
"hitta till sig en process som den hör till."
00:27:26
"Det finns kanske ingen navigering i applikationen för det, men om då den här"
00:27:31
"hemliga menyn hittar ett id som heter process ID, då gissar den att"
00:27:36
"okej, då är det här ett process ID som är vår process i applikationen."
00:27:39
"Och då kommer den generera upp en länk till den här processen."
00:27:42
"Och sen finns det kanske tio olika sådana fall."
00:27:45
"som genererar olika länkar och lite andra saker beroende på vad den hittar."
00:27:49
"Och det är liksom inte världens grej, men för oss så har det ändå varit ganska"
00:27:53
"nice för att ganska ofta så har vi gått in så här."
00:27:55
"Ja, nu är vi inne i den här applikationen."
00:27:57
"Nu, ah, just det, vi har ingen länk till den här grejen och vi skriver inte ut"
00:28:01
"ID till GUI någonstans, så då måste vi liksom ner i databasen för att hitta det"
00:28:05
"id och så bla bla bla. Och det är liksom"
00:28:09
"ingen jättegrej, men bara att det spar oss lite tid när vi får frågor från"
00:28:13
"använda det, gör det jävligt värt det tycker jag."
00:28:15
"Du är så himla kreativ."
00:28:17
"Det här är väl inte så jävla kreativt ändå?"
00:28:21
"Ja, jag skulle aldrig tänka på det."
00:28:23
"Jag skulle aldrig tänkt på att göra en"
00:28:25
"liten hemlig meny som innehåller saker"
00:28:27
"för att underlätta mitt liv."
00:28:29
"Jag hade bara, jag hade bara kört på, alltså jag hade"
00:28:31
"bara gått den långa tunga vägen."
00:28:33
"Alltså jag är noll"
00:28:35
"procent kreativ när det kommer till så här grejer."
00:28:37
"Jag tänker att det är sådana som du"
00:28:39
"som för världen framåt och sådana som"
00:28:41
"som jag är liksom, vi arbetare va?"
00:28:44
"Alltså vi kanske inte för det framåt, men vi gör the groundwork."
00:28:48
"Jag kommer ju döpa det här avsnittet till du är en sån som för världen framåt nu."
00:28:54
"Oj, oj, oj. Nu är jag klar. Nu kan vi liksom lägga ner podden."
00:28:59
"Här peakade vi."
00:29:01
"Okej, men då lägger vi ner."
00:29:03
"Alltså fråga inte mig, jag gör ju bara, jag är ju bara en arbetare."
00:29:07
"Jag är en ""were"" och gud det fanns ett skämt här någonstans."
00:29:11
"Jag tror bara att jag är en sån som stör mig tillräckligt mycket på saker för att försöka lägga tid på att fixa det."
00:29:20
"Ja, och jag stör mig väldigt lite ändå."
00:29:24
"Jag satt ju och på tal om DX, gud min hund snarkar, svinhögt händer, vi får se om det hörs."
00:29:32
"Vi borde köra named export på tal om DX för att det skulle göra livet lättare."
00:29:41
"Jag satt och la upp en PR där jag hade ändrat 1600 filer manuellt från default export till named export."
00:29:50
"Det här är kreativt också."
00:29:52
"Men jag vågade inte merga den så jag stängde den."
00:29:54
"Nej, nej!"
00:29:56
"Jo, jo!"
00:29:57
"Fan vilket jävla anti-climax det blev på den här storyn."
00:30:00
"Det är bara beviset på att jag bara arbetade."
00:30:05
"Jag satte manuellt."
00:30:07
"Eller det finns en liten genväg när man är så här,"
00:30:09
"VS Code, ska jag konvertera det här till en named export så får man hjälp i test och sådana grejer."
00:30:15
"Alla andra yttre beroenden,"
00:30:17
"och så kör vi indexfiler så den lyckades ändra indexfilen."
00:30:20
"Då behöver jag exportera om indexfilen och den plockar den ju inte upp."
00:30:23
"Så jag ändrade 1 600 filer manuellt."
00:30:27
"Typ."
00:30:28
"Alltså jag lider liksom."
00:30:32
"Jag önskar. Kan du inte öppna den här PRen igen och mörja den?"
00:30:36
"Nej."
00:30:37
"Nej, alltså jag vågar det inte."
00:30:39
"Jag kan alldeles för lite om applikationen och det."
00:30:43
"I don't dare."
00:30:45
"Något kommer paja."
00:30:46
"Jag kom på en sak till som jag faktiskt gjorde idag senast på tal om sådana här saker."
00:30:51
"Både du och jag kör ju browsern ARC"
00:30:54
"som vi också har pratat om tidigare någon gång."
00:30:56
"Och de har ju en liten feature som de kallar för Boosts."
00:31:00
"Och egentligen så är det ju att du kan väldigt enkelt göra egna extensions till browsern."
00:31:07
"För den bygger ju på Chromium så det är liksom Chrome extensions."
00:31:11
"Så idag gjorde jag en liten extension eller en boost då."
00:31:18
"Där det gjorde var att om man går in på en förhandsgranskning av en annons."
00:31:24
"Vi har hand om skrivandet av annonsen, och ett annat team har hand om presentationen av annonsen."
00:31:30
"Så förhandsgranskningen och när den är publicerad och på vilken hemsida den ligger och sånt där."
00:31:33
"Och det jag gjorde då var att om man går in på den här förhandsgranskningen,"
00:31:39
"då gjorde jag så att det dyker upp en liten knapp där, tillbaka till vår applikation."
00:31:43
"Så att man kan hitta tillbaka in i vår editor, eller annonsredigerare."
00:31:47
"Och det är också en jätteliten grej, men jävlar vad trevligt det var."
00:31:51
"Jag förstår det, jag kommer också ihåg Vimkillen när han gjorde så här VS Code snippet för att autogenerera upp boilerplate-kod som vi skrev många gånger."
00:32:03
"Ja det gör vi fortfarande, det är ju fan svin nice."
00:32:05
"Ja det tycker ni och jag menar det var ju nice men jag har inga problem med att bara skriva all boilerplate."
00:32:10
"Alltså jag är fin."
00:32:12
"Alltså Gud, det här är ju liksom ett personlighetsdrag jag inte vet om jag bara kan förändra."
00:32:18
"Alltså jag, nej jag kommer aldrig innovera."
00:32:21
"Så är det."
00:32:22
"Du säger det, men jag vet inte."
00:32:25
"Vi får se."
00:32:26
"Ja, nej. Inte innovera."
00:32:28
"Som när någon R&D-rekryterare hörde av sig någon gång."
00:32:31
"Jag bara, nej."
00:32:32
"Ni kommer hata mig."
00:32:34
"Jag vill inte tänka tack."
00:32:35
"Jag vill bara göra."
00:32:36
"Jag är så i lådan."
00:32:38
"Alltså jag, jag är liksom, jag bor i lådan."
00:32:41
"Jag går aldrig ur lådan."
00:32:43
"Jag tänker bara i min låda."
00:32:44
"Ja, vad fan. Det är inget fel med det heller."
00:32:47
"Nej, jag säger det här. Vi behövs, arbetarna, det är vi som lägger grunden på pyramiden."
00:32:54
"Nu blir det mörkt, så vi kanske ska sluta här bara."
00:32:56
"Vi ska absolut sluta, för jag tror att det här kanske närmar sig det längsta avsnittet vi har spelat in,"
00:33:00
"om inte jag lyckas klippa ner det till 30 minuter."
00:33:02
"Vi säger så för den här gången. Hör gärna av er som vanligt, om ni har någon feedback,"
00:33:09
"eller åsikter, eller skämt ni vill skicka in."
00:33:12
"Man kan höra av sig på hemsidan eller på Instagram fortfarande."
00:33:15
"Gå in och följ oss där. Det är mycket trevligt content."
00:33:18
"Ja, tjuss."
00:33:19
"Vi hörs om två veckor igen."
00:33:21
"Det gör vi. Ha det bra. Hej hej."
00:33:23
"Bye bye."
00:33:25
"[Outromusik]"
Tillbaka upp