Samstemmer.net – unoter eller harmonisk taktfasthet?

Samstemmer.net er en prototype på en webapplikasjon som tilrettelegger for analyse av data fro Stortingets datatjeneste (tilgjengelig under Norsk lisens for offentlige data (NLOD)). Websiden oppdateres automatisk når ny data dukker opp i Stortingets data API. Slik nettsiden ser ut i dag er et førsteutkast, basert på leking og utforskning av datasettet. Man vet ikke alltid hva man ønsker seg før man ser det. For å virkelig skapenytteverdi for en bestemt gruppe bør denne brukergruppen selv definere hva som er riktig, viktig og nyttig. Gruppen jeg ønsker å fokusere på er journalister som dekker stortingspolitikk, og neste skritt i prosessen er i intervjue stortingsreportere for å fange opp deres ønsker og behov.

Nytteverdien for brukeren er løpende oppdatert bakgrunnsinformasjon på representanter og aktivitet i Stortinget, basert på den data som eksponeres i APIet. Per i dag utfordrer prototypen med automatisert tilrettelegging av politiske analyser, så vell ved å introdusere en spesialdesignet statistisk metode for å analysere voteringsdata som er noe mer avanser enn hva vi normalt ser bruk i Norsk politikk i pressen og på nett. Ved å fokusere på kvantitative metoder kan websiden holdes oppdatert uten menneskelig interaksjon.

Potensialet for å slå gjennom hos mange brukere er ganske liten, og heller ikke målet. Målet er å nyttiggjøre denne datasamlingen for spesielt interesserte (journalister og for politikk-hoder), denne gruppen har igjen gode muligheter til å nå gjennom til mange.

Journalistikkens samfunnsøkonomiske nytte er omstridt. Dragkampen mellom ”børs og katedral” er både en nøtt for pressen så vell som publikum. Det som kanskje er noe tydeligere er at nyhetsbransjen er inni i en dårlig periode, og trenger innovasjon og effektivisering. Bruk av åpne data og datastøttede metoder kan bidra her. Land som ikke har en fri presse, er land vi ofte helst unngår å sammenlikne oss med.

Siden er designet for å være enkel å navigere og forstå. Enkelte resultater krever noe kunnskap for å tolke, en kostnad som jeg mener er verdt potensielle misforståelser.

Samstemmer.net er ikke ferdig, det er en prototype som enda ikke har noen kravspesifikasjon eller som er brukertestet. Den er likevel fullt funksjonell. Koden er fri og finnes på github hvis noen har alternative ideer eller bruksområder.

Samstemmer.net er et skritt på veien mot en visjon. En visjon i Hans Roslings bilde om et faktabasert syn på verden, en visjon om et Dashboard som viser ”samfunnets status quo” basert på data, og som tilrettelegger for analyser som setter oss i stand til å ta gode rasjonelle valg som informerte borgere.

samstemmer.net from Eirik Stavelin on Vimeo.

Dato i Excel til dato i mySQL

Excel brukes til å utveksle data, også data som burde deles i andre formater. En tid tilbake fikk jeg noen databasetabeller, delt opp i fem excel-dokumenter (slik at den som gav meg dataen kunne maile den). Jeg ville (naturlig nok?) ha dette over i mySQL. Av det lærte jeg et par triks.

1. Datoer i Excel må krangles over i mySQL, alternativt kan du gjøre dette:
Lag en ny kolonne for dato.
Legg inn følgende formel i første celle:
=TEKST(A1, YYYY-MM-DD)
(min versjon av Excel er på Norsk, hvis du har en utenlandsk versjon skal TEKST skrives som TEXT)

Så kommer enda en utfordring. For å duplisere formlen ville jeg vanligvis ha klikket og dratt det lille krysset nede i høyre hjørne av cellen, helt ned til nederste rad i kolonnen. Men kolonnen er et titalls-tusen rader lang! Å klikk og dra tar jo evig tid.

Ved å dobbeltklikke på dette likke krysset, så auto-kopieres formelen helt ned til siste rad. Nice.
Lagre som CSV.

