How to get Spotify URLs working again in Ubuntu 11.04

I’m using the native Spotify client for Linux (available here), which is only available to paying subscribers at the moment, apparently due to some problems in getting commercials to work reliably or something like that, but that’s not the topic of this post.

Ever since I upgraded to Natty I haven’t been able to get Spotify-URIs to work. That is, links that look like this:
spotify:user:einarjh:playlist:7iWZ9zuOOILXU5hbzruuxE. Today I found the corresponding bug: Bug #788673 in xdg-utils.

This is how you fix it:

Create the file /usr/share/applications/spotify-url.desktop and add the following content:

[Desktop Entry]
Name=Spotify
GenericName=Spotify
Comment=Listen to music using Spotify
Icon=spotify-linux-512x512
TryExec=spotify
Exec=spotify -uri %u
Terminal=false
Type=Application
Categories=Qt;AudioVideo
MimeType=x-scheme-handler/spotify
NoDisplay=true

That’s it! Enjoy your working Spotify URIs!

Eat. Move. Learn.

Av og til dukker det opp ting på nettet som får meg til å:

  1. Føle meg skikkelig amatørmessig og lite kreativ.
  2. Få lyst til å skape noe interessant og vakkert selv.

Disse tre gutta for eksempel. Rick Mereki, Tim White og Andrew Lees har reist verden rundt i 44 dager for å lage tre kortfilmer:

Eat

Move

Learn

Jeg kjenner det rykker litt i reisefoten også.

#kopweb-survey 2011

Det er hele tre år siden jeg sist kjørte en uhøytidelig og uvitenskapelig undersøkelse om IRC-klientbruk på kanalen #kopweb. Resultatet fra den gangen kan du se her.

Dataene er hentet ved å sende en CTCP VERSION-spørring til alle klientene som var på kanalen i et gitt øyeblikk (nærmere bestemt mandag 25. april 2011 klokken 19.16), og så analysere dataene med OpenOffice Spreadsheets. I noen tilfeller vil en klient gi to svar, for eksempel hvis mIRC kjører med script, i disse tilfellene har jeg kun telt for scriptet, så en mIRC-klient med NoNameScript vil kun bli telt én gang. Noen klienter svarer bare rart, disse faller under «ukjent» i grafen under. Atter andre klienter er satt opp til å ikke svare i det hele tatt, dette er det fint lite å gjøre noe med, og jeg tok meg ikke bryet med å sjekke hvem dette gjaldt.

Det er gledelig å se at kanalen faktisk har vokst siden sist, og mangfoldet av klienter ser også ut til å ha økt. Ytterligere ser det ut til at den store vinneren er og blir irssi.

Hederlig omtale går til følgende klient-svar:

191636 CTCP VERSION reply from Wibla: mirken 0.1.4-svn - running on C64
191636 CTCP VERSION reply from [ZyteX]: umm.. I forget..
191637 CTCP VERSION reply from Ximalas: "Gi faen i det der'a!

Nok pjatt, på tide å presentere resultatet:

Kakediagram for klientbruk på IRC-kanalen #kopweb

Og for deg som ikke kan fordra kakediagrammer tilbyr jeg datagrunnlaget i tabularisk form, slik at du kan lage andre grafiske fremstillinger av de om du skulle ønske:

Klient Antall
irssi 47
mIRC 9
eggdrop 5
mIRC med script 4
ukjent 3
Xchat 2
qwebirc 2
libpurple 1
Quassel 1
dircproxy 1
Weechat 1
PieSpy 1

Og til sist, til de som ikke kan få nok av statistikk, her er sju og et halvt år med ubrukelig statistikk fra samme kanal.

Høyoppløselig screenshot fra Minecraft

Kom i skade for å holde inn shift mens jeg tok screenshot i Minecraft i går kveld. Klienten hang seg i et par minutter, og da jeg sjekket screenshot-mappen lå det en 1.8 GB bildefil der. Resultatet kan skues under:

Se samme bilde i fullskjerm her.

Forresten, jeg bruker Zoom.it til å vise bildet, det er seriøst KULT! Kudos til Microsoft for denne teknologien. Portabel, kryssplattform og no-nonsense.

Google Voice i Norge?

