”Varför helt okej är bra nog”

En anledning till varför jag har Driventjej igång är för att uppmärksamma och påminna om allt som kan ske bakom kulisserna hos den som alltid strävar framåt. Varför det är viktigt att vi kommunicerar våra känslor och själva tar tid för reflektion och återhämtning. Det kan gå snett även om man sysslar med det man älskar att göra. 

Isabel Boltenstern har precis släpps sin bok Lycka till med resten av livet och med detta inlägg vill jag lämna en varm rekommendation. Viktig och givande läsning oavsett sin egen situation – igenkänning på något sätt lär vara ett faktum för många.

Speciellt berättar Isabel om en tidigare arbetssituation som var riktigt ohållbar. Själv har jag haft tur att inte ha hamnat i en destruktiv miljö på det sättet, men för min del är flera andra aspekter hon tar upp sådant som fastnade lite extra. Här nedan har jag lagt in några urklipp ur boken, men som sagt läs eller lyssna gärna hela (ljudbok 4h 45 min). 

Angående velande och oändliga möjligheter:

Det har nästan blivit vår generations mantra – att allt går om man bara anstränger sig tillräckligt mycket. Utbilda sig till hjärtkirurg? Absolut! Utveckla appar från en paradisö i Karibien? Varför inte! Starta eget sminkmärke och omsätta miljarder vid sexton års ålder? The sky is the limit! Till skillnad från tidigare generationer behöver vi inte stanna på en fysisk plats, vi har oändligt många gymnasielinjer att välja mellan och dessutom kan vi skapa våra egna yrken om de inte redan finns. Vi är en generation som vill ta tillvara på den fantastiska chansen och inte nöja oss i förtid. Världen är ditt smörgåsbord, så vad väntar du på? ..

..

.. Det är väldigt fint i teorin att vi har förutsättningar att uppnå vad vi vill, men i praktiken blir det extremt överväldigande. Vi vet att det här är angenäma i-landsproblem och därför skäms vi på kuppen.

Angående rastlöshet:

Att göra ingenting handlar inte nödvändigtvis om att ligga raklång på rygg och stirra upp i taket. Det handlar snarare om att bryta det invanda beteendet att man ständigt måste göra någonting som för en framåt. Och varför är det så svårt? ..

..

.. När jag tittar tillbaka på tiden då mitt mående var som sämst är det tydligt hur jag successivt skalat bort allt ’onödigt’ från mitt liv. I stället för att koppla av och spela Candy Crush på ett flyg kunde jag researcha hockeyspelare för att bli bättre på mitt jobb. Golfrundorna var meningslösa om jag inte sänkte mitt handicap. Träningen skulle vara stenhård och ge synliga resultat – vad var annars poängen? Utan mål kändes allt onödigt. Ett slöseri med tid jag kunde förvaltat bättre.” .. ”Komiskt nog är det jag tidigare ansåg vara att ’slösa liv’ precis samma saker som jag i dag benämner som återhämtning. Småsaker jag gör av lust, som inte handlar om prestation.

Och en övrig tankeställare: Avundsjuka kan härja trots att du älskar någon. Framtidsoro kan gå hand i hand med inspiration. Pepp kan armkroka prestationsångest. ”  Jag hoppas att det här inlägget når någon som är i behov av det. ♥ 

Motiverande att skapa sin egen Engineering Wiki

Jag kan tänka mig att vi är många som gillar tanken på att ha sitt digitala liv välorganiserat. Som att ha alla foton sorterade i mappar och ha allt pluggrelaterat i bra ordning. Att alla kodprojekt skulle vara städade och väldokumenterade. Hehhh ja det vore ju en dröm. Jag påbörjar mitt organiserande titt som tätt men hinner inte bli klar innan det fylls på. Snart så! .. efter examen kanske 😄 

Hursom, när jag lyckas få (någorlunda) ordning så motiveras jag av det. Det är något med känslan av nystart som är så skön, att veta att från och med nu kommer jag kunna arbeta i en trivsam och fokuserad miljö. Just nu är jag taggad på att organisera mitt programmerande och allt som rör det! Speciellt så har jag inte haft något bra sätt att spara artiklar, tutorials, github-repos eller liknande. Nu har jag fått tips (♥!) om att använda Notion och gillar det verkligen. Kortfattat är det ett slags verktyg för anteckningar och dokumentation – med många smarta funktioner. Det går t ex att bädda in videoklipp från Youtube, Figma-skisser m.m. Jag tänker att det blir en perfekt vertyg att samla alla de kodsnuttar, länkar och annat som jag använder när jag kodar. Hittills har jag påbörjat dokumentation för det som jag vill ha lättillgängligt när jag sysslar med webbprogrammering.

