Noen ord om tillit

De gangene jeg beveger meg ut på fleredagerstur i den norske fjellheimen har jeg med meg masse fyrstikker. Minst tre pakker i forskjellige rom i sekken, alle pakka i plast. Gjerne også en eske i plastbeholder og en lighter sammen med brenneren. Og så en eske i en jakke eller bukselomme. På samme måte har jeg med meg flere par sokker enn strengt tatt nødvendig. Hvorfor? Jo, fordi om den ene pakka med fyrstikker jeg har med meg skal bli våt, eller av en eller annen annen grunn ikke fungere har jeg en i backup.

På tur er det viktig å ha backup. Det er langt til butikken, og erfaring har vist meg at fyrstikker blir våte. Men, selv om jeg til hverdags er rimelig avhengig av bankkortet mitt for å få kjøpt meg bla.a. mat, har jeg ikke med to bankkort, fra to forskjellige banker, oppbevart i to forskjellige lommer. Hvorfor ikke? Fordi jeg har 1) tillit til at bankkortet mitt fungerer som det skal når jeg trenger det og 2) fordi jeg har tillit (kanskje litt naivt) til at ingen stjeler kortet mitt.

Men, så var det busskortet da. T:kortet som jeg jo har skrevet om før. Du skjønner kanskje hvor dette bærer? Nå har jeg hatt et t:kort i lommeboka i snart 4 måneder. Alikevel, hver gang jeg tenker på å ta bussen tenker jeg det samme som før jeg skaffet meg t:kort: “Hmm, har jeg småpenger? Nei, det har jeg ikke, hvor er nærmeste minibank?”. Hvorfor tenker jeg slik? Hele poenget med t:kortet er jo at jeg skal slippe å tenke på småpenger, pengene er jo “på kortet” (en sannhet med store modifikasjoner, men ta det som en metafor).

Problemet er bare at i løpet av de fire månedene jeg har hatt t:kortet (og tatt bussen noe slikt som 50-100 ganger, grovt antatt) virker det alltid til å være et problem. Enten så er jeg tom for penger (fordi systemet endelig er blitt synka) eller så er det en teknisk feil (for eksempel at verdidelen på kortet mitt ikke ble overført til takstsone Stor-Trøndelag etter nyttår).

Men, jeg burde vel klare å følge med på saldoen min? Nei. Ikke når nettsiden er opp til en uke ute av synk, og gjerne har en saldo på minusgrensa. I tillegg sies det visst at det går tregere å fylle kortet når man har en negativ saldo (som jo i utgangspunktet burde være en umulighet). Så, valget er enten å 1) kjøre buss til kortet er tomt og så vente en uke til det blir penger der igjen. 2) følge med på t:kort-nettsiden hver dag. 3) overføre store summer med faste intervaller (selv om jeg bruker bussen “nå og da”) 4) ha en lapp i lomma der jeg krysser av for hver gang jeg tar bussen. Og, ja, så kan jeg få en giro i posten npr saldoen er under en gitt sum da. Se bort fra 1-2 dagers postgang på denne.. Sanntid, anyone?

Poenget mitt er altså at t:kort totalt mangler tillit fra min side. Et par sitater her på tampen, ett fra Anders på Twitter:

@atlefren jeg vurderer å skaffe meg et t:kort, men jeg merker at jeg ikke er klar for å vente til planetene står i riktig posisjon.

Og et fra en kundebehandler i AtB som skal få lov til å forbli anonym:

Det er svært beklagelig at slike ting skjer, det er ikke lagt opp til at det skal være slik. Men dette er et system som er under konstant utvikling og forbedring av vår leverandør.

Grunnen til at det ikke lar seg gjøre over telefon eller over nett når det er noe som må rettes oppi selve kortene, er fordi at alt som skjer med kortene skjer enten gjennom bruk på bussmaskinene eller ved hjelp av datamaskinene på salgskontorene. Og bussmaskinene har ikke mulighet til å utføre korreksjoner etc av t:kort, da de kun har mulighet til å trekke billetter, legge på Perioder og registrere bruk. Dette er bl.a. fordi at bussmaskinene kjører offline hele tiden, så de har bare oppdateringer om natten. Så derfor er vi avhengig av at, hvis det oppstår feil med kortene, så må dessverre kortene inn til et av kontorene våre slik at vi får lest av tekonologien i kortene og korrigert eventuelle feil på direkten.