Google har mange rare tjenester, og det er vanskelig å holde styr på alt sammen til tider. Av de tjenestene jeg har mest sansen for er Google Talk, som de kom med helt tilbake i 2005, og som jeg fortsatt går rundt og håper skal vippe MSN (Egentlig: Windows Live Messenger) ned fra tronen som den mest populære lynmeldingstjenesten i vennekretsen min. Dette er kanskje til og med i ferd med å skje, ettersom GT er veldig pent integrert i Android, men nå sporer jeg av her.

Google Talk ble etter hvert utvidet med tale- og video-funksjonalitet, kalt Google Voice. Igjen var dette en meget behagelig og enkel tjeneste uten for mye dilldall. Det tok sin tid, men for noen måneder siden kom de endelig også med støtte for Linux for denne tjenesten. Omtrent på samme tid ble Google Voice-tjenesten utvidet til å kunne ringe til og fra det vanlige telefoninettet i USA, som omtalt i denne artikkelen fra digi.no i fjor. Tjenesten var da ikke tilgjengelig i Norge.

Så kommer vi til gårsdagen. I går oppdaget jeg endelig at Google hadde fått på plass Google Voice-støtte for Linux, og glad og fornøyd la jeg inn dette innstikket, og restartet Chrome. Så fikk jeg øye på en ny knapp i GT-widgeten: Call phone. Jeg trykket på denne, og fikk opp følgende vindu:

Widget som tillater deg å slå et nummer.

Dette så jo meget fristende ut, men den sa jeg ikke hadde noe på ringekontoen. Det var imidlertid ikke noe problem, ved å trykke på saldoen fikk jeg valget «Add credit», som lot meg handle inn minimum $10 USD til ringekontoen min via Google Checkout (enda en av disse lite kjente Google-tjenestene). Dette gikk gjennom uten å mukke, og to minutter senere kunne jeg glad og fornøyd ringe opp mobiltelefonen til min kollega Jon. Vi snakket i noen minutter, og var skjønt enige om at dette fungerte fin-fint, og slo oss til ro med det.

Det var ikke før i kveld at jeg innså at hele denne øvelsen muligens var litt unik. Jeg bestemte meg for å finne ut når denne tjenesten ble tilgjengelig i Norge, men fant ikke en eneste artikkel som omtalte det. Nothing, zip, nada. Og da jeg nevnte dette på Twitter fikk jeg bare forvirrede svar tilbake. Mine egne undersøkelser tyder da også på at det er en svært, svært amputert versjon av Google Voice jeg har fått tilgang til:

Sammenligning mellom Google Voice-versjoner

Etter litt mer testing har man kommet frem til følgende mulige oppskrift for å få en halvveis fungerende Google Voice i Norge:

  1. Du trenger å ha følgende Google-tjenester satt opp: Google Talk, Google Checkout, GMail.
  2. Sørg for at du har satt språket i GMail til «English (US)».
  3. Vær pålogget Google Talk i GMail.
  4. Installer plugin for Google Voice. Husk å starte nettleseren på nytt etter at dette er klart.
  5. Trykk på knappen «Call phone».
  6. Trykk på feltet øverst til høyre, som nå bør si «$0.00» og velg «Add credit».
  7. Kjøp credit, minstebeløpet er visst $10.00 USD.
  8. Vent en liten stund.
  9. ???
  10. Profit!

Det ser ikke ut til at denne fremgangsmåten fungerer hvis du har en Google Apps-konto, du må ha en god gammel GMail-konto for at dette skal fungere.

Så er egentlig det store spørsmålet: er dette en stor glipp hos Google, eller holder de endelig på med å lansere denne ypperlige tjenesten i Norge? Jeg vil veldig gjerne ha denne tjenesten fullt opp og gå!

Apple og support

Det er en dårlig skjult hemmelighet at jeg ikke har mye til overs for Apple og deres forretningsmodell og ustabile programvare. Et smertefullt eksempel: de siste månedene har jeg intet mindre enn tre ganger opplevd at alarm-funksjonen på min iPhone har blitt slått ut av sånne sjokkerende og uventede hendelser som overgang til vintertid og årsskifter.