Skärmdump av min påbörjade Notion för programmeringsanteckningar

Till jämförelse så har jag tidigare sparat orimligt många bokmärken (se bild till höger..). Jag gjorde en snabb översikt nu och jag har tydligen mellan 200-300 kodrelaterade bokmärken.. Det blir alltså snarare att jag på nytt söker reda på det jag letar efter. Alternativt att jag letar i mina egna programmeringsprojekt, typ ”i denna fil borde jag ha ett API-anrop där jag uppdaterar ett dokument i Firebase”. Från och med nu kommer jag istället kunna gå in i min egna koddokumentation och hitta direkt. Pepp!

Bara av anledningen att det ska bli kul att lägga in saker jag lär mig i min Wiki blir jag sugen på att testa fler programmeringsspråk och verkyg, nördig som jag är. 🙂 Det kanske är något för dig med!?

Att bli labbassistent

Rolig nyhet! Jag fick nyligen ett pris från Akademiska föreningen vid Linköpings universitet. Det känns väldigt roligt att få ta del av det här priset då det är resultatet av arbete som har genomsyrat en större del utav min utbildning. Till er som nominerat mig eller låtit mig veta att ni varit glada att haft mig i en kurs eller på andra sätt blivit inspirerade, tack! Roligt att Driventjej fanns med i motiveringen också. Jag tänkte att det var passande nu att peppa nästa generation av labbassistenter 😀

Det här med att bli kursassistent  👩‍🏫💻

Först och främst, om det känns läskig att signa upp sig som labbassistent så låt inte den tanken stå ivägen. Tänk på att det är ofta gott om tid tills kursen drar igång och att du hinner förbereda dig. De första gångerna jag skulle hålla pass så ville jag gå igenom labben flera gånger som förberedelse. Med tiden så blir man säker på sin sak, och plötsligt inser man hur förberedelserna trappas ned och nervositeten lägger sig.

Sen kan det såklart vara lite läskigt att ta på sig rollen att vara den som ska kunna. Så länge du är ordentligt förberedd på labben så ska det inte vara några problem, övriga frågor går alltid att hänvisa till examinatorn. Man måste kunna acceptera att det kommer alltid finnas studenter som kan mer än en själv, även bland de som du ska hjälpa. Framförallt när det gäller programmering så är det sällan till någon nytta att jämföra sin kunskap och utveckling med någon annan än sig själv. Den påminnelsen kan göra lärandet så mycket roligare!

En bonus med det hela är den repetition och förståelse man får för kursinnehållet. För mig innebar det att programmering blev lättare för mig generellt och därmed hade jag också mer tid för mattekurserna. Samtidigt så är det väldigt roligt att lära känna studenter i andra årskurser och att få vara med om deras ”Aha!”-upplevelser när de förstår ett programmeringskoncept. Speciellt om det var något som man själv tyckte var svårt. Då känns det toppen att senare kunna förklara samma koncept.

Om du som läser detta går i tankarna om att söka till labbassistent (eller liknande engagemang inom studentlivet), så vill meddela att ja det kommer vara värt det 😊. Rent praktiskt rekomenderar jag att höra av sig till examinatorn i kursen och meddela ditt intresse. Lycka till!

Exjobb och examen när det mesta står still

Jag som såg framför mig min 25-årsdag på savannen i Afrika och ett ordentligt examensfirande. Nu blir det ingen resa med exjobbet såklart, inte på länge iallafall, och framläggningen lär ske på Zoom. Vilket antiklimax på studietiden va! Jag och Amanda är ändå tacksamma att kunna fortsätta med arbetet ganska som vanligt. Vi kommer åt kameran på Kolmården från våra datorer och kan koda och skriva rapport från vartsom. Driftsättningen på Kolmården blir lite uppskjuten i och med att flera är inblandade på den fronten, men förhoppningsvis blir det av under sommaren. 

Vissa dagar har jag känt mig väldigt trött och jag kan tänka mig på att det beror på alla nyheter och tankar som behöver processas. Samtidigt som allt det jobbiga så har jag ett par väldigt betydelsefulla veckor bakom mig. Min bästa vän har fått en bebis och jag har signerat både ett kontrakt för anställning och ett för att bli sambo med min pojkvän (♡!!). Det är verkligen en konstig känsla att sväva på moln av glädje samtidigt som att vara less på tillvaron. Och vad konstigt att jag i efterhand kan sammanfatta veckorna med bara vilka positiva saker de resulterade i, när det i många stunder var orofyllt. Värt att ha i åtankte för den som läser i efterhand. Ta hand om er!

