Februari-fokus: IoT Maker Show

Som en fortsättning på inlägget Till följd av utmaningen Elephant Edge; Jag fick frågan om jag ville dema mitt projekt under en live-intervju vilket jag tackade ja till 🤯 så nu är jag nervös och förbereder detta om kvällarna. Förhoppningsvis blir det en rolig och spännande erfarenhet så det är väl det som motiverar! Redan sen innan har jag vetat om att de tio vinnande bidragen i Hackster-utmaningen skulle få vara med i Microsoft Developer IoT Channel vilket blir rätt nära i tid så jag hade preppat/varit nervig för det ändå. Den här andra inspelningen för The Maker Show blir längre i och för sig.. vad har jag gett mig in på 😅 

På tal om det så har början av året har verkligen blivit en IoT-bootcamp alltså. Sysslar med detta på Gaia om dagarna och så har Microsoft har peppat sin 30-dagarsutmaning där deltagare ska ta sig igenom en hel ”learn path” på 30 dagar. Jag faller ju pladask för den typen av utmaningar och nu har jag kört igenom ett gäng moduler i MS Learn. Vill jag sen så går det att ta certifikat inom detta område vilket innebär att plugga till prov, vore ju kul att testa. 😄

Roligt denna månad är också är ett paket som äntligen kom med posten! Det här året samarbetar jag med Edge Impulse och de hade skickat ett kit med olika microcontrollers som jag kan experimentera med. Resten av ambassadörs-gänget fick sina kring jul men till Sverige tog det tid minsann, men nu har jag glatt kunnat öppna allt och börja mecka! 

edgeimpulsekit
Paket från Edge Impulse med ett gäng microcontrollers som jag ska trixa med maskininlärning på!

UTVECKLING AV CAMPUSKOST: Chatbot, Översättning & Animationer

Efter React-kursen som jag berättade om i förra inlägget och mycket omskrivande av gammal kod så jag äntligen lagt till lite nytt i mitt hemmaprojekt Campuskost! 

Nytt är en chatbot, påbörjad översättning till engelska och animationer. Först kommer här en kort videodemo och nedanför beskriver jag lite om varje del. Jag blev glatt överraskad över hur smidigt de olika sakerna gick att implementera, det är ju inte sällan något krånglar lite först 😅

  • Chatbot: För detta använder jag react-chatbot-kit, ett bibliotek med React-komponenter och funktionalitet för att sätta upp logiken för en chatbot. Man får definera sin MessageParser, Config och ActionProvider som avgör bland annat vad botens initiala meddelande är, hur användarens meddelande ska analyseras och vad jag vill ska hända vid olika scenarion. Jag gillar hur flexibelt biblioteket verkar vara, t ex går det att anpassa hur chatrutan ska se ut och lägga till egna ”widgets” i configen, alltså små komponenter som läggas till i chatten. I videosnutten ovan är valet mellan ”Om Campuskost” och ”Ladda upp recept” en widget, en liten komponent med två knappar. Hittills har jag lagt till ett par fördefinerade meddelanden samt att den lyssnar efter nyckelord för t ex hälsningsfraser eller om man ber om tips på recept – tillsvidare är tipset alltid pannkakor.. 🥞😉 Jag tänker mig att det är möjligt att integrera maskininlärning med detta senare, alltså att just botens svar genereras av en AI-algoritm istället för hårdkodade. Det vore kul att testa!

  • Animationer: Först testade jag Framer API men kände sedan att react-anim-kit
    (från samma utvecklare som chatbot-kitet faktiskt) passade bättre att börja med för ett par enklare fadein-effekter. Jag gillar hur appen plötsligt känns mer levande! 🌟 Kanske att jag ger Framer API en till chans sen för andra typer av animationer.

  • Översättning: För översättning valde jag att använda react-i18next som jag använt motsvarande fast Angular-varianten i projekt på Gaia. Det blir inte en massa if-satser utan översättningen defineras i json-filer och sedan sätter man ett globalt state för vilket språk som är aktuellt. För att förenkla översättningen ytterligare så körde jag igång en testversion av verktyget BabelEdit (bild nedan) där man kan fylla i översättningen i ett gränssnitt och där man även får förslag på översättningar. Sedan har jag fått gå in i koden på alla ställen jag har hårdkodad text och ändra från t ex Välkommen till campuskost till ett funtionsanrop {translate(”startpage.welcome”)}

     

    Ett annat sånt här roligt hack som jag tänkt på är att de bilder man lägger upp ska analyseras med en bildklassificerare för att upptäcka olämpligt innehåll automatiskt. Så håll utkik ifall det dyker upp – kanske dags att börja premenurera på bloggen?! 👀 