Så, er det bare jeg som mangler tillit til t:kort, er mine opplevelser i særklasse, eller må noen virkelig ta tak i omdømmet til dette systemet?

Vidreutvikling av Kartverket-GPX-kartklienten (nå med bilder)

I rekken av vidreutviklinger og jobbing med Kartverkets bakgrunnskart (WMS) og OpenLayers biblioteket kommer nå neste episode. Denne gangen med støtte for geotaggede bilder.

Biblioteket som slippes i dag er såklart også lisensiert under en MIT-lisens, og gjør omtrent følgende:

Basert på en katalog med geotaggede bilder på webserveren plasserer den thumbnails av disse på kartet, og åpner en større versjon av dette bildet (via lightbox-aktig funksjonalitet). Dette kan såklart kombineres med GPX-funkjsonaliteten jeg tidligere har vist.

Dermed: en demo på funksjonaliteten finnes på http://kart.atlefren.net/sk_map/ (takk til Magnus Stoveland for bildene her, regner med at det er greit at jeg bruker dem?;)).

Så litt om funksjonaliteten: For å håndtere geotaggede bilder har jeg måttet ta i bruk litt PHP. Kort fortalt er dette en liten modifikasjon på koden fra masteroppgaven min, PHP-scriptet leser ut GPS-informasjon fra bilders EXIF-informasjon og bygger en GeoJSON-streng som så requestes fra OpenLayers scriptet ImageLoader.js. ImageLoader.js tar seg av å transformere koordinatene i GeoJSON stringen til UTM 33N, slik at de kan vises på kartet. I tillegg har jeg implementert LightLightbox.js, en enkel versjon av Lightbox-funksjonaliteten.

For å vise thumbnails av bildene (og store, men ikke fullsize bilder) brukes funksjonaliteten i PHP-klassen Resize_Image, hentet fra http://www.bitrepository.com/resize-an-image-keeping-its-aspect-ratio-using-php-and-gd.html.

Og, kildekoden finner du som en zip-fil på code.atlefren.net/source/sk_map.zip, den skal være å bare pakke ut på egen webserver og ta i bruk. Det eneste kravet er at du har noen GPX filer og/eller geotaggede bilder. Har du GPX-filer, men ikke geotaggede bilder kan du teste f.eks Prune, som jeg ble positivt overrasket over (kjører på alle platformer).

Husk bare et par ting: siden både GPX-filer og bildene er vektorer i kartet kan det bli vel mye for en stakkars JavaScript motor om du kjører på med for mange bilder og/eller GPX-filer (les mer i OpenLayers sin FAQ).

I tillegg er det et par kjente bugs/shortcomings her:

  • Når bildelaget er aktivt kan du ikke klikke på GPX-filene for å få en popup
  • PHP-classen for å håndtere bilderesizing gjør alt on-the-fly, dette kan føre til ytelsesproblemer ved mye bruk
  • LightLightbox.js-koden er, for å si det mildt, elendig utseendemessig.
  • Det finnes ingen load-indikatorer på bilder etc

Dog, all den tid jeg har frigjort koden er det bare å ta tak i dette, jeg er ikke noen ekspert på hverken PHP eller CSS, men det burde være greit å endre på slikt. Ellers skal koden være “greit nok” dokumentert, finner du at den ikke er det så si fra!

Og, jeg tar gjerne imot innspill til forbedringer!

GPX med Kartverkets bakgrunnskart, del 2

Jeg skrev for en stund siden litt om hvordan man kan kombinere GPX-filer med de åpne WMS-servicene til kartverket. Igrunn bare en enkel proof-of-concept, men det virker som folk fant det nyttig.

Dermed har jeg rydda litt i koden, lagt til muligheten for fargekoding, “klikk-for-info” og lengdeberegning. Jeg har også flyttet all koden ut i en separat JS-klasse, og satt en åpen lisens på denne (MIT for den som lurer).

Du finner et eksempel på http://kart.atlefren.net/gpx2/, som forøvrig viser en fin tur i Sylane, anbefales!

