XMLHttpRequest… and headers… (and TinyBox)

Some call it AJAX, some call it XMLHttpRequest and others XHR, AJAX is not the common usecase of AJAX. Most people transfer JSON and not XML, or some other crap, that’s up to you as a developer.

Common practice for the two major Javascript frameworks (jQuery and Mootools) is to send this custom HTTP-Header: X-Requested-With: XMLHttpRequest

It does not break the HTTP Protocol nor the website, if the website doesnt care about the header, nothing happens. If the website requires the header to be sent to work and the javascript doesn’t send it, the website will break.

at work, we have this setup:

<?php
if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) AND strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) === 'xmlhttprequest') {
// Print response of request encoded as json
} else {
// Print template and push the data to the templatefile to render
}

And then we had an old setup of pages, that was using TinyBox, and got XML sent to it. And since I rebuilt the default template for that system… and implemented in the templating system to NOT RENDER the menu’s on AJAX calls… And I thought… Well, that’s it, now it will work everywhere where AJAX is used. I was wrong.

Since it’s not part of the standard XMLHttpRequest to send this header, it’s only the common practice, this header isn’t defined automagicly by the browser. Both jQuery and Mootools does this. TinyBox does not.

I thought most JavaScript developers who built libs and such things was following common practice, at least for libs people heard about. TinyBox is quite known. So I patched TinyBox:

diff -r 2216c184eed3 tinybox.js
--- a/tinybox.js	Thu Jan 12 17:09:54 2012 +0100
+++ b/tinybox.js	Thu Jan 12 17:11:24 2012 +0100
@@ -30,7 +30,9 @@
 				x.onreadystatechange=function(){
 					if(x.readyState==4&&x.status==200){TINY.box.psh(x.responseText,w,h,a)}
 				};
-				x.open('GET',c,1); x.send(null)
+				x.open('GET',c,1);
+				x.setRequestHeader('X_REQUESTED_WITH', 'XMLHttpRequest');
+				x.send(null)
 			}else{
 				this.psh(c,w,h,a)
 			}

Now my code works, and all other code on the page. So simple. Please follow common practice…

Telenor 4G, Huawei E398 med fri mjukvara

Har förflyttat mig ner till Helsingborg, detta resulterade i att jag inte har något fast Internet hemma, så jag införskaffade mig ett 4G från Telenor.

Jag valde Telenor på grund av tre anledningar…

  1. Modemet visade förhoppningar att köra i Linux
  2. De har 4G täckning där jag bor med goda marginaler på yta
  3. Telenor är den enda leverantören som säljer abonnemang till privatpersoner “utan” begränsning

Till en början så identifierar sig modemet som

12d1:1505, men med lite modeswitch på den så kommer den identifiera sig på följande vis:

Bus 002 Device 004: ID 12d1:1506 Huawei Technologies Co., Ltd.

Och som den Gentoo användare måste jag sätta upp min kärna för att slå de moduler och drivrutiner jag behöver för all hårdvara, så jag tänkte lista de moduler jag behöver för få igång modemet.

Dessa options använder jag i min linux 3.0.4 kärna:

Device Drivers --->
  [*] Network device support --->
    <*> PPP (point-to-point protocol) support
    <*>   PPP support for async serial ports
  [*] USB support --->
    <*> USB Serial Converter support --->
      [*] USB Serial Console device support
      [*] USB Generic Serial Driver
      <*> USB driver for GSM and CDMA modems

Efter att man modeswitchat enheten och har de kärnmoduler som krävs så skall det dyka upp en enhet som heter /dev/ttyUSB0.

Sedan så behöver du ppp, wvdial samt lite konfiguration.

Wvdial kan generera en helt okej grund till att konfigurera det som krävs för att det ska fungera.

$ sudo wvdialconf

Min konfigruation wvdial ser ut såhär: (fil: /etc/wvdial.conf)

[Dialer Defaults]
;Init = ATZ0
Init1 = ATZ
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
Init3 = AT+CGDCONT=1,"IP","internet.telenor.se","",0,0
Phone = *99#
Modem Type = Analog Modem
Baud = 9600
Modem = /dev/ttyUSB0
ISDN = 0
Username = 4G
Password = 4G
Stupid Mode = 1

Username och Password verkar inte spela roll, Stupid Mode gjorde så att saker började fungera.

