Loisaida Sam

Oct 162015

After looking around a bit, here’s my list of Friday picks:


Happy CMJ people!

Oct 162015

Wow, I just came across this draft from one year ago that I never published. Welp, it’s CMJ season again, so without further ado, here it is, my show summary from last year:

Tuesday Night:

Cameo Gallery

  • Oh My Rockness Showcase
  • PINS, September Girls, Mannequin Pussy, Vasudeva, Amanda X


Wednesday Night:


  • NME & Hate Hate Hate Records
  • The Wytches
  • Happyness
  • Twin Peaks
  • Public Access TV
  • Bo Ningen
  • Fat White Family


Thursday Night:


Friday Night:

Rough Trade – Aquarium Drunkard – No Jackets Required

Knitting Factory

  • Kate Boy



Baby’s All Right – Brooklyn Vegan Showcase – SATURDAY, Oct 25 @ NOON @ Baby’s — FREE (RSVP)!

  • 12:00 Residual Kid
  • 12:45 Bully
  • 1:30 Flowers
  • 2:15 Girlpool
  • 3:00 Bo Ningen
  • 3:45 Beverly
  • 4:30 White Fence
  • 5:15 Fat White Family
  • 6:15 Titus Andronicus


My darlings of CMJ 2014 were certainly Twin Peaks, Beverly, PINS, SAFIA, and Titus Andronicus. Also, RIP Glasslands!

May 102015

For a recent project, I had to create a game-style controller Android app that senses the phone’s tilt and uses it as an input.

http://i.stack.imgur.com/ylWJb.png (image via SO)

To simplify the explanation, imagine a jet thruster game where the farther you tilt the phone back, the stronger the jet thrusters fire:

  • When the phone sits upright, the thrusters don’t fire at all
  • When the phone is tilted all the way back, the thrusters fire at full force

Going into it, I knew I would need to use Sensors, specifically something about the Accelerometer. Digging in a bit more, no amount of Googling/Stack searching provided me with exactly what I was looking for, so I figured I’d write it up here…

Initial search results:


My fully open-sourced solution lives here: https://github.com/loisaidasam/tilt

Specifically, check out MainActivity.java:

A few notes:

Jan 202015

Yeah yeah, I know everyone usually does their AOTY writeups in November/December, but I always end up dragging my feet. I don’t even think I even came up with final lists for 2013 (or even 2012 for that matter), but I finally ended up getting it together for 2014, and without further ado, here’s my tops, with a few words about each pick…



Maybe one of the most depressing records of all time (someone literally dies in every song), and yet really powerful storytelling with vivid imagery.

The album I likely spent the most time with this year. Just a great rock record through and through.

Another one I spent a ton of time with this year. Something about this one really hooks me.

Killer record, and finally a breakthrough for these guys! Plus that Letterman performance, you kidding me?!

She’s great. After digging into this one I even listened to her previous one a bunch. Plus somehow “Forgiven/Forgotten” became my airplane takeoff song (somehow that’s a thing, I guess?).


Maybe the fullest record she’s done yet, my favorite songs she’s made are some of the best songs of the year, for sure.

My darlings of CMJ, probably the funnest record for me this year. And funnest shows. Do these guys know how to party or what?!

A nice nostalgia record, lots of heavy play time on the early side of 2014. The last song on Days left me off at the end of summer (in 2011) and Atlas picks up after a loooong winter to try and reintroduce spring.

I remember the first time I heard “Coffee”, I was listening to Sirius XMU and returning a rental car in Hoboken – blew me away. The rest of the album absolutely holds up as well.

Solid record full of great songs. Absolutely rocked Bowery Ballroom with an emotional performance when we saw them at the Hifi team outing in early December. And of course I was sure to get a big sweaty hug from Timothy Showalter after the show.

Honorable Mention:

  • The Men – Tomorrow’s Hits
  • Caribou – Our Love
  • Wye Oak – Shriek
  • Parquet Courts – Content Nausea
  • Eagulls – Eagulls
  • Hospitality – Trouble
  • D’Angelo – Black Messiah
  • Spoon – They Want My Soul
  • St. Vincent – St. Vincent
  • Karen O – Crush Songs
  • S. Carey – Range of Light
  • Julian Casablancas+The Voidz – Tyranny
  • Beck – Morning Phase

