Kod-våren sammanfattad

Hej och hå här har det varit tomt i några månader. Däremot har jag kodat en massa! Det blev inte en upswing i spelprogrammering som jag spånade kring i det senaste inlägget, däremot en radda Hackathons, kod på jobbet och stort fokus i flera veckor på att plugga inför en Azure-certifiering. 👩‍💻

🚍 Kod på jobbet
Den senaste tiden har vi haft stort fokus inför tester på buss i sommar med de IoT-lösningar vi har för kollektivtrafik. Då har sådant som Linux, C# och Docker varit aktuellt för mig om dagarna. Sen för det projekt vi gör kring växtrådgivning (läs mer här på Gaias blogg) så har det blivit mycket bildigenkänning och användarflöden kring det med t ex React, C# och SQL. Data/AI var också i fokus när jag handledde praktik. Nu under sommaren blir det en del geodata, optimering, mer Docker och mer IoT. Skoj skoj!

📚 Certifiering
Lite som i plugget efter att ha läst en kurs så kan man som utveckare (eller med andra roller) examinera sig inom olika tekniska områden efter att ha jobbat med det. På Gaia där jag jobbar är det mycket Microsoft Azure som gäller och där finns områden som ”Solution Architect”, ”AI Engineer” och ”Developer”. Vi har ett partnerskap med Microsoft och för den sakens skull är det bra om vi har ett par anställda med vissa specifika, t ex ”Azure Developer Associate” vilken var den som passade bäst för mig. Frågorna täckte en hel den som jag lärt mig i mina uppdrag men jag fick också lägga en del fritid då vissa områden var nya men också rätt specifika frågor som man kanske inte lagt på minnet om det inte vankades prov. Redan sen tidigare hade jag haft tankarna på att ta en certifiering i Azure IoT och jag tänker nog göra ett försök under hösten på det, även om provdagen var en riktig urladdning. 

🏁 Hackathons
Den här våren har jag hängt en hel del på DevPost, samma platform som användes när jag var med i Tree Hacks Hackathon under utbytesåret. Mest energi fick Climate Hackathon och att det blev så var nog till stor del för att jag gjorde det i ett team om tre och att vi då jobbade med en gemensam ambition. När jag signar upp mig individuellt blir det snarare att jag påbörjar något och hinner jag inte så långt är det inte hela världen utan då har jag bara lärt mig något nytt. I Climate Hackathon lärde jag känna Julia och Arun med ursprung från olika länder allihopa och med olika tidszooner då Julia satt i USA. Vi planerade kring vad vi ville göra, ansvarsområden och vad vi skulle ha klart inför inlämning och det lyckades vi följa. Med lite tur och skicklighet kan man ibland vinna orimligt stora priser, o andra sidan kan man bli helt utan så det vore väl inte så smart att lägga ner sin skäl i varje sådant Hackathon, även om erfarenheten i sig är värdefull. För flera av dessa jag gjort i våras har det slutat med att jag börjat sätta ihop inlämningen 30-60 minuter innan deadline vilket kanske inte är optimalt. 😄 

Climate Hackathon
För detta Hackathon fanns det olika spår att välja på och vi valde Waste där det fanns en rätt konkret utmaning som kändes görbar på 3-4 dagar. Utmaningen var formulerad av en organisation som skapade events för att samla in plast på ställen i världen där det dessutom råder fattigdom och hunger. För dem hade det varit enklare om de hade kunnat automatisera inläsning av data kring hur eventen gick och skapa en slags ”impact report”. Samtidigt fanns riktlinjer från själva Hackathon-fixarna som vi följde, t ex att nyttja det temporära Azure-konto man fick sponsrat. Vi gjorde en app där man kunde räkna antalet plastflaskor med hjälp av bildigenkänning, plocka ur text från fotade kvitton och spela in anteckningar med ljud som blev till text och lite annat. Det blev lite lustigt efter Hackathonet då vi vann vårt track men organisationen hade helt missuppfattat vilka förväntningar de kunde ha, de älskade verkligen vårt bidrag men trodde i princip att de skulle få ett färdigt system på tre dagar givet ett stycke text beskrivandes deras case och förstod ingenting kring kod. Well well! Vi var ändå nöjda med vår insats och framförallt var det roligt att lära känna Julia och Arun.

