Kan jag lära mig göra datavisualisering med python på 100 dagar? (istället för #blogg100)
January 27th, 2013 | Posted by in Personal | Practical | Social | Systemic | YellowJag deltar inte i #blogg100, men dels läste jag idag att Peter Rosdahl överväger att lära sig programmera på 100 dagar och dels gjorde jag ett major break-trough på min egen väg att lära mig programmera. Liksom Peter har jag haft alldeles för svårt att sitta still och koncentrera mig länge nog för att orka hålla ut med de otaliga tutorials jag prövat och böcker och bloggposter jag läst om programmering. Men idag fick jag till en koppling mellan en databas och programmeringsspråket Python, som jag fått rekommenderat av mig på SSWC (Tack David Vrensk för uppmuntran om val av språk och Emil Stenström för tips om Learning Python The Hard Way). Jag har envetet hållt på av och till med Python, Ruby och PHP. Det sistnämnda för att en lat programmerar-vän gjort backend-kod till mina psykografiska textanalys experiment som jag till slut var tvungen för min själsfrid att få igång på en egen server. Men genom min smarta kollega/vän Jonathan har jag fått kika in i Ruby-världen och sett att Ruby och Python verkligen är lämpliga för nybörjare på programmering och nästintill likadana för en nybörjare dessutom. Lär man sig det ena, hajjar man mer eller mindre direkt det andra.

Creating reality
Jag tror det var på tåget hem från SSWC förra året jag beslutade mig för att faktiskt lära mig programmera själv. Inte för att bli en fullfjärdrad utvecklare (pris ske lov för sådana människor), men för att kunna hacka ihop datavisualiseringar och prototyper på mina idéer. Idag fick jag som sagt till en koppling mellan Python och en MySQL-databas jag har installerad på min underbara Macbook Air. Det är för mig en oerhört stor händelse då jag försökt vrida min arma skalle runt hur programmering och särskilt hur man kan ladda ner textdata från sociala medier, lagra dem i en databas och sedan kunna göra det där jag personligen brinner för – analys och visualiseringar. Men för det krävs det förstås en grundläggande förståelse av hur datorer och programmeringsspråk fungerar. Och det har varit fruktansvärt svårt för mig, ända sedan jag slutade programmera BASIC i 11-årsåldern genom att skriva av kodsnuttar i pappas datortidningar framför hans Commodore 64.
Jag har känt mig och känner mig fortfarande riktigt dum i huvudet i förhållande till de som kan programmera. Till på köpet har jag umgåtts med och fått hjälp av flera riktigt, riktigt vassa utvecklare och av lathet och, tror jag, missriktad tro på att det är mer optimerat att låta proffsen sköta IT, medan jag skulle sköta skapande av träningsdata, marknadsföring – och då jag tillsammans med Jon, Ragnar och Björn prövade att starta företag – även affärssidan. Jag tror inte på det längre. Jag tror på att kunna hacka ihop saker oavsett om man nu ska prata om dem eller till och med kränga dem. Inte, för all del, utveckla och driva fullfjädrade IT-projekt kring dem. Det har jag fått alldeles för mycket insyn om och därmed respekt för hur oerhört omfattande det är, när det görs rätt, för att tro mig vara rätt person för den uppgiften. Men jag tror definitivt att grundläggande hack-färdigheter är helt avgörande om man som jag går runt med en massa idéer om textanalys och datavisualiseringar som ett sätt att förmedla filosofiska frågeställningar och experimentera med frågor inom media och kommunikation i nätverkssamhället.
Som fullfjädrad humanist i min utbildningsbakgrund (kommunikationsteori, lite vetenskapsfilosofi, dokumentära berättelsestrategier) och ett stort intresse för språkfilosofi, religionspsykologi, sociologi, antropologi, psykologi och retorik har det inte funnits utrymme (ork?) för praktiska ingenjörskunskaper även om det är precis DET jag är övertygad om är grejjen de närmsta åren – kombinationen av objektiva (naturvetenskap och teknik) och subjektiva (humanistiska och samhällsvetenskapliga) metoder. Den överbryggningen är exakt det jag brinner för och tyvärr har min hjärna inte orkat med ställa om till logiska språk som matematik, statistik och programmering. Jag har ingen naturlig fallenhet för sådant som kräver tålamod och detaljsinne, men det jag har naturlig fallenhet för har lett mig till en övertygelse om att man antingen programmerar eller blir programmerad i det nya samhälle vi lever i. Och att det datorer och Internet är på väg att återuppväcka humaniora från sin långa slummer! Jag är fullkomligt övertygad om att digital humaniora är det coolaste man överhuvudtaget kan ägna sig åt de närmsta åren, efter att grunden lagts framgörallt av telekombolagen och de myriader av lysande begåvningar som programmerat operativsystemen och mjukvaran som nu fullkomligt omsluter oss vanliga svenssons och snart hela världens befolkning.
Efter tre års gluttande över axeln på programmerare och nu drygt ett halvårs faktiskt meckande med datorer (gaaaah vad långsamt och frustrerande dåligt det har gått) tycker jag faktiskt att jag kommit till tröskeln. Nu gör det inte lika kognitivt ont att läsa instruktioner, söka efter svar på problem på nätet och skriva och läsa kod. Det har snarare kommit att bli mer av en njutning. Jag är dessutom helt överväldigad över hur många människor det är därute som verkligen lever upp till idén sharing is caring och hjälper andra att lära sig och komma vidare i programmering. Det är verkligen utvecklarna som skapat och driver den kollaborativa och öppna kulturen som de senaste åren börjat få fotfäste här och var inom den tjänstesektor (i alla fall med läpparnas bekännelse) som står på axlarna av vad utvecklarna har skapat de sedan 60-talet.
Jag använder iPython som jag måste säga är utmärkt för nybörjare och särskilt iPythons inbyggda Notebook som skapar en webbsida där man kan skriva sin kod och få den utförd direkt på sidan tillsammans med allt godis som följer med i iPython. Att man även kan använda t ex R (ett statistiskt programmeringsspråk med väldigt fina inbyggda visualiseringsmöjligheter för dataanalys) gör det väldigt lockade. Den här koden har det tagit mig totalt över 2 år att klara av. Jag vet, jag tänker sjuuukt långsamt. Men nu tror jag att jag kommit så långt i min förståelse för Mac OS X (UNIX), databaser (MySQL) och hur en webbsajt fungerar (jag har spanat in Django, men även Ruby on Rails) för att kunna få ur mig nåt synligt.
Så, efter ett illustrativt exempel på hur många ord det lätt blir när man använder naturligt språk, går jag här över till det fantastiskt koncisa språk som de logiska språken utgör.
För att installera kopplingen mellan python och MySQL har jag installerat mysql-python på min Macbook Air och installerar via setuptools:
sudo pip install mysql-python
OBS: Det funkar inte med MAMP av anledningar som går en bra bit över mitt huvud, kör med originalinstallationen av MySQL.
# -*- coding: utf-8 -*-
import MySQLdb
db = MySQLdb.connect('localhost', 'user', 'password', 'text')
cursor = db.cursor()
cursor.execute('SELECT title, body FROM text LIMIT 5')
result=cursor.fetchall()
print result
Detta producerar det fullkomligt hänryckande resultatet du kan se nedan. Inte mycket för världen, men för mig. Nu återstår att hajja det där med att omvandla text mellan Unicode och UTF-8 så att det blir snygga å:n, ä:n och ö:n också. Bara det problemet har sysselsatt min arma hjärna av och till under flera månader nu.
You can follow any responses to this entry through the RSS 2.0 You can leave a response, or trackback.

