facebook tracking

Exjobb – Internet of things, streaming media, mobilitet, appar, webb, …

Här presenterar vi några exjobb på Attentec under senare tid.

Aktuella exjobbsförslag

Arrival Time Predictions for Buses using Recurrent Neural Networks

 Christoffer Johansson, 2019

2019-11-05.jpg

 

I mitt examensarbete har jag undersökt möjligheterna att förbättra prediktioner av ankomsttid för bussar med hjälp av moderna tekniker inom maskininlärning. I Sverige är vi duktiga på att koppla upp kollektivtrafiken och varje sekund rapporterar dels många bussar, men också tåg och spårvagnar sin nuvarande position. Tillsammans bildar det ett stort nätverk där varje buss i mitt fall, blir en uppkopplad IoT-enhet. Tack vare det finns det möjligheter att extrahera mönster och identifiera beteenden när man tittar hur positionsangivelserna ser ut över en lite längre tidsperiod. 

En aspekt som jag tycker är lite extra rolig är att examensarbetets utformning och fokus är sprungen ur en diskussion med Attentec och Östgötatrafiken. Det fanns ett behov av att undersöka och utvärdera hur väl dagens driftade system fungerade för att förstå och kunna föreslå förbättringar. Jag började utan en enda byte data och fick värdefull hjälp av Attentec att snabbt sätta upp en server och påbörja insamling av information.

Arbetet grundar sig på en studie från 2018 som visar att ett så kallat Recurrent Neural Network (RNN) med long short-term memory (LSTM)-enheter lyckas fånga beroenden över lite längre tidsintervall i en liknande tillämpning. Resultatet i mitt examensarbete visar att metoden fungerar väldigt väl även för bussar i Östergötland och lyckas förbättra prediktionerna i samtliga utvärderingsmått på alla åtta linjer som på förhand valdes ut, jämfört med dagens system.

Det finns två intressanta bussåknings-fall. Antingen är man intresserad av att bli passagerare eller så sitter man redan på bussen. Dessa två grupper har lite olika behov. I det ena fallet är det förmodligen intressant att få en tid som gärna är lite optimistisk så att man är på plats i tid när bussen kommer. När man väl sitter på bussen kan det vara mer intressant med en estimering som talar om att bussen åtminstone inte brukar vara senare än tid x till hållplats y för att på så sätt underlätta planering av kommande händelser. Resultatet visar att man med hjälp av en anpassad felfunktion, effektivt kan offra lite pricksäkerhet mot säkerheten att prediktionerna sällan under- eller överestimerar den faktiska tiden för att på så sätt tillgodose behoven hos de båda grupperna.

Studying Test Flakiness in Python Projects

Anders Sjöbom, 2019

Mjukvarutester som är odeterministiska (flaky) går inte att lita på. De förstör tilliten till en testsamling och kan leda till buggar. Vad är det egentligen som orsakar odeterministiska tester och hur kan man undvika att skapa dem? Det var det som mitt exjobb på Attentec handlade om.

Jag utförde en studie där jag manuellt granskade flera hundra commits från populära open-source Pythonprojekt. De commits som granskades valdes ut eftersom de innehöll nyckelord (exempelvis flaky, flakiness, intermittent) som indikerade att ett odeterministiskt beteende hanterats. Jag undersökte och identifierade anledningen till det icke deterministiska beteendet för att hitta de vanligaste orsakerna.

Exjobbets resultat visar att några av de vanligaste orsakerna till odeterminism är asynkrona anrop och precisionsproblem. De asynkrona problemen uppstår när ett asynkront anrop som inte returnerar snabbt nog hanteras felaktigt. Det bästa sättet att undvika asynkrona problem är att använda sig av await och inte sleep (som förvånansvärt många tester i populära pythonprojekt använder). Precisionsproblem uppstår då programkoden har ett odeterministiskt beteende och testet har ett för snävt testvillkor för att lyckas vid varje körning. Dessa problem upptäcktes i flera Machine Learning-projekt och är en upptäckt som inte rapporterats om i tidigare forskning.

"Attentec är en mycket trevlig arbetsplats med en grym sammanhållning. Som exjobbare så är man en i gänget och får vara med på alla resor och aktiviteter som anordnas. Det var lätt för mig att hitta någon att diskutera problem som uppstod för mig. Jag trivdes så bra att jag började jobba på Attentec direkt efter jag blev klar med exjobbet."

Detecting unsynchronized audio and subtitles using machine learning

Oskar Olofsson, 2019

Exjobbet handlade om att detektera osynkroniserade ljud- och undertextfiler med hjälp av maskininlärning. Arbetet utfördes inom området strömmande media där en av Attentecs kunder ville kunna flagga mediafiler där ljud och undertext var osynkroniserade.