Monday apps challenge
Det här var ett Hackathon som var kopplat specifikt till företaget Monday som har ett verktyg där team kan organisera sitt arbete. Ett bidrag skulle vara att skapa en ”Monday app” som kunde vara en sida, widget och/eller integrering med annan tjäst ( t ex GitHub eller gmail) som blir inbäddad i en användares Monday-konto. Jag upptäckte Hackathonet lite sent och hann inte göra alltför mycket, men det jag tog med mig var erfarenheten av att arbeta med React i form av micro-frontends. Jag gjorde en Monday app där utvecklingsteam kan se varandras status i olika uppgifter och hjälpa varandra då någon fastnat, sådana saker som buggar och felmeddelanden som kanske inte brukar höra hemma i den backlog hela teamet har.

Azure AI Hackathon
Det här kändes som ett Hackathon som passade mig perfekt då jag gjort en hel det med Azure AI på jobbet. Jag skickade in två projekt som kändes roliga med tanke på mina personliga intressen kring yoga och Campuskust (mat). Bidraget kring yoga blev en webbapp där man startar sin webcamera under sitt träningspass och en ML-modell analyserar position och sedan gjorde jag så det dök upp små ljusprickar på en karta för varje person som gjorde samma position samtidigt. För Campuskost gjorde jag så en användare kan ange ingredienser och beskrivning via en speech-to-text funktion. Jag började faktiskt själv använda det sen så det var roligt!

The Worthy Web App Challenge 
Det här var också ett Hackathon som lockade då det handlade om att göra en websida som ”gör något gott för planeten” och då mest fokus på frontend. Krav var att man skulle använda något av de komponent-bibliotek som företaget har för t ex React, Angular och Blazor eller något av deras verktyg t ex för testning. Jag körde på React med KendoUI och gjorde en sida för att samla information kring ”tipping points”. Samma med detta Hackathon att jag upptäckte lite för sent men jag hann komma så här långt iallafall! De komponent-bibliotek var dock alla sånna som kostar men jag hade en positiv upplevelse då det var väldokumenterat och enkelt att jobba med.

Mars-update: börja med spelprogrammering igen?

Hej och hå. Nu pustar jag ut efter dels Maker Show och dels en intensiv jobbvecka. På jobbet skruvande vi upp takten på kodandet gällande en sak vi vill kunna dema på måndag. Sen jag började på Gaia har jag arbetat mycket med Azure IoT Edge så nu är det roligt att vi har kunnat koppla samman det med resten av den realtidsplatform vi har för kollektivtrafik. Utöver kodandet denna vecka så var det Microsoft Ignite och jag deltog i två one-on-one konsultationer med Data/AI som inriktning på den ena och IoT Edge på den andra. Under förra Ignite i höstas så hade jag också anmält mig för en sån här konsultation (se tidigare inlägg Virtuella tech-konferenser och Hackathon) och jag kom på mig själv nu med att inte alls vara nervös inför dessa vilket jag nog ändå var förra gången. Exponering är nyckeln..? Jag fick mig en oväntad boost när vi startade videosamtalet för IoT-konsulation, han hade tydligen koll på kopplingen till Maker Show och svarade att ”nej men du verkar ju vara proffs på det här” när jag introducerade mig som relativt ny inom området 😅 Sen under torsdagen sen var jag med och pratade med studenter på Medieteknikdagen vilket var skoj, det ska bli spännande att se vilka som dyker upp som kollegor sen. *hint hint* kolla in tjänsterna här vetja!

I övrigt jag har laddat ner Unity igen då det vore kul att hålla datorgrafiken vid liv. Det senaste jag gjorde var nog denna procedurella kameleont och det var ju mer än ett år sen. Sen dess har jag kodat mycket i C# inom jobbet så jag är nyfiken på hur mycket det kommer hjälpa mig inom spelutveckling. När jag gick i ettan eller tvåan på universitetet höll jag på med ett spel där man var ett lejon på savannen (vem är förvånad?? 🦁) och det var så kul att sitta med så varför inte testa lite igen för skojs skull. För att göra det bekvämt för mig så spenderade jag en hundralapp på en Unity-kurs på Udemy. Får se om jag går igenom hela i rätt ordningen eller hoppar runt lite och plockar de delar jag behöver. Jag återkommer såklart med uppdateringar ifall spelutvecklingen tar fart! 🕹️ 

I övrigt är jag också glad att våren är på gång 🌼

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