Trykk “view source” for å få med deg oppsettet. Det viktigste er dog å huske å inkludere GpxReader.js. OBS: jeg setter pris på om du IKKE hotlinker til denne, men laster ned og legger på egen server.

Ellers er “magien” for å legge til GPX-filer enkel: et array [] med et objekt {} pr GPX-fil, som inneholder følgende:

  • file: filsti til GPX-fil (husk Same origin policy)
  • color: hex-representasjon for farge
  • width: tykkelse på linje i pixler
  • title: Tittel på track, dukker opp i popup
  • desc: beskrivelse av track, dukker opp i popup

Se ellers hvordan jeg har satt opp ting i eksempelet. Og, spør gjerne om det er noe, og vis meg gjerne hva du bruker koden til, også om du endrer den!

Javascript, GIS, testing, Maven, AJAX og andre småtricks

Jeg jobber, som kjent, endel med kartapplikasjoner på nett. I denne situasjonen har du et par valg. Google Maps APIet eller OpenLayers. Vil du ha full kontroll velger du OpenLayers. Kort og godt.

Dog, uansett om du havner på Google Maps eller OpenLayers (ja, det finnes vel også noe fra ESRI) for å lage kartapplikasjoner som skal kjøre i nettleseren trenger du å forholde deg til Javascript. Mye kan sies om Javascript, og mye av det er feil. Likevel: det er et språk som er misbrukt mer enn PHP. Derfor: skal du gjøre noe fornuftig med Javascript anbefaler jeg deg å se Douglas Crockfords videoforelesning “programming in javascript“. Og også eventuelt lese boka hans “JavaScript: the good parts“. Og kanskje også Stoyan Stefanovs bok: “Object-Oriented JavaScript“.

Dog, det var ikke det denne posten skulle handle om. Jeg tenkte å være enda litt mer spesifikk. Jeg tenkte å skrive litt om hvordan Javascript-utvikling kan integreres i utviklingen av en Java webapp.

Det er mange steder og angripe problemet fra, men vi kan starte med Maven, som jeg er fristet til å si at er et must for javautvikling. Det finnes flere plugins for å håndtere Javascript i Maven. Jeg liker godt maven-javascript-plugin. Jeg tror ikke den vedlikeholdes så godt, men det som finnes fungerer og fyller følgende oppgaver:

  • Pakke javascript-biblioteker som “dependencies”
  • Komprimering og konkatinering av javascript-filer

I tillegg kan det kjøre tester, men der foretrekker jeg et annet bibliotek: nemlig Jasmine. Jasmine er et rammeverk for drive skrive Behaviour Driven Development av Javascript, i teorien betyr det at du kan skrive unit-tester for javascript. Legg til jasmine-maven-plugin og du får støtte for å kjøre testene via Maven. Javascript kan dermed testes like lett som Java-kode.

Når det gjelder AJAX (eller AJAJ som jeg liker å kalle det), synes jeg DWR (Direct Web Remoting) er brilliant. Lag en Java-klasse, eksponer metoder og kall dem direkte fra Javascriptet ditt. Enklere blir det ikke, dropp å tenke på XMLHttpRequest-oppsett og ståk. Når vi først snakker om å gjøre ting på server-siden må jo også GeoTools nevnes. GeoTools er rammeverket GeoServer baserer seg på, og er kort og godt et GIS-rammeverk for Java. Lese shapefiler, koble seg til romlige databaser som PostGIS og Oracle Spatial, gjør GIS-operasjoner som bufferanalyser og transformer koordinater. Litt dårlig dokumentert, men klarer det meste.

Hva så med Javascript-rammeverk? Det finnes jo flust av dem. Prototype, jQuery, ext, etc etc. Vel, så langt har jeg funnet ut at OpenLayers gir meg støtte for mye av det jeg trenger, og har dermed ikke begynnt å se så mye på Javascript-rammeverk enda. Jeg vet det sikkert finnes endel smarte rammeverk som kan gjøre ting enklere her også.

Til slutt tenkte jeg å nevne log4javascript, som virker som et meget ålreit loggeverktøy for javascript, det mest spennende er kanskje å sende logg til serversiden via AJAX. Hvis du ikke trenger dette vil jeg påstå at Firebug gjør jobben den også. Kombinert med “web developer plugin” gjør den FireFox til den eneste fornuftige browseren å utvikle javascript i (så er det en annen sak at det skal fungere i andre nettlesere også).

