onsdag 5. mars 2014

Jeg hacket hos kulturrådet, i morgen skal jeg tilbake!

Artikkelsamlingene vises fra det
jeg definerer som autoritative kilder.
I anledning jobben min på Bergen Byarkiv, ved Avdeling for Moderne Arkiver, får jeg gjort veldig mye kjekt og interessant. Mye av det vi gjør på, er "research" og utviklingstjenester.

En av tingene jeg har gjort i det siste, er å delta på et Hackathon for åpne data. I morgen skal jeg reise på posthack, et slags nachspiel for hackathonet.

I motsetning til et vorspiel med alkohol, ble det gjort mye produktivt på hackathon (med potetgull, sjokolade, cola og ~~200 mennesker).

Klapp :)
"Det var altså ikke bare tannlegene som ble glad for dette arrangementet."



Min deltakelse

Jeg deltok med mitt prosjekt "Ransake", som er en løsning som søker i Store Norske leksikon, Bergen byleksikon, Norsk kunstnerleksikon, Wikipedia, Flickr, m.fl.

Søket går gjennom en egenutviklet proxy (mellomledd) som mellomlagrer treff fra API-grensesnittene.
Her er et typisk søk etter oslofjorden,
i den grad det kan bli typisk. Treffene
kommer her fra Flickr. Det vil komme
instagram og andre koblinger i fremiden.
Denne løsningen kaller jeg "Flux Capacitor", som er en intern vits med meg selv. Jeg er litt usikker på om man kan ha en intern vits med seg selv, men jeg jobbet alene med Ransake, så det ble nå en gang slik.

For de som ikke skjønner vitsen, så må jeg nesten legge til et sitat fra Wikipedia:

The flux capacitor, which consists of a rectangular-shaped compartment with three flashing Geissler-style tubes (arranged in a "Y" configuration), is described by Doc as "what makes time travel possible."

Altså er fluxcapacitoren det som gjorde tidsreise mulig - i "Tilbake til fremtiden"-filmene.

Dette er i "god skikk"-tråd, for å forhindre hamring av API-er, samt man sparer gjerne 0.1-0.2 sekunder per domeneoppslag. Ransake slår jo opp mot 8 kilder per dags dato og tallet skal øke! Ganger jeg 8 med 0.2 sekunder, blir det 1,6 sekunder sløst på domeneoppslag alene! Dette er før PHP-skriptet røsker til seg JSON-data gjennom http-protokollen. En annen viktig fordel med dette skriptet, er at jeg får komprimert JSON-dataen, fra Flux Capacitor proxyen til jquery skriptingen som kjører i nettleseren. På denne måten blir det mindre "overhead" (cpu-tid) og det blir en mer sømløs opplevelse.


Kjedelig å vente

Forskning viser til særlig tre tidspunkt for brukere av datasystemer, som også gjelder for web og da særlig Web 2.0, samt sosiale medier. Tallene er: 100 millisekunder, 1 sekund og 10 sekunder.

"Flux Capacitor, makes time travel
possible" Kilde: Doc, tilbake til fremtiden

Hvis en bruker venter 0,1 sekund, føles det umiddelbart ut. 1 sekund føles responsivt, 10 sekunder fører til at brukerens tanker har sklidd over i noe annet. Nå er brukeren på vei bort. Jeg forutså potensielle ytelses-problemer rundt dette og jobbet for å få ned tiden. Hackthon gikk over to dager, så jeg tok å la noen ting til JavaScript som jeg har tenkt å flytte til "serversiden". Ytelsen kommer sånn sett til å forbedres ytterligere.

Men Flux Capacitoren tar seg av mange problemstillinger, i form av svartid, domeneoppslag og trafikk.

Formålet med ransake

Hele tanken bak prosjektet mitt, var å forhindre metasøk, man skal ikke søke for å søke. Videre har det jo unektelig blitt slik at Google og andre søkemotorer leverer deg det du forventer å finne. Jo mer aktiv du er på sosiale medier, bruker Web 2.0 tjenester, jo mer vet Google og andre om deg. Dette fører til at du får et mer innsnevret verdensbilde, enn om du gikk rett til de autorative kildene.

Men problemet er at ingen husker alle kildene og du orker ikke å gå inn i alle kildene og søke direkte. Du vil søke en gang og finne det - der og da (det er i alle fall det jeg vil at du skal ville)!

Nå høres det kanskje ut som at jeg vil erstatte Google, men det er ikke det som er hensikten. Hensikten er å gi autorative kilder til lærere, studenter, skribenter eller andre. Vi er alle i vår generasjon påvirket av "google effekten" (Man glemmer informasjonen, men husker hvor man finner den).

