Spelutveckling och balansen mellan teknik och konst
action-figures-art-boy-163036.jpg

Pong, Mario kart, Tekken, Tomb Raider, Uncharted, Candy Crush, Zelda och God of war, alla är kända spel med många som älskar och hyllar upplevelsen dessa skapar. Men även om man spelar mycket spel, spelar några få spel eller inte spelar alls så är det enormt intressant att titta bakom kulisserna för dessa underhållande programvaror för att se hur de faktiskt skapas. För skilt från mycket annan utveckling så kräver spelutvecklingen inte bara att skaparna är duktiga programmerare men även att de är duktiga författare, designers, 3D modulerare, underhållare och innovatörer. 

Första steget i spelskapande har faktiskt ingenting med programmering att göra utan handlar om att planera. Vad ska spelet handla om? Vad går det ut på? Vilket enhet ska spelet spelas på? För vilken typ av publik? Hur avancerat rent tekniskt ska det vara? 

Nästa steg blir att möjligen skapa concept art, där man helt enkelt ritar karaktärer och miljöer på klassiskt vis, och på så sätt sätta en känsla för hur spelet visuellt ska se ut. I samma veva sätter man oftast en grov skiss av en storyline och möjligen ett manus. När alla idéer är satta så är det dags att börja skapa spelet. Oftast så använder man sig av en existerande spelmotor som passar för det typ av spel som man vill skapa. Exempel på spelmotorer är: Unity, Frostbite, GameMaker och Unreal. Olika spelmotorer är bättre på att skapa vissa typer av spel varav det första utsållande kravet är om spelet skall vara i 2D eller 3D och på vilka plattformar som spelet ska kunna köras t.ex. om det ska vara ett mobilspel och/eller ett PS4a spel.

 
 

Förutom en spelmotor så behöver man någon sätt att designa och skapa karaktärer samt miljöer. Bland annat så kan man använda sig av photoshop eller Adobe illustrator om man jobbar i 2D och Maya, Blender eller zBrush om man jobbar i 3D. Detta kräver en annan typ av kunskap mer än teknisk, man måste vara väldigt kreativ i att skapa egna karaktärer/ miljöer och även artistiskt begåvad i att kunna t.ex. översätta en vision i 2D till en tredimensionell figur som även ska ändra utseende beroende på vad det är som händer i spelet. När karaktärerna är skapade med alla detaljer som hör till så för man in dessa i spelmotorn där man kan börja applicera programmeringsregler i hur dessa karaktärer ska bete sig i spelet.


När karaktärerna och miljöerna finns så måste det bli ett spel av detta och första steget kan vara att sätta grundreglerna för hur denna virtuella värld beter sig genom att beskriva detta i kod. Finns det gravitation? kan man gå igenom föremål eller är dem solida? Händer det speciella saker när ett föremål kolliderar med ett annat? Dvs. vilka regler måste man programmera in för varje objekt i den virtuella miljön.

När man har bestämt detta och även beskrivit det i kod så att spelmotorn kan simulera detta så måste man fundera på vad varje level eller speciella del i spelet ska innehålla och vad man ska gör på denna nivå för att ta sig vidare. T.ex. så kanske man måste lösa en speciell uppgift för att ta sig vidare eller prata med en speciell karaktär. Detta blir alltså en fråga om kreativitet och vad som attraherar spelaren i form av utmaning, det måste vara lite svårt eller klurigt men inte så mycket att spelaren ger upp och slutar spela.

Slutligen så måste det finnas något mål att stäva mot med spelet. Antingen att man själv ska gå upp i level och bli bättre eller kanske att spelet ska nå ett slut. Allt detta får beskrivas även detta beskrivs med programmeringens logik men kräver ändock en kreativitet i vad som kan var ett tillfredställande mål för spelaren.

Man inser ganska snabbt att oavsett man är ensam spelkreatör eller jobbar med flera så krävs det många olika idéer och kreativa lösningar för att få ett spel att gå ihop och det blir tydligt varför spel ofta bidrar man nya tekniska innovationer för att fortsätta att underhålla spelare.

Maria HjorthComment
En dator som pratar
suanmoo-607746-unsplash.jpg

I det senaste tech-talket berördes taligenkänningssystem och hur man kan få en enhet att förstå vad det är man säger och agera på dessa muntliga instruktioner. Men den andra änden av området datorer och tal är att få enheter att tala till människor, så kallade talsyntes. De första försöken att producera artificiellt tal hade dock ingenting med datorer att göra utan mer om att skapa förståelse för hur människor rent fysiologiskt producerar vokaler och konsonanter så att man kan återskapa ljuden. Det första försöket till talsyntes skapades år 1770 av en man vid namn Kratzenstein. Han skapade så kallade vokalresonatorer i en tävling på Imperial University of St Petersburg som fungerade genom att man blåste i ena änden vilket fick en flik att vibrera, dessa vibrationer/ljudvågor skapade av fiken gick sedan in i dessa olikformade resonatorer vilket skapade de olika vokalljuden. 

 Bild från: http://research.spa.aalto.fi/publications/theses/lemmetty_mst/chap2.html

Bild från: http://research.spa.aalto.fi/publications/theses/lemmetty_mst/chap2.html

Under nästan samma period byggde en man vid namn Wolfgang von Kempelen den första talmaskinen som härmade människans fysiologi med en blåsbälg som lungor, två sidorör som näsborrar, ett rörblad som stämband och ett med handen formbart läderrör som fick agera mun. Maskinen kunde skapa en stor mängd vokaler och konsonanter och man kunde även sätta ihop dessa till tal. Men människan har en mycket komplex fysiologi som möjliggör komplex artikulation av vissa ord och ljud och detta gjorde att de begränsningar som fanns i Wolfgangs maskin gjorde talet långt ifrån perfekt. 

 Blid från : http://kth.s3-website-eu-west-1.amazonaws.com/ie1206/tools/pictalk/speechsynt.htm

Blid från : http://kth.s3-website-eu-west-1.amazonaws.com/ie1206/tools/pictalk/speechsynt.htm

Först långt senare utvecklades tekniker för att med hjälp av elektroniska kretsar skapa artificiellt tal. Den första maskinen som räknas som en elektronisk talsynt är VODERn. Som man kan se i videon så skapades tal genom att man i realtid fick som på ett klaviatur "spela" fram hela meningar. 

Maskinerna övergavs sedan för datorerna när de på 1970 talet hade blivit tillräckligt utvecklade. Då skapades talsyntes istället ofta i form av chip som lagrade alla olika inspelade småbitar av ljud som en språk är uppbyggt av istället för att generera ljuden själv. Alla varianter av hur "a" kan uttalas i engelskan spelades t.ex. in!

Målet var sedan att skapa program som automatiskt kunde översätta från text till tal genom att koppla bokstäverna, orden och meningarna till rätt typ av ljud så att t.ex. rätt typ av "a" hamnade på rätt plats i ordet och meningen! Det svåra i talsyntestekniken är att naturliga språk har så mycket nyanser som gör att vi ganska snabbt kan avgöra om det är en annan människa som talar eller om talet är skapat på syntetisk väg. Vi är dock på god väg att närma oss datorer som låter nästintill oskiljaktiga människors tal med hjälp av maskininlärning, AI och enorma mängder inspelade röster, ord och meningar. 

Är man mer intresserad av att höra och lära om skillnaderna i talsyntes genom historien så kolla gärna in denna film: 

 

Källor: 

http://www.haskins.yale.edu/featured/heads/SIMULACRA/kratzenstein.html, http://research.spa.aalto.fi/publications/theses/lemmetty_mst/chap2.html, 

http://kth.s3-website-eu-west-1.amazonaws.com/ie1206/tools/pictalk/speechsynt.htm