Inne och nosar på hackathons

Först och främst, som en kortfattad beskrivning så är ett hackathon ett event där programmerare träffas och kodar på projekt under endast en eller ett par dagar. Projekt som står ut lite extra inom olika kategorier brukar belönas med ett pris, så det ses ofta som en tävling. Värt att nämna är också det kan handla om att skapa idéer och designa prototyper, så det behöver inte innebära kod för alla. Hursomhelst, jag gillar verkligen konceptet med hackathons. Det är så häftigt hur mycket man kan göra på kort tid om man bara är sådär galet engagerad och lösningsfokuserad. 

Ett antal gånger har jag gått in helhjärtat i hackathons, framförallt när vi var iväg på East Sweden Hack och faktiskt tog hem ett pris, eller mitt sista-minuten-hack på Stanford Tree Hacks.
Andra gånger har jag nöjd mig med att vara inne och nosa på eventen. Under ett hackathon serveras det nämligen en massa spännande kunskaper och resurser att ta del av och det kan vara helt ok att anmäla sig just för att lära sig mer i en så stöttande miljö. 

De två senaste åren har jag också varit anmäld till The Considition, ett längre hackathon online som hålls årligen av företaget Consid. Ena gången skulle man koda en bot till ett 2D-spel som skulle ta sig igenom ett förenklat triathlon, och andra gången träna en CNN-model som skulle segmentera drönarbilder. Otajmat nog så var den första utmaningen innan jag läst kursen där jag och Emma gjorde detta projekt med just en bot i ett 2D-spel, och den andra utmaningen innan mitt nuvarande exjobb med mycket CNN-modeller. Det gick inte topptopp med andra ord! Trots att jag inte skickat in ett slutgiltigt bidrag så har det känts värt att vara anmäld och testa lite. Jag tror att en stor anledning är just att få tillgång till en uppsättning kod att lära sig av. 

Gemensamt för det är kodtävlingarna är att man blir inbjuden till något slags chattforum, nästan alltid Slack, och där kan man få hjälp och inspiration av arrangörerna, sponsorer och andra deltagare. Just nu sitter jag och skummar igenom alla idéer som publicerats i Slack för Hack The Crisis (Sveriges officiella covid-19 hackathon). Själv har jag varit så trött i veckan så jag tror inte en hel helg framför datorn är vad jag behöver. Däremot ska jag helt klart kika igenom de verktyg som nämns i dokumentet ”The Ultimate Hackathon Tools Bible”, och öppna dataset samt API:et som det tipsas om. I övrigt gällande tekniska lösningar för covid-19 har jag nu i dagarna lyssnat igenom den konferens om AI-lösningsar i koppling till pandemin som Stanford höll online.

Mitt i allt elände är det ändå fint att så mycket blir tillgängligt för alla. Min pojkvän Samuel har även kontinuerligt skickat länkar till olika gratiskurser man kan ta nu (t ex denna) och som resultat av det har jag påbörjat kursen Practical Ethical Hacking på Udemy. 

Summa summarum: det finns så mycket att ta del av, utnyttja det!! 😃

Till vänster: Meddelande från Telia som bidrar med öppet dataset för Hack The Crisis. Ovan: vänner på Hackathon för ett par år sedan!

..

Exjobbsnytt: VPN, RTSP, threading, Raspberry Pi..

.. med mera! De senaste veckorna av exjobb har bjudit på många nya tekniker och kluringar. Projektet innehåller många delar som ska kopplas samman (se detta inlägg) och vissa av dem har känts lite abstrakta fram tills nyss. Exempelvis så visste vi att det fanns en Axis-kamera på plats på Kolmården. Däremot visste vi inte riktigt vilken funktionalitet den hade och hur vi skulle kunna komma åt videoströmmen. När något känns abstrakt är det ju ibland också svårt att formulera de frågor man behöver svar på.. Nu är vi glada över att ha ersatt flera frågetecken med spännande resultat 😀

Livedetektion av Zebror på Kolmården - från kontoret!

