Gör en Spotifyplaylist från vilken sida som helst på hela Internet

En kanske gillar en del program på Sveriges Radio och en del musikbloggar. Dessa har massor med fina låtar listade, en och en, på sina websidor. Fantastiska playlists, förutom att de inte är just playlists utan bara låtlänkar. En vill inte sitta och klicka play låt efter låt utan ha detta i playlists istället.

Märkligt att det fortfarande saknades en enkel tjänst för detta. Så jag gjorde en snabb liten sajt som hjälper iallafall mig i min vardag. Använd om den passar ditt liv också.

Alla låtarnas interna Spotifylänkar presenteras, rakt upp och ner, i ett litet textfält. En illa dokumenterad feature i Spotifys desktopapp är att dessa kan pejstas rakt in i en playlist. Sjukt ju.

Inte så märkvärdigt, men känns bra att ha täppt igen det här glappet på Internet.
https://earthpeople.club/~peder/url2spotify/

Pinga-mig-när-jag-missat-botten

Vi jobbar ju i en del projekt där faktiskt nedlagda timmar ska faktureras. Men det är ju så roligt att jobba och så himla svårt att komma ihåg att tidrapportera, även om man som vi gör det direkt i Slack.

Men samtidigt dumt att bjuda på timmar som glöms. Så jag hackade ihop en liten slackbot som hämtade ut alla dagens commits ur vårt byggsystem Buddy och jämför det med dagens inrapporterade timmar. Det är lite trubbigt (än så länge) men boten känner iallafall igen ifall någon varit inne och programmerat i nåt projekt och glömt rapportera det.

Alltid nåt.

/Peder

Jenny Wilson – EXORCISM release fest

Alltså oklart varför, vi är ju ingen eventbyrå. Men i mars ordnade vi ändå en skofri releasefest i dansens tecken, för Jenny Wilsons nya skiva Excorsism. För att:
1) det är så sjukt kul att ordna fester.
2) så himla fint att sammanföra massa bra folk från vårt nätverk som kan bidra med sina specialiteter.

 

(Video: Ola Lewitschnik / Gabriel Leigh)

Jenny har tidigare spelat på Webbklubben, och vi har tidigiare gjort nån slags “interaktiv upplevelse” för hennes singel/video: http://www.rapin.run

Bonusmaterial: “TV-kanalen” med tematiska giffar som Katarina kodade ihop och projicerade under festen (OBS: Enorm laddtid pga preload):
https://earthpeople.club/~katta/gif/

/Peder

Klubben Webbklubben

Jag kom på nu att vi ju kört rätt fina afterworks hos oss i gamla stan, i flera år, och glömt berätta om dessa. Om du känner oss sedan tidigare kanske du varit här, annars är du välkommen i framtiden. I sin enkelhet bjuder vi på öl och bokar en artist vi lyssnat på. Det är alltid astrevligt, och en rätt härlig mix av webbtroll, goda bekanta, snälla grannar och löst folk från gatan.

@josefin_ohrn äger på @earthpe0ple #webbklubben

A post shared by Alex Picha (@alexpicha) on

Mer bilder från alla webbklubbar på Instagram.

Artister som spelat senaste åren:

  • ShitKid
  • Joy
  • Neybuu (US)
  • Nadia Tehran
  • Josefin Öhrn + The Liberation
  • Scuplture (UK)
  • Jenny Wilson
  • TM404
  • Natten
  • Molly Nilsson (DE)
  • Varg
  • Rickard Skizz Bizzi

Den 24:e maj är det dags igen. Då spelar det helt färska bandet FLORA något som, om man får tro första singeln, låter som en perfekt kombination av Yung Lean och Autechre.

Det blir nog stämning. Kom då!

/Peder

All tystnad från Sveriges Radio P2