Maria HjorthComment
Att prata med en dator

Att kunna skriva in instruktioner till en dator via kod eller kanske bara en vanlig mening är i sig en häftig teknik som låter oss "prata med en dator" för att få den att hjälpa oss att lösa problem, spara och finna information. Men om man verkligen vill prata med en dator hur fungerar det? 

Det är idag inget nytt att vissa datorer och digitala enheter kan känna igen och förstå röst d.v.s har taligenkänning. Siri, Google home, Alexa, Assistant och många andra system är byggda för att man som människa ska kunna prata med dem. Dessa enheter är byggda för att förstå informationen som man som människa förmedlar med sitt tal och jobbar för att genomföra och svara på de instruktioner som ges. Men andra system som hanterar mänsklig röst finns endast av säkerhetsskäl där systemet måste tränas på en viss persons röst så att den lär sig att unikt identifiera denna person och därmed kan autentisera personens behörigheter liksom man kan göra med fingeravtryck eller retina scanning. Denna teknik kallas istället för röstigenkänning då den inte fokuserar på själva talet utan på rösten.

Att förstå mänskligt tal är inget lätt uppgift, ett taligenkännings-system måste t.ex. försöka tolka meningar som innehåller oklarheter, tyda ut ord ur otydligt tal, filtrera ut delar av talet som inte förmedlar information (t.ex. alla eeh och öööh som man gärna använder när man inte vet riktigt hur man ska uttrycka sig) och förstå tonfallets påverkan på meningsinnehållet.

Den mänskliga rösten är om man beskriver det i sin enklaste form ett skapande av vibrationer i luft med hjälp av stämband, lungor, tunga och läppar. Det är dessa vibrationer som en enhet plockar upp med hjälp av en mikrofon som i sin tur översätter dessa vibrationer till elektriska impulser som en dator kan tolka som data. Det betyder att talsystemet kan få problem om du pratar med en enhet i ett rum med mycket bakgrundsljud då den måste försöka filtrera ut talet från alla andra ljud som mikrofonen plockar upp. 

Hela vägen fram till 1990 så använde de första taligenkänningssystemen så kallad "template matching". Det betydde att man matade in ett visst antal ord och allt tal som matchade de inmatade orden kunde förstås av systemet.  Denna metod krävde att man talade extremt tydligt och endast sa ett förprogrammerat ord i taget. 1990 släpptes systemet vid namn Dragon Dictating som senare blev Dragon NaturallySpeaking som förändrade taligenkänningstekniken genom att man kunde använda systemet för att diktera upp till 100 ord i minuten utan att stanna efter varje ord utan naturligt kunde tala med systemet. Systemet krävde dock att man tränade det i ca 45 minuter för att det skulle fungera som bäst. Detta system används fortfarande av många läkare ändock i uppdaterad version för att det fungerade så pass bra. 

Det stora genombrottet kom dock i samband med maskininlärningen som tillsammans med stora mängder data gör att system kan tränas till att förstå än fler ord, meningar och otydligt tal. Det är denna teknik som gjorde att vi 2008 fick Google Voice Search. Google Voice Search låg sedan till grund för dagens  Google Assistant. 

andres-urena-470135-unsplash.jpg

Siri ligger dock till grund för den stora vågen av populäritet kring röststyrning då man lyckades väva in en "mänsklighet" i taligenkänningssystemet och AI:t som gav Siri mer av en personlighet som gjorde det roligare och mer naturligt att använda systemet för dagliga småsysslor. 

Det häftiga med den verklighet vi nu lever i är att taligenkänningen har kombineras med talsyntes i bland annat Siri, Alexa och Google home, vilket gör att datorn inta bara förstår vad vi säger utan även kan svara i tal på ett naturligt sätt. Ju mer avancerad denna taligenkänning samt talsyntes blir desto närmre kommer vi närma oss den punkt där datorer och människor kan föra ett samtal på samma sätt som människor för med varandra. En verklighet där receptionister kanske kan vara datorer/robotar och alla typer av tjänster där information måste delas och samtal föras kan ske mellan människor och datorer istället.

Källor: pcworldmedium

Maria HjorthComment
Kod byggd Inte för att lösa problem utan skapa dem!
victoria-heath-597279-unsplash.jpg

En programmerares jobb brukar alltid vara att försöka lösa ett problem genom att ta hjälp av datorers fantastiska förmåga till att beräkna saker många gånger om och strukturerat jobba fram resultat. Men det finns programmerare som använder sin förmåga och förståelse för hur datorer jobbar för att skriva program som olagligt förstör för andra datorsystemanvändare. Så nu ska vi dyka ner i värden av skadlig kod och förstå lite mer om hur denna kod fungerar!

Det finns flera olika sorters kod som alla är skapade för att skapa problem på en dator, oftast med det slutgiltiga målet att tjäna eller stjäla pengar. Denna typ av kod kan vara i form av virus, trojaner eller maskar som alla fungerar på lite olika sätt men oftast jobbar för att sprida sig själv och/eller ta kontroll över en dator. Vi börjar med att kolla på den typ av skadlig kod man brukar höra mest om: virus!

Virus

Virus är döpta efter att de beter sig mycket som sjukdomsvirus som ofta härjar i kroppen under höst och vår. De är mycket ”smittsamma” delar av kod som ofta hänger på som parasiter på nedladdad mjukvara genom att de skapar en kopia av sig själva i ett ”värdprogram” som sedan körs samtidigt som ”värdprogrammet” körs. När en dator är infekterad med ett virus så kan information avlyssnas, raderas eller ändras, alternativt så kan datorns beräkningskraft användas utan att användaren märker av det. Man ser dock mer sällan äkta datorvirus nuförtiden då det är komplicerad kod som krävs för att skriva dessa samt att anti-virusprogrammen har blivit svåra att komma runt. Mer vanliga är de så kallade trojanerna.

Trojaner

Trojaner har fått sitt namn efter den klassiska historien om den trojanska hästen som till utsidan såg oskyldig ut men på insidan huserade en mindre armé av illasinnade soldater som ville bryta sig igenom trojanernas försvarsmurarna. Anledningen till namnet är att denna skadliga kod inte infiltrerar ett vanligt program så som virus gör utan snarare döljer sig bakom ett annat program, namn eller en fil. Trojanen kan därför till skillnad från virus köras helt fristående från ett ”värdprogram” och sprider sig inte heller till andra program så som viruset utan jobbar som ett eget program. Trojaner är idag en av de vanligaste skadliga koderna som används då de är lättare att skriva och liksom virus kan användas för att övervaka, radera eller ändra data. Trojaner används även för att kunna kapa och fjärrstyra datorer och använda dem i så kallade botnät där man kan använda nätet och alla dessa datorers beräkningskapacitet för ett otal kriminella handlingar så som att lagra olagliga data eller på ett ”anonymt” sätt krascha hemsidor genom att få hela botnätverket att gå in samtidigt och pusha data tills systemet inte orkar mer. Dessa botnät är mycket högt värderade i kriminella kretsar på grund av deras mångsidighet och framförallt anonymitet. En trojan måste dock ”bli inbjuden” av den som äger datorn genom att t.ex. ägaren laddar ner vad den tror är ett vanligt program eller öppnar en bifogad fil i ett email eller liknande.

Maskar

Maskar är den sista typen av skadlig kod vi kommer att diskutera. Maskar behöver till skillnad från virus inte infektera ett program för att infektera en dator och kan även sprida sig till datorer och system på egen hand utan att användaren aktivt måste göra något skilt från hur trojaner gör. Maskar använder sig av vanliga dataöverföringar i en dator och mellan datorer för att sprida sig själv och vissa kan även sprida sig via nätverk. Maskar likt virus kopierar sig själv i datorn och varje system den tar sig in i och kan därför på kort tid nå många datorer och användare. Maskar kan göra samma typ av skada som trojaner men många maskar som är aktiva i system idag verkar inte göra någon aktiv skada, istället så sinkar de ner nätverk och system genom att med sin kopieringshastighet ta upp utrymme och bandbredd.