Håper denne listen med ressurser kan være til hjelp for noen. Ikke nøl med å kommentere om du ønsker utdyping på noen områder, har spørsmål eller kommentarer. Og, har du flere ressurser å dele så tar jeg gjerne imot dem med takk. Jeg har på ingen måte fasiten, så jeg håper at jeg med denne posten når ut til noen som driver med noe av det samme som meg. Jeg tror ikke vi er så veldig mange?

Meme: Har du lest mer enn seks av disse bøkene?

Plukket opp denne hos Eirik Newth, som vidrebringer forklaringen:

Have you read more than 6 of these books? The BBC believes most people will have read only 6 of the 100 books listed here. Instructions: Copy this into your notes. Bold those books you’ve read in their entirety, italicise the ones you started but didn’t finish or read an excerpt. Tag other book nerds.

1 Pride and Prejudice – Jane Austen
2 The Lord of the Rings – JRR Tolkien
3 Jane Eyre – Charlotte Bronte
4 Harry Potter series – JK Rowling
5 To Kill a Mockingbird – Harper Lee
6 The Bible
7 Wuthering Heights – Emily Bronte
8 Nineteen Eighty Four – George Orwell
9 His Dark Materials – Philip Pullman
10 Great Expectations – Charles Dickens
11 Little Women – Louisa M Alcott
12 Tess of the D’Urbervilles – Thomas Hardy
13 Catch 22 – Joseph Heller
14 Complete Works of Shakespeare
15 Rebecca – Daphne Du Maurier
16 The Hobbit – JRR Tolkien
17 Birdsong – Sebastian Faulk
18 Catcher in the Rye – JD Salinger
19 The Time Traveller’s Wife – Audrey Niffenegger
20 Middlemarch – George Eliot
21 Gone With The Wind – Margaret Mitchell
22 The Great Gatsby – F Scott Fitzgerald
23 Bleak House – Charles Dickens
24 War and Peace – Leo Tolstoy
25 The Hitch Hiker’s Guide to the Galaxy – Douglas Adams
26 Brideshead Revisited – Evelyn Waugh
27 Crime and Punishment – Fyodor Dostoyevsky
28 Grapes of Wrath – John Steinbeck
29 Alice in Wonderland – Lewis Carroll
30 The Wind in the Willows – Kenneth Grahame
31 Anna Karenina – Leo Tolstoy
32 David Copperfield – Charles Dickens
33 Chronicles of Narnia – CS Lewis
34 Emma – Jane Austen
35 Persuasion – Jane Austen
36 The Lion, The Witch and The Wardrobe – CS Lewis
37 The Kite Runner – Khaled Hosseini
38 Captain Corelli’s Mandolin – Louis De Bernieres
39 Memoirs of a Geisha – Arthur Golden
40 Winnie the Pooh – AA Milne
41 Animal Farm – George Orwell
42 The Da Vinci Code – Dan Brown
43 One Hundred Years of Solitude – Gabriel Garcia Marquez
44 A Prayer for Owen Meany – John Irving
45 The Woman in White – Wilkie Collins
46 Anne of Green Gables – LM Montgomery
47 Far From The Madding Crowd – Thomas Hardy
48 The Handmaid’s Tale – Margaret Atwood
49 Lord of the Flies – William Golding
50 Atonement – Ian McEwan
51 Life of Pi – Yann Martel
52 Dune – Frank Herbert
53 Cold Comfort Farm – Stella Gibbons
54 Sense and Sensibility – Jane Austen
55 A Suitable Boy – Vikram Seth
56 The Shadow of the Wind – Carlos Ruiz Zifon
57 A Tale Of Two Cities – Charles Dickens
58 Brave New World – Aldous Huxley
59 The Curious Incident of the Dog in the Night-time – Mark Haddon
60 Love In The Time Of Cholera – Gabriel Garcia Marquez
61 Of Mice and Men – John Steinbeck
62 Lolita – Vladimir Nabokov
63 The Secret History – Donna Tartt
64 The Lovely Bones – Alice Sebold
65 Count of Monte Cristo – Alexandre Dumas
66 On The Road – Jack Kerouac
67 Jude the Obscure – Thomas Hardy
68 Bridget Jones’s Diary – Helen Fielding
69 Midnight’s Children – Salman Rushdie
70 Moby Dick – Herman Melville
71 Oliver Twist – Charles Dickens
72 Dracula – Bram Stoker
73 The Secret Garden – Frances Hodgson Burnett
74 Notes From A Small Island – Bill Bryson
75 Ulysses – James Joyce
76 The Inferno – Dante
77 Swallows and Amazons – Arthur Ransome
78 Germinal – Emile Zola
79 Vanity Fair – William Makepeace Thackeray
80 Possession – AS Byatt
81 A Christmas Carol – Charles Dickens
82 Cloud Atlas – David Mitchell
83 The Color Purple – Alice Walker
84 The Remains of the Day – Kazuo Ishiguro
85 Madame Bovary – Gustave Flaubert
86 A Fine Balance – Rohinton Mistry
87 Charlotte’s Web – EB White
88 The Five People You Meet In Heaven – Mitch Albom
89 Adventures of Sherlock Holmes – Sir Arthur Conan Doyle
90 The Faraway Tree Collection – Enid Blyton
91 Heart of Darkness – Joseph Conrad
92 The Little Prince – Antoine De Saint-Exupery
93 The Wasp Factory – Iain Banks
94 Watership Down – Richard Adams
95 A Confederacy of Dunces – John Kennedy Toole
96 A Town Like Alice – Nevil Shute
97 The Three Musketeers – Alexandre Dumas
98 Hamlet – William Shakespeare
99 Charlie and the Chocolate Factoy – Roald Dahl
100 Les Miserables – Victor Hugo