React Bootcamp

React-plugg i soffan 👌

Efter tips har jag skapat mig ett konto på Scrimba, en plattform för interaktivt lärande av front-end. Hittills så är jag positivt överraskad och jag tycker verkligen om deras lektioner som är en kombination av kodeditor och videotutorial. Man kan alltså pausa videon och ändra koden!

Jag kodat med React (javascript-bibliotek) till och från i några år och var nu sugen på att fokusera ett tag på att plugga på olika koncept. När jag kodar på mitt hemmaprojekt Campuskost så händer det ofta att jag behöver få fram en lösning på ett specifikt problem och letar fram något som fungerar. Däremot kanske den lösningen inte blir särskilt sammanhängande med resten av koden och det blir snabbt stökigt (läs t ex mitt inlägg Utveckling av Campuskost: Clean code och användartester). Det känns därför kul att vända lite på det, att ta ett koncept (t ex använda React Context API) och använda det till något godtyckligt bara för att lära sig.

Det här känns som en kul grej nu när jag har mycket ledig tid på kvällar och helgar. Den här helgen hade jag som mål att komma fram 10% i kursen React Bootcamp – check! Jag är halvvägs igenom nu och ser redan fram emot att fortsätta koda egna projekt efter att ha lärt mig mer 😃 

Tips på Fler plattformar

.. som är smidiga för att snabbt komma igång med att öva front-end.

Vissa kan man koppla till att publicera sin hemsida/webbapp, åtminstone CodeSandbox och StackBlitz vilka också är de jag har använt mest. Lycka till 🚀

Så här ser det ut när man skapar en React-app i StackBlitz. Det går alltså att se resultatet alldeles intill där man kodar (eller öppna i helskärmsläge)

Till följd av utmaningen Elephant Edge

Här kommer en uppdatering kopplat till mitt förra blogginlägg, där jag berättade om att jag skickat in ett bidrag till utmaningen ElephantEdge. Mitt projekt blev utvalt till ett av de vinnande bidragen! 🐘 Hoff poff så har det också fått synas på LinkedIn, presenterats som ett ”featured project” på Hackster och i en artikel på Techcrunch (Can artificial intelligence give elephants a winning edge? ). Lite märkligt med så mycket lovord, som ”..With little resources and support, Sara built a full telemetry dashboard combined with ML algorithms..” medan det vore mer riktigt att beskriva det som ett proof of concept. Men ja det blir väl mer slagkraftiga artiklar så 😅. Väligt kul iallafall! Verkligen en påminnelse om att det kan vara värt att göra ett försök när det dyker upp något som verkar roligt (förutsatt att man har tid och energi), som jag nämnde i förra inlägget var jag ju nära att inte skicka in något alls när det var ett par dagar kvar.

Skärmdump från artikeln på TechCrunch

En annan följd från att jag var med i utmaningen är att jag blev kontaktad av Edge Impulse som var medarrangörer. De frågade om jag ville fortstätta mecka med hårdvara och deras verktyg för TinyML för att sedan skriva blogginlägg, göra tutorials etc. Och det ville jag! Så mer småprojekt i den här stilen blir det under 2021. 😃🧪 

Får snart en låda med hårdvara anpassat till maskininlärning på små enheter att pyssla med!

Ny på Hackster och med i utmaningen Elephant Edge