samuel-zeller-336980-unsplash.jpg

Vad ska man tänka på?

Precis som mellan bytesdjur och rovdjur i naturen så kämpar skadlig kod och program som upptäcker/stoppar dem mot varandra och tillsammans så utvecklas de och blir båda både smartare och effektivare. Det är dock i många fall nästintill omöjligt att se på en dator om en har blivit utsatt för en attack från skadlig kod och nu är infekterad då de flesta av dessa maskar, trojaner och virus inte går att finna i systemet även av de mest avancerade anti-virus systemen och det lättaste sättet att skydda sig mot skadlig kod är att jobba förebyggande så att anti-virus program och liknande inte ens måste försöka hitta hotet. De lättaste sätten att skydda sig från angrepp är att:

  • Aldrig öppna upp bifogade filer eller länkar i mail eller annan elektronisk kommunikation som man inte är helt säker på kommer från en känd källa
  • Aldrig ladda ner filer eller program från okända distributörer
  • Låter något för bra för att vara sant så är det mest troligen det och då kan det vara så att de tjänar pengar på att du laddar ner något som absolut funkar men som döljer kod som t.ex. gör att skaparna kan använda din dator i ett botnätverk vilket sinkar din dator. Får man meddelanden från kända företag via kanaler som inte normalt används så kan man allt som oftast dra slutsatsen att det handlar om en bluff.  

Källor:

https://www.iis.se/lar-dig-mer/guider/it-sakerhet-for-privatpersoner/virus-trojaner-och-maskar/

https://antivirus.comodo.com/blog/computer-safety/malware-vs-viruses-whats-difference/

https://support.symantec.com/en_US/article.TECH98539.html

https://www.webopedia.com/DidYouKnow/Internet/virus.asp

 

 

 

Maria HjorthComment
Tech-talk träffar Sana Labs! 
Sana Labs_Neural Networks.jpeg

Tech-talk har träffat det otroligt intressanta och, utefter sin hemsida, lite mystiska företaget Sana Labs som har byggt ett avancerat AI som individanpassar digitala kurser efter individens kunskapsnivå och lärandestil. En fantastiskt häftig applicering av AI tekniken som förändrar sättet vi lär oss på idag! Låt oss lära mer om vad de gör och vad de ser i framtiden för sitt AI system

Vad är Sana Labs? 

Sana Labs är ett företag som har byggt ett AI system som hjälper folk som utbildar sig via digitala plattformar att lära sig effektivare. Detta sker genom att Sana Labs AI skapar en unik väg genom en kurs för varje elev, där rätt förklaring, innehåll eller fråga presenteras i rätt ögonblick för varje individ. I varje interaktion ser Sana Labs teknik till att optimera just den individens engagemang och kunskapsförståelse baserat på lärandestil, kunskapsnivå, kunskapsglapp mm. Denna optimering leder till att man lär sig samma innehåll snabbare och lär sig ännu svårare saker än man kunnat göra tidigare.

Vem startade Sana Labs? 

Grunden till Sana Labs hittar man i Joel som idag är 21 år gammal men som fick idén om att skapa ett AI för inlärning när han gick i gymnasiet och hade ett brinnande intresse för att lära sig nya saker och testa ny teknik. Denna idé utvecklade han vidare genom att i sin UF kurs på gymnasiet skapa ett företag där han lyckades sälja in idén om detta AI och sina egenskrivna AI algoritmer till investerare. När UF-kursen var klar så hade han därför möjlighet att jobba vidare med sina idéer och fick hjälp av forskare från Cornell och Stanford som intresserade sig för hans arbete. Detta blev tillslut det som idag är ett snabbt växande företag med i dagsläget 8 anställda som alla brinner för AI och inlärningsprocesser. 

Vilken typ av AI är det Sana Labs byggt? 

Det AI som Sana Labs skapat är ett så kallat deep neural network, se Datorer som fungerar som hjärnor, som plockar in många olika data inputs och sedan med hjälp av ett nätverk av noder kan dra mycket förfinade och nyanserade slutsatser om användaren och området. Sana Labs AI målar upp abstrakta representationer av varje liten bit innehåll t.ex. frågor, förklaringar, texter, bilder mm i en kurs och skapar sig en förståelse för hur varje innehållskomponent förhåller sig till varandra. Modellen skapar också en abstrakt representation av hur varje användare interagerar med innehållet. Utifrån dessa abstrakta representationer kan sedan Sana Labs AI rekommendera rätt förklaring, fråga eller innehåll för varje specifik användare i en utbildningsplattform, baserat på användarens interaktioner med systemet. Modellen strävar efter att optimera engagemang och kunskapsförståelse för varje unik elev som svarar på en fråga, gör en övning eller på annat sätt interagerar med en lärandeplattform. 

Vad måste AI:t ha för att kunna köras? 

I vårt senaste tech-talk så beskrev vi att neurala nätverk och AI måste tränas på mycket stora datamängder och detta stämmer även för Sana’s AI som från början tränades på öppna dataset och nu tränas live samtidigt som det körs ute på inlärningsplattformar. För att man ska få som bäst resultat så måste det finnas som minst ca 3000 användare som genom sin interaktion med plattformen ger Sana’s AI data och ju mer data det finns för AI:t desto bättre blir det eftersom det finns mer att träna på då! 

Vad har Sana Labs för vision inför framtiden? 

Sana Labs vision är att demokratisera utbildning genom att göra det möjligt för alla människor världen över att få tillgång till ett individanpassat lärande. De vill med denna demokratisering väga upp det klassiska sättet att lära ut, med föreläsningar och en ”allvetande” lärare som sitter på svaren, för vi är ju faktiskt inte likadana i vårt sätt att lära.

Inom de närmaste åren ser Sana Labs att de kommer ha hundratals miljoner användare av sin teknik, och därmed en enorm mängd datapunkter på hur vi människor lär oss. Potentiellt skulle Sana Labs då kunna bidra till forskningen med insikter och mer exakt kunskap om hur människor lär sig. Hur vi lär oss och hur hjärnan fungerar är ett komplicerat forskningsområde som saknar stora studier, och med hjälp av data från hundratals miljoner människors så skulle det kunna vara möjligt att få en helt annan överblick och kunnat dra mer generella slutsatser! 

Anna från Sana Labs som intervjuades för detta tech-talk tror själv att framtiden inom utbildning kommer att ske genom en kombination av självstudier med hjälp av avancerade utlärningssystem där AI ligger till grund, och utbildning tillsammans i grupp där läraren kommer ha helt andra möjligheter att utveckla elevernas kunskap genom vidare resonemang, idéer och kritiskt tänkande eftersom alla elever kommer ha en högre kunskapsförståelse tack vare de individanpassade självstudierna. 

NOX Academy hoppas att fler kommer att lära sig nya häftiga saker med hjälp av ny teknik och att det ska bli lättare att anpassa kunskapsinlärningen efter sig själv! Mer kunskap åt alla! 

 

                                  

Maria HjorthComment
Datorer som härmar våra hjärnor
shane-rounce-229914-unsplash.jpg