Förra veckan var vi iväg på två besök som gjorde saker och ting klarare för oss. Vi spenderade en heldag på Kolmården och fick lära oss om den hårdvara som används för projektet. Eftersom målet är att få ut kameran mitt på savannen så jobbas det på ett elskåp som drivs på solceller. Skåpet är fyllt med batterier, spänningsmätare, nätverksswitch m.m. och var också något som kändes abstrakt förut (iallafall för mig som inte har så bra koll på ellära hehe). Lyckligtvis fick vi en bra genomgång på Kolmården och närmare förståelse av kopplingen mellan kameran, skåpet och den Raspberry Pi som vår kod ska in på.

Att koppla upp till kameran var minsann klurigt ändå. Dels så behövde vi koppla upp oss via Kolmårdens VPN och därefter skicka en request för en specifik url för att komma åt videoströmmen via RTSP (Real Time Streaming Protocol) som inte var helt lätt att hitta. Tydligen så spelade det roll vilken webbläsare vi satt i och vart vi skrev vår kod, så ibland kunde vi tro att vi fastnat fast vi var på rätt väg.. tur att vi är envisa 💪

Dagen efter var vi på besök hos Axis Communications och fick mer koll på deras kameror och en del övriga tips. Hem från Linköping fick vi även med oss en Raspberry med kameramodul som vi kunde lägga in vår detektionsmodell på och testa i realtid på kontoret. I tidigare projekt där vi använt en Raspberry så har någon annan haft det ansvaret, så det var kul att vara med i trixandet den här gången och lära sig mer! 

Ytterligare nytt är att vi börjat med Dropbox for Python SDK för att skicka vidare resultat från vår Raspberry och då vi testar livestreamen från Kolmården på datorn. Sedan (puh!) för att kunna detektera djur i videoströmmen i realtid så dök jag idag in i threading-djungeln. Kortfattat så skickar vi nu iväg en viss frame för detektion, och ser om den föregående är klar. Innan denna ändring så laggade videon då vår modell behöver ca 300 millisekunder att hitta eventuella objekt, medan nu upplevs det som att videoströmmen detekteras live.

Fler inlägg om exjobbet:
Exjobb Ngulia – Vad gör vi
Exjobbsstart
Reka exjobb i djurparken
Mina drömmars exjobb. händer det??

Amanda meckar med elskåpet på Kolmården!

Utveckling av Campuskost: Att använda Firebase

Grundläggande funktionalitet för nya Campuskost börjar falla på plats! Fram tills igår har t ex bilderna som används i recepten varit testbilder som legat i samma mapp som projektet. Nu kan en användare ladda upp en bild från sin mobil eller dator och den lagras istället på Firebase. Jag tänkte att det kan vara intressant att berätta lite mer om hur just Firebase kan användas. 🔥🧐

Via Firebase kan man bland annat skapa en databas för sitt projekt och lagra filer online. Deras molntjänster är gratis för mindre applikationer så det är perfekt att använda för att lära sig. Det finns alltså begränsningar i gratisnivån, t ex en maxgräns på att läsa data från databasen max 50 tusen gånger/dag och att lagra max 1 GiB filer totalt – men det räcker ju långt! 

I bilden nedan har jag monterat ihop en bild av hur jag använder ett några av molntjänsterna som finns på Firebase för dig som är nyfiken. Funktionalitet för att skapa ett konto och logga in sköts av Firebase Authentication och de hanterar även lösenord. Än så länge har vi att man skapar konto med sin email med det ska också gå att ordna så att man kan logga in via Facebook eller sitt Google-konto, vilket ju känns proffsigt. Database är en NoSQL databas och dess struktur är som ett JSON-objekt, dvs en trädstruktur. I databasen kan man lagra dokument med ett antal datatyper att välja mellan, exempelvis strings, numbers, booleans och arrays. Bilder och andra filer däremot lagras med fördel i Storage. När man öppnar Storage ser det ut lite som en vanlig mappstruktur på sin dator. 

En utmaning som jag arbetat med är att koppla ihop dessa tjänster. T ex att det ska skapas en nytt dokument i databasen när när en ny användare skapat ett konto. I databasen ska nämligen all information lagras om vilka recept en användare har, vilka recept som sparats, användarnamn och så vidare. Sen gällande att ladda upp ett nytt recept så lagras bilden i Storage medan listan av ingredienser, titel och annat lagras i Database. Då gjorde jag så att ett receptdokument i databasen har ett attribut, img_url, vilket kan kopplas till bilden i Storage. Detta fick jag lösa genom att i koden först ladda upp bilden till Storage och hämta vilken url den fick, för att sedan skapa dokumentet till databasen. 