Jeg ønsker sånn sett å gi en alternativ inngang, en autorativ kilde som kan knytte sammen relevante data. Det er i utgangspunktet leksikale data og Wikipedia jeg anser som relevant å koble i denne konteksten.
Prosjektet er mer en "proof of concept" greie, men jeg har lastet inn NSF (Norsk Scrabbleforbund) sin ordliste i databasen. Tanken er å utvide med "tilfeldig ord", slik at man kan bruke løsningen som tidsfordriv. Sitter du å kjeder deg, kan du søke etter tilfeldige ord i autorative kilder! Denne tjenesten er dog ikke utviklet enda, selv om jeg er ferdig med selve databasen.

Ordskyen er heller ei på plass, denne tenker jeg skal vise populære søkeord og vekte de etter relativ frekvens. Eksempelvis kan det være at mange søker etter et emneord, som muligens mangler i SNL eller Wikipedia. Dette vil jo ha en enorm verdi, å kunne målrette innholdsproduksjon etter brukernes aktivetet, i tro med hele Web 2.0 og Sosiale medier tankegangen. Man kan tenke forbi brukerskapt materiale og tenke skreddersydd materiale etter brukerne. Når artikkelen er på plass, kan denne "pushes" ut til brukerne som søkte etter artikkelen?

QR-koden som gir deg 1 million kr.
Neida, bare tuller, den fører deg
til www.ransake.no , men det er
jo nesten verdt like mye i
mine subjektive(?) øyne.
Enkelt sagt: Ekstrahere statistikk på hvilke artikler som mangler i hvilke artikkelsamlinger, som igjen kan brukes som en viktig kilde for faglig påfyll i innholdsmotorene.

Her kan man gjøre mye lurt - og det er data som skapes av bruk.
Det er data som er verdt mye mer enn en generisk spørreundersøkelse, som til gjengjeld koster mye å få utført og analysert! Hvorfor ikke la brukerne spørreundersøke deg, fremfor at du skal spørreundersøke brukerne? De spør etter ditt innhold - har du det ikke - så lager du det (hvis du vil, da!).

Jeg skal med tid og stund (jada, jeg vet det er farlig å love) - utvide ransake med både NFC-inngang og QR-koder. Jeg lager en liten "proof of concept", men jeg må bygge om siden for at den skal klare å ta i mot lagrede søk. Nettsiden bygger jo på utstrakt bruk av AJAX / Web 2.0, med asynkront innhold. Det er noen strategiske valg som må gjøres, for å forhindre at man overstyrer asynkrone søk, ved å sende brukeren til en statisk søkestreng.

Jeg har tenkt ut løsningen nå, et "vanlig søk", med paramtere:
  • NFC-Kilde
    • ?nfc=søkestreng
  • QRKode-Kilde
    • ?qr=søkestreng
NFC som inngang til www.ransake.no ,
langt fra en drøm - jeg har gjort det!
Jeg er jo fremdeles ikke kommet "rundt" problemet med asynkrone søk som overstyres av statisk nettadresse, men jeg har en tanke om å sjekke om $_GET[]-variabelen (som er den delen man ser synling i adresselinjen) er tom eller ei. Hvis den er NULL, viser jeg søkeboksen. Hvis den ikke er NULL, må jeg vise et eller annet "søketreff for <søkeord>", med en lenke eller knapp for å gå tilbake til søk. Det kan tenkes at jeg trikser det til med .htaccess for å lage litt finere URL (mod rewrite, for de som bryr seg(da skal du være en god nerd!)).

I praksis vil dette muliggjøre deling av søk, på sosiale medier. Jeg er litt usikker på verdien av å dele et dynamisk søk, da man aldri helt kan vite hva som kommer fra kildene, selv om de i stor grad er autoritative.

Det ble nå en digresjon, men en viktig ting å tenke over, særlig når det kommer til bildetjenester. Man jo risikere at noen laster opp bilder som er NSFW!.

I have a dream


Jeg har en drøm, eller, kanskje bare en fantasi.

Min tanke er igjen å jobbe videre med mitt proof of concept. Spørsmålet er selvsagt hvor mye man må bevise i et konsept, men jeg har en drøm (eller fantasi?) - om å videreutvikle ransake til å hente mer data, fra innholdsprodusentene. Til syvende å sist vil jeg fremdeles ha en "gå til ekstern kilde", men jeg har en drøm om at ransake kan være en base som også kan vise til spesifikke objekter, de kan være enten kartfestede eller være artikler eller annet. Fantasien setter grenser (samt selvsagt hvor mye tid jeg bruker), men saken er jo den at man kan plassere ut fysiske interaksjonsobjekter i form av QR-Koder og NFC-Tagger.

Gamification

Når man først har kommet så langt, hvorfor ikke tenke det neste steget med gamification?
Kan vi lage et fysisk spill av ransake? Nå sier jeg vi her, men vi er altså meg.
Jada, jeg er meg! For øvrig er jeg en mester i digresjoner, men poenget er: I hvilke andre kontekster kan man vise den samme dataen og lage nye "mashups", i Web 2.0 ånden.

Når det er sagt, er det posthack i morgen. Da blir det ikke en praktisk hackeaffære, men innlegg og viktige bekjentskaper og erfaringsutvekslinger, idèmyldringer, innlegg, og annet.

Relevante lenker