Jag har skapat ett konto på Hackster.io! 🤖 ”The world’s largest hardware and software developer network” enligt dem själva. Här kan den som vill beskriva sina hemmasnickrade lösningar och lära av andras. Jag har trillat in på sidan ett par gånger tidigare men nyligen släpptes en utmaning som hade med elefanter att göra och då kom jag till skott med att skapa ett konto. Uppgiften gick ut på att tänka sig att man utvecklar en IoT-lösning för ett litet sensorpaket som elefanter skulle kunna ha på sig. Det var ganska fritt var man fick göra och inga krav på att mecka ihop all hårdvara utan det gick bra att simulera hur lösningen kan fungera, däremot skulle både verktyget Edge Impulse och platformen IoTConnect användas. Några dagar innan deadline kändes det som att jag hade ett för spretigt och halvklart bidrag och funderade jag på om det ens värt att slutföra och skicka in. Men kul att försöka iallafall ju! Så jag satt uppe lite för sent de sista dagarna och sammanställde vad jag hade så gott det gick. Nu blir det spännande att invänta juryns besked om 2 veckor. Bara det att juryn, med t ex  Sarah Maston som startade Project 15 (se video nedan), kommer att läsa igenom vad jag gjort känns häftigt. Har insett att det är den typen av personer som jag blir starstruck av 😅🤩

Här kommer en länk till mitt bidrag: TinyML and IoT for Conservation Efforts

Virtuella tech-konferenser och Hackathon

Tur i oturen – i år när de flesta event blir virtuella har det blivit möjligt att ansluta till alla möjliga tech-konferenser. Ofta kan man se inspelade presentationer i efterhand men nu sköts även mingel och frågestunder online. Jag testade att anmäla mig till en one-on-one konsultation med en specialist inom IoT under Microsoft Ignite och det var så roligt! Lyxigt och motiverande att man som junoir utvecklare kan ta del av sådant bara sådär tycker jag. Här är några jag har kikat in på senaste tiden: Jamstack Conf Virtual (webb), Cloud Engineering Summit och Microsoft Ignite 2020.

Den senaste veckan har jag annars suttit lite för klistrad med Considition, ett återkommande Hackathon som brukar vara bra uppstryt! I år var uppgiften att skriva kod som styr hur en stad byggs upp och innebar många saker att ta hänsyn till. En viktig detalj om hur byggnaders temperatur hade jag missuppfattat tills det var ett par dagar kvar så det gick lite halvbra 😅 Men som vanligt roligt att försöka, samt lärorikt se lite ny kod! tips tips här finns det kod för API-anrop i flera programmeringsspråk att hämta hem. När jag ändå är igång och tipsar; i samband med detta började jag förresten lyssna på podcasten Utveckla. Gillar hur de ger en överblick av olika ämnen inom utveckling. Hej för ikväll! 

Utveckling av Campuskost: Clean code och användartester

Mitt kära evighetsprojekt! Ibland har det tagit veckor mellan att jag har suttit med det och i vissa perioder kan jag sitta någon timme varje kväll. Nu på slutet har det blivit mer och mer i och med att nya Campuskost är live vilket ju är superkul. Än så länge har den grundläggande funktionen fått komma upp: skapa konto, ladda upp och redigera recept, ändra profilinställningar, gilla recept och följa andra användare. Jag är supertaggad på att börja med det mer komplexa, som att kunna skapa receptlistor, följa andras listor, tipsa vänner om recept, sortera efter kategorier.. Mycket är påbörjat men tidigare i somras insåg jag att det kanske gick lite fort fram och att koden började bli rätt stökig. Jag läste boken Clean Code (skulle ju också vara bra inför arbetslivet hade man fått höra) och hade därefter en samling praktiska tips att jobba efter. Så nu ett tag har utseendet på Campuskost sett i princip likadant ut, men antalet kodrader har minskat drastiskt och enklare att arbeta med. 

I övigt har jag själv och personer jag tjatat på (hehe) skapat konto och letat brister och förslag, för att sedan uppdatera koden därefter. Det är en rolig process nu! 