Snart är en betaversion redo för testning. Den första versionen innehåller troligen buggar och kan sakna vissa en del detaljer. Så vi kommer vilja att ett gäng börjar använda appen/hemsidan och meddelar oss alla buggar, samt önskemål eller förslag inför vidare utveckling. Hör gärna av dig till mig eller Ronja om du är taggad på detta! 😀

Läs mer om utvecklingen av Campuskost här:
– Lära sig koda ’Progressive Web Applications’
Veckans kluring: Bästa sätt att driftsätta app och hemsida?
– Campuskost

Skiss på hur vi använder Firebase i vårt sidoprojekt
Exempel på hur vi kommunicerar med Firebase via JavaScript. (Det känns nog lätt lite abstrakt annars..) Här är den kodsnutten som laddar upp en bild och väntar på att få veta vilken url bilden fick.
Sneak peak!

Exjobb Ngulia – Vad gör vi

Växlingen mellan att vara medveten om varje timme till att tappa koll på veckodag gick snabbt alltså. Vi har redan 3 av 20 veckor av exjobbet bakom oss men jag skulle också säga att vi kommit rätt långt på den tiden. Det lutar åt att vi åker till Kenya i mitten av maj, så ambitionen att ha ett fungerande system tills dess hjälper nog mycket!

Jag har inte förklarat tidigare exakt vad det är vi gör så här kommer en liten översyn på hur planen ser ut just nu. Tänken är alltså att kamerafällor utplacerade på savannen i Kenya ska kunna detektera noshörningar, ett antal andra stora djur och männniskor (potentiella tjuvjägare..). Om kameran upptäcker något intressant ska information om detta samt bilder på detta till en server. I jämförelse med att bara lagra allt som filmas på ett minneskort som kollas igenom långt senare så hoppas man kunna agera snabbt om en kritisk situation verkar vara på gång med detta system. En del i det hela är att skapa ett neuralt nätverk för objektdetektion, som upptäcker ifall en bild innehåller objekt av en viss klass och isåfall vart i bilden. Utöver det behöver vi hantera resultatet från alla enskilda bilder på ett vettigt sätt, då det inte är relevant att skicka upp hundratals bilder från samma tillfälle för att djuret syntes framför kameran i en längre stund. Vi vill alltså kunna avgöra om det är samma individ som syntes i de föregående bilderna, vilket brukar kallas object tracking (se t ex denna video). En annan utmaning är att vår objektdetektion ska köras på Raspberry Pi, och då har vi plötsligt många begränsningar angående RAM-minne och hur stor vår detektionsmodell kan vara. När vi tränar vår modell har vi däremot tillgång till TensorFlow och gott om GPU via Google Colaboratory.

I figuren med alla ikoner nedan har jag försökt att visualisera vår process och hittills kan man säga att vi har rört alla delar förutom de längst till höger. Vi har lagt en hel del tid på att samla bilder och förbehandlat+annoterat dem, för att sedan träna en modell med dessa. Denna del i arbetet är en iterativ process och vi kommer fortsätta träna om vår modell då och då när vi har mer/bättre träningsbilder och med olika inställningar. Just nu genererar den mestadels vettiga resultat men det finns helt klart utrymme för förbättring, t ex kan en människa med svart- och vitmönstrad tröja ge utslag för att vara en zebra. Vi hade ett par kämpiga dagar med dels att behöva göra om delar av förbehandlingen av bilderna samt att konvertera vår detektionsmodell till ett format som kan köra på just Raspberry Pi och andra små enheter. Men vi kämpade på och det känns som att vi tar oss framåt igen. När vi kodar i Colab så kan vi testa att ladda upp filmsnuttar eller bilder men för att kunna testa objektdetektionen i realtid (som när vi är på Kolmården) så har vi lagt in modellen i en Andorid-app. Det gick rätt smidigt att ladda ner denna kod som är open source från TensorFlow och exportera appen med vår modell från Android Studios. 

Dagens tips: testa lite machine learning i Colab här (klicka på play-ikonen till vänster i alla celler) 💻

Ett ungefärligt flöde av vårt exjobb

Här intill är en skärminspelning från mobilappen, riktad mot datorn där en video från Kolmården spelas – och ovan en gammal bild på mig som klarade testet! 

Fler inlägg om exjobbet:
Exjobbsstart
Reka exjobb i djurparken
Mina drömmars exjobb. händer det??