Utveckla för iPhone? Då ringer iMaffian på dörren…

Ted Dziuba skriver både underhållande och träffande om iPhone Application Store, det enda sättet att ladda hem applikationer till en icke-crackad iPhone, och hur den sätter den enskilde utvecklaren i en position inte helt olik den hos en butiksägare som erbjuds “beskydd” av maffian:

When a developer sells an application through the iPhone Application Store, they only see 70 per cent of the revenue. The rest goes to Apple for “system upkeep.” There’s no other way to sell iPhone apps. Apple’s distribution channel is the only one. Users can’t buy your program from their computer then load it onto an iPhone without jailbreaking the device, which is a gamble. If you don’t want to pay, well, let’s not go down that road. After all, what good would a programmer be without his thumbs?

All positiv press om vad som egentligen är en rätt medioker PDA-telefon med ett glassigt UI undanhåller ofta den viktiga detaljen att iPhone är en av de mest nedlåsta, begränsade handdatorerna du kan köpa, trots dess enorma potential för utveckling av tredjeparts programvaror, samt förstås gammal hederlig hemma-hacking. Visserligen går telefonen att “jailbreaka”, som det kallas (liknelsen med att släppa ut telefonen ur Apples fängelse är onekligen poetisk) men denna procedur är dels inte helt okomplicerad för novisen, dels orsak till problem när Apple släpper officiella uppdateringar, eller då man vill utnyttja sin garanti.

Dziubas artikel förklarar att Google “försöker göra distribution enklare” genom att med sin egen Android-lur tillåta att utvecklare, förutom via en central webbutik (Android Market), även distribuerar sina applikationer fritt, på egen hand. “Tillåta”, sug på den. I själva verket är det senare fallet standard sedan mer än ett decennium, en evighet i IT-sammanhang. På Windows-baserade mobiltelefoner och PDA:er har det alltid (med några få undantag, beroende på specifika teleoperatörer och telefontillverkare) gått att installera vilka programvaror man vill. Inte bara det, utvecklingsverktygen är dessutom gratis och marknadsledande.

Detta faktum omnämns sällan när man diskuterar olika mobila plattformars öppenhet och lämplighet för mjukvaruutveckling. Kanske anses det alltför o-chict i de Apple/Google-vurmande kretsarna att påpeka att marknaden för mobila plattformar är en där Microsoft för närvarande står för det mest öppna och fria alternativet (bortsett från OpenMoko – men det betraktar jag inte som ett giltigt motargument om det inte framställs av någon som faktiskt äger en, och använder den som sin primära telefon).

För att inte tala om det mest löjeväckande exemplet på Apples illvilliga inlåsningsstrategi – att du måste plocka isär din telefon i småbitar för att kunna byta batteri själv. Detta på en telefon med riktigt usel batteritid. Tydligen gäller det deras frisbee-macbook också.

Flame on, fanbois!

Desperata annonsörer vill blockera Firefox

I ett tidigare inlägg berättade jag hur du kan surfa snabbare, säkrare och utan störande reklam med webbläsaren Firefox, ett alternativ till Internet Explorer. Kärnan i det hela är Adblock Plus, ett tillägg till Firefox som blockerar reklam. De positiva effekterna av detta är uppenbara – du slipper störas av en massa ointressant skräp på sidorna, och ditt surfande går snabbare eftersom din dator inte behöver rita upp reklamen på skärmen (om du vill behöver du inte ens ladda ned den).

Det finns tyvärr alldeles för många sidor som bygger hela sin verksamhet på att folk ska titta på reklam. Det är en modell som uppenbarligen fungerar: Om du förpackar något en människa vill ha i något hon inte vill ha (reklam) och erbjuder paketet gratis, kommer hon förmodligen stå ut med det otrevliga för att slippa betala. Men det blir förstås mycket trevligare om man kan kringgå den otrevliga reklamen helt och hållet! Dessutom leder det kanske till att fler företag anammar affärsmodeller som inte går ut på att irritera sina kunder.

Firefox-användare är ofta ganska datorkunniga, och därmed är chansen att en Firefox-användare klickar på reklam ganska liten – vi vet helt enkelt bättre. Många använder förstås Adblock eller något motsvarande för att slippa se reklam helt och hållet. Detta har retat upp vissa annonsörer till en sådan grad att det nu har startats en webbplats där man uppmanar ägare till webbplatser att blockera Firefox. På grund av Adblock. Att blockera reklam är “stöld”, påstås det. Man tar sig för pannan – är det “stöld” att åka buss utan att titta på reklamskyltarna också?