Jag har hitils lyckats nå 2Mb/s stabilt i nerladdning, teoretiskt sett ska jag kunna nå 8Mb/s, vet inte om jag skickar rätt APN eller ej med mina AT kommandon, om det är någon som har tips så får de gärna skriva en kommentar om det. Men så långt fungerar det och det känns som en bra början.

Why Humble Bundle? Why?

Last year, early May, I found the Humble Bundle idea project thingy, they collected some multi-platform DRM free games and sell them as a bundle for a custom price, depending on what the user wants to pay.

The first bundle was a great success, when I bought the bundle it contained World of Goo, Aquaria, Gish, Penumbra: Overture, Lugaru. And I payed something above the average when I bought it. I don’t remember exactly. Some time later I got a surprise, I got one extra game, Samorost 2. And well, that was nice.

In my opinion the Humble Bundle #1 was worth it, I haven’t even played all games in it. But some of the games was awesome, and all of the games except one in the Humble Bundle #1 actually released the code after a while during the time it was active.

In December last year they announced the second Humble Bundle, and I was quick buying it for myself, and even as Christmaspresent as nice thing, with money to charity and some fun games. During the second Bundle, I emailed the maintainers of the project and suggested to have some kind of generator of Christmascards with the URL on, to be easy to give away as present in a nice way. I got “no, we have too much to do”-email back. And they suggested me to do it, but well… Set it up as a third party feels wrong when people should enter their codes to access their bought software, so I didn’t do anything.

I also liked the second Bundle, it was good, some good games… and… well… it was worth it only to get the music from Osmos… and Osmos itself… mmm Osmos… I was stuck in that for a while.

Then, here is where it started to go wrong, the Humble Frozenbyte Bundle… Just games from the same developers, and well… Worse quality than before… And way to close to the second bundle in timing.

The Humble Bundle #3 was an upgrade from the Frozenbyte one, really… I liked VVVVVV… Was stuck in that for a while yeah…

After the Humble Bundle #3… I think they shot themselves in the foot, more than once… They have announced three different Bundles in three months, this is way to often, and they reuse games from old bundles in the original announcements of the Bundle.

WHY ARE YOU DOING THIS?

The Bundles was better when it was a bit more rare occasions, bigger mix of games from different small game-studios, and not reuse of games used in bundles before. And I would prefer if most of the games came with source code available.

I haven’t even looked at the latest Bundle for real, and I probably won’t do it… and If I would… Humble Bundle would get zero of my donations, everything to EFF.

So, dear Humble Bundle, go back to real good bundles again?

Thoughts about Power Of Adhocracy, #adhocracy

Date: 2011-10-25
Time: 17:00-22:00

This was my weeks first conference(I’m usually not at conferences every week, but this week was special). I was away from work to be able to work on my talk for the evening, and to be able to rest before the talk. Very good choice indeed.

During the day did I manage to meet Lina, a girl from Skåne which a mutual friend introduced me too, and wanted me too meet. And I told her to come to the Power Of Adhocracy Conference in the evening, even thought we knew it was full she joined me on the route there. And when we got close to it we heard that it wasn’t full anymore, there was plenty of more places, thanks to a Perl meet-up that didn’t happen. So Lina joined in and spoke with people during the mingling and watched the talks, I think she had a great time, a bit random :)

I presented my talk that evening with the title “What Is Telecomix?” (you can find links to stuff at the bottom of the post).

Others told me that my talk was good, I don’t know for myself, I was a bit stressed, I didn’t have a clue about the time while talking, and the talk was not very well planned with the details… So I guess It want pretty good after all :)

One good speaker of the evening was Jacob Appelbaum, he spoke about surveillance and how our devices such as smartphones can be used for tracking our every move, and secure communication and so on… It was a good talk, quite depressing, but good. The world needs people like him to refresh our minds that the world is more evil than we want to most of the time. I think most of the participants already knew, but… mind refreshing is good. And he is a good speaker.

And there was another interesting talk about a free Internet non profit organization in Sweden, called DFRI.

I also meet two journalists, and they wanted to ask me lots of questions and take a picture of me in my “home environment where I work with activism”, so well, they ordered a cab from the conference to my home after the conference was ended. It was quite nice to not take the bus home… :) So now I probably show up in some article from “Norskt Näringsliv” in a while.

This was a very good evening, thanks to our organizer Anders, .SE and thanks to everyone who was there, you all made it just perfect! <3

Links:

