Ljuger man om en sak svärtar det ner allt

I dokumentären Älskade kött (tillgänglig på URplay till söndag 4 aug. 2013) på svt pratades det om hur köttindustrin påverkar miljön, de hävdade bland annat att köttproduktionen stod för 18% av utsläppen av växthusgaser.  Detta kanske är sant eller inte.

För i samma program hävdar de att (ca 15min och 30 sek in i programmet) för att framställa 1 kg kött går det åt 15500 liter vatten och att det är lika mycket som om en människa duschade dygnet runt i ett år. (“det är vad en människa skulle göra av med om hon stod i duschen ett år i sträck”)

När jag såg det reagerade jag med en gång. Ett badkar Rymer ca 150-200 liter vatten så 15500 liter skulle motsvara ca 100 fulla badkar och det skulle i så fall ta över två dagar att fylla ett badkar med duschen.
Jag tyckte det verkade orimligt, nu har jag inte något badkar men när jag hade det tog det inte så lång tid att fylla det. I och för sig använde jag kranen för att fylla det  och inte duschen, men skillnaden borde inte vara så stor.

Så jag beslutade mig för att försöka kolla riktigheten i påståendet att 15500 liter vatten skulle räcka till att duscha konstant i ett år.
Jag började med att kolla hur mycket vatten som kom ur duschen. På 10 sekunder fyllde jag upp 1,8 liter.

1,8*6= 10,8l/min *60 =  648 liter per timme
15500/648 = 23,919753086 timmar

Vilket innebär att jag skulle kunna dusch konstant i ca ett dygn och inte ett år på 15500 liter vatten.
Men olika duschar förbrukar olika mängder vatten, det är beroende av hur högt tryck man har osv. Så jag beslöt mig för att vända på allt och se hur många liter per sekund en dusch som sprutade ut 15500 liter under ett år skulle behöva leverera.

Antal sekunder på ett år är 60*60*24*365 = 31536000

Så 15500 liter delat på antalet sekunder under ett år ger hur många liter per sekund som måste levereras.

15500/31536000 = 0.000491502 l/s = 0,491502 ml/s

En halv milliliter per sekund, (hmm mer siffror och abstrakta mängder, hur skall jag visualisera detta?) Jag satte på kranen i köket och försökte spola 0,5ml/s. Så här mycket är det ungefär (länk till videon) (det var svårt att ställa in så det blev ca 0,7 ml/s)

Om det inte kommer mer vatten än så ur duschen förstår jag att det tar ett helt år att duscha. Nej tydligen har de bara hittat på lite siffror som låter bra.

Så om de nu så lättvindigt ljuger om något som är så enkelt att kontrollera bara för att få det att låta dramatiskt, vad mer ljuger de om? Kan jag lita på uppgiven om att köttproduktionen står för 18% av växthusgaserna? Behöver man 15500 liter vatten för 1 kg kött? Jag vet inte, men mitt förtroende för att de skulle tala sanning har definitivt fått sig en törn.

Posted in Media | 2 Comments

Way out west och pr

Det var ett lysande pr drag av way out west att samtidigt som man tillkännager att man bara kommer att ha 16% kvinnliga artister också talar om att man bara kommer servera vegetarisk mat.

De som normalt skulle kritiserat festivalen för att man såg totalt  misslyckat med att få fram ett mer jämställt artist uppbåd är då helt upptagna med att hylla festivalen för att de är så progressiva.

Även om jag inte riktigt gillar att det görs så var detta ett lysande exempel på hur man kan utnyttja medielogik, flockmentalitet och likande.

Posted in Uncategorized | Tagged , , , | Leave a comment

Det dåliga var bra gjort

Jag beundrar skicklighet, människor som kan göra saker på ett välgjort sätt. En form av professionalism kan vi kalla det.  Jag kan beundra även de som jag inte håller med eller tar avstånd från om de har gjort det de gjort på ett välgjort eller effektiv sätt. Jag kan altså beundra världens ondaste mäniska för hur hen gjorde något, det betyder inte att jag håller med eller tycker att det som gjordes var rätt. Men om någon gör något på ett effekvit sätt måste man ge de kredd för det även om jag samtidigt fördömer det som faktiskt gjordes.