Top EPs:

  • Speedy Ortiz – Real Hair
  • Panda Bear – Mr Noah
Jan 132015


So my wife and I were riding the train this morning, and having finished the crossword puzzle, we gave the KenKen a shot. It definitely provided some fun, but more so it got me thinking about combinations and permutations…

Eventually I started wondering how many total permutations there are of the 6 by 6 grid of numbers, and how many of those constitute valid KenKen boards (each row and each column must have all of the numbers between 1-6).

I ended up writing this script to brute force it:


But it seems like there are more combinations than I’d guessed! …

$ ./kenken.py 1
Number of unique combinations for cardinality 1: 1
Good: 1
Bad: 0

$ ./kenken.py 2
Number of unique combinations for cardinality 2: 6
Good: 2
Bad: 4
$ ./kenken.py 3
Number of unique combinations for cardinality 3: 1680
Good: 12
Bad: 1668

I’m running it with cardinality of 4 now (4×4 grid of numbers between 1-4) and it’s checking board 3 billion something…

Next steps would be trying to think of a clever way to find out the number of valid combinations for a 6×6 grid. Either we can continue with a programatic approach, either by using multiprocessing or just throwing random combinations at it, or both…

OR we could probably divert to math. A quick Google search gave me this link that seems to explain it pretty well:


I guess the answer is 6! * 5! * 4! * 3! * 2! * 1!, or 24883200 (right? someone wanna double check me here?).

Long story short, it looks like there’s no shortage of viable KenKen boards!

Thanks Cornell Department of Mathematics…

Jan 132015

Big fan of Retrofit, but have a staging server that has an invalid SSL cert?

Fear not! Just use the AllCertsValidClient!


Example usage:

Gson gson = new GsonBuilder()
AllCertsValidClient client = new AllCertsValidClient();
RestAdapter restAdapter = new RestAdapter.Builder()
    .setConverter(new GsonConverter(gson))
service = restAdapter.create(MyApiService.class);

Have fun, and be safe! (don’t use this thing in production environments!)

Dec 022014

This post serves as an update to my previous post Streaming Audio Wirelessly.

As suggested by my buddy Razr, I was indeed able to connect my Airport Express to my new apartment’s wireless network and enable AirPlay!





Thanks Razr!

Now playing (over the speakers via Airport Express + AirFoil, yay!), Sharon Van Etten – Spotify Sessions – perfect rainy Tuesday morning music

Nov 202014

So you use Spotify and want a list of all of your playlists so you can come up with your #AOTY (album of the year). I’m sure there are other ways of doing this, but my rudimentary google searches produced no results, so here goes…


  • Spotify account
  • python
  • internets

First, sign up as a Spotify developer and create an application, here:


Once you’ve created an application, make note of the Client ID and Client Secret, and add a new Redirect URIs to some working website.

Make sure to hit SAVE! If you don’t, this won’t work!!!

Now onto the code part…

First we need to put our Client ID Client Secret and Redirect URI into environment variables to be read later:

$ export SPOTIPY_CLIENT_ID='your-client-id-here'
$ export SPOTIPY_CLIENT_SECRET='your-client-secret-here'
$ export SPOTIPY_REDIRECT_URI='http://samsandberg.com'

Now we need an access token – here’s Spotify’s full formal auth guide:


but for this exercise we’ll be using Spotipy (docs)

Install spotipy:

$ pip install spotipy

Next we need to determine our scope. Here’s a list of the available scopes:


For this exercise, we’ll be using playlist-read-private.

Now let’s use this to get our scope. My username is loisaidasam, so that’s the username you’ll see me use throughout this post:

>>> import spotipy.util as util
>>> util.prompt_for_user_token('loisaidasam', scope='user-library-read')

This should open a browser window and trigger you to authenticate against your newly made application. When you say yes, it’ll redirect you to your redirect uri, which you copy and paste back here:

Enter the URL you were redirected to: 

The next string it gives you is your token. Copy and paste that into a variable called token

Now, for getting your playlists…