Sen finns det verkligen många småsaker att trixa med för att skapa en komplett plattform. För att nämna några saker jag suttit med: 

  • Flytta domänen. Tidigare var Campuskost en hemsida på WordPress. Nu är nya versionen istället en React-app ihop med molntjänster från Firebase (för lagring av data och autentisering bland annat).
  • Att automatiskt uppdatera appen för användare utan att de själva ska behöva rensa cacheminnet. Eftersom Campuskost är en progressiv webbapp (webbsida som också fungerar som en mobilapp) så sker varken nedladdning eller uppdateringar via t ex App Store eller Google Play. Det har varit relevant att använda sig utav speciella JavaScript-program, så kallade service workers.
  • Att aktivera Google Analytics för att se hur många som är inne på sidan och vilken funktion som används. Tydligen svårt när de flesta använder någon slags ad-block i webbläsaren!? Också lite speciellt med SEO för en Single Page Application. Jag ska ge mig på att skapa en så kallad Sitemap.
  • Att se till att HTTPS används för att webbläsare ska anse Campuskost som en säker webbplats. Det här ordnade jag från Netlify där jag hostar sidan.
  • Få pushnotifikationer att fungera. Jag har precis börjat kika på Firebase Cloud Messaging då det vore kul att kunna skicka notifikationer. Efter att ha kollat på Netflix nya dokumentär The Social Dilemma blev jag dock lite.. velig. Notiser i lagom mängd kanske..
  • Med mera..! 

PS. Jag blir superglad för alla som vill hjälpa till att användartesta genom att skapa konto på https://campuskost.se och testa funktionerna. På förstasidan finns en länk till ett formulär för feedback. Tack på förhand!

Jobbstart

Hej! Nu tänkte jag sätta lite snurr på bloggen igen efter sommaren. Den här veckan har jag minsann håvat in en massa vuxenpoäng. Jag och Amanda opponerade vilket var det sista lilla att göra inför examen, samt så har jag börjat jobba! Det här är alltså första gången jag börjar jobba någonstans och att det är på obestämd tid, vilket känns både annorlunda och väldigt kul. Jag har fått flera rundor intro kring vad Gaia gör inom IoT, UX och Business Intelligence bland annat, och intro till mitt första projekt. Emellanåt har jag fått trixa med en Azure Kinect för att se vad för roligt vi skulle kunna hitta på med den, samt fortsatt mitt utforskande av molnplattformen Microsoft Azure som används mycket på Gaia. 

I övrigt har jag trixat rätt mycket med Campuskost som är mitt kära hobbyprojekt. Jag ser till att uppdatera om det snart! 😃

Med utsikt över växtväggen på Gaias kontor i Norrköping

Framläggning och fortsättning

Den 11 juni la vi fram vårt examensarbete! Det blev fin dag och ändå lite festlig, och att presentera via Zoom var inte så tokigt. Projektet är nu alltså avslutat rent pluggmässigt, men vi har svårt att släppa taget om det än eftersom vi gärna ser att det kommer till användning. Vi fortsätter därför lite nu som sommarjobbare via Linköpings universitet inom projektet Agtech 2030, med fokus på att skapa en ”intelligent åtelkamera”. En kul grej är att projektet fått finansiering från universitetet, då de har ett program som stöttar aktiviteter som bidrar till hållbar utveckling. I praktiken blir det experiment med microcontrollers och sensorer, samt research om olika lösningar för IoT och maskininlärning på små enheter. Roligt att det finns så mycket att utfoska men samtidigt svårt att navigera bland alla alternativ och hinna slå fast vid något. Håller tummarna för att vi kan få fram något konkret.

I övrigt har jag 9 veckors sommarlov – innan jag i mitten av augusti börjar arbeta på Gaia! Där spenderade jag förra sommaren och trivdes bra, så jag ser fram emot att komma tillbaka. Om någon är nyfiken kan ni se här vad jag kan tänkas pyssla med, men jag uppdaterar mer i höst såklart. Det här blev en liten sommar-update alltså, passar på att dela lite sommar från kamerarullen här under. 🌞

”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. ♥