Studien gick ut på att i ett första steg utreda vilken maskininlärningsalgoritm som lämpade sig bäst för att förutsäga en undertextfördelning givet en ljudfil. Nästa steg bestod av att utvärdera med vilken träffsäkerhet osynkroniserade filpar kunde identifieras med hjälp av den bästa maskininlärningsalgoritmen. Identifieringen utfördes genom att jämföra hur väl de faktiska undertexterna i en mediafil stämde överens med modellernas förutsägelse. Då modellerna tränats med över två timmar synkroniserat material antogs deras utdata representera den korrekta fördelningen. Lösningen implementerades i Python med ramverket Scikit-learn.

Arbetet resulterade i en maskininlärningsmodell av typen “Random forest” som kan detektera osynkroniserade filer med 90 procents träffsäkerhet. Andra algoritmer som undersöktes i arbetet var “Support Vector Machine” och “Multilayer Perceptron”.

Att göra exjobb på Attentec fungerade mycket bra och det märktes att det finns mycket erfarenhet kring exjobb på kontoret vilket har varit till stor hjälp.

A Study on Performance and Architectural Characteristics of an Internet of Things Gateway

 Natanael Log, 2018

Attentec-exjobb-datateknik-Natanael.jpg

Mitt exjobb handlade om internet of things gateways; ett middleware-system som kopplar samman fysiska sensorer och enheter med applikationer på internet. Det finns ett intresse både i akademin och i industrin att förstå karaktäristiken hos olika gateway-arkitekturer och när jag la fram mitt förslag att jobba med detta hos Attentec var de idel öra och ville hjälpa mig.

Jag utgick från biblioteket libuv - ett öppet bibliotek skrivet i C med fokus på asynkron I/O. libuv är en av huvudkomponenterna till den populära Javascript-motorn NodeJS som är känd för sin skalbarhet och snabbhet, trots att den bara arbetar enkeltrådat. Min hypotes var att IoT-gateways byggda med libuv skulle prestera minst lika bra som multitrådade gateways och förhoppningsvis ge ett incitament till utvecklare som vill använda så lite trådar som möjligt att använda libuv.

De första veckorna satt jag mycket i Google Scholar och LiU:s databas för att hitta relevanta studier att lära mig från. Jag byggde upp ett teoretiskt ramverk som jag hela tiden utgick från både när jag senare utvecklade kod och skrev rapport för att motivera mina val. Från Attentec fick jag en handledare som jag regelbundet bollade tankar med och som kom med goda råd. Tillsammans satte vi upp en modell av mitt kommande system jag skulle utveckla. Syftet med systemet var att mäta hur mycket data och hur många IoT-enheter en gateway kunde ta hand om beroende på om den var enkeltrådad, multitrådad, synkron eller asynkron.

Ungefär i mitten av exjobbet började jag utveckla systemet och det tog några veckor. Parallellt skrev jag ner mina erfarenheter i min rapport. När systemet var färdigt började jag mäta och sammanställa data för analys. Det visade sig att libuv hanterar mycket data och många enheter väldigt bra, minst lika bra som ett multitrådat alternativ. Det visade sig också att libuv även har stöd för multitrådning och att lägga ut CPU-tunga beräkningar på flera trådar ökar prestandan ännu mer hos libuv.

Evaluating Clojure Spec

Christian Luckey, 2017

Målet med exjobbet var att utvärdera Clojure Spec på ett vetenskapligt rigoröst vis genom prestandamätningar och genom kvalitativ undersökning. En specifikation implementerades för en verklig datamängd med fyra olika metoder och prestanda, kodstorlek och övriga fördelar jämfördes.

Resultatet går att sammanfatta som att Spec skiner givet komplexa datastrukturer, både i expressivitet och  valideringsprestanda, men har samtidigt ett API mer komplext än något av alternativen. I de fall där man vill uttrycka reguljära  datastrukturer och generativ testning önskas kommer tiden investerad i att lära sig biblioteket att löna sig. I enklare fall kan ett assertions-bibliotek likt Truss istället rekommenderas.

Man kan nog sammanfatta det som att det alltid var lätt att vakna upp på morgonen och cykla till kontoret. Varken kunskap eller godhjärtad hjälpsamhet finns det någon brist på här på Attentec. Kompetent handledning både om processen och det specifika ämnesområdet höll mig på rätt spår och inom tidsramen genom hela exjobbet. Det gick som på räls trots att arbetet i sig inte var problemfritt.

Visualisation of data from IoT systems – A case study of a prototyping tool for data visualisations

Jonathan Anderson, 2017jonathan.jpg

Attentec har sett en ökad efterfrågan på tjänster som är kopplade till internet of things, IoT. I denna studie undersöks därför om det finns ett verktyg som kan användas för att bygga snabba visualiseringsprototyper för data från IoT-system för att användas som ett verktyg i det dagliga arbetet.