Here’s the Spotify documentation describing how to read a user’s playlists:


but for this exercise we’ll be using Spotipy’s user_playlists() method:

We have to use limit/offset to get all of the results, so try this code:

>>> import spotipy
>>> s = spotipy.Spotify(token)
>>> offset = 0
>>> while True:
>>>     playlists = s.user_playlists('loisaidasam', offset=offset, limit=50)
>>>     if not playlists['items']:
>>>         break
>>>     for item in playlists['items']:
>>>         print item['name']
>>>     offset += len(playlists['items'])

Running this should print out all of your playlist names one by one.


Nov 072014

Backstory: we moved into a new apartment a few weeks ago, and being that we no longer live in Manhattan, we actually have an apartment big enough that my stereo system doesn’t have to sit right next to my TV. What this boils down to is that the wall where our TV/cable/internet hookup lives is on a different side of the room than my stereo/turntable setup.

The Problem: I’m no longer able to use my Airport Express to wirelessly stream music over my stereo (which I previously did with the assistance of AirFoil), and I’m looking for an alternate solution.

In short, I need something that plugs into an AUX port of my stereo that also hooks up to my home wifi network that will allow me to stream music from sources such as Spotify, iTunes, Youtube, etc. If it has a power jack and can plug into the wall to power itself, that’s great too.

What I’ve Found: There are a variety of offerings that seem to be in this space.

Here’s some of what I’ve found:

  • Airport – from $99 for Airport Express, what I currently have, but the router is not near the Airport, so this won’t work
  • Sonos Connect – $349 / Connect:Amp – $499 – similar to Airport Express, but ridiculously expensive
  • Apple TV – $99 / Google Chromecast – $35 – these are interesting, but are for streaming things to your TV – I want to stream things to my stereo
  • gramofon – $49 – seems to only work for Spotify and WahWah(?) :\
  • Blueflame Wireless Music Receiver – $29.99 – doesn’t seem to be out yet according to their website, although Target has some pretty shitty reviews
  • Beep – $? – seems to be limited to Pandora + local music
  • Rocki – $49 – limited to Soundcloud/LastFM

That’s what I can find so far – does anyone have any other suggestions/ideas?

At this point I’m thinking I should just buy a REALLY long ethernet cable and wire it carefully along the doorframes so I can continue to use my Airport Express…

Nov 032014


Recently I bought a three-pack of these cool Nike Dri-FIT Crew Socks and I guess they mold them specifically for your left and right foot?

In getting ready for work this morning, I grabbed a pair of these bad boys, and I noticed that more often than not, the laundry place where I get my laundry done seems to pair them correctly (meaning that each “L” sock is paired with a corresponding “R” sock). I was wondering if they’re just hyper-considerate laundry folders over there, or if maybe it was just a coincidence.

Not recalling my statistics, I wrote a brute-force script to figure out what percentage of the time they would be bundled “correctly” when bundled at random:


And I found the answer to be an astonishing 40%!

$ python socks.py 3 -n 100000
3 pairs of socks
100000 iterations
{False: 60011, True: 39989}
Good 39.99% of the time 

I don’t know about you, but I find that percentage to be super high! We’re saying that when choosing socks in random order, that almost half of the time they’ll end up being bundled “correctly” with three bundles of properly matched “R” and “L” socks!

Update: I finished getting ready and hopped on my bike, and as I was commuting into work I started thinking about my results, specifically wondering if I could come up with a statistical explanation, and I think I figured it out.

Steps and corresponding probabilities:

  1. Choose one sock at random (cool 100% of the time, hard to mess this one up)
  2. Choose a sock that matches (cool 60% of the time – of the 5 remaining socks, 3 should be the correct match, and 2 the wrong one)
  3. Choose another remaining sock at random (cool 100% of the time)
  4. Choose a sock that matches this sock (cool 66.666…% of the time – of the remaining 3 socks, 2 are the correct match and 1 is wrong)
  5. The last two socks will always match each other (100%)

Now using statistics, you multiply the probabilities of these events happening (right?):

1.00 * 0.60 * 1.00 * 66.666 * 1.00

or in fractions

3/5 * 2/3





Yay, math!