2. Excel lagrer CSV-dokumenter med rare tegnsett.
For å importere til mySQL må tegnsettet være noe mySQL skjønner. Ved å bare large som CSV gikk dette i ball for meg. For å enkelt få kontroll på dette åpnet jeg den nylagde CVS-filen i Textmate og lagret den igjen, men da ved å endre tegnsettet til UTF-8 og linjeskift til LF (begge de anbefalte valgene i Textmate).

Vips, importer til mySQL
Jeg bruker Sequal Pro som GUI til mySQL. Her er det en egen «Import…» kommando under «File..».

var partifarger = {} // krangle kan vi gjøre siden

Partier har farger, og det gjør det lettere for oss alle å skille dem fra hverandre. Det er lurt. Problemer finnes også, partiene henter seg nye farger og andre farger, bryter ut i nye partier og trenger flere farger. Så gir media partiene tydelige farger for å lage lekker grafikk med alle fargene, men som ikke er de helt samme som partiene selv valgte.
Så, det er rom for en krangle for de som vil. De som heller vil ha en hashtable i javascript for rask look-up for å fargelegge ting med partier i, her er en sånn:

var partifarger = {} // aka new Object()
partifarger['A'] = '#da383f'; //'#fd0000' fra logo
partifarger['ALP'] = '#f6f6f6'; // finnes ikke lenher
partifarger['B'] = '#008140'; // samme som Sp
partifarger['DNF'] = '#f6f6f6'; // finnes ikke lenger. Det Nye Folkepartiet het også det liberale forlepartiet og nye venste.
partifarger['FFF'] = '#f6f6f6'; // finnes ikke lenger
partifarger['FrP'] = '#393d87';
partifarger['H'] = '#0f658d';
partifarger['Kp'] = '#286d6d'; //'#f6f6f6' // finnes ikke lenger, stilte dog til valg i 2011 ...
partifarger['KrF'] = '#efae52';
partifarger['NKP'] = '#e40202'; // fra logo
partifarger['RV'] = '#a61e20';
partifarger['SF'] = '#f6f6f6'; // finnes ikke lenger
partifarger['Sp'] = '#008767'; //'#008140'
partifarger['SV'] = '#bb234a'; //'#cf0036'
partifarger['SVf'] = '#f6f6f6'; // finnes ikke lenger
partifarger['TF'] = '#f6f6f6'; // finnes ikke lenger
partifarger['Uav'] = '#f6f6f6'; // finnes ikke lenger
partifarger['V'] = '#81b45f'; //'#006c6e'
// de under her hadde NRK med i 2011-valget, selv om de ikke kom inn
partifarger['DEMN'] = '#003366'; // demokratene er ikke inne
partifarger['PP'] = '#000000'; // pensjonistpartiet er ikke inne
partifarger['MDG'] = '#3b7346'; // miljøpartiet de grønne er ikke inne
partifarger['R'] = '#7c2629'; // rødt er ikke inne

Stort sett basert på NRKs fargevalg fra lokalvalget 2011.

fra web/rss/xml/data til google spreadsheets

Aj-aj. Her er et google spreadsheet trick som hadde gått meg hus forbi. Dette er gull for alle som jobber med regneark, uansett hva det skulle være av arbeid. Før eller siden trenger du å importere data fra web/rss/xml eller liknende inn i ditt arbeide. Her er det som må være den enkleste måten å gjøre det på:

Tabell fra html

=importHtml(URL, element, index)
=ImportHtml("http://en.wikipedia.org/wiki/Demographics_of_India"; "table";5)

bruke xpath
=importXML("URL","XPath expression")
=importXML("http://www.google.com/search?q=live", "//a[@class='l']/@href")

flere

=importData("URL")
=GoogleReader(URL)
=GoogleReader ("http://graphics8.nytimes.com/services/xml/rss/nyt/HomePage.xml", "items title", "false", 1)
=GoogleFinance("symbol", "attribute")
=GoogleFinance("GOOG", "price")
=GoogleLookup("entity", "attribute")
=GoogleLookup("Italy", "population")

Gull!