Konklusjonen: vel, 16 er mer enn 6, men alikevel ganske få. Så kan man jo si at det ikke er noe norsk her, og at jeg kanskje burde scåret høyere der? Vel, Litteraturfestivalen på Lillehammer kåret i 2007 en norsk Kanon, de 25 viktigste norske bøkene. Jeg kjører samme markering på denne listen:

1. Voluspå
2. Snorre Sturlason Kongesagaene
3. Petter Dass – «Nordlands trompet»
4. Ludvig Holberg – «Erasmus Montanus»
5. Henrik Wergeland – «Jødinden»
6. Asbjørnsen & Moe – «Norske folkeeventyr»
7. Camilla Collett – «Amtmandens døtre»
8. Aasmund Olavsson Vinje – «Ferdaminni fraa Sumaren 1860»
9. Henrik Ibsen – «Peer Gynt»
10. Fridtjof Nansen – «På ski over Grønland»
11. Arne Garborg – «Fred»
12. Knut Hamsun – «Mysterier»
13. Sigbjørn Obstfelder – «Digte»
14. Sigrid Undset – «Kransen»
15. Olav Duun – «Menneske og maktene»
16. Cora Sandel – «Alberte og friheten»
17. Tarjei Vesaas – «Fuglane»
18. Olav H. Hauge – «Dropar i austavind»
19. Gunvor Hofmo – «Fra en annen virkelighet»
20. Rolf Jacobsen – «Hemmelig liv»
21. Jan Erik Vold – «Mor Godhjertas glade versjon : ja»
22. Kjartan Fløgstad – «Fyr og flamme»
23. Dag Solstad – «Gymnaslærer Pedersens beretning om den store politiske vekkelse som har hjemsøkt vårt land»
24. Jon Fosse – «Nokon kjem til å komme»
25. Øyvind Rimbereid – «Solaris korrigert»

1 av 25.. det er mindre enn de 6% man refererte til av de 100. Så, jeg får bare finne meg i at jeg kanskje ikke har det store engasjementet for gammel norsk litteratur (ei heller ny, skal vi dømme etter lista her).

Har du noen sterke meninger om noe fra de to listene jeg ikke har lest som er verdt å komme seg gjennom? Tror nok det er noen på BBCs liste jeg må komme meg gjennom, mens på den norske lista er jeg mer i tvil. Uansett: jeg kommer aldri til å lese Bridget Jones..

(Og ja, det er et meme, så vil du følge opp er det opp til deg. Folk har det med å ikke svare på oppfordringer uansett..)