Detta kan ibland ge upphov till en liten inre konflikt. Någon gör något bra (utförandet) men jag vill inte säga att de gorde något bra (gärningen). Jag vet inte riktigt hur jag skall förhålla mig till det och det kanske är mer ett språkligt problem. För jag vill inte benämna gärningen som gjordes i positiva ordalag även om utförandet var snyggt, bra, effektivt etc.

Hur säger man att någon gjorde något bra när det var något dåligt de gjorde, utan att förvirra sig i språkliga invecklingar?

Posted in Uncategorized | Leave a comment

Tangentbord på telefonen

För någon vecka sedan köpte jag en ny mobil. En xperia pro. Inte den nyaste eller kraftfullaste telefonen på marknaden, men den har en fördel som tyvärr ingen annan jag har hittat har. Den har ett fysiskt tangentbord som man kan dra ut.

Det är helt underbart att ha det tangentbordet, jag har mer än fördubblat skrivhastighen och tillsammans med swiftkey skriver jag nu snabbare på mobilen än vad jag gör på datorn. Jag hoppas att jag aldrig behöver gå till baka till en mobil med bara skärmtagentbord.

Tyvärr är utbudet med telefoner men utdragbart tangentbord mycket begränsat. Om det finns ett riktigt tangentbord över huvud taget så har telefontillverkarna klantat sig och satt det på framsidan av telefonen så att halva utrymmet till skärm försvinner. Vad har man då för nytta av tangentbordet? Man kanske kan skriva fort men man ser inget.

Nej om man skall tillverka enheter som är så kraftfulla som dagens mobiler är måste man också se till att det finns vettiga möjligheter höra användaren att använda dem fullt ut.

image

Åså en liten bild från balkongen där jag sitter och skriver detta.

Posted in Uncategorized | Tagged , , | Leave a comment

Hårlösa strandapor

Jag är övertygad anhängare till teorin om vattenapan dvs. att människor utvecklades vid vattnet.

I grunden går vattenapan-teorin ut på att människan utvecklades vid vattnen. Att vi går upprätt skulle vara för att det är enklare att plocka saker i strandbrynet. Att ha päls är en nackdel om man gör mycket i vattnet, så vi tappade den. Vi kan hålla andan, barn har en reflex där barnet automatiskt stänger av andningen när den får vatten i ansiktet osv, osv (rekommenderar verkligen att du titta på Elaine Morgans TED talk)

Jag har lite tillägg till vattenapan som jag brukar  kalla för Hårlösa strandapor-teorin. Inte bara utvecklades vi vid vatten utan vi är hel och hållet anpassade för att ligga på kritvita stränder vid ett azurblått hav och dricka drycker gjorda på ananasjuice och kokos.

Fihalhohi ocean view

Här skall vi vara

Posted in Uncategorized | Tagged , | Leave a comment

Twitters nya utseende och buggfix

Har fått den nya looken på twitter nu. Första intrycket är väll som vanligt, “jag vill att det skall se ut som det brukade”. Men det är bara ovana och jag kommer nog att vänja mig ganska snart. Om man bortser från att det kan det nog vara ganska bra. Några saker kommer jag nog att sakna och andra kommer jag  tycka är jättebra. Redan tycker jag hur diskussioner hanteras verkar jätte bra.

Men  finns det en ganska allvarlig bugg och det är att de riktiga namnen på folk man följer inte visas i flödet. Om du tex följer mig visas inte mitt riktiga namn, alltså digitalmannen, utan istället visas mitt köttnamn, alltså Martin (vilket bara mamma och myndigheter kallar mig).

Detta är en ganska allvarlig bugg, efter som för att få ett meningsfull utbyte av ett socialtnäterk måste man veta vilka man interagerar med. Jag har ingen aning vilka Marcus, Jonas eller Emma är deremot vet jag vilka ozonist, divergenta och opassande är. Det riktiga namnet på människor är det namn som man känner igen dem under.

Det finns dock en enkel lösning eller i alla fall en tillfällig workaround till twitter har fixat buggen.