Vi har här på tech-talk berört ämnet AI eller Artificiell Intelligens tidigare när vi pratade om framtidens robotar. Men ämnet AI är ett nästintill outtömligt område som berör så många olika delar av våra liv och hjälper vår teknik framåt på nästan magiska vis. Häftigast att prata om är hur mjukvaruutvecklare försöker få datorer att tänka, ta beslut och lära sig som den mänskliga hjärnan gör. Men innan vi dyker in i det som kallas för neurala nätverk och deep learning så måste vi förstå lite grundläggande ord och hur de passar in i AI världen:

  • AI – Artificiell Intelligens, är ett övergripande ord som beskriver hur vi kan få datorer att lösa problem åt oss på ett ”smart” sätt.
  • Machine learning – Machine learning är en form av AI och beskriver system som lär sig att se mönster genom att tränas på stora mängder data som kan vara i form av t.ex. text eller bild.
  • Neurala nätverk – Neurala nätverk är en specifik form av machine learning som jobbar med noder i ett nätverk. Denna logik härmar hjärnan i hur skickar elektroner mellan neuroner och gör att detta AI kan vara mycket mer nyanserat i sitt utfall.
  • Deep learning – Deep learning används för att beskriva mycket komplexa neurala nätverk som har många så kallade nivåer. Deep learning system är byggda för att lösa komplexa problem vars nyanser den mänskliga hjärnan utan problem kan tolka.

För våra hjärnor är helt fantastiska. Det är nästan magiskt hur de lär sig själva att tolka sin omgivning via information de får in från våra sinnen och sedan kan ta logiska beslut utifrån dessa intryck samt tidigare erfarenheter. En så enkel sak som att kunna läsa handskriven text är något som våra hjärnor kan göra på bråkdelen av en sekund trots att olika personers handstil inte ens behöver vara lika det vi är vana att se. Att försöka få en dator att härma denna egenskap är en kombination av att ha smarta algoritmer (lösningsprocesser), starka datorer men framförallt mycket data som man kan öva upp systemet på. Våra hjärnor jobbar med neuroner som kan ta emot, bearbeta och skicka iväg information men ett neuralt nätverk jobbar istället med så kallade noder och det mest grundläggande neurala nätverken jobbar med artificiella neuroner som heter perceptrons.

Nedan kommer jag försöka beskriva en mänsklig beslutsprocess utifrån hur en perceptron hade kunnat hantera datan.

Du är sugen på att gå på bio, men du vill helst inte gå om det är varmt ute (mer än 18 grader) för då vill du hellre vara utomhus, du vill helst se filmen tillsammans med din bästa vän och du vill sitta på platser i mitten av salongen. Precis som att man i huvudet väger dessa krav/data mot varandra och prioriterar vad som är viktigast så måste en perceptron i ett neuralt nätverk förstå vad som är viktigast för dig för att utfallet ska bli rätt.

Är det viktigare att du kan gå med din vän än att det inte är för varmt ute? Eller är det absolut viktigaste att du får sitta i mitten?

 

Säg att din vän kan gå med dig då skickar man in värdet 1 till perceptronen, kan du inte gå med din vän så skickar du in 0 till perceptronen. Om alla tre sakerna måste stämma för att du ska vilja gå så måste perceptronen helt enkelt få in 3 stycken ”ja” eller ettor. Så om summan är 3 så kommer perceptronen att skicka ut ett ”ja du ska gå på bio” eller på datorspråk en 1a. Men ofta är det så att vissa saker väger tyngre än andra, det kanske är viktigare för dig att din kompis kan gå än att vädret är svalt. Då kan man göra så att vissa parametrar är viktigare än andra. T.ex. så kan man säga att om summan i perceptronen är 4 eller högre då kommer den att skicka en 1a dvs ett ”ja du ska gå på bio” och sedan säga att väder-parametern har värdet 2, kompis-parameter har värdet 4 och plats-parametern har värdet 2. Då betyder det att om kompisen kan gå så spelar de andra två grejerna ingen roll utan du kommer att gå ändå. Kan kompisen inte gå men vädret är svalt och du får den plats du vill så kommer du även att gå.

En perceptron kan därför ritas såhär där x1, x2 och x3 är de olika parametrarna som styr vad som i slutändan kommer att ske:

 Bild källa:  Neural Networks and Deep Learning

Bild källa: Neural Networks and Deep Learning


Dessa perceptrons kan sedan kopplas ihop till ett nätverk som då kan ta väldigt specialiserade beslut som beror av väldigt många parametrar och beslut från tidigare perceptrons och därmed även öka nyanseringen på de beslut som tas. Ett exempel kan ses nedan på hur flera perceptrons ser ut ihopkopplade:

                             Bildkälla:   Neural Networks and Deep Learning

                            Bildkälla: Neural Networks and Deep Learning

Ett tydligt exempel på ett avancerat AI är det byggt av Google ägda företaget DeepMind som skapade denna virtuella miljö där denna figur lärde sig själv av gå/springa genom att ha virtuella sensorer och uppmaningen om att ta sig från punkt A till punkt B.

 
 

Ett annat Ai vid namn AlphaGo Zero har även lärt sig själv att spela det kinesiska spelet GO utan att några människor har lagt sig i inlärningsprocessen.

 
 

Tydligt är att vi rör oss snabbt framåt med AI tekniken och snart kanske dessa smarta system kan komma på hur vi ska lösa världsproblem som våra hjärnor inte klarar av! 

Källa: https://www.cgit.se/nyheter/vad-ar-deep-learning, http://neuralnetworksanddeeplearning.com/chap1.html, Human Brain and Neural Network Behavior: A Comparison, https://courses.cs.washington.edu/courses/csep590/06au/projects/history-ai.pdf

Maria HjorthComment
Programmeringens minsta beståndsdelar
jonas-svidras-448332.jpg

Programmering handlar om att ge en dator instruktioner för vad den ska beräkna och hur den ska jobba. Datorer så som vi känner till dem har inte funnits längre än en bit in på 1900 talet men beräkningsmaskiner har funnits sedan innan den elektriska datorn uppfanns och därmed så har även grundtanken kring hur ettor och nollor kan representera bokstäver och symboler funnits länge, så kallad binärkod. Och det är denna logik som ligger till grund för hur all programmering av datorer ser ut idag. Idag finns det dock tusentals olika typer av programmeringsspråk och alla programmeringsspråk finns till för att lösa olika saker många gånger snabbare än vad vi som människor hade kunnat göra det.

Oftast när man lär sig programmera idag så lär man sig inte att skriva binärkod direkt utan man lär sig ett så kallat högnivåspråk. Att ett språk är ett högnivåspråk innebär att det är väldigt abstrakt och ligger ganska långt ifrån den binära kod som datorn i grund och botten förstår och närmre språk som vi som människor har lätt att förstå och skriva, som t.ex. engelska. Men anledningen till att det kan vara bra att förstå hur datorn jobbar med denna binära är att alla språk tillslut kokar ner till denna universallogik. Högnivåspråk brukar normalt översättas av en kompilator till ett så kallat assemblerspråk som i sin tur sedan blir översatt till maskinkod. Det är maskinkoden som är den binära kod som datorn egentligen förstår och tolkar till saker så som: addera register A med register B eller lägg till 143 till register C. Processorn använder sig sedan av sina minnen för att lagra de ettor och nollor den jobbat med, kolla in detta tech-talk för att fräscha upp minnet om hur datorn kommer ihåg!

Varför har vi dessa tre nivåer av översättning mellan människa och processor? 

 Det första högnivåspråket Fortran skrevs 1950 av ett team på IBM lett av John Backus.

Det första högnivåspråket Fortran skrevs 1950 av ett team på IBM lett av John Backus.

Maskinkod beskriver i detalj exakt vad processorn ska göra genom att berätta vilka bitar som skall sparas och förändras och vart dessa ska ligga. Men maskinkod kan för människor vara otroligt svårt att förstå sig på då det för olika processorer skiljer sig i hur denna kod skrivs och det inte finns någon tydlig uppdelning mellan vad som är instruktion, adress och data. Därför skapades assemblerspråken som gör det tydligare för människor hur man ska kommunicera med processorn samt att det är lättare att använda samma typ av kod på olika processorer. Assemblerspråk gör precis det som maskinkod gör dock med skillnaden att man som programmerare kan skriva dessa instruktioner med ord istället för siffror. I assemblerspråk kan man dock inte använda sig av abstrakta ting så som variabler och funktioner utan dessa abstraktioner finns istället i högnivåspråken så som Fortran, C och Java. 