För en tid sedan tog jag tjuren vid hornen och byggde ett site som samlar all tystnad från P2. Om du, som jag, lyssnar en del på denna radiokanal kanske ni också tänkt på att de tillåter mycket mer tystnad än andra kanaler. Det är konstpauser, utklingande stråkkonserter och på det hela taget en mycket större dynamik än man som kommersiell radiolyssnare är van vid. Det finns en rofylldhet i denna dynamik, och tystnaden i synnerhet. Självklart vill man lyssna på BARA den.

För att kunna samla all tystnad från P2 behövdes bara ett par rader ffmpeg wrappad i diverse fulphp. Och en enkel site som kunde spela upp allt tillsammans.

All kod här och själva siten här.

/Peder

Stupid matkasse

Trenden med färdiga matkassar är ett hot mot vår nyfikenhet och kreativitet i köket. Alla lagar samma mat. Snart har hela svenska hemkökets utveckling stagnerat helt.

Exakt det tänkte jag inte, när jag bestämde mig för att göra mitt (prisvinnande!) hack på årets Stupid Hackathon. Jag tänkte nog bara att det kanske kunde bli lite roligt. I verkligheten visade det sig bli hysteriskt roligt. Om det berodde på trötthet eller att vissa grejer blir roligare när många skrattar samtidigt vet jag inte.

Recepten hittar du här: https://stupid-matkasse.firebaseapp.com/

/Hjalle

Kryptosemla – ät en semla in the blockchain

Semlans värde har gått uppåt över tid.

Efter semmelwrap och nachosemla kommer nu Kryptosemlan! Du kan äntligen äta en semla in the blockchain. Mining av krytposemlan sker genom att vispa fram och tillbaka på skärmen, och mjölksyran i armen blir alltså ditt proof of work.

Du kan äta en kryptosemla, eller ge bort den till någon annan. I bakgrunden ligger en blockchain där de transaktioner som sker hashas. Vid mining får du en belöning på 1 semla, men på fettisdagen var belöningen 3 kryptosemlor.

När Bitcoin minas tar man fram en hash på föregående innehåll och en giltig hash är en som börjar med ett antal nollor, tex

00000000000000000019296c5484b73953932977e976815dd6bc6cbd24d2d686

För en kryptosemla krävs det en hash som börjar med ce (som i semla) – tex

ceb93efb8b5a7dc7fe1b7ec663e37644f587200b22bacbc19ce02040fdaf00f7

Det krävs alltså betydligt mycket mindre processor-kraft att hitta en giltig hash för kryptosemla än för bitcoin, men däremot mer vispkraft. Varje visptag räknar fram en möjlig hash-lösning och när du vispat fram en giltig hash så görs ett anrop till servern som ser om hann före andra minare, varpå du får belöningen…!

Eftersom kryptosemlans värde i början ännu var ovisst så dök det upp minare som försökte gå runt systemet för att få semlor, tex. genom att använda datakraft istället för gräddvispande. Det gjordes även allvarliga ddos-attacker för att skada hela semmelekonomin. Istället för att äta semlor gav förövarna hundratusentals semlor till sig själva. Semlor cirkulerade på sätt som den gräddbaserade blockchain-tekniken inte var mogen för, och siten fick stänga ned på askonsdagen.

Detta är ett projekt från Stupid Hackathon feb 2018. En kryptosemla är nu värd cirka $11.

/ Fredrik

vabruari.sucks

Alla småbarnsföräldrar vet hur vidrig februari är. Förskolorna svämmar över av bakterier och antalet kompletta arbetsdagar går räkna på en hand. På förskolornas ytterdörrar sitter alltid lappar med information om vilka sjukdomar som går för tillfället.

Till årets Stupid Hackathon valde vi att tolka den känslan genom att göra en förskolelappsgenerator – www.vabruari.sucks. Den hämtar in sjukdomar från diverse källor; Vårdguiden, Wikipedia och andra sajter samt skapar en fotorealistisk bild ifrån en av Stockholms förskolor. Förskolenamnen hämtas från Stockholm.se.

Och ja – ibland går det över gränsen. Att datan dynamiskt hämtas in gör att det är svårt att svartlista direkt opassande sjukdomar.