Om man går till settings och sen och sen ändra så att det riktiga namnet stå både i fälten name och username (se bild) så funkar det.

Posted in Datorer | Tagged , | 2 Comments

Ladda ner talböcker från TPB

Ramlade av misstag in på Länsbiblioteket i Värmlands site. När jag var där råkade jag se en intressant länk om att ladda ner talböcker via DAISY Direkt till datorn (talböcker är ett väldigt bra hjälpmedel för oss med läs- och skrivsvårigheter). Nu bor jag inte i värmland men det kanske även finns här eller kommer att koma hit, så jag läste och där står att man kan:

Ladda ner talböcker på sina egna datorer direkt ur TPB:s digitala bibliotek.

Ladda ner, TPB?

Min hjärna kopplar ihop “TPB” och “Ladda ner” med The Pirate Bay. Så där sitter jag och tänker: “Oj det var radikalt att låta folk ladda ner saker från TPB (The Pirate Bay) via biblioteket”.

Men samtidigt finns den lilla förnuftiga rösten där som säger: “Nää, något stämmer inte här”.

Efter lite googlande  kom jag fram till att TPB troligtvis betyder Talboks- och punktskriftsbiblioteket för biblioteksmänniskor.

Det hade dock varit intressant att se hur världen hade reagerat på att Länsbiblioteket i Värmland skulle samarbetat med TPB (The Pirate Bay) för att låta människor ladda ner (tal)böcker.

 

Posted in Uncategorized | 1 Comment

Obfuscera kod

Efter “Programmerare vår världs magiker?” har ett par personer frågat mig hur man går till väga när man obfuscerar kod (heter det obfuscera på svenska eller har vi ett bättre ord?). Jag kommer inte att gå igenom exemplet i posten, dels för att om det förklaras  försvinner magin, del för att det är ganska komplicerat.

Anledningen till att man obfuscerar är att koden skall bli svår att läsa och förstå. Tanken är att man skall kunna dölja vad det är programmet gör och därigenom förhindra att någon skriver ett program som gör samma sak. Det brukas kallas security by obscurity och är ungefär lika säker som att kryptera en text genom att ändra typsnittet till dingbat eller wingdings, det finns alltid någon alldeles för smart person som kommer att lura ut vad det är som händer. Det finns program som kan obfuscera koden åt dig, men det är att fuska :)

Så därför har jag gjort ett lite exempel, det är ett ganska trivialt exempel1
, med det duger för att man i alla fall få en liten inblick i hur man kan göra och vilka tekniker som kan användas. Allt som programmet gör är att skriva ut alla jämna tal mellan 1 och 10.

int main (void)
{
	int i;
	for (i = 1;i < 11; i++){
		if (i%2==0)
			printf ("%i\n",i);
	} 

	return 0;
}

Inga direkt konstigheter, en for loop som itererar över i och skriver ut i om det är jämt delbart med 2 dvs om resten från  moduloräkningen (% operatorn) är 0. Där har vi hela vår program nu skall vi börja obfuscera. (Fast det får vänta lite för nu ringer frugan och säger att jag skall laga mat)

Så, vi börjar med iterationen. Som någon2 har sagt:

“To iterate is human … but to recurse is divine.”

Alltså alla iterationer kan ersättas med rekursion (tror även att det omvända gäller, men jag är inte helt säker). Rekursioner är oftast lite klurigare att räkna ut vad de gör än iterationer. Efter att vi gjort om iterationen kan det se ut något så här.

void recursiveFunction(int talet)
{
	if (talet < 11){
		if (i%2==0)
			printf ("%i\n",talet);
		talet++;
		recursiveFunction(talet);
	}
}

int main (void)
{
	int i=1;
	recursiveFunction(i);
	return 0;
}

recursiveFunction tar talet kollar om det är mindre än 11 (alltså inte större än 10), ifall det är det kollar den om det är ett jämt tal på samma sätt som i första versionen och skriver ut det om det är jämt. Sen ökas värdet på talet och recursiveFunction anropas med det nya värdet på talet.