Att lära sig att räkna som en dator

Men om man nu vill förstå hur man kan använda 1 och 0 för att beskriva för datorn vad den ska göra hur gör man då? Först kan man lära sig hur man med hjälp av ettor och nollor (binär kod) kan uttrycka vilket tal som helst!

Säg att vi vill skriva talet 1234 hur hade vi gjort detta binärt? Först och främst måste man veta att binär kod läses från höger till vänster och att en etta betyder att talet finns och en nolla att talet inte finns. I vanliga fall så räknar man så kallat decimalt: 1 2 3 4 5 6 7 8 9 10 och då räknar man från vänster till höger. Men binärt så räknar man alltså från andra hållet 10 9 8 7 6 5 4 3 2 1 och sen så räknar man med andra siffror, istället för att lägga på 1 till talet innan så multiplicerar man talet innan med 2.

Man räknar helt enkelt såhär: 1024 512 256 128 64 32 16 8 4 2 1. Sedan berättar man med hjälp av ettor och nollor huruvida ett av dessa tal ska finnas med eller inte. Kepigt? Det är lättare att visa! Vi vill skapa talet 1234 så vi tittar på hur man räknar binärt och kollar vilka siffror som tillsammans blir 1234.

1024     512     256     128     64     32     16     8     4     2     1

1024 + 128 + 64 + 16 + 2 = 1234

Istället för att fetmarkera de tal som vi vill slå ihop för att skapa 1234 så uttrycker vi med hjälp av ettor och nollor vilka tal som ska slås ihop. Man kan tänka såhär: Vi vill inte ha en etta, men vi vill ha en tvåa, vi vill inte ha en 4 eller 8a men vi vill ha 16 osv. Vill man inte ha talet då står det 0 på den platsen där siffran brukar stå och vill man ha den siffran så skriver man 1. 

1024     512     256     128     64     32     16     8     4    2    1

   1           0         0         1         1        0       1      0     0    1      0

Alltså blir talet 1234 skrivet binärt: 10011010010

Testa och se om du kan skriva talet 36 binärt!

Skriv ditt eget namn binärt!

 Såhär kan binär kod uppdelat i bytes dvs 8 bits se ut. Här har vi 28 bytes som innehåller ett meddelande, kolla om du kan lösa det! 

Såhär kan binär kod uppdelat i bytes dvs 8 bits se ut. Här har vi 28 bytes som innehåller ett meddelande, kolla om du kan lösa det! 

Ofta så behöver man inte räkna högre än 255 binärt och det är för att man klarar sig bra med att uttrycka bokstäver och siffror med endast 8 st ettor eller nollor som man även kan kalla för 8 bit. För att översätta binär kod till bokstäver och siffror så kan man använda t.ex. ASCII tabeller där man kan uttrycka bokstäverna a-z och A-Z samt siffrorna 0-9 samt en gäng specialtecken så som !&% genom att med binär kod uttrycka en siffra mellan 0-255. T.ex. så är siffran 65 ett stort A och uttrycks med hjälp av 8 bit som: 01000001. Såhär hade man skrivit TECH:

01010100     01000101     01000011      01001000

84                69                67                 72

T                   E                  C                  H

01010100010001010100001101001000

Ofta så läser man all binär kod på detta sätt dvs. genom att dela upp hela raden i 8 bitar i taget, läsa bakifrån och se vilken siffra som det motsvarar! Nedan kan du se själv vilka bokstäver som tillhör vilken siffra med hjälp av en tabell.

