• The circle is complete - packaging web as a .exe

    At work got a request to package a website for offline use. This time the time was very pressing and needed to be done in a few hours. I decided to test out node-webkit and see how it worked. And it works just fine! We tweaked the website to save it’s info to a WebSQL-db and then packaged a Mac-app and a Windows-app which just works!

    It worked so good I decided to test how far I could take this. So I decided to build a VCR for the swedish public service. It’s a very simple proof of concept that runs in the packaged browser and uses ffmpeg to save a HLS-stream to the desktop. Since node-webkit uses nodejs you have all the npm-packages at hand, and there is very nifty little wrapper called fluent-ffmpeg that handles all the communication with ffmpeg. You can take a look at the code over on Github

    And will we’re at it, you can also checkout AppJS, TideSDK or Awesomium=)

  • The uninterrupted conversation

    To be able to have a conversation for more than five minutes is something that happens very seldom nowadays for me. Having two kids can have that effect. So to have the opportunity and privilege to have a conversation (or several) for two days straight is a luxury. And that is exactly what I have been doing for this past weekend.

    I love to talk to people, people with great knowledge in areas I don’t always fully grasp but none the less want to discuss. I’m an eager speaker but even more eager to learn from those knowing more. This is one the reasons I’ve been going to SSWC (Sweden Social Web Camp, an unconference on a remote island with 400+ web geeks) for the last few years. But even there where we as participants create the conference it’s hard to find time to actually talk to people, you know the kind of the talk where you iron everything out and elaborate until all is done. One of the reasons this is happening at SSWC is maybe because of it size, 400 people are a lot of people that generates wicked cool sessions, but at the end of the session the conversation ends and are seldom continued somewhere else, although you have the opportunity.

    So if you feel that your energy level is low and you need input from other people maybe you should gather a group of people that you know (or don’t know) and go to a remote island and just talk. As said, this is something I’ve been doing this past weekend and it was ..well.. just plain awesome. I can now meet the spring with more energy, a plethora of ideas and some new people to ask for advice when needed.

    If you wonder where to go I can without question recommend Arholma Nord, superb service and food, not too fancy-pansy and just ~2h away from the inner city of Stockholm.

  • #djangosthlm - talking Django hosting

    I’m sitting on yet another train from Stockholm back the good old industrial Västerås (or Bästerås as we call it (or Webbsterås;-)), me and my colleague Richard just attended the Django Stockholm meetup, hosted by Dynabyte. Awesome evening with awesome people, moar please=)

    The first talk of the meetup was Henrik talking AND live coding while using South, really impressive that he almost completely pulled it off! Big kudos to Henrik=)

    I myself did a small talk about all the different alternatives that exists for hosting a Django site in the year 2013. With a small intro to shared hosting we quickly moved on to DotCloud, Heroku, Gondor etc. We talked a bit about best practices and this best practices bit would maybe fit for a one day hackathon or something. To be able actually nail this.

    My slides are not much to see since I mainly use them to show of my mad graphical skillz (I mean, WHO doesn’t want a magical pony and rainbows in their presentation). If you want, go ahead and take a look, the interesting part starts at the end, with all the links to better blogposts about hosting than this ;-)

    Thanks again to Dynabyte and Frej Connolly for hosting events like this!

  • Barcampsthlm = awesome!

    I’m sitting on the train on from an unconference called Barcamp, hosted by Thoughtbot and located in Stockholm. So Barcampsthlm it is. I’m just trying to gather my mind and all the impressions from the day.

    The day for me started with a session with Rebecca Meritz about the psychology of computer programming. (from the book with the same name), a very interesting discussion based on some of the questions asked by the author at the end of each chapter. And to read questions from 1971 sets you in a different mindset of how programming would have been back then. Really good topic with lots of insights, would have loved to discussed this more with all you talented people.

    Other sessions that were really interesting were for example:

    • The talk by the Neo4J-guy (Jakob Hansson) about running a company with 20 people in eight countries and five time zones. Really nice soultions with a common Google Hangout (with all the mics muted) and using Skype to chat with one or two. The Google Hangout gave everyone possibility to just unmute and ask for help/something.
    • The open data session with examples from Ottawa were awesome. Really interesting examples (that I can’t remember right now).

    I also held a session, or two actually, one about reusing CommonJS modules in a HTML5 offline webapp, check out the source code! And a session about We Love Public Service, the API I have built on top of SVT Play.

    Really awesome to be able to go on a small one day unconference and have everything fixed, venue, food, drinks, etc etc. Thanks all the sponsors, like Spotify, Fyndiq, Omnicloud (and more).

  • Hur spar jag tv-program från SVT Play?

    (This is yet another post entirely in swedish, but it’s about saving HLS streams from swedish public service to file.)

    Hela We Love Public Service har sin början i att det inte är möjligt att titta på SVT Play när man inte har nätuppkoppling, streamings onda sida. Så här är en guide för att just DU ska kunna spara ner de tv-program från SVT Play du har laglig rätt till.

    1. Leta reda på avsnittet på SVT Play
    2. Installera lite saker
      1. Installera denna Chrome extension
      2. Installera FFMPEG
    3. Ta reda på HLS-strömmen
      Du kan tack vare det eminenta Pirateplay-projeketet göra detta väldigt enkelt, t ex för första avsnittet av Gengångare så ser det ut så här: http://pirateplay.se/api/get_streams.js?url=http://www.svtplay.se/video/1057993/del-1-av-8-camille
    4. Ta den översta strömmen som är i stil med “http://svtplay2g-f.akamaihd.net/i/se/open/20130203/1324842-002A/LES_REVENANTS-001A-32929f27e8eedb33_,900,320,420,620,1660,2760,.mp4.csmil/index_5_av.m3u8?null=&id=“
    5. Öppna en konsoll, kör följande kommando:

      ffmpeg -i “urlenFrånPiratePlay” -y test.mp4

      (Men se till att byta ut det där urlenFrånPiratePlay mot det du fick från Pirateplay 5. Nu ska ditt program börja laddas hem och sparas som test.mp4.

    Eller så tröttnar du på detta och laddar hem hela Pirateplayer och gör det lätt för dig=)

  • Det här med privatkopiering

    (Sorry all my non-swedish subscribers, this is just available in swedish since it involves the swedish public service system, politics, immaterial law etc, but google translate if you want to=)

    Som bekant så har jag byggt ett API till SVT Play och nu börjar app-utvecklandet ta fart, bl a så är en lagad Boxee box-app snart klar för publikt släpp, en app för Windows Phone 8 har kommit en bra bit väg och några till projekt som bara är i startgroparna. Fantastiskt roligt att se att mitt lilla hack bär frukt och att det utvecklas mot API:t!

    Men ingen gott som inte har något ont med sig. En av utvecklarna bakom en av apparna har varit i kontakt med SVT och frågat huruvida vi får använda de videoströmmar som SVT petar ur sig. Vi tar och börjar med deras mail och ser vart vi hamnar

    Hej igen.

    Hej hej=)

    Ville bara säga att om du hämtar info från SVT Play och gör en ny tjänst/app av det så gäller inte de rättigheter som SVT har anskaffat.

    Det är helt sant, det är SVT som tecknat avtalet, du och jag behöver inte bry oss om det.

    Våra rättigheter gäller för publicering på våra plattformar/tjänster/appar vilket medför att om du sammanställer en ny tjänst/app kan olika rättighetsinnehavare hävda att du publicerar deras material. Det spelar tyvärr ingen roll att videofilen ligger på SVTs servrar.

    Här skulle jag säga nej. Har man (du och jag) rätt att se på ett material så har vi även rätt att göra en kopia för eget bruk, det som brukar kallas för privatkopiering (se upphovsrättslagen 12§. Jag citerar:

    12 § Var och en får för privat bruk framställa ett eller några få exemplar av offentliggjorda verk.

    Den paragrafen är ganska självklar, du har rätt att ta en kopia på allt material SVT sänder ut, oavsett om det är via vanlig TV eller internet. Men vänta nu här! SVT har ju gömt sina strömmar nästan bakom lås och bom för att inte kreti och pleti ska komma åt dem! Helt sant, det har de. Men att komma åt strömmarna är inget olagligt, det är faktiskt högst laglig, jag citerar igen, nu från paragraf 52

    Det är förbjudet att utan samtycke från upphovsmannen [eller dennes rättsinnehavare [..] kringgå en digital eller analog spärr [..], exempelvis en kryptering, [..] som hindrar eller begränsar sådant tillgängliggörande.

    Hmm, det lät ju inte bra, vi forsätter med andra stycket i den paragrafen:

    Första stycket gäller inte när någon som lovligen har tillgång till ett exemplar av ett upphovsrättsligt skyddat verk, kringgår en teknisk åtgärd för att kunna se eller lyssna på verket. Lag (2005:359).

    Vilket är precis vad vi gör. Vi har rätt att se på materialet, och vi kringgår de eventuella spärrar för det. Svårare än så är det inte.

    — Men, men! SVT hävdar ju själva att de inte får publicera program i ett format som vi kan ladda hem!

    Det är helt sant, SVT får inte göra det, men du och jag har laglig rätt att spara det materialet via har rätt att se. SVTs avtal börjar och slutar vid SVT, du och jag har inget med det avtalet att göra. Enligt 52 § så är det faktiskt olagligt för SVT att hindra oss att komma åt materialet.

    — Men ni.. ni...

    Nej, inget men. Vill man hårdra det så kan man se våra appar falla under EUs direktiv om e-handel, jag citerar igen:

    För att komma tillrätta med den juridiska osäkerheten undantar direktivet mellanhänder från ansvar om de endast spelar en passiv roll genom att överföra information från tredje part. Direktivet begränsar även ansvaret för andra mellanhänder, såsom dem som lagrar information. Förvaltare av infrastruktur och Internetoperatörer kan således inte hållas ansvariga för den information som överförts, om de inte initierat överföringen och inte valt ut mottagaren eller den aktuella informationen.

    För den som undrar om resonemanget ovan är giltigt så säger jag i högsta grad ja, jag har konsulterat en lektor i immateriellrätt på Göteborgs universitet, som varit sakkunnig i TPB-rättegången bl a.

    Så, då har vi rett ut det, jag nämnde något om tumnaglar i början eller hur? Låt oss gräva i det när vi ändå är på gång. Så här säger SVT:

    Tyvärr få du inte använda stillbilden när du länkar då den är behäftad med upphovsrätt.

    Intressant, oklart om de faktiskt kan hävda upphovsrätt på en stillbild från ett program de själva inte äger. För detta programmet så är det faktiskt bara en stillbild, för detta verkar det faktiskt vara egen grafik.

    Vad är det vi gör som skulle kunna vara olagligt? Vi gör nästan en återpublicering av tumnaglarna när vi direklänkar in SVTs bilder i våra appar, men, det finns det andra som gör, t ex Google eller varför inte Best Of SVT som dessutom älskas av SVT

    Åsikter? Kommentarer? Synpunkter? För detta är bara början, för nästa och nästnästa steg av We Love Public Service kommer innebära att vem som helst kan ta en laglig kopia på sina favoritprogram från SVT Play.

    Stay tuned!

  • Styling a select box with CSS - revisited

    My earlier blogpost on styling a select box has gotten a lot of traction lately and this is an updated version of that. The previous example actually used an image, although I said it didn’t;-)

    This is the updated HTML, I just added one tiny element, a small price to get rid of an image.

    <div class="styled-select">
        <span class="arrow"></span>

    The new span is styled to an arrow and a separator with the following code (this is not the complete CSS, please visit the jsfiddle for that).

    .arrow {
        position: absolute;
        top: 6px;
        right: 6px;
        width: 0; 
        height: 0; 
        border-left: 6px solid transparent;
        border-right: 6px solid transparent;
        border-top: 10px solid #A0A1A4;
    .arrow:before {
        content: '';
        position: absolute;
        top: -15px;
        left: -12px;
        height: 19px;
        border-left: 1px solid #27292C;

    Take a swing at the new jsfiddle and see if you can come up with a neater solution! =)

Page 1 / 3 »