Men dette innlegget skal ikke handle om iPhone, det skal handle om et annet av mine «bomkjøp». Vel, det er kanskje urettferdig å kalle det bomkjøp riktig enda, for egentlig er jeg tålelig fornøyd med min 13″ aluminiums-MacBook. Det er kanskje den peneste laptopen som er laget, er akkurat passe stor, og er den maskinen jeg bruker mest til foto-hobbyen min. Men det dukket opp skjær i sjøen da batteriet begynte å krangle rett før nyttår.

Det som skjer er rett og slett at maskinen slår seg av kort tid etter at jeg drar ut strømkabelen. Batteriet indikerer at det er fulladet, og batterihelsen er meget god (over 90% av design-kapasitet). Når jeg så slår på maskinen igjen (med strømkabelen i, for den nekter å starte uten), viser batteriet ca. 80% ledig kapasitet. Macen selv ser også problemet, og gir meg en melding om «Service battery» på batteri-indikatoren.

Dette er jo en ganske rett-frem-sak: defekt batteri. Ikke noe å blåse seg opp over, det kan hende den beste. Jeg har en treårig AppleCare-plan på denne maskinen, som går ut i 2012, så dette burde vel ikke være noe problem? Så, her er i korte trekk den brukeropplevelsen jeg forventet:

  1. Ring Apples supporttelefon for Snille Kunder som har kjøpt AppleCare.
  2. (Tast gjennom irriterende telefonsvarer, dette vet jeg man aldri blir kvitt. ALDRI).
  3. Presentere seg og oppgi serienummer.
  4. Informer om at batteriet er defekt, oppgi feilmelding og litt nøkkeldata om batteriet fra System Profiler.
  5. Oppgi adresse for tilsending av nytt og fungerende batteri.
  6. SUCCESS!

Burde ikke ta mer enn toppen ti minutter, inkludert ventetid.

Jeg forventet IKKE dette:

  1. Bruk et par minutter på å klikke litt frem og tilbake for å finne telefonnummer til support. Ikke eget nummer for min dyrekjøpte AppleCare-plan? Uh-oh.
  2. (Tast gjennom forventet telefonsvarer-tjeneste som opplyser meg om at det er hjelp å finne på Internett (jo takk, det var sånn jeg fant nummeret deres), og at samtalen kan (vil) bli tatt opp).
  3. Presentere seg, forklare kort om problemet og oppgi serienummeret. Vente en stund.
  4. Repetere problemet, utdype at det ikke gjelder at batteriet ikke tar til seg lading.
  5. Repetere problemet, utdype at maskinen slår seg av mens batteriet fortsatt indikerer over 80% strøm.
  6. Nei, jeg har ikke noe annet batteri å prøve.
  7. Oppgi batteri-detaljer fra System Profiler. Leter lenge og vel etter et tall som ikke finnes i min liste, finner etterhvert ut at det er batterikapasitet i mAH man er ute etter.
  8. (Hvorfor vil ikke Apple-support stole på det OSX sier om at batteriet er defekt? Hva er da vitsen med den feilmeldingen?)
  9. Endelig overbevist om at batteriet er defekt, men får ikke lov til å sende ut batteri, må konferere med en kollega.
  10. Ventemusikk.
  11. Dette var visst ikke en sak 1. linje kunne hjelpe med, må over til en annen person.
  12. Repetere problemstillingen, nye presiseringer.
  13. Gjenta tall fra System Profiler. Må sjekke litt ting.
  14. Ventemusikk.
  15. Slå av maskinen, ta ut batteriet, hold inne power-knappen i fem sekunder (WTF?)
  16. Start maskinen igjen. Joda, systemet sier fortsatt at batteriet er defekt.
  17. ENDELIG enighet om at batteriet er defekt.
  18. Men vi må ha depositum for å sende deg et nytt. WTF?
  19. Oppgi kredittkortdetaljer. Ca. 800,- er nå reservert på mitt MasterCard.
  20. Oppgi adresse.
  21. God helg.

Total tid: 35 minutter. Og da ble jeg fortalt at jeg var heldig som slapp den 30 minutter lange telefonkøen de hadde hatt den dagen. Gratis tips, Apple: kanskje dere ikke hadde hatt 30 minutter telefonkø hvis dere tok en titt på mitt utkast til en forventet kundeopplevelse?