Studien började med en inledande fas med två delar. Den första delen var att få bättre kunskaper om Attentecs behov och härleda kraven för verktyget och den andra delen var en jämförelse mellan prototypverktyg för att hjälpa till med utveckling av datavisualiseringar.  Apache Zeppelin valdes som det mest lämpade verktyget som matchade kriterier definierade tillsammans med Attentec. Efter den inledande fasen genomfördes en förstudie med intervjuer för att samla empiriska data om hur visualiseringar och IoT-projekt tidigare genomförts hos Attentec. Detta ledde till slutsatsen att geospatialdata och NoSQL-databaser var vanliga för IoT-projekt. En teknisk utredning utfördes på Apache Zeppelin för att besvara om det fanns några begränsningar i att använda verktyget för egenskaper som är gemensamma i IoT-systemet. Denna undersökning ledde till slutsatsen att det inte fanns något stöd för att visa mätdata på en karta.

I den första implementeringsfasen implementerades stöd för geospatialdata genom att skapa ett visualiseringsplugin som plottade data på en karta. Implementeringsfasen följdes av en utvärderingsfas där fem deltagare utförde uppgifter med Apache Zeppelin för att utvärdera verktygets uppfattade användbarhet. Utvärderingen utfördes med hjälp av en systemanvändningsskala, SUS, och ett summerat användbarhetsindex, SUM, samt intervjuer med deltagarna för att hitta var förbättringar kunde göras.

Från utvärderingen upptäcktes tre huvudområden med problem i användbarheten, import och redigering av data, mer funktionalitet till det tidigare implementerade visualiseringspluginet för geospatialdata och textredigeraren. De två första valdes för den andra iterationen där ett formulär för att generera koden för att importera data utvecklades liksom förbättringar i den geospatiala visualiserings-pluginet. En andra utvärdering utfördes efter förändringarna med liknande uppgifter som i den första för att se huruvida användbarheten förbättrades mellan de två utvärderingarna. Resultaten av det summerade användbarhetsindexet förbättrades på alla uppgifter och systemanvändningsskalan visade ingen signifikant förändring. I intervjuer med deltagarna svarade alla att den upplevda användbarheten hade förbättrats mellan de två utvärderingarna vilket tyder på viss förbättring.

Det är trevlig sammanhållning på kontoret och kul att få vara med på alla aktiviteter på företaget vilket gör att man känner sig som en i gänget”, säger Jonathan. ”Jag har fått bra stöttning när det behövts i arbetet. Alla är hjälpsamma och många har frågat om hur det går med arbetet och det har varit lätt att få hjälp med att hitta lämpliga personer att prata med när det behövts i studien".

Kodmått som indikation på brister i underhållbarhet

Jonas Modling, 2017

Jonas Modling studerade Kodmått som indikation på brister i underhållbarhet” hos mjukvara. Jonas mål var att ta reda på om man kan använda kodmått som indikator på vad som bör refaktoreras när man som konsult kliver in i ett projekt med kvalitetsproblem. Slutsatsen är att de mått som ger väldigt höga värden på vissa klasser eller metoder ofta indikerar objekt som är involverade i större problem i kodbasen. I Jonas fallstudie indikerade dock måtten sällan objekt av ”rätt anledning”, alltså av den anledning som anges i litteraturen. Därför bör man inte använda kodmåttens värde som direkt indikation på objekt som ska refaktoreras, utan snarare välja att titta närmare på de objekt som indikerats och göra en professionell bedömning.

Effects on performance and usability for cross-platform application development using React Native

Tomas Vidhall och Niclas Hansson, 2016

Exjobbet utvärderade React Native, ett ramverk framtaget av Facebook för samtidig utveckling av appar för mobiltelefoner på olika plattformar som Android och iOS. Appar utvecklades både direkt på respektive plattform och med React Native och versionerna jämfördes avseende prestanda, användbarhet, utseende och känsla. Användarstudier visar att versionen framtagen med React Native ger samma användarupplevelse utan större påverkan på prestanda. För den utvecklade applikationen kunde omkring 75% av React Native-koden användas för båda plattformarna, och det var enkelt att komplettera med plattformsspecifik kod.

Clicking using the eyes, a machine learning approach

Albin Stenström, 2015

I detta exjobb utvärderades hur ögonspårningsteknik tillsammans med maskininlärning kan användas för att generera en interaktionsmodell för musklick med hjälp av ögonen. En studie med 10 försökspersoner genomfördes och maskininlärning applicerades. Olika modeller togs fram varav en visade sig ge korrekt interaktion i 80% av fallen.

Ansök exjobb här
Teamtailor

Karriärsida från Teamtailor