Apple is Evil.

Uppdatering i september 2013: Det ser faktiskt ut som att Apple har gjort stora ansträngningar för att komma till rätta med de etiska problemen vid tillverkning av sina produkter.

Ur Wall Street-bloggen på Svenska Dagbladet:

I januari totalsågades Apple för övrigt av 36 kinesiska miljöorganisationer som menade att företaget fullständigt struntar i miljö- och säkerhetsfrågor på de arbetsplatser som kontrakteras. Av 29 granskade företag tog Apple hem jumboplatsen efter att ha misslyckats med att ens lämna svar på flera viktiga frågor.

– Apple bryr sig bara om pris och kvalitet och inte det miljömässiga och sociala ansvaret. På så sätt tvingar de leverantörer att ta genvägar för att få kontrakten, sade Ma Jun vid Institute of Public & Environmental Affairs.

Läser man på om Foxconn (som Apple anlitar för större delen av sin tillverkning), så ser man att det verkligen inte är ett trevligt företag:

  • En rapport liknar fabrikerna med arbetsläger med misshandel av anställda och olaglig övertid utan lunchraster
  • 2009 tog en ung man livet av sig efter att ha tappat bort en iPhone-prototyp (och blivit förhörd och misshandlad)
  • Under 2010 försökte 18 anställda ta livet av sig (4 överlevde)
  • De anställda får högre lön för att företaget ska se bättre ut, men istället minskas deras bidrag till mat och husrum

Apple fortsätter att anlita dem och har gjort för lite för att slippa undan stämpeln Evil:

He who passively accepts evil is as much involved in it as he who helps to perpetrate it. He who accepts evil without protesting against it is really cooperating with it. (Martin Luther King, Jr.)

Hur bra deras produkter än må vara, så vill jag personligen inte stötta ett bolag som använder sig av modernt slaveri för att ta fram dem. De har hur mycket pengar som helst, och de skulle kunna förbättra villkoren för sina arbetare om de ville.

Ars Technica skrev för många år sedan en artikel Gates vs. Jobs: Who is the Nice Guy? där de jämförde Microsofts grundare Bill Gates med Apples grundare Steve Jobs:

… it’s hardly fair to paint Jobs in a purely negative light when many CEOs and other well-compensated executives give little or nothing to charity. However, if charitable giving and working to solve problems outside the technological sphere is your criteria, Gates comes out looking a lot better than Jobs. Jobs did start a charitable foundation in the 1980s, but gave it up once he ”discovered how time-consuming such business can be.”

Min tolkning är att Steve Jobs och Apple inte bryr sig om något annat än sina produkter och sina användare. Och om man läser Jonathan Sulos blogg, så verkar de inte bry sig om sina användare heller.

Vidare läsning:

Om Riksdagens beslut om samtycke till cookies

Igår beslutade Riksdagen att det ska krävas samtycke från besökaren innan cookies får lagras eller hämtas i webbläsaren. Beslutet ändrar lagen om elektronisk kommunikation vad gäller exempelvis cookies.

Tidigare löd paragraf 6:18 så här:

Elektroniska kommunikationsnät får användas för att lagra eller få tillgång till information som är lagrad i en abonnents eller användares terminalutrustning endast om abonnenten eller användaren av den personuppgiftsansvarige får information om ändamålet med behandlingen och ges tillfälle att hindra sådan behandling. Detta hindrar inte sådan lagring eller åtkomst som behövs för att utföra eller underlätta att överföra ett elektroniskt meddelande via ett elektroniskt kommunikationsnät eller som är nödvändig för att tillhandahålla en tjänst som användaren eller abonnenten uttryckligen har begärt.

Men från 1 juli kommer den lyda så här:

Uppgifter får lagras i eller hämtas från en abonnents eller användares terminalutrustning endast om abonnenten eller användaren får tillgång till information om ändamålet med behandlingen och samtycker till den. Detta hindrar inte sådan lagring eller åtkomst som behövs för att överföra ett elektroniskt meddelande via ett elektroniskt kommunikationsnät eller som är nödvändig för att tillhandahålla en tjänst som användaren eller abonnenten uttryckligen begärt.

Skillnaden är alltså att det tidigare räckte med information om varför cookies används och hur besökaren stänger av dem i sin webbläsare — men nu måste besökaren aktivt samtycka till cookies. Alltså en väldans massa popup-fönster, men det går ju inte.