Nästa grej vi gör är att byta ut if-satsen genom att använda ?-operatorn. ?-operatorn fungerar så att den utvärderar villkor och returnerar resultatet av en av två satser beroende på om villkoret är sant eller falskt

(vilkoret) ? "returneras om det är sant" : "returneras om det är falskt";

result = (vilkor&lt;0)? -1 : 1;  //om variabeln vilkor är mindre än noll kommer ?-operatorn att retunera -1 vilket tilldelas variabeln result, om det är större returneras 1 vilket då tilldelas result

Efter som ?-operatorn till skillnad från en if-sats är avsedd att returnera ett värde måste  det minst finnas ett värde att returnera om villkoret evalueras till falskt. I vår if-sats finns ingen else efter som om villkoret är sant så gör något annars gör inget alls (man kunde haft en tom else del men det är onödigt). Därför måste vi vända på våra villkor i recursiveFunction så att om testet inte är sant skrivs något ut på skärmen och talet ökas med 1 om det inte är större än 10.

void recursiveFunction(int talet)
{

	 (talet%2!=0) ? : printf ("%i\n",talet);

		(talet > 10)  ?  : recursiveFunction(++talet) ;

}

int main (void)
{
	int i=1;
	recursiveFunction(i);
	return 0;
}

I nästa steg flyttar vi in den rekursiva funktionen till main och anropar man rekursivt istället.

main(x)
{

	(x%2!=0) ? : printf ("%i\n",x);
	(x > 10)  ?  : main(++x) ;

}

Samtidigt tar vi bort deklarationen att variabeln i skall vara ett heltal (int) och byter namn på variabeln till x (återkommer till varför just x senare), vi tar även bort deklarationen till main. Vad vi gör är en implicit deklaration av variabeln och funktionen dvs vi låter kompilatorn försöka lura ut vilken datatyp det är vi vill använda. Retur värdet på main tas också bort, det är inte nödvändigt men allt för att förvirra så mycket som möjligt.  Detta är naturligtvis inget man bör göra och kan ställa till med en hel del problem.

Något man också kan göra är att ändra på kodning, tex om man skall skriva ut text kan man istället använda heltasvärderna på tecknen eller man kan skapa en egen teckentabell i en array och sen hålla på att hoppa runt i den med hjälp av pekare. Pekare är förövrigt något jag inte gått igenom här men jag misstänker att man kan producera mycket svåröverskådlig kod med hjälp av pekare (funktionspekare gör ju till exempel  alltid att det blir klurigt). En annan sak är att ändra på variabel och funktionsnamn så att det blir mer svårläst.

main(x)
{
	(x%(0x9c/0x4e)!=0x0)?:printf("%i\n",x);
	(x >0xa)?:main(++x);
}

Nu har vi inte så många variabel och funktionsnamn men om vi tex hade haft en funktion som räknade ut volymen på en låda så skulle den kunna ta emot längd, bredd och höjd.

volume(length, width, width)
{
	return length*width*width;
}

Om man då bytte ut namnen mot understreck ( _ ) så volym blir ett understreck, length blir två understreck, width tre och height fyra. Då skulle den se ut såhär istället

_(__,___,____)
{
	return __*___*____;
}

Inte helt lätt att tolka vad som händer. Men i vårat lilla exempel har vi bara ett variabelnamn och det kallar vi för x detta är för att vi har skrivit om våra heltal till hexadecimala tal vi gör också lite onödig matematik istllet för att skriva %2 vilket i hex skulle skrivits %0×2 så skriver vi 156/78 vilket är 2 och i hex skrivs 0x9c/0x4e och efter som hexadecimala tal tals skrivs med ett x i så byter vi namn på variabeln för att få lite mer x. Man kunde kanske kunnat bytt till något ännu klurigare.

Det sista vi skall göra är att ta bort all mellanslag, tabbar och radbrytningar sk whitespace för i C och många andra språk spelar de ingen roll förutom att öka läsbarheten (det finns undantag tex python).

main(x){(x%(0x9c/0x4e)!=0x0)?:printf("%i\n",x);(x>0xa)?:main(++x);}