Power Of Adhocracy: http://powerofadhocracy.org/
Talks archive: http://powerofadhocracy.org/archive.html

Söker nytt arbete!

Elis Axelsson, drifttekniker/webutvecklare, söker nytt jobb inom dessa områden. Bor för närvarande i Stockholmsområdet, men är sugen på att söka mig vidare ner mot Göteborg.

Jag arbetar gärna på flexibla arbetstider, men med regelbundna uppföljningar. Jag har jobbat senaste året med utveckling av webb och vill söka mig vidare, gärna inom områden som innefattar serverdrift, nätverksunderhåll, backuprutiner och liknande.

Du kan läsa mitt CV för mer information, det går att hitta här: Elis_Axelsson.pdf

Har du ett jobb till mig? Eller tips på något? Skrik till i kommentarsfältet alt ring/maila mig!

Standarder… Dammit…

Standarder… Standarder är A och O för att det ska gå att hantera något som Internet. Utan en massa standarder så hade du inte kunnat läsa detta inlägg. Det vore mer eller mindre omöjligt.

Det är ingen hemlighet att jag har en N900 och har haft det ett tag, men har aldrig riktigt tänkt tanken att synkronisera kalender och kontakter, men det påtalades igårkväll så jag började titta på det. Slog upp på internet hur man gör. Gjorde exakt likadant, och det fungerade, tills jag började slå samman kontakter från SIM-Kortet och mina Gmail kontakter.

Det verkar till stor del vara problem med Googles Exchange servrar, men om man vänder på det så tycker vissa att det är N900ans fel. Men det senare känns som ett ickeargument. Man har standarder för att slippa göra specialhack för varje server.

Google doesn’t use a standard Exchange protocol, so isn’t supported with MfE on the N900. It may work for you though – there’s been very mixed reports on this.

Rob1n 2008-03-06

Det har även kommenterats på hemsidan där jag läste om hur man satte upp det:

When I start using the “merge contacts” feature (which makes this device look pretty awesome) then MfE won’t sync contacts anymore.
I currently only use MfE for my calendar :(

jrkalf 2009-12-31

Jag har läst lite här och där att det är en bugg i implementationen av hanteringen av Nicknames på Googles sida… Jag vet inte riktigt men jag ska prova runt lite och se om jag lyckats mergea alla mina kontakter.

Jag bryr mig ärligt inte helt om VAR felet ligger, jag är mest bitter över att det uppstår när det faktiskt finns standarder för det.

Egypt(1/?): This is fucking crazy!

Okay, lets start. It’s chaos in Egypt. Totaly crazy!

It started with some demonstrations, huge ones. I mirrored lots of pictures here: http://egypt.failar.nu/ ,Then some people started to get shot and other “not very good things” happend.

We maintained tunnels and secure connections while they blocked twitter and facebook to block communication to the world.

Last night, they started to block of the net. The real net. Blocking the internet. http://www.arabist.net/blog/2011/1/28/urgent-egypt-has-shut-off-the-internet.html and some shot rockets at the police house http://www.allvoices.com/contributed-news/8019247-egypt-rockets-fired-at-police-station

Then we started #hamradio, we have been working to get working radiolinks which is out of band communication. We had phonecontact with the leader of the hamradioclub in cairo, we didnt get all info over before the number got disconnected.

I think the hamradiomove was awesome, I hope we get better links soon. The big day for the hamradio is on Saturday evening/night.

And, tomorrow Friday there will be huge demonstrations. Bigest ever in Egypt. There probably will be total blackout of internet too.

This is chaos, and I need sleep.

Utveckla för Facebook

Jag kom för ett tag sedan på att jag skulle bygga en Facebook applikation, och har jobbat på det sedan dess. Det har väl gått mer eller mindre bra i turer fram och tillbaka. Jag har flera gånger tyckt, “nu är det bra, nu fungerar det”. Och så har jag tittat på det och provat… och kommit fram till att det inte alls vart bra, egentligen.

Ett av de största problemen när man börjar med att utveckla för Facebook är dokumentationen… Well den finns, den är ganska lättläst. Men den är dåligt strukturerad. Inte som i att det blir förvirrat att läsa den, utan vad man ska läsa.

De har massor av olika APIer för att göra allt möjligt.

En av de första saker man får välja när man sätter upp sin app är om den ska vara i FBML eller iframe… Och jag har lite svårt för frames och valde då FBML. Utan att veta vad det var. Detta var ett stort misstag som jag inte skulle ha gjort…

FBML står för FaceBook Markup Language, detta är som HTML, fast limiterat till ett fåtal HTML-Taggar. Samt specifika FBML taggar som kan generera formulär automatiskt. Ganska smidigt för vissa saker. Men väldigt begränsat.

När man sitter med FBML och vill använda JavaScript så får man ändra sig igen, du är nämligen limiterad till FBJS, FaceBook JavaScript. När man börjar läsa om det så inser man att man inte borde valt FBML från början och helst inte vill sitta kvar med appen över huvud taget och göra en fristående sajt. Det var vid denna punkt jag bytte till en iframe.

Och då inser man istället att man behöver autha sig på något helt annat sätt, och blir helt lost en gång till. Och här visar det sig att det finns flera sätt att gå till väga. Developers, där man skapar sin app för att kunna börja över huvud taget sa att jag kunde dra ner deras PHP SDK från GitHub, som den PHP utvecklare jag är så gjorde jag detta. Det verkade lämpligt.

Så sätter jag igång, detta SDK bestod av ett gigantiskt lib som inte verkar göra vad det säger. Och är fullständigt odokumenterat, så för att lyckas använda det så blev det ganska mycket sökande på Internet… Under tiden av detta så insåg jag också att det har funnits två helt olika versioner där koden är inkompatibel av detta lib. Många träffar på Google gav mig resultat hur man gjorde med version 1 av libbet, nu satt jag med version 2.

Men när jag väl fått saker att fungera dugligt med det så provade jag i Internet Explorer, och det visades att den inte kunde hålla sessionerna och var tvungen att autha om användaren varje gång denne besökte en sida, inte så optimalt. Jag fick också reda på att det nya libbet jag använde inte var så nytt, det var tydligen gammalt. Det verkade vara infört våren 2010 vilket jag inte tycker är så gammalt. Men tydligen har det kommit ett nytt API som man bör använda istället efter det libbet släpptes… Och till det nya APIt fanns inga libbar alls, bara en ganska kort sida dokumentation om hur man authar.

Så… jag satte mig och läste den ett par gånger, och har nu skrivit mitt egna lib för att autha användare och göra api-anrop enbart mot det nya APIt och det verkar fungera… Källkod finns här: http://github.com/etu/EtuFB och den uppdateras löpande. Och innehåller workarounds runt att Internet Explorer inte kan lagra sessioner korrekt. För att lösa detta med gamla nya PHP SDKt så var jag tvungen att fulhacka något enormt… och det fungerade nästan dugligt.

Mitt lib är nog det bästa libbet, och även det ända… Men jag har inte fått så mycket reviews på det av andra utvecklare. Så jag vet inte om det är helt safe att använda. Dock följer jag authprocessen till punkt och pricka och det ser ut att fungera… Har inte vågat sätta allt i drift ännu.

Efterlysning: Om någon ser en webdesigner med lite tid över, säg till mig! Jag behöver grafik för att kunna släppa min app!

Lita på mjukvara?

Det finns massor av mjukvara, det är ingen frågan om den saken. Jag använder mer mjukvara än genomsnittet av dagens internetanvändare, skulle jag kunna säga helt utan grund för mitt påstående.

När man installerar en mjukvara så brukar jag i alla fall fundera över om jag litar på den mjukvaran. Hur den begränsar mig, alltså vad jag får göra med den. Och även, vad gör den mot mig kanske utan att jag vet det?

Jag brukar i regel anse att jag kan lita mera på mjukvara som är öppen så att fler kan läsa dess källkod för att se vad den egentligen gör. Jag brukar också i regel lita mera på decentralicerade mjukvaror, tex så litar jag mera på Jabber än på MSN, jag litar mera på Status.net än på Twitter.

När jag säger att jag litar på så pratar jag inte om driftsäkerhet, att det alltid är uppe. Utan mera om hur data hanteras. Ofta är stora centraliserade tjänster alltid uppe. Google är något som “alltid” fungerar, Google är decentraliserat. Men när jag pratar om decentralisering så pratar jag om att jag som användare ska kunna sätta upp min egna instans av programvaran i fråga.

Jag kör Jabberserver på en maskin, går den ner så kan inte jag logga in på min Jabber. Det gör att man inte blir beroende av en server för att driva nätverket. Nätverket lever utan central nod.

Men på andra sidan av havet av mjukvara så finns det den ofria mjukvaran, där tillverkaren av de diverse mjukvarorna ofta är ute efter att inskränka sina användares rättigheter genom att begränsa vad de kan och får göra med mjukvaran. Dels genom licensavtal och dels genom att inte ge ut källkod och obfuskera binärerna.

Det finns en mjukvara som heter Kaspersky, detta är ett så kallat “Antivirusprogram”(något som jag kritiserat tidigare). Kaspersky utges vara ett “Skydd som gör din datoranvändning säkrare”, och det är säkert jättebra för många att ha. Som Antivirusprogram så har den som uppgift att ta bort bland annat spionprogram.

Kaspersky har under veckan visat upp att de inte bara blockerar tillgång till olämpliga saker, utan även rapporterar till Kaspersky att något blockerats och vad. Jag har ingen möjlighet att själv gå in i Kaspersky och titta om rapporteringen går att stänga av, men det brukar inte vara möjligt. Jag ser nästan lite på Kaspersky som ett Spyware, med skillnaderna att det ena installerar man själv, medvetet och det andra tar sig in från Internet.

Hur kan jag lita på att Kaspersky inte gör andra dumheter också?

Apple har nu sökt patent på att censurera SMS med olämpligt innehåll, det ska gå att styra deras filter. Men hur kan jag lita på att det går att stänga av helt? Hur kan jag lita på att de enbart blockerar det som de säger att de ska blockera?

Så, hur kan jag lita på programvara jag betalat för? Det kan jag inte. Hur kan jag lita på freeware och stora tjänster som Skype och MSN. Det kan jag inte heller.

Det jag kan lita mest på är den fria mjukvaran, för då kan alla som vill läsa källkoden och se vad den egentligen gör, oavsett beskrivning. Och vem som helst kan laga säkerhetshål som kommer fram.

En första uppföljning av brevet till SVT

Idag, i förmiddags så fick jag det första svaret på mailet som skickades till SVT och kulturministern. Det var såklart inte SVT som svarade, utan någon som tog emot mailet åt kulturministern. ursprungliga mailet går att läsa i sin helhet här: http://elis.nu/index.php/2010/07/sa-var-det-roliga-slut/

Här kommer svaret som jag fick:

Hej Elis,

Tack för ditt brev till kulturminister Lena Adelsohn Liljeroth om SVTPlay. Jag arbetar med frågor om radio och tv i allmänhetens tjänst och har därför fått i uppdrag att svara på ditt brev.

SVT är ett självständigt aktiebolag vars verksamhet regering och riksdag styr endast på en övergripande nivå genom sändningstillstånd och anslagsvillkor. Enligt SVT:s anslagsvillkor ska företaget delta i den tekniska utvecklingen av produktions- och distributionsteknik för tv. För att nå tittarna är det nödvändigt att kärnverksamheten, dvs. att producera och sända tv-program till allmänheten, tillgängliggörs på olika plattformar. Utbudet ska utformas på ett sådant sätt att så många som möjligt kan tillgodogöra sig tjänsterna och programmen. SVT bör iaktta försiktighet när det gäller satsningar på oprövad teknik eller teknik som inte alla tittare har tillgång till.

SVT har inom dessa övergripande ramar en frihet att välja de tekniker för utsändningarna, t.ex. för SVTPlay, som är mest ändamålsenliga. Detaljerade frågor om SVT:s val av programvara bör därför ställas direkt till bolaget, vilket du ju också har gjort.

Med vänlig hälsning,

Martin Persson
Kulturdepartementet / Enheten för medier, film och idrott
Ministry of Culture / Division for media, film and sport
SE-103 33 Stockholm
Tel: +46 (0)8 405 57 67, +46 (0)70 200 95 60
martin [dot] persson [at] culture [dot] ministry [dot] se

För miljöns skull − skriv inte ut detta meddelande i onödan

Jag får mest en känsla av att han knappt har läst det ursprungliga brevet och analyserat innehållet, kanske kan man ha högra förhoppningar på SVT’s teknikpersonal? Jag har mina misstankar om denna person inte är tekniker direkt. Och jag tror att han missade poängen om tillgänglighet för att fler ska kunna ta del av SVTplay.

Jag frågar er som läser detta, vad ska jag svara på det? Ska jag svara något alls? Finns det något vettigt att svara. Eller bör man kanske ta och kontakta SVT för att få en uppföljning därifrån?