Noen tanker om Digitalbok

I går kunne Cappelen Damm åpne Digitalbok og er dermed først ute i Norge med salg av ebøker. Til tross for å være først ligger de allerede langt etter, det er tross alt hele tre år siden den første Kindle kom i salg fra Amazon.

Etter å ha ventet på denne åpningen i lengre tid, og etter signaler om utsettelser siden man fikk ikke momsfritak for elektroniske bøker, er jeg glad for at man endelig er kommet i gang, det gir oss tross alt et produkt å diskutere.

Dessverre er det med stor skuffelse at jeg observerer at det ikke er lagt tilrette for alle kunder i denne butikken. Som eier av en Kindle ser det ut til at jeg er nødt til å lete med lys og lykter i nettbutikken for å finne norske bøker som selges som vannmerket PDF eller installere programvare fra Adobe (ikke støttet på Linux uten Wine) som gjør at poenget med å kjøpe enhet med e-ink forsvinner dersom man valgte Kindle.

Til vanlig kjøper jeg ebøker fra flere amerikanske forlag, og flere vil det nok bli:

Felles for alle på listen er at de tilbyr bøkene på flere formater, og at jeg kan logge inn på siden for å laste ned på nytt bøker jeg allerede har kjøpt (har ikke kommet over noen begrensninger i antall ganger). Standard for alle er vannmerket PDF, men de tilbyr også på formater som ePub, Mobi (Kindle) og APK (Android), et tilbud som gjør at jeg kan lese mine bøker der jeg ønsker å lese dem og slik jeg ønsker å lese dem.

Begge de to første forlagene på min liste solgte i begynnelsen utelukkende PDF-bøker med passord, men dette har begge gått vekk fra. I tillegg til å gå bort fra passord har de sett verdien av å få flere formater, og i en tidligere utgave av PragPub kan man lese hvordan dette kan gjøres.

Det er tre faktorer som spiller inn i forbindelse med tilrettelegging for kundene:

  • pris – man ønsker, naturlig nok, å tjene mest mulig på satsingen
  • tillit – man stoler ikke på kundene og ser for seg piratkopiering om man ikke benytter DRM
  • konkurranse – man er redde for Amazon

Med dagens innstilling til disse faktorene ender man opp med det tilbudet man har endt opp med, men man kan velge andre holdninger:

  • pris – man ønsker, naturlig nok, å tjene mest mulig på satsingen
  • tillit – man stoler nok på kundene til å tilby bøkene i flere formater med vannmerking
  • konkurranse – åpne for at de som eier enheter som ikke støtter Adobe sin DRM kan benytte tilbudet og tillate Kindle-eiere å benytte seg av tilbudet i stedet for å tvinge denne gruppen til å benytte Amazon sitt tilbud.

Sistnevnte innstilling ville medført at jeg, og sikkert flere med meg, hadde funnet det interessant å kjøpe den neste boka på den nye tjenesten, men slik det er i dag er jeg villig til å bruke de ekstra 100 kronene på å kjøpe det fysiske produktet hos min nærmeste bokhandler.

Jeg har flyttet

Etter mange år i trønderhovedstaden ble det tid for å finne seg jobb, og etter en interessant sommerjobb i fjor endte jeg med å søke meg tilbake på et noe lengre opphold. Turen gikk til Sogndal, et tettsted i Sogn og Fjordane som har både høgskule og fotballag. Mange vil nok si at jeg har vendt hjem, men selv om det på enkelte måter føles slik så stemmer ikke dette.

Jeg har nå vært her i omtrent 5 måneder, og jeg stortrives, både på jobb og med fritidssysler som jeg har tatt opp igjen. Jeg har til og med begynt å spille bass-trombone igjen. :)

For å gi en liten smakebit har jeg funnet en video som ble vist på Sirkus Bremanger for noen uker siden, hvor jeg var så heldig å få være med å spille. Bremanger er riktignok noen timer fra Sogndal, men hele fylket har mye å by på.

Det skjer mye spennende for tiden, både på jobb og på fritiden, så jeg håper å få blogget om noe av det.

Kildekoden til Bussorakel er sluppet

I dag kom versjon 0.6.0 av Bussorakelet for Android, og denne gangen ble også kildekoden gjort tilgjengelig på GitHub. Jeg har valgt å publisere under GNU General Public License (GNU GPL).

I den videre utviklingen vil tjenestene til GitHub brukes aktivt så fremtidige endringer vil bli tilgjengelig før publisering (åpen prosess) og brukere vil kunne legge inn feil eller ønsker. Det vil være utfordrende for meg å skulle jobbe på denne måten (mister muligheten til å komme med overraskelser), men samtidig tror jeg at dette vil bli en nyttig erfaring å ta med seg.

Destruction-driven development

Jeg har kodet en del før jeg begynte på informatikk, men før stuiene var mønster (patterns) et ukjent begrep for meg. Siden PHP i lang tid var det foretrukne språket ble det gjerne gjort nyvinninger nettopp i dette språket (IRC-bot kan nevnes).

