Nasjonale prøver på kartetDe siste par ukene har jeg satt av litt tid hver kveld til å lage en liten tjeneste som viser resultatene fra de nasjonale prøvene geografisk på en skikkelig oversiktelig måte. Siden dette er en uformell øvelse i datadreven borgerjournalistikk tenkte jeg selve prosessen kunne være interessant å dokumentere for meg selv og muligens også for andre. Det tok 15 kvelder og én arbeidsdag. Gitt at jeg har to små barn hvor den yngste gjerne skal bæres en timer hver kveld og den eldste våkner i 0600-tiden kan jeg umulig tenke meg at jeg har klart å bruke mer enn 2 timer i snitt per dag. Så rundt regnet gikk det en arbeidsuke. Tjenesten står nå live på skoleporten.bengler.no. Merk: Dette er ikke en spisset, gjennomarbeidet tekst, men heller en slumsete prosjektdagbok Kveld 1Skoleporten skal kjøre på:
Jeg har ikke brukt noe av dette før så jeg leser dokumentasjon og setter opp prosjektet med Sinatra og MongoDB, en ny og artig database som kjører Javascript (wot). Til slutt spar jeg dataene fra excel-arket til Dagbladet inn i MongoDB. Kveld 2Så, hvor ligger disse skolene? Sånn på kartet. Skoleporten har en asp.net løsning (i 2010, omg) som noen nisser har bygd for de. Den er så langt unna REST man kommer og når du søker etter Kampen Skole får du en URL på formen:
OMG Det er sikkert mulig baklengsengineere javascriptene deres for å finne ut hvordan de lager disse kaudervelske søkestrengene. Men hei, vi betaler for disse skolene. Noen må da kunne fortelle oss hvor de er. Joda, på den superhjelpsomme portalen norge.no finner jeg dette i FAQen: Hvor finner jeg adresser til skoler og barnehager?
Så bra! Jeg tar meg en tur dit. Fett, men hei, vent. Ser ikke adressen litt annerledes ut? Nei! Neeei! NEEEEEI! De har rendret teksten som grafikk. Men hvorfor?! Ah, selvfølgelig. De har en bok til salgs til kroner 215,- som de har lyst til å selge oss. Prisen for dette produkt i digital form må jeg maile de for å få. Bra saker. Takk norge.no for at dere lenket meg til denne uselviske og nyttige kilden. Kanskje jeg skal skrape disse bildene ut av sidene til PedLex og kjøre OCR på de. Så hvordan får jeg kjørt OCR da? Hm, Tesseract, en urgammel open source OCR-maskin finnes i macports. Google finansierte open sourcingen av den for et par år siden så den er sikkert ikke helt ute. Om man gjør bildene litt likere innscannede dokumenter ved å skalere bildene til det tredobbelte, thresholde de og kjører Tesseract med en norsk treningsfil så ser det faktisk ut som det funker relativt bra. Men vent, det må være en bedre måte enn å gjøre tegngjenkjenning på 3000 GIFer. Hva med Google Places? Som et ledd i sin katalogisering av det norske samfunnet vet jo Google faktisk hvor disse skolene er. Faktisk. Så hvordan ser Places APIet ut? Det viser seg at Google har begynt å stramme inn litt i APIene sine og krever her at man er en slags ‘kunde’ av Google og søker om å få tilgang hvorpå man må skrive under på blant annet:
Så kanskje ikke det, siden jeg bryter mot 90% av vilkårene. Jeg kunne alltids skrapt det ut av Place-søkene, men det er garantert et brudd på de samme vilkårene det også. Vi vet heller ikke om Places vet om absolutt alle skolene. Ok, en annen strategi. Hva med Google-søk på skolenavn avgrenset til skoleporten.utdanningsdirektoratet.no, oppslag i skoleporten med påfølgende skraping av adresse som vi slår opp i Googles geokoder? Det er skjøre saker og om noen bestemmer seg for å endre noe på skoleporten eller slenge disse sidene i robots.txt går det i dass, men er kanskje hakket bedre enn å OCRe 3000 GIFer. Får vi treff? Jada=. Holla! Kveld 3 – Skrap skrapDet første forsøket ser slik ut: Og visst gir det oss ikke: Holla! Bare 1 av de 5 første feiler. Nå på en enkodingsfeil i geokodingsbiblioteket jeg brukte for å gjøre livet mitt litt enklere. Herlig. Det er litt gammelt og har noen problemer relatert til Ruby 1.9 og Unicode. Som gode internettborgere rapporterer vi feilen, forker koden på github og legger inn de bittesmå fiksene våre. Det er selvfølgelig noen flere små snags, men med litt taktisk wrangling er det stort sett bare skoler som:
som feiler og det ser ut som det er under 1% som ikke får noen adresse. Bolivia! Disse kan vi håndslå i excel etterpå om vi gidder. Fest! Kveld 4 – GeokodeagogoDette gikk jo ganske bra. Det er sansynligvis et TOS-brudd å gjøre disse søkene og Google sperrer meg etter rundt 256 søk (noen hos Google må ha estetisk sans for 2^n). Det er noen skoler med utenlandsadresser og noen navn med stor diskrepans mellom navnet i nasjonale prøver og i den nåværende versjonen av SKoleporten. Men det er fortsatt ikke mer enn 50 etter å ha kjørt de første 2100 skolene. I tillegg feiler Google en del på adresser av typen Sandshamn, 6089 SANDSHAMN. Disse virker fint på maps.google.com, men feiler i APIet. Kanskje jeg får noe om jeg har en fallback som bare bruker stedsnavn. Det er virkelig stas å sjekke treffene jeg får. Ofte står det en skole plantet midt i satelittbildet. For småsteder mangler skoleporten gateadresser. Kanskje kommer posten fram uansett, men jeg får litt dårlig treff. Det får vi leve med.
Man får tårer i øynene av å tenke på at den danske staten leverer geokoding som en tjeneste på lik linje med ferskt vann i springen, mens vi her i landet må lene oss på Google eller aktører vi må skrive kontrakter med oppsigelsestid for å finne ut hvor en adresse er. Mens jeg venter på en av-svartelisting fra Google bygger jeg en liten eksport til CSV slik at jeg kan gi dere disse dataene tilbake på Google Spreadsheet så snart det er ferdig. Kveld 5 – Jern i skapetAlle har rett noe de kan kalle et eget hjem. Vi har en urgammel maskin (2.6Ghz Xeon / 2 cores) som det for tiden ikke kjører noe tungt på. Den sitter i skapet sitt på coloc-rommet til snill snille Domeneshop nede ved Akerselva. Det står i andre enden av en fiber som går rett til NIX. Det bør holde. Eneste problemet er at den ikke har vært brukt til noe nytt på evigheter og kjørte inntil ikveld Ubuntu Hardy Heron 8.04 . For å brukes til noe nyttig må den oppgraderes til en moderne Ubuntu. Det går med tre kvarter mens Ubuntu tålmodig river ifra hverandre og setter sammen et system bestående av en en bunke pakker og deres utallige avhengigheter. Med ett grep bygger den det om slik det står og presenterer det i ny støpning. Millioner av kodelinjer, et utall ørsmå tannhjul som griper inn i hverandre. Resten av kvelden går dermed med til å oppgradere og avknekke ting som faller i gulvet i prosessen. Kveld 6 – These are not the schools you are looking for.Kjære dagbok. M har trent i kveld. Begge barna gråt hele tiden. Nå sover alle sammen. Titter litt på resultatene fra geokodingen. 10 sprø verdier. Rundt 90 mangler ellers. Det er bare to som er store: Max Tau og Steinern i Oslo. Resten ligger i Bolivia eller på små nes langs kysten. Jeg forsøkte å geokode 10 av de manuelt og det er en royal rumpesmerte. Mange av de finnes hverken av Google Places, 1881.no eller andre kilder. Man ender opp med å søke etter kommunene eller stedsnavnene og det hele blir heller omtrentlig. Lurer på om jeg skal la disse ligge. Kveld 7 – Tidlig i sengTidlig i seng, men stod opp klokken 0200 og la til alle markørene på et Google-kart.
Kveld 8 – Første pass GUIMens jeg får det minste barnet til å sove leser jeg meg opp på:
Jobber litt med stiling. Drar opp GMaps til fullskjerm og ser på CSS3. Kveld 9 – Markører over AJAX IKikker på Google Table Fusion etter å ha kommet over denne sørgelige anvendelsen? hos the Guardian. Tenker det er et fint verktøy for noen, men knapt komplett for oss med tanke på at jeg ikke har ensartede markører og trenger å tegne fine markører for skolene. Det er synd, siden det er superfint at Google kan rendre digre datamengder som overlays på GMaps for oss med to linjer kode. Sikkert nyttig til noe annet. Man kan tross alt ikke hente 2980 markers til Google maps så det må skrives noe javascript AJAX for å hente markører når man drar på kartet. Bruker litt tid på å finne ut av Geo2D within søket til Mongodb og banke dette inn i jQuery sitt getJSON kall. Tror jeg trenger elevantall på hver skole. For det vil jeg vel visuelt indikere? Ser at Google har et JSON-kall som jeg kan bruke istedenfor denne skrapingen av googlesøk med Nokogiri. Det ser lurt ut. Siden Google sikkert ikke er like illsinte på svartelisting i et offisielt API. Kveld 10 – PLZ WAIT, OK – Normalizing test results.Nå begynner det å bli relevant å se på de faktiske testdataene. Jeg normaliserer de på en skala fra 0 til 1 i forhold til årstrinn (5. klasse løper fra 1-3, mens 8. løper fra 1-5) slik at vi kan slå sammen resultater for skoler som både er ungdomsskoler og barneskoler. I tillegg skriver jeg snittverdien inn i hver skole, kommune og fylke. Takket være en del kål med Mongoid, MongoDB-abstraksjonen for Ruby som jeg har valgt å bruke, tar dette 2 timer istedenfor 0.5. Kildekoden må ingen lese. Kveld 11 – Size of school, size of problem may be.Vi trenger å finne ut hvor store skolene er. Det å gjøre vanlige Google søk fikk meg svartelistet rundt hvert 256. kall hvorpå det tok rundt en halvtime for Google å tillate søk igjen. Ser derfor på JSON-APIet isteden. Ser fint ut. De viser seg imildertid at skoleporten AJAXer inn tabellen med elevantall. Gaargh. Who are these people? Må derfor Google, gjøre oppslag på skoleporten, finne tak i AJAX-kallet, hente HTML-fragmentet fra URLen den bruker og parse ut verdien av tabbelen i den siste cellen på andre linje. Takkskarruha. Det virker, men tar litt tid. Med en del feilsøking og presisering av søket er det alt som blir gjort ikveld. Det er grenser for hvor nøyaktige det blir på denne måten. Om noe blir denne prosessen et slags langtrukkent argument for å sette APIer på offentlige tjenester. Kveld 12 – Markører over AJAX II – The Revenge of Front EndVi kan ikke hente 2930 kartmarkører og sette de på kartet. Det er altfor tungt. Vi kan bare vise de som er innenfor kartet til enhver tid. For utzoomede bilder må vi vise kommuner og fylker. Dette krever at Google Maps må snakke med serveren hver gang du flytter på kartet. Vi må også fjerne markører som detter utenfor delen av kartet vi ser på. Gmaps har en del fine funksjoner som forenkler dette, men vi må fortsatt skrive en liten MarkerManager som holder orden på markørene vi har satt. Kveld 12 – Tegne kartmarkører med HTML5 canvasStarter med en modifisert utgave av dette eksempelet. På kort tid har jeg for første gang fargelagte små infoboller for hver skole. Begynner med en mapping i HSL-fargerommet. Skolene legges i farge mellom rødt og grønt. De som ligger midt på treet blir gulbrune. I tillegg legger jeg på en sigmoid-kurve av dette slaget for å aksentuere forskjellene. Lurer på om ikke blått til oransj hadde vært en like effektiv, og litt mindre rotete fremstillingen av resultatene.
Kveld 13 – Estetisk frobbing av markører og kart.Fjerner gradientene på markørene og legger til skalering på elevantall. Sørger for at markørene faktisk er sentrerte koordinatene sine. Elevantallet er ganske random vise seg. Det er små skoler i distriktene som dukker opp med 500 elever presumptivt fordi jeg har sanket tall fra hele kommunen eller fylket de ligger i. Håper utdanningsdirektoratet kan gi meg en fin liste over hvor store disse skolene er. Markørene på kartet må bli tydeligere. Forsøker meg på å få tak i DOM-elementet som holder selve kart-flakene til Google for å gjøre de transparente mot en mørk bakgrunn. Viser seg å være mulig, men litt involvert og flaky om Google skulle oppdatere måten kartkomponenten er pakket på. Men hei, Google har laget stiling av kartene. Jeg har nesten ikke sett dette i bruk selv om det har vært live i månedsvis. Man kan skru av og på innholdstyper og bestemmer fargene deres helt etter eget forgodtbefinnende. Stas. Kartet blir mørkt og nattklubbaktig for å vise fram markørene. Går over og gjør markørene enda mer Walter Gropius-aktige.
Legger også ut prosjektet offentlig på Github. Koden, databasedumper, grunnlagsdataene, alt sammen. Kveld 14 – Klargjøring av prodmiljø, visning av kommuner, twitterAftenposten ledet med nasjonale prøver i dag. Saken handlet om hvordan Oslo-skolene unntar de svakeste elevene fra prøvene for å heve resultatene. Det hadde vært interessant å se denne informasjnen sammen med prøveresultatene, men det får vente. Klargjør produksjonsmiljøet med rvm og riktig ruby versjon (1.9.2) og ser på måter å kjøre sinatra sammen med lighttpd. Ser greit ut. Når noen zoomer ut må vi gå over til å vise kommuner istedenfor skoler. Skriver støtte for dette. Tar en halvtime.
Oppretter en twitterkontoen @skoleporten. :) Kveld 15 – Visning av resultater fra enkeltskoler i popupsSetter opp henting av data med JSON over AJAX for hver skole. Interessant informasjondesignsoppgave. Hva er den enkleste måten å vse informasjonen på. Gruppering, klare hierarkier og fargekoder som overenstemmer med hovedvisningen er sikkert klokt. Hey, JQuery har en liten templating engine så jeg kan kjøre JSON rett over i templates jeg har skrevet i HAML. Boggle. Dag 16 – 3. november 2010Setter av et par tre timer på jobben til å ferdigstille stiling av popups og skrive en about-tekst. Noier ut da jeg ser at ruby på serveren bruker rundt 200ms på serveren på å pakke 400 markører i JSON. Bruker en time på å se etter optimeringsforslag og roer meg ned da Alex foreslår et JSON-bibliotek med det poetiske navnet Yajl (yeah, Yet Another Json Library – om det hadde stått som et onematopoetikon i en tegneserie hadde det vært dødsralling) som kutter tiden ned til mellom 1/2 og 1/3 på benchmarkene. Laptopen min gjør dette på 1/5 av tiden forresten. Som før nevnt, gammel hardware. Anways, vi står nå live på skoleporten.bengler.no. Webdagene 2010Onsdag 29. september 2010 kl. 09.00 til fredag 1. oktober 2010 16.00, Radisson Blu Plaza Oslo Norges største og viktigste webkonferanse, i år med et eget track om offentlige data (se programmet for torsdag 30. september) Webdagene 2010Onsdag 29. september 2010, Radisson Blu Plaza Oslo Norges største og viktigste webkonferanse, i år med et eget track om offentlige data (se programmet for torsdag 30. september) • Underteikna skal sitje i panel som skal diskuterere “Er jeg meg på nett?” på Nordiske Mediedagar i Grieghallen i mai. Eg meiner at du aldri kan representere berre deg sjølv på nettet. Er du ueinig? Eg vil gjerne ha innspel til debatten her. • mediebruket.no
Ivar Johansens bloggDa er bloggen min på plass her på Origo. Vil du være med på laget? Kartlegging av offentlig sektors dataHåper det er interesse blant medlemmene av denne sonen for et prosjekt jeg jobber med ved Infomedia, Univ. i Bergen: Vi forsøker å kartlegge situasjonen for frigivelse av offentlig sektors data. Spørsmålene vi ser på er: - hvilke datakilder finnes faktisk i de ulike virksomhetene, og i hvilken grad og på hvilke måter gjøres disse dataene tilgjengelig? Vi har også en prosjektblogg kalt Fakta først, der vi også tar opp debatter og ideer rundt hvordan data kan brukes. Bidrag ønskes – også til selve kartleggingsarbeidet! Geodataloven (Inspire) på høring til 15 februar![]() Det offentlighetsloven gjorde for PSI gjør geodataloven for Inspire (direktivet som PDF). Inspire har som sitt viktigste formål sørge for samordning og tilgjengelighet for geodata og geografisk metadata i EU. For det offentliges del har denne prosessen kommet langt i Norge takket være Norge digitalt, men Inspire skal ha konsekvenser for den generelle tilgjengeligheten av geodata også også. Så da må man jo se lit nærmere på det. Jeg har bare fått tid til å svært raskt skumme høringsnotatet. Et interessante begynner på s.34: 8.4 Regler om allmennhetens tilgang til infrastrukturen
…
Videre på s.39 under Begrensninger i tilgang og deling
La oss lese den ene setning igjen:
Uansett i 10.3 kan vi kan lese:
(min utheving)
…
For meg ser det ved første øyekast ut som dette har mest å si for publikums tilgang til å gjøre søk og se kartbilder i kartverkets egne løsninger, uten at det legges bedre føringer for hvordan mediene skal få tilgang på bedre kart i sine egne løsninger. Jeg har også tatt en rask kikk på Inspire og de bruker ganske relativt sett mye mer plass på dataenes tilgjengelighet igjennom e-handelsløsninger:
hvor Art. 11 spesifiserer følgende tjenester:
Noe som faktisk er en reell forbedring. Det virker som om EU ser for seg en (inter)nasjonal geoportal hvor man skal kunne dra visakortet sitt og laste ned datasett med clickwrap-avtaler på. Dette er langt bedre enn den nåværende situasjonen hvor man, om man ønsker en så banal tjeneste som geokoding, kan bli bedt om å avtale et møte, skrive en ettårskontrakt og så integrere mot et halvfungerende API. Dette er interessant i forhold til offentlighetsloven og PSI hvor intensjonen i direktivet helt klart er at “public sector bodies” skal forvalte informasjonen sin selv i forhold til det private, ikke gjøre den tilgjengelig igjennom diverse forhandlernettverk. Dette punktet fra Inspire finner man igjen i høringsnotatet her:
og:
(min utheving) Merk den passive formen. Her mener jeg at det notatet legger opp til går kortere (ved å beskrive det som en mulighet, og avgrense det til et nedlastingscenario for tredjeparter, enn det som er naturlig å forvente seg av Inspire hvor formuleringen rett og slett krever e-handelsløsninger om det i det hele tatt skal tas betalt for kartdata. Etter det påfallende fraværet av endringer i distribusjonsstrukturen til Statens Kartverk etter offentlighetsloven vil det ikke forbause meg om man forsøkte å beholde denne igjennom enda en lovendring. • Forbilledlig statslevert dansk geokodingstjeneste • aws.oio.dk
Offentlighetsloven / Eksklusivitet / KartverketOffentlighetsloven § 6. Forbod mot forskjellsbehandling
Den eksklusive relasjonen mellom Statens kartverk, Norsk eiendomsinformasjon og forhandlernettverket hviler tydeligvis på en argumentasjon om at dette er i ålmenta si interesse. Jeg har i dag gjort første forsøk på å skaffe denne argumentasjonen vil veie, men siden den ene personen som kan svare på det hos Statens Kartverk er ute av huset i dag må jeg vente til mandag i tolvtiden. Stay tuned. En løsning på hvem som er hvemI forhold til arbeidet med Origo har vi jobbet mye med navn og identitet. Igjennom mobilregistrering søker vi å holde identitetene til folk stabile slik at de ikke kan dukke opp i samtaler som flere personer samtidig. Vi ser behovet for pseudonymitet i noen sammenhenger, men kan konstatere at dette som oftest brukes til uansvarlig oppførsel og ikke verdifull varsling. For de som vil, tilbyr vi å gjøre et oppslag mot telefonkatalogen for å verifisere at de ikke går under falskt navn. Denne mekanismen vil imidlertid aldri virke for alle ettersom mange har mobilttelefon fra arbeidsgiver som ikke er oppført. Vi har derfor de siste seks månedene jobbet med å få til en bedre måte å verifisere identiteten til de brukerne som vil skilte at de går under sitt eget navn. Christian hos oss har ringt til Lindorff (dyrt, tilbyr bare verfisering på fødselsdato), skatteetaten (snakket med 7-10 ansatte, men ingen kunne hjelpe), banker og andre, men ingen har kunnet fortelle oss hvem vi skulle henvende oss til. Vi fikk et lite gjennombrudd da vi isteden gikk igjennom EDB Infobank som tilbyr koblingen til folkeregisteret. De kunne informere om at man måtte søke Sentralkontoret for folkeregistrering og at det var strengt behovsprøvd. Det viser seg at EDB Infobank tilbyr en kobling til folkeregisteret hvor vi slipper å holde personsensitive data om folk, men bare kan sende videre f.eks navn og personnummer og få tilbake om de er i overenstemmelse. Oppslaget koster 50 øre. I dag fikk vi svaret på søknaden og den ble innvilget. Igjen viser det seg at mekanismene eksisterer, både som teknologi og som saksbehandling, men krever kunnskap om hvor man skal gå og hvem man skal snakke med. Offentlig informasjon
Følges av 56 medlemmer.
Vi ser på gjenbruk av informasjon fra det offentlige i journalistisk praksis. Dette byr ofte på en del praktiske utfordringer ettersom denne informasjonen ikke alltid er like offentlig. Mer om sonen Offentlig informasjon er en sone på Origo. Les mer Annonse | ||