Lyckligtvis är blockeringen av Firefox inte bara en utomordentligt korkad idé – blockerar man Firefox förlorar man automatiskt cirka 10-50% av sina besökare (läs: kunder) – det är också extremt enkelt att kringgå blockeringen. Eller helt enkelt blockera reklamen i Internet Explorer, eller vilken annan webbläsare som helst.

Om man vill komma in på en webbplats som blockerar Firefox kan man installera tilläggsprogrammet User Agent Switcher som utvecklaren Chris Pederick har knåpat ihop. Det är kompakt, enkelt och gör sitt jobb perfekt. Med detta program kan du helt enkelt välja om Firefox skall utge sig för att vara Firefox, Internet Explorer, Opera, Netscape eller egentligen vilken webbläsare du vill. Och det finns inget sätt för en webbplats att upptäcka att en webbläsare “fejkar” sin identitet.

Om du inte använder Firefox och inte kan eller vill byta till Firefox kan du ändå blockera reklam genom att skaffa ett program som heter AdMuncher. Det fungerar ungefär som AdBlocker, men fungerar med alla webbläsare, även Internet Explorer. AdMuncher är gratis i 30 dagar, sedan kostar det ungefär 165 kronor att fortsätta använda. Vadå, vill du ha något som blockerar reklam gratis? Skaffa Firefox!

Fotnot: Om du är intresserad av vad din webbläsare skickar för identifierande information till webbplatser du besöker kan du titta in på WhatIsMyUserAgent.com.

Skyddet på HD-DVD, Blu-Ray knäckt

Alla som läser teknikorienterade sidor vet det säkert redan, men jag vill ändå slå på trumman för att en anonym programmerare (jag vill inte använda den ofta feltolkade termen “hacker”) som kallar sig muslix64 har funnit sätt att kringgå AACS, skyddet som de nya formaten HD-DVD och Blu-Ray använder sig av för att skydda innehållet från kopiering. Dessa format är efterträdare till DVD och rymmer bilder och ljud i betydligt högre kvantitet och kvalitet än vad dagens så populära DVD-skivor klarar av. AACS efterträder CSS, kopieringsskyddet som används av DVD-skivor. CSS knäcktes i oktober 1999 av Jon Johansen.

Slyck News har en bra intervju med muslix64 där han beskriver hur han lyckats knäcka skyddet. De praktiska konsekvenserna av hans arbete är att det nu blir möjligt att dekryptera innehållet på en HD-DVD eller Blu-Ray-skiva, och göra kopior – alternativt konvertera till något annat format för enklare distribution eller kompatibilitet med andra typer av uppspelningsmaskiner (t ex en DVD-spelare eller en dator). Naturligtvis öppnar detta också portarna för all sorts piratkopiering.

Oavsett vad man tycker om piratkopiering är detta en seger för konsumenterna. Kopieringsskydd såsom CSS och AACS tar ifrån användaren möjligheten att exempelvis konvertera sina egna skivor till andra format, att använda materialet i egna sammansatta verk eller att göra säkerhetskopior. Självklara rättigheter som film- och musikindustrin länge gjort sitt bästa för att kväsa.

Två små spel

Jag bara älskar enkla spel som ändå lyckas vara otroligt beroendeframkallande. Spelet Lemmings från 1991 är ett sådant spel. I min arla ungdom (på PC, inget Amiga-tjafs!) spelade jag igenom det grundligt. Det är mig därför mycket välkommet att någon har gjort en portning av originalspelet som går att köra direkt i webbläsaren. Prova! Det tycks vara implementerat bara med JavaScript och är extremt troget originalet, så vitt jag kan avgöra.

En variant på konceptet är Miners, ett spel där man skall guida små guldgrävare. Kul, men långt ifrån lika beroendeframkallande som Lemmings. Dessutom kräver det Java (usch!). Men väl värt att prova på hur som helst.

Genier i arbete: C# vs C++

Raymond Chen, utvecklare på Microsoft och ägare till den legendariska bloggen The Old New Thing har tillsammans med Rico Mariani framställt en fascinerande serie artiklar om utvecklingen av en Kinesisk-Engelsk ordlista i C# respektive C++, med betoning på prestanda. Otroligt intressant för oss som finner glädje i Windowsprogrammering, eller låg/högnivåprogrammering i allmänhet. Serien är lång och tar en stund att gå igenom med alla tekniska detaljer, men jag lärde mig en väldig massa av den.

Jag sa ju att det var mycket att läsa. Mycket nöje!

Israelkriget spiller över i IT-världen