/Peder & Andreas

Stupid Hackathon – again

Last february ~70 people got together and built some very weird stuff; a chatroulette clone for castanets, captchas to keep out cats, big data butt probes, tinder for woodpeckers and gah, so much more.

Personally, my fondest memory was the inclusive and jolly feeling. It truly felt like these 70 attendees are the great minds of our generation – who finally didn’t need to use their cognitive super powers to do work-stuff.

On February 10th 2018 we’re doing it all over again. Please attend.

/Peder and the rest of the bunch at Earth People

Motion tracking for DOOH

Earth People was approached by Forsman & Bodenfors to make a Digital Out Of Home (DOOH) screen come to life. The objective of the campaign was to showcase the client’s eye makeup products. The eyes were shot in 4k and our task was to make these eyes “look” at any motion in front of the screen.

Kinect to the rescue! Or?

We quickly agreed that Kinect would be the most suitable choice regarding tracking since Kinect 2 provide API’s for body tracking. After much trial and error we realized that the Kinect had too many cons versus pros in our case.

First of all; the hardware. In order to get any decent performance out the Kinect we needed a computer powerful enough to calculate the incoming data. This meant that our hardware footprint would be huge. Much too big for our tiny available space within the outdoors screen.

Secondly; speed. Kinect is meant to be enjoyed at home with a small group of people. There is time to move around the room to place you in such a position that the Kinect would recognize you and start calculating/tracking your body movement. We don’t have that kind of time when people are just passing by.

I’ve done several projects in the past using tracking and I knew that it would be possible to get good enough result using a plain old webcam. We don’t need 4K video or pin-point accuracy in this case.  We just need to know where people are, if there are any at all, in front of the screen.

Processing image data

Our solution for tracking comes in ~4 steps which are, by themselves, quite straight forward.

1. Get the raw webcam feed

This is a walk in the park easy. In our case we use processing and retrieve the webcam data using the standard Capture library.

2. What has changed?

Storing the previous frame from the webcam we can calculate the difference between the pixels of the current frame and the previous. This gives us a rough idea of what is going on in front of the camera. Doing this using bitwise operations gives us more processing power for our next computation.

3. Normalize the result

The data we get from the difference calculation is very noisy and blurred. This is due to the motion. In order to proceed we need to sanitize the output, removing “dust” and tiny pixel-changes. The small changes is probably not a person walking by anyway. The “clean” data from our normalization (or threshold) process is a great start but produce high level of motion all over the place. In this example, my t-shirt is moving a lot but we don’t necessarily want to track that.

4. Predictions

We know that high concentration of motion should be clustered together. My hand moving is producing much greater change than my t-shirt. By looking at each individual white pixel in our normalized output we can connect that pixel with the white pixels immediately surrounding it. Doing this recursively and by registering a new cluster of pixels when we no longer find any white pixels next to the cluster, we get a long list of isolated clusters we call “islands”.

The amount of data to process is still enormous. We need to boil this down, quickly. Here’s what we did; each cluster that is less than roughly 200 pixels is discarded immediately. In this example, we reduced the amount of islands from well above 150 down to about 5. This is still too much data for us to estimate where the motion is coming from. A last attempt to reduce the number of islands is brute-forced, merging any island covering another island measured by their bounding box (highlighted in green).

The largest island contain the most motion. This is what we are interested in.

5. What should the eyes look at?

This is not really tracking related but in order to get a single point of interest for our 15 eyes to look at we need to be more specific than “this island looks good enough”. Each time we receive a new island to focus on, we place a vector in the center of that island. This is our target. Our current focus vector is then moving closer to that target each frame, using a decay value so that we never actually reach the final target position.

What more can we do with this data?

Since we know how many pixels are changed between each frame, we can set a threshold of how many pixels that needs to contain motion before we proceed. If we never reach that threshold we may consider the current image as empty. No motion = no people = no need to process the image further.

There are many more things going on behind the scene but this should give a glimpse of what we ended up with and why.