For en tid tilbake nevnte jeg en av mine “gode” idéer fra den gang for noen med-studenter, og øyeblikkelig kom navnet “destruction-driven development” opp. Konseptet er i og for seg ikke noe jeg har sett igjen i løpet av årene på Gløshaugen, samt at gjennomføringen er bundet mot utvikling på nett, fortrinnsvis i skripingspråk.

Av og til er det greit å hente inn noen standard-filer som blir til over tid (av litt for mange asiater på Aardvark kalt “custom framework”) for å lage til en demo, simpel to-siders løsning eller lignende, og i den forbindelse fant jeg at jeg ofte glemte å kjøre metoden som skulle vise resultatet til en bruker (mye “feilretting”). Med dette knyttet opp mot Smarty endte jeg opp med å ønske å lage sider slik:

<?php

require_once("autoload.php");
Template::setTemplate("page.tpl");

$t = Template::getInstance();
$t->assign("title", "Forside");
$t->assign("text", "Lorem ipsum...");

?>

Konseptet er å la presentasjon foregår på et punkt hvor man er sikker på at all logikk er kjørt, og hvilket bedre punkt enn ved kjøring av  Garbage Collector (GC) finnes? Ved å la destruction-metoden til template-objektet, som er en subklasse av Smarty, til å kjøre display()-metoden trenger ikke kodesnutten over å gjøre det, samt at jeg slipper å duplisere kode for å vise vise innhold. Se gjerne det vedlagte eksempelprosjekt som benytter Smarty.

Jeg ser i utgangspunktet to problemer med overstående kode, hvilket er grunnen til at jeg ikke vil bruke dette konseptet i prosjekter:

  1. Det vil gjøre prosjektet vanskeligere å feilrette.
  2. Implementasjonen av GC kan endre seg, og ved å oppdatere PHP kan man oppleve at alle sider er blanke. (Les: flere ting som potensielt kan gå galt)

Bussorakel feirer 100

I begynnelsen av november i fjor la jeg ut applikasjonen Bussorakel på Android Market, og etter flere versjoner med mange endringer og justeringer, ble nedlasting nummer 100 gjennomført. Allerede den første versjonen ble vurdert av IME, og jeg skulle likt å vite hva de tenker om dagens versjon. Jeg er fornøyd med det antallet, spesielt siden målgruppen må sies å være noe snever:

Personer med Android og som benytter busstilbudet i Trondheim.

Selv om det er noe snevert har jeg merket at jeg har vært fokusert på å gi et godt tilbud til de som benytter den, og føler ansvar for å levere et bedre produkt og opplevelse i hver nye versjon. I helgen kunne jeg se at Android Market kunne rapportere følgende status for applikasjonen (i grensesnittet for utviklere):

Bussorakel på Android Market

Applikasjonen er det første programmet jeg har laget for Android, noe som har satt tydelige spor i kildekoden. Grensesnittet har også vært gjennom en del endringer, dagens utseende prøver å være tro mot platformen den kjører på, men i begynnelsen var jeg opptatt av å lage egen look&feel, noe som kostet mer i koden enn jeg likte inntil jeg fant ut hvordan det egentlig skal gjøres.

Bussorakel, skjermskyt 1 Bussorakel, skjermskyt 2

Ikke bare det grafiske har endret seg, men også hvordan jeg henter svar på spørsmålene som kommer inn. I begynnelsen ble Yahoo Pipes benyttet ved hjelp av en Bussorakel-pipe, men tilbakemeldinger tilsa at den var treg, mellomlagret litt for lenge, og var offline litt for ofte. Fra og med siste utgave benytter jeg i stedet en kodesnutt som kjører på min hosting, og denne faller tilbake på NTNU sin versjon om Team Trafikk sin skulle bruke for lang tid på å svare eller er offline.

Etter at jeg gikk fra hvit bakgrunn til mørk bakgrunn har jeg sett at applikasjonen er avinstallert av flere (før lå jeg på ca. 85% aktive installasjoner), noe som minner meg på at det ikke er lett å få tilbakemeldinger fra brukere. Jeg skulle gjerne sett at Google la mer til rette for dette, for i grensesnittet for utviklere er det kun stjernene som vises, dog ikke hvor mange man har fått av hver, og alle kommentarer er utilgjengelig. Skal man øke kvaliteten på applikasjonene tror jeg dette må ordnes i lengden.

QR-code for BussorakelNoe jeg ikke har sett i andre applikasjoner er at man kan trykke frem menyen, og derfra kunne dele programmet med andre gjennom en QR-code som andre kan scanne ved hjelp av en strekkodeleser på sin telefon. Dette lar seg også gjøre fra nettsider, og ved å scanne denne kan du få programmet på din telefon.

Per i dag er det også hele 4 ulike applikasjoner på Android Market som bringer tjenesten til Android, hvor min og Busstider av Martin Mikkelborg Syvertsen ser ut til å være de raskeste applikasjonene (bruker samme kilde).

Jeg  må også takke for alle tilbakemeldinger jeg har fått fra Martin og Rune Martin Andersen, samt flere av mine med-studenter. Uten tilbakemeldinger kommer jeg ikke noen vei, og jeg håper flere benytter anledningen i fremtiden.