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.

Utvide django admin

Alt i django er mer eller mindre tilgjengelig for å utvides. Koden er åpen, og den som vil knote seg fram til nye løsninger kan bare sette i gang. I denne posten viser jeg hvordan du får tak i verdier fra fra dine modeller fra admin-panelet via change_form.html

Fordelen med rammeverk er selvsagt at noen allerede har tenkt på det aller meste fra før, ulempen er at du ikke vet hva de tenkte da de skreiv koden. Det meste er vell dokumentert et-eller-annet sted, men hvor skal du begynne å leite? Google, så klart, men hvilke søke-termer?

Min klasse i models.py har mange verdier, som dermed er representert med samme kolonne-navn i databasen. Men hvordan henter jeg disse enkeltvis ut når jeg skal redigere objektet fra admin-panelet? Hva heter objektet?
{{ obj.verdi }}, {{ object.verdi }} ?

Hvordan skal man gjette slikt?

Vell, det heter {{ original.verdi }}.
Dette er sakset ut fra min nå redigerte /templates/admin/appname/app/change_form.html (eksempler på appname og app: flatpages/flatpage)

{% block form_top %}
{% if original.url  and original.organization != 'nytimes.com' %}
< iframe src ="{{ original.url }}" width="100%" height="500">     
{% endif %}

Ja, jeg vill ha en iframe som viser nettsiden som er laget, men ikke hvis den ligger hos nytimes.com, for de videresender panelet mitt til sin artikkel.

IndentationErrors i django med TextMate

Jeg har begynt å snuse på django, og snubla raskt over «IndentationErrors». Koden jeg jobber med er fra «komme-i-gang-totorialene» på prosjektets websider, og var ofte «feilfri». Med det mener jeg at koden ser helt lik ut som i eksemplene.

Feilmeldingene på testserveren (http://localhost:8000, etter python manage.py runserver) sier:

...
unexpected indent (admin.py, line 16)
Exception Type: IndentationError
Exception Value: unexpected indent (admin.py, line 16)
...

Problemet er at innrykkene (indent, som lages ved å trykke på tab-tasten, ⇥ på mactastaturet, ↹ på standard tastatur) som kommer med ved å kopiere koden fra tutorialen ikke er «det samme» som det innrykket et trykk på tab-tasten gir. Så lenge alle innrykker laget på samme måte, så skal det visstnok gå bra, men det løser ikke problemet.

Slik får du TextMate til å lage «myke innrykk».

Løsningen er å la redigeringsverktøyet lage mye innrykk (soft tabs). Jeg benytter textmate, så her er framgangsmåten for det.

soft tabs i django

«Soft tabs» gjør at koden ser pen ut, men uten å lage «IndentationErrors».

Som du kan se av bildet har jeg Python Django bundlen installert (dette er nok ikke nødvendig, dog). Til høyre for dette valget vises «Tab Size», som jeg satt til 4. Dette avstanden i et trykk på tab-tasten, målt i mellomrom, tror jeg. Underst i denne dropdown-menyen finnes «Soft Tabs (Spaces)» som gjør at når tab-knappen trykkes inn, så skrives ikke et normal innrykk, men nå 4 mellomrom.

Og så forsvant alle tilfellene av IndentationError etter denne endingen.