Det ska bli intressant att besöka Riksdagen.se 1 juli och se om de frågar innan de lagrar sessions-cookies i min webbläsare.

(Notera också formuleringen i sista meningen, som gör att du inte behöver be om samtycke till cookies om det är nödvändigt för att göra det användaren begär, exempelvis att logga in och fortsätta vara inloggad i en webbapplikation.)

Uppdatering: Feber skriver så här:

Det har dock varit rätt mycket kontroverser vad ”aktivt samtyckande” betyder och det kan räcka med att man ställer in sin webbläsare på att automatiskt godkänna cookies, vilket är default-inställningen på alla webbläsare på marknaden. Computer Sweden säger att den här frågan antagligen kommer att avgöras i domstol och innan det sker kommer åtminstone vi här på Feber inte att vidta några åtgärder när lagen träder i kraft.

Uppdatering: Det handlar förstås inte bara om cookies, även html5 local storage och annat som täcks in av de generella formuleringarna.

Säkrare PHP-sessioner

PHP genererar ju ofta ett sessions-id som lagras som en cookie i webbläsaren. Jag läste just att man kan säga åt PHP att generera säkrare/bättre sessions-idn genom att ändra några inställningar i PHP.ini (alternativt ändra dem i ditt skript med functionen ini_set):

session.hash_function = 1

Default är 0, vilket betyder att MD5 används. Sätt värdet till 1 för att istället använda den bättre funktionen SHA-1.

session.entropy_file = /dev/urandom
session.entropy_length = 16

Då läser PHP 16 bytes från den ganska bra slumpkällan /dev/urandom istället för att som standard bara använda timestamp, IP-adress och något mer. Det gör det mycket svårare att gissa sig till ett sessions-id.

Om du vill ha extremt säkra sessioner, bör du förstås inte nöja dig med detta. Då bör du istället sätta inställningarna så här (rekommenderas ej om du inte har extrema säkerhetskrav då det ger sämre prestanda):

session.hash_function = sha512
session.entropy_file = /dev/random
session.entropy_length = 512

jQuery-events och ”return false”

Douglas Neiner på Fuel Your Coding skriver en bra artikel om varför du kanske inte borde avsluta alla jQuery-event-callbacks med ”return false” (för att undvika standardbeteendet). Rekommenderas om du vill lära dig mer om hur events propagerar.

In most situations where you would use return false what you really want is e.preventDefault(). … This does everything we want without prohibiting parent elements from receiving these events as well. The fewer restrictions you place on your code the more flexible it will be to maintain.

Det är inte uppenbart vem som är den bästa programmeraren

På den rätt så anonyma bloggen awesomeness länkar Hising till John Cooks artikel om varför programmerare som är 10 gånger mer produktiva än sina kolleger inte får 10 gånger mer betalt.

Intressant läsning, även den podcast med Joel Spolsky som John Cook länkar till.

But just when they are being their most productive, nobody says “Wow! You were just 100x more productive than if you’d done this the hard way. You deserve a raise.” At best they say “Good idea!” and go on.  It may take a while to realize that someone routinely comes up with such time-saving insights. Or to put it negatively, it may take a long time to realize that others are programming with sound and fury but producing nothing.

Något att tänka på för alla chefer, kanske.

Läsarfråga: sessioner med AJAX

Jag fick en fråga från en av bloggens läsare:

Säg att jag har en AJAX-funktion som gör något i min MySQL-databas (t ex raderar en rad). AJAX-funktionen kallas från ett Javascript. Hela webbsajten är skyddad med https, session etc, men det hindrar ju inte att någon oinloggad kan kolla på mina scripts-filer om man råkar veta URL:en (eller gissar den), eller hur? Så vad är det som hindrar att man som oinloggad gör AJAX-calls direkt i adressfältet? Hur skyddar man i så fall känsliga operationer i AJAX-script?

Frågan baseras på ett missförstånd, och jag gör själv samma tankevurpa ibland, så jag tänkte försöka reda ut det här.

AJAX använder webbläsarens funktion XMLHttpRequest för att anropa webbservern och returnera svaret till en Javascript-funktion istället för att rendera om sidan i webbläsaren. Det är sedan upp till Javascript-koden att göra något med svaret.