Det jeg egentlig reagerer mest på her er at de faktisk ville ha kredittkortdetaljer av meg, og reserverte beløpet for et nytt batteri på kortet, «i tilfelle jeg ikke returnerte det defekte batteriet». Snakk om å mistenkeliggjøre sine kunder. Fuck you too, Apple.

Kindle vs. Kindle

IT-tjenesten har nettopp investert i to eksemplarer av de nye Kindle-versjonene, en DX og en vanlig med kun WiFi. I dag stjal lånte jeg med meg sistnevnte hjem for å sammenligne den med min egen versjon fra forrige versjon, og jeg er rett og slett forelsket. Den nye Kindle er lettere, raskere, mindre, har bedre kontrast og har til og med mer fornuftig knappe-layout.

Noen som vil kjøpe en gammel Kindle? Den er i perfekt stand, og har originalt lær-omslag (jeg kledde av den for å ta bildet under).

En webfont til besvær

Jeg har, etter å ha prokrastinert det i et par år, endelig somlet meg til å lage et nytt design til hjemmesiden min og bloggen. Du sitter muligens og ser på resultatet av dette akkurat nå (med mindre du bruker RSS, Planet eller jeg har byttet design igjen).

Det jeg ønsket å oppnå var å videreføre design-elementer fra det forrige designet mitt, som jeg aldri ble helt fornøyd med, samtidig som jeg holdt det hele så enkelt som mulig. Jeg tror jeg har lykkes med det i det store og det hele, men da jeg bestemte meg for å ta i bruk @font-face for å lage headeren min ble ting fort ganske hårete.

Jeg bruker til vanlig Google Chrome, og mesteparten av designarbeidet mitt gjorde jeg med referanse til denne nettleseren, i den tro at alt var flott og fint i de andre nettleserne som følger standarder. Jeg visste jeg ville måtte gjøre noen ekstra-grep for å få IE8 til å oppføre seg, men det er som forventet, og det skal jeg ikke gå inn på her (utover det at det finnes et fint verktøy for å konvertere TTF- og OTF-fonter til de andre rare formatene ulike nettlesere krever hos Font Squirrel, og en grei teknikk for å få flest mulig nettlesere til å fungere er beskrevet her).

Jeg fant nemlig uventet motstand hos ingen ringere enn Firefox. Det har seg sånn at jeg har to domener: haraldseid.net, som jeg bruker for typiske «hjemmeside-ting», altså meget statisk innhold, og slaskete.net, som jeg tidligere delte med Amund og Sverre, til blogg. Begge domenene kjører fra samme server. Jeg utviklet først designet mitt på hjemmesiden, siden det er en meget triviell oppgave med flate HTML-filer osv. Alt var fint og flott. Så skulle jeg arve dette designet til WordPress-bloggen her på slaskete.net, og da ville plutselig ikke den fine fonten i headeren vises i Firefox lenger!

Jeg lette etter feil og bugs og overstyringer fra andre CSS-er, jeg brukte Firebug og jeg prøvde å validere CSS-en (som selvsagt ikke validerer, på grunn av alle de eksperimentelle funksjonene jeg bruker) i ulike validatorer. Til slutt måtte jeg ty til Google, og fant etter hvert ut at:

Firefox nekter vanligvis å vise en webfont (definert med @font-face) fra eksterne URL-er, med mindre denne eksterne webserveren er konfigurert til å tillate det! Grunnen til dette er at man ønsker å begrense «piratkopiering» og uautorisert bruk av webfonter. Nå er det så vidt jeg vet bare Firefox som gjør dette, jeg opplevde i hvert fall ikke problemet med andre nettlesere.

Så hvordan får man Firefox til å akseptere at fonten man linker til er gangbar? Jo, med HTTP-headerne! Her er hvordan du gjør det med Apache:

Først og fremst må du sørge for at mod_headers.so er aktivert, hvordan man gjør dette varierer fra server til server, men under Debian gjorde jeg rett og slett sånn:

a2enmod headers
/etc/init.d/apache2 restart

Med dette på plass så oppretter man en .htaccess-fil i den mappen som fonten ligger, med følgende innhold:

# example Apache .htaccess file to add access control header

<FilesMatch "\.(ttf|otf)$">
<IfModule mod_headers.c>
Header set Access-Control-Allow-Origin "*"
</IfModule>
</FilesMatch>

Mer info og kilde for løsningen er hos Mozilla Hacks.