Så några små tips på hur man kan använda sig av för att obfuscera sin kod. Nu är jag ingen expert på att obfuscera och om någon av er skulle vara det så tveka inte med att rätta eller komma med förslag på hur man kan förbättra.

1 Kan man inte programera över huvud taget är det naturligtvis inte trivialt. Men har man någonsin programmerat borde det vara försåtligt.

2 Den som vet vem som sa det får en guldstjärna, för jag har ingen aning.

Posted in Datorer, Programmering | Tagged , , | Leave a comment

Osmaklig revidering av osmaklig artikel

Den 24/7 2011 publicerade Sydsvenskan en artikel av Erik Magnusson om den norska misstänkte terroristen.  I pappersupplagan kan man läsa:

“Anders Behring Breivik tycks under senare år ha fört ett sorglöst ungkarlsliv, till stor del framför datorskärmen. Han roade sig med dataspel och var engagerad i online-spelet World of Warcraft, ett spel som han på Utöya kom att omsätta i praktisk handling.”

Jag har i och för sig inte spelat World of Warcraft men jag vet att det inte är ett virtuellt träningsläger för terrorister så som det framställs i artikeln.

Naturligtvis blev många WoW spelare upprörda av att utpekas som galna barnamördare som bara väntade på att få omsätta de kunskaper som de skulle ha lärt sig i spelet i praktiken. Under söndagskvällen dök det upp flera tweet, forum och bloggar som kommenterade hur vansinnigt det var att försöka skylla hela händelsen på ett datorspel. De flesta av kommentarens inkluderade en länk till nätversionen av artikeln. Nu (071125) är det så att Sydsvenskan har valt att radera stycket från online versionen (tillsammans med de tydligen över 200 kommentarer som kritiserar det).

Sydsvenskan gjorde bort sig, det händer, det är inte så farligt, man kunde valt att göra det rätta genom att skriva en liten fotnot där man ber om ursäkt för det extrem osmakliga i att anklaga över 10 millioner (enl. Wikipedia) WoW spelare för sitta och träna för att utföra terrorattentat. Men istället valde man att bara ta bort texten, för att alla som reagerat, skrivit om det och länkat till artikeln istället skall framstå som paranoida foliehattar. Ett försök till tämligen osmaklig historierevisionism av en osmaklig artikel.

Gör om. Gör rätt!

Posted in Datorer, Media | Tagged , , , | 2 Comments

En Mac kraschar aldrig

En Mac kraschar aldrig det hör man ofta, det är bara att gå in på något forum eller läsa kommentarerna på IDG för att få det bekräftat. Nu har jag (åter igen) arbetat med en Mac några dagar och har åter problem med att Macen plötslig och oväntat avslutar programmet som jag arbetar i utan att spara något (ibland stänger hela datorn av sig). Efter som Mac aldrig kraschar utgår jag från att det är någon for av ergonomi funktion som stänger av allt för mig når jag arbetat mer än någon timme i sträck. Vi vet alla att det inte är bra att sitta för länge vid datorn utan att man skall ta pauser emellanåt och de snälla människorna på Apple har uppenbart därför byggt in funktionalitet som gör att man tvingas ta en paus.

Efter som jag är mest van vid att arbeta med windows och linux är jag lite ovan vid detta beteende så därför sparar jag inte typ efter varje mening eller sats som jag skrivit. Visst det händer att windows och linux maskinerna kraschar då och då även om det är ganska ovanligt, så det kan jag leva med. Vad jag däremot tycker är mycket irriterande är Macens “auto stäng av utan att spara” funktion som aktiveras lite slumpartat, om jag visste att den aktiverades precis efter 1.5 timme skulle det vara mycket enklare för då kunde jag anpassa mig efter det. Men som det är nu verkar den vara helt godtycklig, ibland kan jag sitta en timme och “fjupp” så stängs det av, ibland kan det gå nästan tre till fyra timmar innan funktionen aktiveras.

Det jag nu undrar är om det finns någon gömd inställning någonstans som man antingen kan stänga av funktionen med helt eller i alla fall ställa in vilket tidsintervall det skall vara på den?

Posted in Datorer | Leave a comment