Men själva AJAX-anropen och svaren är helt vanliga http- eller https-anrop, precis som när användaren klickar på en länk och webbläsaren hämtar en ny html-sida. Webbläsaren skickar även med samma cookies!

Eftersom webbläsarens session på servern identifieras med en sessions-cookie, kan du verifiera att besökaren är inloggad även om anropen görs med AJAX.

Inte ens cookie-flaggan HttpOnly ställer till det. (Flaggan ska göra så att cookien inte kan läsas av Javascript och bara skickas fram och tillbaka med http-anrop. Det spelar ingen roll, eftersom webbläsaren lägger till cookien vid AJAX-anrop.)

Fackböckernas framtid

Via Daring Fireball hittar jag Mark Pilgrims intressanta replik till författaren David Flanagan (JavaScript: The Definitive Guide), som skriver om piratkopiering och att hans bokintäkter har fallit konstant under ett decennium. Diskussionen går kring piratkopiering och slutar med att fackboken som referensverk kanske är på väg att dö ut:

So is piracy really the problem? Is it even a problem? David has provided no evidence that his book is, in fact, wildly pirated. It’s not even available yet from dedicated pirate sites. But the larger, more disturbing question is this: who bothers to steal books these days when you can go to Stack Overflow or a web forum or, yes, even Google, type a question, and get an answer?

Jag köper själv ofta böcker som jag sedan aldrig läser. Ett av de senare exemplen är PHP 5 Recipes, som nog är ett klockrent fall av bok som inte kommer kunna säljas ”i framtiden”. Eller? Författaren Dan Miller pratar ibland i sin podcast och blogg om fysiska böcker som ett slags souvenir, som man köper för att ha i bokhyllan — inte för att läsa.

Stack Overflow kan självklart inte ersätta fackböcker som The Pragmatic Programmer och andra texter som inte är i form av korta svar eller enkla recept. När man vill lära sig något nytt gör man nog bäst i att läsa något som man inte visste att man borde veta, vilket utesluter en Google-sökning. Eller?

PS. Tillsammans med tidningen Success Magazine får jag varje månad Book Summaries, som är sammanfattningar av tre böcker. Detta får jag på papper, men även på en cd-skiva i form av ljudspår, mp3 och pdf. Jag är imponerad över att de levererar det på flera media och jag gillar verkligen flexibiliteten som det ger. Det är något för bokleverantörer att ta efter.

Stack Overflow-podcasten är tillbaka

En av mina tidigare favorit-podcasts inom webbutveckling är tillbaka efter ett års uppehåll! Stack Overflow-podcasten har bytt namn till Stack Exchange Podcast, men det är fortfarande Jeff Atwood och Joel Spolsky som diskuterar allt möjligt inom webbutveckling (men framförallt det som händer med Stack Overflow och dess systersajter inom Stack Exchange).

Både nya och gamla avsnitt (totalt 88 nu) finns att lyssna på eller ladda hem från SoundCloud (självklart också som RSS eller iTunes Podcast).

Internetworld testar webbhotell 2011

Varje år testar Internetworld svenska webbhotell i samarbete med Pingdom (min arbetsgivare). Nu har de publicerat resultatet av upptidstestet.

Av de sju webbhotell som får godkänt i testet är Levonline bäst med sina utmärkta 99,99 procent. Internet.se, Obido, Telia, Space 2U och FS Data får också mycket bra resultat, alla med en upptid på minst 99,97 procent.

Active 24, Binero och City Network är tre av de stora aktörerna som får anmärkningsvärt dåliga resultat i testet. Andra välkända webbhotell som One.com, Loopia och Crystone får också underkänt.

Notera dock att testet ”bara” löpt över 3 månader, och slumpen kan påverka en hel del. Jag gjorde själv ett liknande test med Pingdom under ett helt år, och testade även WordPress-prestanda under en månad. Detta var dock på betydligt färre webbhotell och servrar.

Scanna in anteckningar till Evernote

Michael Hyatt beskriver hur han skriver anteckningar på papper och sedan scannar in dem direkt till Evernote (och slänger pappret).

The value of this system for me is that it is the perfect blend of old-world and new-world technology. I can keep taking my notes the old-fashioned way and still have access to them electronically.

Läs artikeln: michaelhyatt.com