Jani Taskinen, en av de främsta programmerarna bakom PHP – det i särklass populäraste programmeringsspråket för att skriva webbsidor och datorprogram för webben (den här bloggen är skriven i PHP) – har sagt upp sig i ett kort och surmulet inlägg till en av PHP-projektets diskussionslistor. Egentligen ingen riktig uppsägning eftersom han, vad jag vet, alltid har jobbat på frivillig basis (PHP är ett open source-projekt) men ändå något som kommer att märkas i projektet och ge ett intryck på språkets framtida utveckling. Så varför slutade han, och vad har det med det pågående kriget att göra?

Jo, som vi alla vet så bombade Israel en FN-bas i Libanon nyligen. Ett dåd som enligt vissa sägs ha varit avsiktligt, av andra inte. Israel har bett om ursäkt, och det finns (obekräftade) rykten om att det faktiskt fanns ganska gott om Hizbollaterrorister i närområdet vilket tyder på att träffen på FN-basen var ett misstag. Hur som helst, en finsk medborgare tycks ha funnits bland de fyra omkomna FN-observatörerna. Jani Taskinen, också han en finsk medborgare, har själv spenderat en längre stund i Afghanistan som fredsbevarande FN-trupp. Man kan således ana att det tog lite väl nära hjärtat när Israel sprängde sönder hans kollega, misstag eller ej.

Så hur relaterar detta till PHP? Zend Technologies, företaget bakom PHP, är baserat i Israel och grundat av Israeler. Att döma av en IRC-logg som postats på Slashdot har Jani, efter bombmordet på den finska FN-observatören, blivit en rabiat antisemit. Slashdot-inlägget ser inte enormt trovärdigt ut, men loggen har bekräftats på annat håll. Kritik har också framförts avseende att IRC-loggen bara är ett kort utdrag som kommit “ur sitt sammanhang”. Men gjort är gjort, texten är tillräckligt lång för att avsikten ska framgå tydligt.

Eye for an eye.. I'll kill one Israel officer for one of ours, is that fair? I bet I'll be hanged for that. They kill one of my brother-in-arms-for-peace.. I think I'm entitled to kill one of their nazis. Hezbollah, where can I enlist? FYI: I don't care at all what anybody thinks about me. I'm going to be openly anti-Israel from now on. This was the last straw for me. Fuck you jews. I will also quit this project. As long as it's backed by some Israel company, I don't want to have anything to do with it.

Jag kan personligen inte förstå resonemanget bakom att man praktiserar guilt by association på det här viset – visst, man kan ifrågasätta handlingarna hos Israels armé. Men vad har det med ett IT-företag som ligger i Israel att göra? Det startades ju rimligtvis för att grundarna råkade bo i Israel, och man kan inte skylla Israels regerings handlingar på hela Israels befolkning, det är samma idiotiska ickelogik som när extrema feminister försöker utmåla mig och alla andra män som kollektivt skyldiga till att vissa män begår våldtäkter.

Även om jag erkänner Jani Taskinens enorma bidrag till PHP-projektet – som i sig bland annat utgör grunden för ett av mina nuvarande jobb – kan jag inte annat än känna ett visst förakt mot honom. En duktig, framstående programmerare borde kunna göra sorti på ett värdigare sätt, och utan att brännmärka sig själv som Hizbollawannabe. Nu är skadan skedd, men PHP lever vidare. Med eller utan Israel. Definitivt utan Jani Taskinen.

Viskleken och dess innebörd vad gäller mjukvarutestning

Vid seriös mjukvaruutveckling använder man sig som bekant av tester. Den (konceptuellt) enklaste typen av tester är så kallade enhetstester – man kör sin kod, matar in lite data och kollar om det som kommer ut i andra änden har rätt färg. Detta säkerställer att ett stycke kod gör vad som förväntas. Man kan således lockas att tro att ett program, där varje stycke testats separat med enhetstest, i sin helhet kan antas vara felfritt. Varför är så inte fallet?

Viskleken.
Tag ett koppel vilda battingar, ställ dem på rad och be var och en upprepa något tråkigt ord, typ “russin”. Förutsatt att ingen av battingarna har buggar kommer troligen samtliga att klara uppgiften. Viska nu ett annat ord i örat på batting #1 och be honom/henne viska detsamma i örat på batting #2, som sedan för det vidare, och så vidare (detta kallas viskleken för er som inte gått på dagis). Någon som tror att samma ord kommer ut ur munnen på den sista battingen?

Detta kan tyckas vara ett förenklat exempel, men det funkar ungefär likadant med mjukvara. Även om vi kan anta att data mycket sällan kommer att förvanskas på vägen mellan en komponent och en annan (men det händer!) finns det andra detaljer som är stört omöjliga att testa när man har varje komponent isolerad. Prestanda, exempelvis.