tillbaka till startsidan

15. Kodlukter

Lyssna på Spotify lyssna! Lyssna på iTunes

Anton har blivit med bloggpost om “code smells” i React så vi pratar bland annat om hur man kan tänka för att förhindra för stora useEffects, useReducers okändhet, att få perspektiv på sin egen kunskap och att skriva för att lära sig. Dessutom är Anton exalterad över möjligheten av bygga egna “renderers” för React och det leder in på en diskussion om motivation för att nörda ner sig och skillnaden på att bygga produkter eller lära sig detaljer. Till sist en gemensam liten rant om att inte alla utvecklare bloggar, poddar eller producerar andra saker “utanför jobbet”, och att det är 100% OK.

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:

Varför går det så dåligt när programmerare testar att baka surdegsbröd?
Ingen jest.
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
Varför går det så dåligt när programmerare testar att baka surdegsbröd?
00:00:04
Jag vet inte.
00:00:07
Ingen jest.
00:00:09
Det är ju fan bra! Jag blir mer och mer imponerad tror jag.
00:00:14
Ja men nu är vi verkligen ner i botten.
00:00:17
Ja, nu är vi bra.
00:00:19
Nu är de snart slut, nu är det panik.
00:00:22
De bästa skämten är ju skämt som man kanske måste förklara för vissa, eller hur?
00:00:26
Ja, men det här funkar ju för att den är dubbel.
00:00:29
Jag har ju inte gestisur deg och jag slänger in testar.
00:00:33
Ja, det är sant.
00:00:35
Det var bra, det lever upp till.
00:00:38
Jag måste också börja leverera sen.
00:00:40
Två skämt kanske.
00:00:42
Och sen ligger du på tolv andra.
00:00:44
Eller vad vi nu är uppe för avsnitt.
00:00:46
Välkommen till ett nytt avsnitt av ASTF.
00:00:49
Avsnitt 14 kanske. 15.
00:00:51
Jag vet inte riktigt.
00:00:52
Vi behöver inte säga avsnittsnummerna.
00:00:54
Efter det här så kommer aldrig någon höra avsnittsnummer igen.
00:00:56
- Oj, press. Okej.
00:00:59
Ja.
00:01:01
- Vi tänkte väl att vi skulle snacka lite React, typ.
00:01:05
- Ja, för du skrev ju en bloggartikel nyligen om
00:01:10
smelly patterns i React-contenter.
00:01:13
- Exakt.
00:01:14
- Som blev väldigt uppskattad.
00:01:15
Som jag läst och tyckte var riktigt bra.
00:01:17
- Ja, men jag har filat på den här artikeln sen maj, tror jag.
00:01:24
att jag skapade det initiala dokumentet.
00:01:28
Och sen har vi liksom inte behov av det.
00:01:29
Jag tror att från början hade jag kanske 12 olika patterns i den.
00:01:33
Och jag tror att jag landade på sju nu, när jag faktiskt publicerade den offentligt.
00:01:38
– Jag tror också att du efterfrågade lite tips i vår slackkanal på jobbet,
00:01:44
och så blev det lite interna slitningar i slacktråden kring vilka patterns som är bra och vilka som inte är bra.
00:01:51
Nej, men jag tror att mycket var också vad som är ett pattern.
00:01:55
Eller vad som är, inte pattern, men kanske mer vad som är en codesmell.
00:01:57
Som liksom är det jag egentligen skrev om.
00:02:00
För att pattern är ju en grej, men codesmell är mer så här...
00:02:03
Indikerar något som är...
00:02:06
Något underliggande som kan vara ett problem.
00:02:08
Ja.
00:02:09
Typ.
00:02:10
Det behöver ju i sig inte vara ett problem egentligen.
00:02:12
Men om man gör det så kan det liksom leda till fler problem.
00:02:15
Eller liksom, ja.
00:02:16
Det är någonting som luktar lite illa här, så att säga.
00:02:18
Ja.
00:02:18
Jag skrev den och den blev väldigt uppskattad, vilket var kul.
00:02:23
Jag tycker det är ganska kul att diskutera sådana här grejer.
00:02:27
Sen var det inte så många som inte höll med mig, vilket var lite tråkigt.
00:02:29
Men vi kan ju inte diskutera några nu.
00:02:33
En som jag tycker är mest, det var ju väldigt många som var uppenbara.
00:02:36
Alltså typ skriv små komponenter. Eller jag vet inte vad jag skrev, jag kommer inte ihåg hur jag skrev riktigt.
00:02:41
Men tips här, använd use reducer istället för att använda jättemånga use state.
00:02:45
- Ja. - Typ. Eller dela upp din ljuseffekt i flera istället för att göra en jättestor.
00:02:53
Typ så. - Ja, det är intressant ändå att du säger det. Det är många självklara, för det där är inte alltid självklart skulle jag säga.
00:03:01
- Nej, men det kanske inte är. För att när du säger det, jag upptäckte också, särskilt den här ljuseffekt, att det var ganska många som kommenterade
00:03:07
"Aha, kan man ha flera ljuseffekt?"
00:03:09
Och det känns ju som en väldigt misslyckande från Reacts sida,
00:03:15
alltså dokumentationens sida, eller liksom community-sidan, att inte ha kommunicerat det.
00:03:18
Jag tror kanske att de flesta fattar det efter ett tag,
00:03:20
men när man börjar med det så kan det nog vara ganska enkelt att säga "Okej, det här är den här komponentens effekt".
00:03:25
Ja, alltså jag vill ändå minnas att de har varit ganska tydliga med,
00:03:31
i alla fall i sina initiala presentationer,
00:03:34
av Hux att du kunde ha flera ljuseffekter i samma som gör olika saker.
00:03:39
För att det är i alla fall så jag har lärt mig det, tror jag.
00:03:43
Däremot så har jag märkt själv att när jag väl sitter där och bara kodar
00:03:49
så kan det vara väldigt lätt att glömma bort den grejen
00:03:51
för att man börjar med en ljuseffekt och tänker "det här ska jag göra"
00:03:53
och sen så blir det "ja just det, jag skulle göra det här med"
00:03:55
och så stoppar man bara in det i samma ljuseffekt
00:03:58
så jag tror det är lätt att hamna i det tillståndet.
00:04:01
Ja, men exakt. Det är knepet som jag skrev om nu som jag tycker är ganska bra,
00:04:06
är att titta på den här dependency-arrayen och se vad innehåller den,
00:04:11
och läsa då, när den här ändras, gör det här. Alltså när dependencies ändras, gör det här.
00:04:17
Och om man då lägger in massa eller och där, då vet man att det är ett problem.
00:04:22
Ja, precis. Det var ett riktigt bra tips, tycker jag. Jag har också funderat på om det kan vara,
00:04:26
Jag tittar på om det kan vara, för jag har sett nu i applikationen jag sitter i nu så har vi en massa varningar på att
00:04:31
det här är inte med i dependency arrayen, det borde vara med eller det borde inte vara där.
00:04:34
Och så vet jag att jag var inne och skulle stoppa i någon i någon ljuseffekt och sådär
00:04:40
"Det här blir nog en lilla loop!" men nu när jag plockar bort den igen.
00:04:43
Men nu när jag tänker på det så var det nog fem, sex stycken saker i dependency arrayen redan.
00:04:48
Så jag borde nog gå tillbaka in där och faktiskt splitta upp det istället.
00:04:51
Så kanske det löser sig.
00:04:53
Ja, men exakt. Det är väldigt lätt. Det skulle vi också säga att det skulle kunna vara en codesmell i sig, att man inte stoppar in alla dependencies.
00:05:00
För i 99% av fallen bör man kunna lösa det med alla dependencies i den.
00:05:05
Ja, det är någonting som händer i den här komponenten. Jag får nog in och kika på det.
00:05:11
Det finns ju ESLint-pluginet som React har, alltså React Rules of Hooks, heter det kanske.
00:05:19
Som gör de här klagomålen på att du har glömt att stoppa independences, eller du har villkorat en hook,
00:05:28
alltså du har en hook inuti en if eller något.
00:05:30
Och den är ju skitbra, och den ska man ju typ bara lyda rakt upp och ner.
00:05:36
Ibland blir det lite krångligare, för ibland blir det kanske att du måste
00:05:40
wrappa en funktion i useCallback eller något sånt
00:05:45
för att den inte ska trigga din useEffekt och sånt.
00:05:47
Så det kan ju bli... Jag vet att många klagar på det, att det blev ganska mycket så här
00:05:51
useCallback all the way up, liksom.
00:05:54
Alltså man måste... Den funktionen i sig beror på någonting,
00:05:57
så måste man stoppa in den i Defendency Array, så måste man kanske useCallback på någonting som man gör där,
00:06:01
eller useMemo, eller så här.
00:06:03
att det blir hela vägen upp i komponentträdet, man ska sprinkla med massa just callbacks eller just memos.
00:06:09
Men för mig så känns det vettigare att göra så ändå än att
00:06:14
liksom disable den här typ att
00:06:18
du får inte ha,
00:06:19
du får inte hoppa över grejer
00:06:22
i dependency-arrayen.
00:06:23
Nej, alltså
00:06:26
det är intressant för där är,
00:06:28
jag har läst också, de pratar mycket om att så här,
00:06:31
För från början var det mycket att om du bara vill att den ska ske på mount
00:06:37
så ska du stoppa in en tom dependency array.
00:06:39
Men egentligen om du inte klarar dig utan infinite loops och grejer utan den tomma arrayen
00:06:45
då är det också någonting som är fel.
00:06:47
Det är många sådana här saker som är tydliga.
00:06:52
Och vad är det de säger?
00:06:53
You should love React hooks unconditionally.
00:06:57
Ja.
00:06:58
Jag kanske missar halva av den här nu.
00:07:00
Men någonting som... Och det är ju tydliga regler och det är jättebra, men i stundens hetta när man väl sitter där och någonting inte funkar eller det är en bugg och du har en enormt komplex komponent som du bara vill ska funka, så är det så jävla lätt att bara frångå allting ändå.
00:07:19
Ja, och sen handlar det ju också om att lösa problem. Alltså jag har ju definitivt gjort det en massa gånger själv, att man bara "Jag orkar inte tänka ut någon lösning just nu" och så sätter man en liten kommentar "ESL-intensable" och så går man vidare i livet så länge.
00:07:30
Men förmodligen så kommer man tillbaka till den någon gång när man bara "Vad fan har jag gjort här?"
00:07:34
Och så är det något som är knas eller något som inte funkar eller så.
00:07:37
– Eller så byter man uppdrag innan dess.
00:07:40
– Fördelen med att vara konsult är att man kan dra när man har byggt massa skit.
00:07:44
– Lämnar dig 15 codesmäll så att man drar.
00:07:48
– Ja, det är bara dåliga exempel på hur man är konsult. Det är exakt hur man gör.
00:07:55
En annan som jag tycker är ganska intressant som kanske var mest diskussion kring var att jag tycker inte att man ska
00:08:05
returnera JSX från funktioner i en komponent.
00:08:09
Nej.
00:08:11
Och den verkar kanske mest kontroversiell av de här.
00:08:16
Många tycker att det kan vara bra att dela upp vad returmetoden innehåller så att den bara anropar lite andra funktioner så att det blir lättare att läsa.
00:08:24
Men jag tycker, i min erfarenhet i alla fall, så blir det bara jobbigare.
00:08:31
Alltså för det första så tycker jag att det är ett tecken på att det ska vara en enkomponent.
00:08:33
Istället för att ha en inline-funktion i din komponent som returnerar i J6.
00:08:39
Då ska det oftast brytas ut till en enkomponent.
00:08:41
Men sen tycker jag också att man tjänar inte så mycket på att ha en kort return i sin komponent.
00:08:51
Alltså det finns ingen benefit med att en return är fem rader jämfört med 50 rader
00:08:57
om det bara är ganska straightforward JSX.
00:09:00
För att det blir fortfarande contextswitchande
00:09:04
om du måste hoppa mellan massa olika ställen för att läsa vad returnen returnerar.
00:09:08
Ja, det är intressant för att jag läste det här och funderade lite på det
00:09:14
för jag tror att organiskt har jag nog slutat att returnera JSX i små funktioner i komponenten.
00:09:22
Det är ingenting jag egentligen har tänkt på.
00:09:24
För i början, way back, när jag började med React, då blev det ofta så att jag delade upp och returnerade JSX i funktioner.
00:09:33
Jag tror att det var för att då var det inte så mycket komponenttänk kanske som det var en funktion ska göra en sak.
00:09:40
Jag vet inte var det var som gjorde det, men det har blivit mycket mer för mig, som du säger, att man pratar om...
00:09:46
Ja, vad heter det? Det finns ju någonting när man sprider ut saker på för mycket ställen, så blir det...
00:09:54
Ja, exakt.
00:09:56
Ja, det finns ett ord och jag kommer inte att höra det.
00:09:58
Nej, inte jag heller.
00:10:00
Men som du säger, det blir context switch. Du måste hoppa mellan väldigt många olika delar för att få ihop helheten.
00:10:07
och det gör det mycket svårare att få en överblick.
00:10:11
Jag brukade tycka att det var jobbigt att ha mycket conditionals i ISXN direkt,
00:10:16
för jag tyckte att det blev mycket svårare att läsa,
00:10:19
speciellt när det är väldigt stora bitar,
00:10:22
men det är mer straightforward tycker jag nog nu.
00:10:26
Ja, men exakt. Jag tycker jag är helt på samma sida.
00:10:29
Jag har också varit där man skrev en massa funktioner som returnerade ISX.
00:10:34
och jag sutter i projekter, jag har väldigt mycket sådana grejer.
00:10:37
Men, jag tror att det kom ganska naturligt för mig,
00:10:41
från varje område, exakt som för dig också,
00:10:43
men sen att man har tänkt mer aktivt på det,
00:10:45
när jag stött på det nu, att "oj, det här känns inte bra".
00:10:49
Och att det är därför jag kanske skrev ner det i den här listan,
00:10:51
jag tänkte på nu.
00:10:53
Men ja, jag tycker det är svårt.
00:10:55
Men det är lite som du säger, att när jag skrev det här nu
00:10:58
och publicerade den, fick ganska mycket kommentarer som
00:11:01
ger en perspektiv på att det är så lätt att glömma på vad folk kan.
00:11:07
Jag kanske tar för givet att folk känner till att det finns en ljusreducer.
00:11:11
Eller jag tar för givet att folk vet att man kan skriva två ljuseffekt.
00:11:16
Och det är så jävla lätt att hamna där och bara tänka att "Vad fan, folk fattar ju det här".
00:11:21
Men det var skitmånga som sa "Aha, ljusreducer, aldrig hört talas om".
00:11:24
Den är ju skitnice.
00:11:26
Då behöver man kanske inte köra Redux bara för att man vill ha en reducer.
00:11:30
Och det perspektivet ger ju extremt mycket.
00:11:34
Ja, ibland tänker jag att man bara glömmer bort saker.
00:11:38
Till exempel om jag inte behövt använda det tidigare,
00:11:42
då när jag väl hamnade i en situation där jag sa
00:11:45
"Det här är klurigt, det här skulle jag säkert kunna lösa med någonting
00:11:49
som jag visste en gång i tiden fanns, men jag har lite glömt bort att det existerar,
00:11:52
som kanske en use reducer."
00:11:54
Men när jag satt här sist också och bara "Fan, use reducer, just det, den finns!"
00:11:59
Så försökte jag göra det, så försökte jag på något sätt returnera JSX i min Youproducer.
00:12:04
Och jag bara, "Det här, nu har det gått överstyr."
00:12:09
Så kände du dig jävligt smart.
00:12:11
Ja, brukade jag göra det. Jag bara, "Det är ett jävla state, jag vet inte vad jag håller på med."
00:12:15
Men klockan var typ sju på kvällen också, borde inte koda då.
00:12:19
Nej, men det var någon som kommenterade det också, att de gillade att skapa upp sin JSX och sen lägga den i state.
00:12:26
Alltså i typ en just state.
00:12:28
Och sen bara rendera den, lagt upp och ner.
00:12:30
Och då hade de liksom funktioner för att spara ner det där i statet.
00:12:34
Det funkar ju säkert, men det blir ju inte tydligt.
00:12:38
Alltså så här, okej, här hämtar du state. Vad är det här statet?
00:12:42
Och så bara, aha, okej, det var massa J6 som skapades upp på ett annat ställe.
00:12:46
Då tycker jag det är vettigare att man har statet och sen i sin render så mappar man det här till en komponent.
00:12:51
Till exempel om det är en lista eller en massa saker, eller vad det kan vara.
00:12:54
Ja, alltså för mig, den lösningen på det här blev att jag istället skapar ett state som innehåller en sträng
00:13:00
på vilken komponent jag vill rendera och sen så i min JSX så blev det en massa conditionals istället.
00:13:07
Sen om jag tycker det är det bästa jag gjort hittills, det återstår att se, men det var det minst komplexa, mest straightforward,
00:13:17
mest läsbara som jag kom fram till då.
00:13:20
Ja, exakt.
00:13:21
Jag tycker det är väldigt kul att skriva, även om jag väldigt sällan, som sagt, har varit uppe från maj och skrivit.
00:13:27
Så jag får en burst av produktivitet ibland, så skriver jag några stycken och sen går jag vidare i livet ett tag.
00:13:34
Det är väldigt kul att skriva, för man lär sig ju extremt mycket själv.
00:13:40
Jag har gått igenom, okej, men hur skulle jag kunna presentera det här som det bästa exemplet, till exempel.
00:13:46
Nu är jag inte helt nöjd med exemplen i det här, jag har något exempel på
00:13:50
composition, alltså att man istället får bara skicka in massa olika proppar,
00:13:54
så skickar du in barnkomponenter som renderas istället.
00:13:57
Och det tycker jag inte är helt straight forward, även om det kanske får,
00:14:01
man fattar poängen, men jag tycker inte det är det bästa exemplet jag gjort.
00:14:06
Men som sagt, bara för att lära sig saker är så jävla skönt att skriva saker.
00:14:11
Ja, och det kan man väl också koppla till lite som förra avsnittet när vi snackade om att hålla föreläsningar.
00:14:18
För att det blir så här, ibland så känner jag att jag har en inneboende idé kring hur saker funkar,
00:14:27
men så länge jag inte behöver verbalisera det eller faktiskt verkligen förklara det,
00:14:31
så är det fortfarande bara ett litet ludd.
00:14:33
Så att dels om man skriver ner saker som du har gjort eller skriver en föreläsning
00:14:39
eller kanske bara ska förklara någonting för en annan utvecklare,
00:14:42
så tycker jag på något sätt att det är då man verkligen lär sig någonting.
00:14:47
Ja, men så funkar det verkligen för jag internaliserar väldigt mycket
00:14:51
när jag faktiskt skriver ner eller använder det.
00:14:54
Exakt som du säger, jag vet att det funkar ungefär så här.
00:14:57
Men fram tills man faktiskt gräver ner sig i det, då vet man inte på riktigt egentligen.
00:15:02
Det är ganska många som håller presentationer som ibland kör så här,
00:15:08
Jag skulle vilja hålla en presentation om React, till exempel, för att jag vill lära mig om React.
00:15:13
Och de kanske inte kan någonting om React innan.
00:15:15
Och sen bara, "ja men okej, då sätter jag mig och tvingar mig själv att lära mig om React för att hålla den här presentationen".
00:15:19
Kanske inte en approach jag skulle ta.
00:15:21
Men jag förstår ändå att det funkar.
00:15:26
Ja, det gör jag också.
00:15:29
Men jag är ju inte så bra på att ta in information.
00:15:33
Jag förstår knappt att jag klarade skolan för att så fort jag öppnar en bok som innehåller fakta så tenderar jag att somna.
00:15:40
Jag har somnat i skolböcker.
00:15:43
Det är lite samma sak när jag ska lära mig.
00:15:46
Jag ser en enorm textmassa i någon blogginlägg eller dokumentation och då bara zonar jag ut, panikar lite och stänger ner det.
00:15:56
Det är ju perfekt då att du kan använda min bloggpost som kvällslektyr för att bli trött.
00:16:01
Ja, men det är ändå på en nivå där jag känner att jag har lite koll på vad som står i det.
00:16:08
Jag fattar det utan större ansträngning.
00:16:11
Det är inte så att jag ska lära mig fysiska lagar i en årlig grej.
00:16:18
Nej, fy fan.
00:16:19
Jag har en idé på ett tåg jag vill ha.
00:16:23
Jag har en ganska tydlig idé på hur jag vill lägga upp presentationen och allting sånt.
00:16:29
Men jag kan liksom inte riktigt vad jag ska prata om.
00:16:31
Sen har jag såklart inte skickat in det här någonstans.
00:16:33
Jag ska hålla taket, utan jag vill ju lära mig först.
00:16:35
Men det är ju liksom om typ "renders" i React.
00:16:41
Eller, ja, vet du vad en render är?
00:16:45
Typ...
00:16:47
- Ehh, nej...
00:16:49
- Okej, men så här. React DOM-paketet är en render.
00:16:53
Så att den renderar React till DOMen i browsern, liksom.
00:16:58
Och sen har vi React Native. Det är en renderer, så att du använder React fast du renderar native saker istället.
00:17:05
Och jag tycker det här konceptet är så jävla intressant, för det gör att React är plattformsagnostiskt.
00:17:15
I det att du skulle kunna skriva en renderare för React och använda det vart som helst.
00:17:22
Ja, för att core-paketet är det som är React.
00:17:25
Exakt, och jag tycker det är så jävla coolt att verkligen ha sålt mig mer och mer på React.
00:17:29
För även om jag tycker att andra ramverk är också jävligt nice, typ You Will Svelte eller vad man nu ska säga.
00:17:35
Så tycker jag att React har liksom, det finns liksom potentialen att det skulle kunna finnas överallt.
00:17:41
Och ett exempel som jag anledningsvis upptäckte det här var för att jag höll på med ett bibliotek som heter React 3 Fiber.
00:17:47
Som används för att skriva 3JS, som är 3D på webben.
00:17:53
Ja, det är väl WebGL-baserat.
00:17:55
Ja, precis. Det är väl JavaScript och WebGL typ.
00:17:58
Och är liksom standard för att göra det där på JavaScript skulle jag säga.
00:18:02
Har funnits i typ 15 år.
00:18:05
Och då är det en snubbe som heter Paul som har skrivit en renderare till React som ligger ovanpå det här.
00:18:10
Som då gör att du kan skriva liksom 3js i React.
00:18:14
Och det som händer är typ att du kan ta alla liksom,
00:18:18
Det som finns, säg att det finns en box till exempel, eller en box geometry finns det i 3js
00:18:26
Och då kan man bara skriva en J6 tagg som heter box geometry
00:18:31
Och då förvandlar den här renderaren det till 3js, så att den 3js förstår det
00:18:37
Medan React tar hand om allt annat
00:18:39
Så att då tar React hand om livscykeln för komponenter, du kan dela upp det i komponenter
00:18:45
Du kan använda alla hooks för att hantera state, du kan använda saker som att använda pointer events och hover-effekter och sånt som inte finns i 3js egentligen för att det är WebGL.
00:18:55
Men i och med att React hanterar sånt så funkar det bara.
00:18:59
Och jag tror att första implementationen som han gjorde var typ så här, jag tror att det var 160 radikal för att få det att funka.
00:19:08
Och jag tycker att det är så jävla coolt att det bara går att göra såna grejer och sen skriva React.
00:19:13
Folk som kan React kommer att fatta det där också, så länge man vet vad sakerna heter i 3JS.
00:19:20
Det är en intressant grej.
00:19:24
Jag tänker ändå att det måste finnas regler, speciellt om man vill ha en väldigt performant rendering,
00:19:34
för att det krävs ganska mycket att rendera 3D.
00:19:37
Ja, precis.
00:19:39
Jag tänker att 3JS har hand om sin rendering,
00:19:41
Och sen om jag nu har fattat det rätt, nu har jag som sagt inte grävt ner mig jättemycket,
00:19:44
men då...
00:19:46
React-biten lägger liksom inte på någon performance overhead.
00:19:51
För det enda den gör är liksom att reagera på events.
00:19:54
Så att event-loopen och allting sånt, och renderingsloopen, det sköter ju fortfarande all tree.
00:19:58
Mm-hmm.
00:20:00
Så att det enda den gör är att sköta typ lifecyclen och lägga på saker som state och sånt som man kan liksom använda för att rendera de här sakerna.
00:20:08
Och det gör det så möjligt att göra så mycket coola grejer.
00:20:12
Alltså jag har kollat lite grann på vilka det finns som andra renderare.
00:20:14
Och det finns till exempel något som heter React Inc, tror jag, som används för att skriva React som renderas i terminalen.
00:20:20
Det finns något som heter React Hardware, som är typ någon Arduino-grej, så du kan skriva React som kör på Arduino.
00:20:27
Alltså det är liksom hur mycket saker som helst, och det är så jävla coolt.
00:20:31
Så tekniskt sett skulle man kunna köra React ovanpå vad som helst.
00:20:37
Jag känner en nernördning att komma och erfara om det här.
00:20:42
Jag tänker att jag ska hålla en presentation om det här någon gång.
00:20:46
Jag tycker det är väldigt kul. Jag har lekt lite grann med React 3 Fiber och byggt lite små saker i.
00:20:52
Det är så jävla roligt. Jag har försökt med 3G-s förut, men tyckte att det går inte.
00:20:59
Det är för mycket att hålla koll på. Man ska anmounta och hålla koll på när komponenten lever.
00:21:04
Man ska attatcha saker till varann och det här bara händer av sig själv.
00:21:08
Och sen har det i det här biblioteket nu för tiden lite så här,
00:21:11
ger till lite grejer som att den sköter typ boilerplate kring responsivitet och sådana saker också.
00:21:19
Vilket också gör det mycket, mycket enklare att använda det liksom.
00:21:21
Ja, för att alltså vanligtvis när man pratar om 3D sådant,
00:21:25
det är ju som du säger, det är en jäkla massa att hålla koll på.
00:21:27
Var är ditt objekt? Vart är kameran? Vart är fysiken i det här?
00:21:31
Vart, hur vänder sig sådär?
00:21:32
Jag tycker bara det är en stor klump av förvirring.
00:21:39
Ja, exakt. Och just det här lilla communityt som har byggt upp sånt här har byggt massa grejer runt omkring det.
00:21:44
Typ det finns ett fysikbibliotek som heter Canon.
00:21:47
Och då har de gjort en hook som heter Use Canon.
00:21:50
Som man bara kan hooka in på det här med React 3 Fiber.
00:21:54
Och så får du fysik helt plötsligt.
00:21:56
Ja, det är häftigt.
00:21:58
Och så finns det lite andra grejer. Nu såg jag någon som hade byggt en flex-komponent,
00:22:03
så att du kan använda flex i dina 3G-grejer, alltså typ i WebGL,
00:22:08
som också anpassar sig efter hur responsiv, alltså om fönstret förminskas och sådana grejer.
00:22:13
Och det är också sjukt tufft.
00:22:15
Ja, jag blir alltid så fascinerad av människor som har sånt otroligt driv i de här grejerna.
00:22:22
Jag är verkligen inte en sån, jag är mer så här, ja, jag hamnade i React-världen
00:22:32
och sedan stannade jag där och så typ lärde jag mig att använda det och så går jag till jobbet
00:22:36
och så skriver jag saker i React och så försöker jag att hålla mig uppdaterad
00:22:41
och läsa problem på ett bra sätt.
00:22:43
Men det fascinerar mig verkligen det här drivet som finns hos vissa, att jag ska bygga på det här
00:22:49
Och jag har den här idén och kan förverkliga det här, kan jag som Dan Abramov bygga ett state-hanteringspaket med bättre dev-experience än vanliga flux-mönstret på 90-rader kod, eller vad det var man gjorde.
00:23:04
Alltså det är helt otroligt. Jag känner mig så långt borta från de här individerna.
00:23:12
Jag känner mig också, jag tänker att jag driver på ett annat sätt.
00:23:16
Jag tycker ju om att lära mig saker, men sen bygger jag ju, jag bygger ju liksom inget bibliotek eller ramverk.
00:23:23
Jag tycker om att det är roligt att bygga produkter, om man får använda produkter i en skan brett.
00:23:27
För ingenting jag bygger är ju liksom kommersiellt.
00:23:31
Men jag tycker om att bygga saker som att jag vill bygga en gameshow nu till exempel.
00:23:37
eller att jag har byggt någon sån här Gerard-app, eller det här rita-gissa-spelet som vi pratade om för något avsnitt sedan.
00:23:44
Alltså det är sånt jag tycker är kul att bygga, men inte bygga stenarna dit.
00:23:50
Nej, jag tror att hela den här grejen som vi pratade om, att jag tycker det är jobbigt att ta in saker och lära mig saker,
00:23:59
Jag tror det är det som lite hindrar mig från att verkligen förstå smeten nere i hur funkar faktiskt browsers?
00:24:09
Hur funkar det? Jag kan förstå de här mer översiktliga, du har JavaScript, du har web-APIs, du har en eventloop
00:24:15
som trycker upp saker när stacken inte är upptagen. Sådana saker, men verkligen ner i kärnan på hur saker funkar
00:24:24
som jag ändå tror är en förutsättning för att kunna bygga nya verktyg.
00:24:28
För du kan ju inte bygga någonting som många ska använda om du inte förstår vad som händer.
00:24:32
Ja, så är det.
00:24:34
Jag önskar verkligen att jag orkade lära mig det, tror jag.
00:24:38
Mer, tror jag, än att lära mig bygga produkter.
00:24:42
För jag känner mig inte innovativ, eller nytänkande, eller kreativ nog,
00:24:47
för att komma fram till roliga produkter.
00:24:50
som vi har pratat om förut i några avsnitt, jag är mer en tutorialsperson.
00:24:54
Så om något skulle driva mig så tror jag det skulle vara att grotta ner mig i teknik.
00:24:59
Men jag har fortfarande inte riktigt hittat något bra sätt att göra det.
00:25:02
För det är alltid som att det ligger på för enkel nivå eller för svår nivå.
00:25:08
Det här mellantinget tycker jag är svårt att hitta information kring.
00:25:12
Ja, exakt. Det känns ju som att när jag har känt att jag behöver,
00:25:17
Jag kanske vill grotta ner mig i någon teknisk detalj.
00:25:21
Så blir det ofta att jag vill hitta något jag kan använda det för.
00:25:24
Jag vill ha ett användningsområde. Jag vill liksom "Vad kan jag bygga med det här?"
00:25:27
Och den frågan har ju inte ett enkelt svar alltid.
00:25:32
Så för min del blir det alltid svårt att "Om jag ska lära mig mer om eventloopen i JavaScript, vad ska jag bygga för det här?"
00:25:41
Och jag är mer så här, jaha, det är så här det har funkat när jag har gjort de här bitarna.
00:25:47
Så att jag får mer av när jag lär mig sådana bitar så får jag mycket mer av en aha-upplevelse
00:25:50
för att jag kan koppla det till saker jag har gjort.
00:25:52
Inte vad jag skulle vilja göra.
00:25:54
Nej, men exakt.
00:25:56
Nej, jag tycker det är lite motivation.
00:25:59
Det är väldigt svårt.
00:26:01
Ja, jag tror att jag märker det så tydligt också att jag får väldigt så här fatig av att jobba.
00:26:09
Det är inte det att jag egentligen inte gillar teknik, men det är att jag gör det hela dagarna så blir jag trött.
00:26:16
För jag märker det tydligt om jag har haft semester eller jag kanske har suttit på bänken och haft lite tid att komma på sig själv.
00:26:25
Där brukar min kreativitet kicka igång.
00:26:28
Så jag känner ändå att jag gör saker och provar nya tekniker, men då gäller det att jag inte har gjort det åtta timmar per dag.
00:26:38
Ja, men exakt. Det är väl liksom helt naturligt.
00:26:42
Alltså jag tror att de flesta är väl så.
00:26:44
Att sitter man och knackar kod åtta timmar per dag,
00:26:46
man går inte hem och knackar kod igen.
00:26:48
Nej, men det finns ju ganska många som kodar mer.
00:26:55
Det finns i alla fall en bild av att många gör det.
00:26:59
Jag tänker att visst, det finns folk som gör det,
00:27:01
men jag tror också att det är en, jag kommer inte ihåg,
00:27:04
Och Scott Hanselman, som är Microsoft-superkänd bloggare, han har myntat ett uttryck som är "Black Hole Developers" eller "Black Mass Dark".
00:27:19
Något liknande uttryck som handlar om den här dolda gruppen med utvecklare som inte bloggar, som inte twittrar, som inte snackar code på kvällarna.
00:27:29
Och den är ju garanterat övervägande majoritet.
00:27:32
Alltså, liksom, jättestor del majoritet skulle jag våga säga säkert.
00:27:37
Och det är så lätt att man fokuserar på folk som jag, som sitter och skriver bloggposter,
00:27:43
nog för att det tog sedan ett halvår, men det är lätt att fokusera på de som syns väldigt mycket
00:27:48
och tänka att det är normen, när det i själva verket inte alls är det.
00:27:52
Nej, men det blir ju som, vad är vi igen på den här sociala medieffekten, det vi ser, är det som vi tror i verklighet.
00:28:01
Det är ju lite som de här vändiga grammen igen, vad jag kan, vad jag tror att alla andra kan, hur jag lever mitt programmerarliv och vad jag ser andra programmerare göra.
00:28:12
Ja, nämen exakt.
00:28:14
Nej, jag tycker det är fan viktigt att poängtera det på något sätt.
00:28:18
Att liksom så här, bara för att vi poddar så behöver inte folk podda.
00:28:24
Nej, Gud nej.
00:28:26
Bara för att någon bloggar så ska man inte behöva blogga liksom.
00:28:28
Tycker man att det är kul. Jag bloggar ju mycket för att, min egen skull.
00:28:33
Alltså jag vill skriva för att lära mig liksom.
00:28:35
Sen är det ju såklart, alltid en dopaminboost när man får någon like.
00:28:38
Men jag gör det ju mest för min egen skull.
00:28:41
Och det är också därför jag pratade om det här i något tidigare avsnitt, att jag kallar det här "digital garden".
00:28:46
Kan ha nämnt det. Det är i alla fall konceptet med att man ska sköta om sin hemsida och uppdatera saker mer än att bara producera nytt hela tiden.
00:28:56
Alltså det ska liksom inte vara en kronologisk lista över saker, utan det ska mer vara så här, "jaja, det här är lite saker jag håller koll på".
00:29:01
Så typ den här, alltså codesmelt-grejen till exempel, den kommer jag förmodligen lägga på saker på om jag hittar några mer saker.
00:29:06
- Lite agilt så. - Det var lite agilt.
00:29:09
Jag gillar verkligen det konceptet, för det sänker så mycket tröskeln för att skriva saker.
00:29:14
Så den här bloggposten har ju varit publicerad på min sajt, inte sedan i maj, men sedan i juni kanske.
00:29:19
Bara i kortare versioner, som jag har uppdaterat lite då och då.
00:29:23
Tills jag nu faktiskt länkade den på lite olika ställen.
00:29:27
Ja, jag är inte så mycket för att skriva sådana saker.
00:29:32
Och gör jag det så blir det alltid med den här lite mjukare twisten på det kanske.
00:29:37
Nu sitter jag här och poddar, men överlag är jag en av dem som är i den här black mass.
00:29:45
Jag gör inte så mycket utöver jobbet. Det har mer med att jag är trött.
00:29:53
Jag har fortfarande inte riktigt accepterat det, men jag har lagt väldigt mycket tid på att
00:29:59
acceptera att jag inte orkar koda på helgen och lära mig nya saker på helgen.
00:30:04
För de första åren i min karriär var det väldigt mycket så.
00:30:08
Jag försökte gå till jobbet och sen så satt jag och försökte lära mig saker på helgen.
00:30:11
Webpack-konfigurationer eller bara...
00:30:15
The good old days.
00:30:17
Ja, alltså när jag satt och så lärde jag mig webpack och sedan dagen efter jag hade spott upp det,
00:30:22
de bara "ny version!" och jag bara "åh, det var mycket ångest".
00:30:26
Så jag har räckt rätt mycket tid på att verkligen förlika mig med att jag behöver inte göra allt det här
00:30:31
för att vara bra på mitt jobb.
00:30:33
- Ja, exakt.
00:30:35
Det tycker jag är en väldigt bra,
00:30:37
positiv note
00:30:39
att avsluta det här på.
00:30:41
Tänker jag mig.
00:30:43
Vi finns som vanligt på Twitter. Vill man något så är det bara att höra av sig där.
00:30:45
Ge oss gärna en recension i iTunes.
00:30:47
Det är alltid härligt.
00:30:49
För då får vi en liten dopaminboost båda två, tror jag.
00:30:51
- I alla fall du.
00:30:53
- I alla fall jag. Du är lite mot WilliPod, eller?
00:30:55
- Ja, jag börjar förlika mig med det.
00:30:57
- Ja, det är bra.
00:30:59
Vi ses om två veckor igen.
00:31:03
Bye bye!
00:31:05
[Musik]
00:31:12
Hej då!
Tillbaka upp