Dec  Char                           Dec  Char     Dec  Char     Dec  Char
---------                           ---------     ---------     ----------
  0  NUL (null)                      32  SPACE     64  @         96  `
  1  SOH (start of heading)          33  !         65  A         97  a
  2  STX (start of text)             34  "         66  B         98  b
  3  ETX (end of text)               35  #         67  C         99  c
  4  EOT (end of transmission)       36  $         68  D        100  d
  5  ENQ (enquiry)                   37  %         69  E        101  e
  6  ACK (acknowledge)               38  &         70  F        102  f
  7  BEL (bell)                      39  '         71  G        103  g
  8  BS  (backspace)                 40  (         72  H        104  h
  9  TAB (horizontal tab)            41  )         73  I        105  i
 10  LF  (NL line feed, new line)    42  *         74  J        106  j
 11  VT  (vertical tab)              43  +         75  K        107  k
 12  FF  (NP form feed, new page)    44  ,         76  L        108  l
 13  CR  (carriage return)           45  -         77  M        109  m
 14  SO  (shift out)                 46  .         78  N        110  n
 15  SI  (shift in)                  47  /         79  O        111  o
 16  DLE (data link escape)          48  0         80  P        112  p
 17  DC1 (device control 1)          49  1         81  Q        113  q
 18  DC2 (device control 2)          50  2         82  R        114  r
 19  DC3 (device control 3)          51  3         83  S        115  s
 20  DC4 (device control 4)          52  4         84  T        116  t
 21  NAK (negative acknowledge)      53  5         85  U        117  u
 22  SYN (synchronous idle)          54  6         86  V        118  v
 23  ETB (end of trans. block)       55  7         87  W        119  w
 24  CAN (cancel)                    56  8         88  X        120  x
 25  EM  (end of medium)             57  9         89  Y        121  y
 26  SUB (substitute)                58  :         90  Z        122  z
 27  ESC (escape)                    59  ;         91  [        123  {
 28  FS  (file separator)            60  <         92  \        124  |
 29  GS  (group separator)           61  =         93  ]        125  }
 30  RS  (record separator)          62  >         94  ^        126  ~
 31  US  (unit separator)            63  ?         95  _        127  DEL

Testa att skriva ditt namn binärt!

Källor: https://www.techopedia.com/definition/3903/assembly-language, https://it-ord.idg.se/ord/maskinkod/, https://www.cs.cmu.edu/~pattis/15-1XX/common/handouts/ascii.html

 

Maria HjorthComment
Världens fantastiska robotar
alex-knight-199368.jpg

Det är någonting med robotar som vi verkar tycka är lika delar häftigt som obehagligt. Vi drömmer om och fasas inför att skapa robotar som är helt självgående och som fungerar mer som oss människor. Sci-fi har ju visat oss fantasier om hur robotar så som C3PO kan hjälpa oss och hur mänskliga robotar så som terminator kan skapa problem för oss.  

Många olika företag världen över sitter med den svåra uppgiften att skapa mänskliga robotar och denna uppgift består inte bara av att få en robot att se ut och röra sig som en människa utan den måste även kunna tänka som en människa och framförallt kunna hantera att göra logiska val och hantera osäkerhet.

Att skapa mekaniska människor och djur är inget nytt utan redan tidigt i människans historia har uppfinnare så som Leonardo da Vinci designat och skapat dessa så kallade automatons. Dessa tidiga automatons var helt mekaniska och kunde automatiskt utföra en serie med operationer och mönster så som att flaxa med sina mekaniska vingar.

Dessa automatons utvecklades sedan till vad vi idag kallar för robotar. Robotar är mer komplexa maskiner som kan programmeras till att utföra olika typer av handlingar. De vanligaste robotarna idag är industrirobotarna man finner i bland annat bilfabriker där dem programmerats till att sätta ihop bildelar. Men dessa robotar är inte riktigt som de robotar som Sci-Fi genren beskriver och visar oss. Utan de robotar som man främst tänker på är humanoiderna (mänskliga robotar), androiderna, gynoiderna samt robotarna som ser ut och beter sig som djur. Men kan vi få dem att tänka, lära och ta beslut själva istället för att dem endast kan göra vad vi programmerar dem till? Svaret på detta är att vi med hjälp av avancerad mjukvara, artificiell intelligens och bättre sensorer börjar närma oss denna verklighet men det är svårt. Som människor så gör vi saker utan att tänka på hur komplicerade dem egentligen är t.ex. pratar, förstår vad andra säger, lär oss nya saker utan att behöva programmera in dem, går, lyfter saker, håller i saker utan att skada föremål, ser, hör och tolkar andra människors känslor.


Robotar som är skapade för att efterlikna den mänskliga kroppens rörelser är svåra att bygga då man måste få dem att kunna göra avancerade beräkningar om hur man håller balansen på endast två ben och hur man går på ojämna underlag. Ett företag som bygger både humanoider samt djurliknande robotar är Boston Dynamics som bland annat byggt och bygger på roboten Atlas.

Men Atlas kanske till kroppen ser ut som en människa och kan gå, springa hoppa och balansera men han är dock inte en fullständig kopia av oss människor så som C3PO, bland annat så kan han ju inte kommunicera. Detta jobbar dock företaget Hanson robotics på som skapat den omtalade roboten Sophia som har ett AI som hjälper henne att processa tal.

En annan robot vid namn iCub är en öppen plattforms-robot som bland annat tränas till att lära sig själv att identifiera saker i rummet och manipulera dem med armar och händer likt ett tvåårigt barn.

Med nya tekniska innovationer inom robotars perception och interaktion med omvärlden samt bättre programmerad artificiell intelligens som genom maskininlärning och neurala nätvärk lär sig själv så går robotiken framåt och trots att det är skrämmande så måste man erkänna att det är otroligt spännande!

Källa: TEDxTalk

Maria HjorthComment
En hackares värld - Meltdown och Spectre
oliver-shou-342399.jpg

I början av detta år, 2018, uppdagades det att i stort sett alla världens datorer hade inbyggda svagheter i sin hårdvara som gör att hackare kan komma åt känslig information utan att man som användare märker det eller kan spåra vad som hänt. Dessa två brister döptes till Meltdown och Spectre och världens operativsystemutvecklare fick under en mycket kort period släppa uppdateringar i skydd mot hackare som skulle kunna utnyttja dessa brister. Men innan vi pratar om Meltdown och Spectre så måste vi ställa frågan…

Vad är en hackare?

När man säger ordet hackare så brukar det allt som oftast handla om en person som bryter sig in i mjukvarusystem genom att utnyttja svagheter. Det finns flera olika typer av hackare och den första man brukar tänka på är de olagliga hackarna som bryter sig in i system som de inte har rätt till och stjäl information, tar bort information eller lägger ner systemet så att de slutar fungera. Men det finns faktiskt fler hackare än dem som går in för att stjäla information eller förstöra ett system.

Man kan t.ex. vara en olaglig hackare som bryter sig in i system endast för att se om man klarar av det, för att det är häftigt och kul, eller som någon snedvriden samhällstjänst. Dessa hackare brukar ta sig in i systemen och sedan antingen inte göra något, lämna spår efter sig medvetet så att dem som övervakar systemet ska se att någon lyckats ta sig in alternativt inte göra något med systemet men lägga ut hur dem tog sig in på internet.

Den sista sortens hackare och den enda lagliga sortens hackare är dem som är anställda av dem som äger systemen för att precis som en olaglig hackare försöka bryta sig in i systemet. Skillnaden är att dessa lagliga hackare sedan rapporterar systemets brister så att de eller andra kan fixa till säkerhetsluckan. Men då kommer vi till frågan…

Hur gör hackare?

Att vara en hackare innebär i de flesta fall att man måste ha extremt god kännedom om hur datorer fungerar ner till den minsta beståndsdelen både hårdvaru- och mjukvarumässigt. Man måste dessutom göra mycket research om systemet, till exempel om hur det är strukturerat, hur man använder det och vilka språk som det är skrivet på. Det man som hackare sedan försöker göra är att förvirra systemet så att det släpper ifrån sig information som egentligen inte ska ges ut, t.ex. kan denna information vara i form av användarnamn och lösenord vilket i sin tur gör att man kan få tillgång till hela systemet eller andra system genom en godkänd användares inloggningsuppgifter. De största svagheterna som hackare ofta brukar utnyttja ligger i systemets interaktion med användarna, t.ex. så kan formulär på hemsidor som är kopplade till en databas vara svaga mot så kallade kodinjektions-angrepp. Kodinjektion innebär att man istället för att t.ex. skriva sin email-adress i ett fält skriver in kod som ber databasen att plocka fram data, detta kan förvirra systemet som då tolkar och kör denna kod trots att den kommer utifrån och från ett ställe där den inte ska få in annat än text.

meltdown.png
spectre.png

Vem hittade Meltdown och Spectre?

Många människor var involverade i finnandet av bristerna och dem återfanns även av flera olika team samtidigt. Dock var både Google Zero samt Graz tekniska universitet med i finnandet av båda bristerna som de då rapporterade så att detta kunde uppmärksammas.

Hur kan hackare utnyttja dem?

Bristerna som dessa människor fann ligger i datorers processorer där data som används av en dator medan den är igång kan stjälas. Meltdown och Spectre gör att man kan komma åt hemlig information som används av ett program med hjälp av ett annat program vilket till exempel gör att lösenord som lagras i en lösenordshanterare i en webbläsare kan stjälas från ett annat program. Problemet är att detta även gäller för alla moln-tjänster som använder denna typ av processorer vilket betyder att man i vissa fall skulle kunna komma åt data från andra molnanvändare.  

För att skydda sig allmänt från hackare så får man därför inte missa att uppdatera sin mjukvara då skaparna hela tiden sitter i en katt och råtta lek där de försöker hitta bristerna innan hackarna hinner utnyttja dem för att skydda sina användare. Ett annat mer involverat sätt kan vara att veta hur brandväggarna man har i ett system fungerar, se till att ha säkra lösenord som man byter ibland samt jobbar med moderna system.

Vill du veta mer? Titta på denna video: 

Källor: meltdownattack, SciShow

Hur kommer en dator ihåg?

En dator har flera olika minnen där information sparas. Vissa minnen är snabbare men kan inte spara informationen länge och andra är långsammare på att få fram informationen men kan spara informationen så länge som hårddisken rent fysiskt håller. Dessa två typer av minnen kallas för arbetsminnen och lagringsminnen. Anledningen till att man inte bara har ett minne som är supersnabbt, stort och kan spara information länge är bl.a. för att detta blir väldigt dyrt för gemene man, svårt att bygga och inte nödvändigtvis bättre. Det är därför lättare att använda flera olika typer av minnen som alla jobbar lite olika, har olika uppgifter och därmed kan överbrygga varandras brister. Alla dessa minnen brukar delas upp i en hierarkisk pyramid som beskriver hur nära ett minne ligger datorns beräkningsenhet. 

minnespyramid.png

Det som i en dator faktiskt gör alla beräkningar och kör program är processorn (på engelska kallad för Central Processing Unit, CPU). Man skulle kunna likna processorn vid en bibliotekarie som har ett jättebibliotek med böcker. Sedan har vi de olika minnena, dvs ställen där dessa böcker i biblioteket kan förvaras. Det minne som ligger närmast processorn är cacheminnet alternativt flera cacheminnen. Dessa minnen är små och snabba och används för att lagra data som används ofta av processorn så att man inte måste vänta på att de stora långsamma minnena ska dra igång och leta efter denna data varje gång den behövs. Om vi använder vår bibliotikarie-jämförelse så är det som om bibliotekarien har lagt alla de mest lästa böckerna vid receptionen så att hen inte måste gå ut och leta bland bokhyllorna varje gång den boken behövs.

Härnäst i minneshierarkin kommer RAM minnet, primärminnet, som är det minne som hämtar och lagrar den data som ska användas medan datorn är igång dvs. ett arbetsminne. Detta minne är långsammare än cacheminnena men mycket större och används för allting som datorn skall göra medan den är igång. Denna session och dess information försvinner från RAM minnet när datorn stängs av. Det är som att alla böcker för ett visst projekt läggs på ett bord i biblioteket så att man har dem alla samlade och kan jobba med dem relativt effektivt.

sylvia-yang-409493.jpg

Det sista minnet, sekundärminnet, brukar vara någon form av hårddisk som långtidslagrar information som man vill ha kvar även när datorn inte är igång. Detta är anledningen till att osparade filer ibland försvinner när en dator oväntat stängs av, RAM-minnet kan inte komma ihåg något utan ström och hårddisken har inte fått tillgång till denna fil. Hårddisken är alltså som de stora bokhyllorna av böcker som man sparat för att de ska kunna hämtas ut till RAM minnet när man under en session vill använda sig utav dem. Om man inte lägger tillbaka böckerna i bokhyllorna så kommer de vid sessionens slut att försvinna. Det är i hårddisken som OS:et (operativsystemet) är lagrat och plockas fram till RAM-minnet varje gång datorn startas.

Men vad är då som sparas? Jo, filer, program och applikationer. Dessa är i grund och botten kod och på den lägsta nivån är denna kod ettor och nollor. Dessa ettor och nollor kan sparas på olika sätt, t.ex. så kan en transistor vara öppen eller stängd eller så kan ett magnetband ha struktur åt ett eller ett annat håll. Datorn läser och tolkar sedan detta som den där sparade kattbilden från internet! 

Kolla på den här filmen för en nytt fantastiskt futuristiskt sätt att lagra data i DNA!

Källa: HowStuffWorks

 

Digital inföddhet vs. Digitalt kunnande
kelly-sikkema-266805.jpg

Marc Prensky skrev 2001 en omdebatterad journalartikel vid namn ”digital natives, digital immigrants” som ungefärligt översätts till ”digitala infödda, digitala immigranter” där han kategoriserade alla generationer som växt upp i en digital era där internet existerat (1980 och framåt) som digitala infödda och de födda innan som digitala immigranter. Skillnaden mellan de båda grupperna beskrivs med exempel där de digitala immigranterna gärna lutar tillbaka på äldre metoder t.ex. hellre skriver ut mail och läser dem så än att läsa på skärm och de digitala infödda på ett naturligt sätt använder och utnyttjar de nya teknikerna. Även om denna uppdelning är väldigt otydligt beskriven i artikeln och hårt kritiserad för att nya generationer inte magiskt lär sig nya tekniker för att dem är födda i internet eran så kan det finnas det en poäng i att kunna uttrycka huruvida vissa är mer kunniga inom vissa områden på grund av att de växte upp i en era där dessa verktyg, metoder eller tekniker dominerade. Bland annat så är det spännande att diskutera skillnaderna mellan barn som har växt upp i den klassiska persondator-världen med lokala filer och hierarkiska filsystem där mus och tangentbord är de främsta verktygen för inmatning och barn som växt upp i tablet/smartphone-världen med applikationer och molnlagring där touch-skärmar dominerar som inmatningsteknik. Man kanske skulle kunna använda Prensky's uttryck för att beskriva att barn som är födda in i touch-teknikens värld därmed är digitala infödda i denna tekniska era och samtidigt kan vara digitala immigranter när det kommer till persondatorer/PC. Tvärtom beskrivs då PC-generationsbarn som kanske vill luta tillbaka på ”den klassiska datorn” och dess logik då de är digitala infödda i denna era.

Men vad spelar detta för roll? Varför kan det vara bra att prata om och ha uttryck så som PC-generationen eller Touch-generationen?

farzad-nazifi-71686.jpg

En anledning till varför det kan vara viktigt att beskriva och förstå de olika generationernas hemtama system och huruvida de är digitala infödda eller digitala immigranter kan bl.a. vara att det idag krävs av digitala producenter från touch-generationerna att de lär sig PC-generationernas sätt att jobba för att kunna skapa t.ex. applikationer genom programmering.

Det är för många idag otroligt lätt att konsumera digitalt material och många kan från väldigt ung ålder konsumera media från touch-enheter då de har ett mer intuitivt sätt att navigera och interagera[1]. Det är därför lätt att bli lurad att tro att eftersom touch-generationen är så tekniskt kunniga och vana vid denna teknik så är de även lika tekniskt vana vid persondatorer vilket är ett antagande som är oklokt att göra då de snarare är digitala immigranter i denna teknik. Detta antagande bör speciellt ej göras av folk som lär ut inom digital produktion där olika generationer kan behöva olika mycket stöd i användandet av de olika teknikerna. Touch-generationen måste med utgångspunkt i deras hemtama system i dagens läge lära sig hur persondatorer fungerar för att lära sig att programmera och på ett tydligt sätt kunna diskutera hur hårdvara och mjukvara samverkar. Detta innebär såväl att de måste lära sig hur man skriver på tangentbord (inklusive hur man använder de funktionsknapparna som finns) som hur man skapar, öppnar och sparar filer som hanteras från olika program, vilket för PC-generationen och tidigare generationer är vardagsmat.

Poängen man kan dra av detta tankeexperiment är att det finns ett värde i att inte blanda ihop digital inföddhet med övergripande digitalt kunnande och förstå att det som är självklara handlingsmönster för dig på ett system kanske är svårbegripliga och måste läras in av andra generationer. Därför kan det vara skönt att ha ett tydligt sätt att uttrycka att man kan vara digitalt kunnig och en digital infödd men samtidigt vara en digital immigrant. 

[1] http://www.sky-technology.eu/en/blog/article/item/7-proven-benefits-of-touchscreens-and-touchscreen-technology.html

Ett öppet internet

I Torsdags (14/12-17) skedde ett för många omvälvande beslut när USA:s kommunikationskommitté FCC röstade emot så kallat nätneutralitet. Nätneutralitet är en term som beskriver det faktum att internetleverantörer inte får begränsa eller försvåra, alternativt förenkla och effektivisera, för internetanvändarna att nå och/eller använda vissa hemsidor. Termen beskriver att internet skall vara öppet för alla och att alla användare ska ha lika stor möjlighet att nå alla delar av det. I Europa har vi sedan 2016 haft en förordning som hindrar alla som är en del av EU medlemsländer från att kontrollera internet och denna förordning påverkas ej av vad som händer i USA (SvD), men frågan om varför nätneutralitet är så viktig kvarstår. 

tim-mossholder-298394.jpg

Vi tar ett exempel till hjälp för att förklara en av effekterna som nätneutralitet motverkar.

Vi har internetleverantören Bredbanden som får betalt av företaget Goobel för att deras sökmotor ska vara lättare att nå än den mindre sökmotorn Bling. Detta betyder att så länge som Goobel har mer pengar och kan betala internetleverantörer så som Bredbanden så kommer Bling ha väldigt svårt att göra sig hörda på internet hos Bredbandens kunder. Ännu knepigare blir det t.ex. om politiskt partiska nyhetstidningar kan betala för att synas mer på internet än andra, motsägande, tidningar och viss information därmed blir svår att nå för Bredbandens kunder. Internetleverantören kan därmed skapa en så kallad filterbubbla åt sina kunder. Genom att ta bort nätneutraliteten så blir det en pengafråga om vilket företag som får internets "motorvägar" och vilka som får ta "grusvägarna"(NYtimes). Detta blir då naturligt en fråga om yttrandefrihet där det med ett öppet internet är lika lätt och svårt för alla att göra sin röst hörd och där små bolag som inte kan betala för att synas får samma möjlighet att synas på nätet som de stora jättarna. 

jon-moore-399469.jpg

Argumenten mot nätneutralitet menar på att staten inte bör lägga sig i och kontrollera internetleveransen utan att detta bör vara en fri marknad. Vissa menar även att om internetleverantörer kan ta betalt från de aktörer som belastar nätet som hårdast t.ex. streamingtjänster så kan andra tjänster bli gratis alternativt så kan internetleverantörerna få tillräckligt med pengar att uppgradera och bygga ut internetanslutningarna (BBC). De menar även att de på ett effektivare sätt kan begränsa och censurera internetsajter som kanske inte är lämpliga för t.ex. barn. 

Som alltid så är det viktigt att våga ifrågasätta hur teknik används och se andra sätt att använda teknik. Men denna förändring ändrar den öppna Internet-kulturen i grunden och frågan blir vad konsekvenserna faktiskt skulle bli vid en sådan förändring. Värnar man om nationen, företagen eller den enskilde individen genom förändringen? 

Datalogiskt tänkande - Vad är det?
diego-ph-249471.jpg

När man pratar om programmering i skolan och vikten av att lära sig att programmera en dator så brukar oftast argumentet för detta vara: "Man lär sig inte bara ett programmeringsspråk utan man lär sig att tänka datalogiskt!". Men vad betyder det? Och varför är det så viktigt att lära sig att tänka datalogiskt? 

När man lär sig något nytt så brukar det i många fall vara av intresse eller nytta. Man lär sig antingen för att man själv ställer frågorna och vill veta svaren eller för att man måste kunna något i vardagen och därför lär sig något nytt. Men i många fall så lär man sig även i syftet att öka sin kognitiva förmåga. Syftet med att läsa matematik, fysik, filosofi eller andra ämnen där den direkta appliceringen kanske inte är lika lätt att koppla till eller möjlig att genomföra i vardagen är att denna inlärning skall öka ens förmåga att bl.a. se världen från nya perspektiv, lösa problem på andra sätt, se mönster eller skapa abstrakta beskrivningar av omvärlden. 

Detsamma kan sägas om programmeringen. Precis om alla här i världen inte behöver vara matematiker, filosofer, fysiker eller grammatiska experter så behöver inte heller alla vara utvecklare. Men att lära sig att lösa problem med hjälp av en dator genom att systematiskt ge den instruktioner via ett människa-dator-språk som kallas för programmeringsspråk så får man ännu ett nytt, mer algoritmiskt och systematiskt, sätt att tänka på och lösa problem. 

Detta nya sätt att tänka är det datalogiska tänket! Genom att ha ett systematiskt och algoritmiskt sätt att tänka så  har man ännu ett verktyg att jobba med för att angripa situationer och problem. 

Vill du lära dig mer om datalogiskt tänkande? Titta på denna video från Lärlabbet.

Kvantdatorn och allt spännande som följer i dess väg!

Idag är det nästan svårt att tänka sig en värld där datorer och smarta enheter inte är en del av vardagen. Vi har vant oss vid att snabbt kunna lyfta mobilen från fickan för att beräkna hur stor rabatten på nästa inköp blir, finna vägen i en ny stad eller kommunicera med folk över hela världen. Men lika hemtam som den klassiska datorn har blivit, lika främmande är det att tänka sig en ny typ av dator som kan göra beräkningar som alla dagens datorer i kluster inte kunnat göra.

 Där kvantmekaniken och datortekniken gifter sig så finner vi kvantdatorn! Ett race sker just nu mellan bland annat Chalmers, IBM och Microsoft för att skapa en effektiv och stabil kvantdator som kan lösa beräkningsprobelm dagens datorer ej klarar av.&nbsp;

Där kvantmekaniken och datortekniken gifter sig så finner vi kvantdatorn! Ett race sker just nu mellan bland annat Chalmers, IBM och Microsoft för att skapa en effektiv och stabil kvantdator som kan lösa beräkningsprobelm dagens datorer ej klarar av. 

Att datorer måste ha ström, elektroner, för att uttrycka de ettor och nollor som den använder för att kunna göra beräkningar är ingen nyhet, men hur skapar man och jobbar med en dator som utnyttjar svårbegripliga och svårhanterliga kvantmekaniska fenomen hos elektroner och fotoner så som superposition och sammanflätning? Det vill säga, hur kan man göra säkra beräkningar med partiklar som kan vara både ett och noll samtidigt tills man mäter dem? Eller där en partikel kan påverka en annan oberoende av avstånd? Hur ser man till att dessa känsliga tillstånd är tillräckligt stabila för att ge precisa beräkningar? Dessa är några av många frågeställningar som kvantdatorn ställer oss inför i och med sitt inträde. Men trots att allt detta kan låta nytt och märkligt så har vi faktiskt dragit nytta av kvantmekaniken i datorer långt tidigare.

Kvantmekaniken ligger bland annat till grund för vår förståelse av halvledare som idag används i alla datorer i form av transistorer[1]. Intåget av stabila transistorer gjorde att elektronrören kunde bytas ut mot dessa mindre komponenter vilket drev en revolution som har uttryckts som den moderna tidens boktryckarkonst och är en av anledningarna till att du kan hålla en så beräkningsstark dator i handen idag.

 En så kallad qubit (quantum bit) som genom att kylas ner till nästan den absoluta nollpunkten uppnår supraledning och superposition som kan användas för fler beräkningar än i en vanlig dator . Bild från:  Chalmers

En så kallad qubit (quantum bit) som genom att kylas ner till nästan den absoluta nollpunkten uppnår supraledning och superposition som kan användas för fler beräkningar än i en vanlig dator . Bild från: Chalmers

Kvantdatorn är förutspådd att kunna lösa många problem som vi idag inte har möjligheten att lösa, dock är det viktigt att komma ihåg är att kvantdatorer endast är bra på vissa typer av problem [2]. Kvantdatorn är ingen dator man spelar spel eller skriver romaner på, men för de beräkningar som datorn är anpassad för så är den exponentiellt bättre än vanliga datorer (2^n beräkningar per qubit (där n= antal qubits) i en kvantdator vs. 2 beräkningar per bit i en vanlig dator) och detta kan hjälpa oss inom otaliga områden. Bland annat kan dem hjälpa oss inom machine learning genom att processa enorma mängder data och inom kemiska simulationer då det ofta krävs enorma mängder beräkningskraft för att visa hur t.ex. en koffeinmolekyl faktiskt ser ut i tre dimensioner. Kvantdatorn har förmågan att ge oss ett kognitivt verktyg vars styrka vi aldrig tidigare skådat!

Men trots att kvantmekaniken inom datorvärlden inte är ny så skapar inträdet av olika typer av kvantdatorer nya svårlösta frågeställningar så som: ”Hur utvecklar man programmeringsspråk för dessa olika datorer för att utnyttja denna kapacitet?” Eller kanske ännu svårare: ”Hur hanterar man säkerhetsrisken som skapas när det finns en dator som kan dekryptera toppsäkra brandväggar som dagens datorer inte kan hacka?”

Kvantdatorns intåg är, liksom de flesta omvälvande nya tekniker, både svårförståelig, nästan lite magisk och på många sätt läskig men tydligt är att framtiden inom datorberäkningar kanske inte kommer att vara densamma.

För att lära dig mer om kvantdatortekniken titta gärna på filmen nedan!

[1] https://www.nyteknik.se/innovation/sa-ska-svenska-superdatorn-knacka-konkurrenterna-6886023#conversion-122831618

[2] https://www.nature.com/articles/543S2a