This is the blog, but if you want to know more about me and my projects, check out the Projects and About pages.

On St. Louis, Ferguson and Michael Brown

image

When starting an opinion piece its good practice to find a sliver of common ground to start from, so let’s try this:

People are fallible and have agendas. Not all people have the desire to push their agendas on to others, but some (many) do. When that subset of people are in positions of power, either real or perceived, they will then have more opportunity to inflect their agendas on to those that are in a lower power group. That act is wrong. So wrong that any time there are situations where there is even a possibility of this type of indiscretion, those situations should be looked at carefully, researched throughly enough to make a clear judgment, and acted on accordingly. Of course, any indiscretion is, by definition, wrong but there is and should be an extra cost for doing wrong on a less powerful group regardless if the power in question is earned or inherited.

Do we agree on that? I would think so.

I think we can also agree that the murky details around the Michael Brown shooting in St. Louis County are enough that they warranted a deep investigation no matter race or location. When you have one party claiming that someone was shot by a person sworn to protect the community, that’s enough for an investigation. When you learn that person was shot multiple times, that amplifies the investigation. When you learn that there’s a chance that person may have had their hands up in surrender, that amplifies the investigation even further.

Do we still agree?

…and when you find out that the police officer was white and the person gunned down was black, should that also amplify the investigation? Yes, it should.

I’m sure I lost a few of you right there.

Lets go back to our first agreement. People in power shouldn’t inflict harm on those in less powerful groups and if they do, or even if it only seems like they might have, we as society should take a hard look to find out and if true, make the punishment even more harsh. In this particular case we have two power groups in play: police officer vs citizen and white vs black. Crude terms to be sure, but that’s the situation. I think we all agree that the police are in a higher power structure than any average citizen (maybe I should have started there) and yes, particularly in St. Louis, the average white citizen is in a higher power group than the average black citizen. Not because one is better than the other. The power in this case wasn’t earned. It is simply a (too) slowly fading relic of the past that is still held up by facts such as the average black St. Louis area citizen is more poor than the average St. Louis area white citizen. The clear high-level facts give a decided power advantage to the shooter. With those truths and our previous agreement in mind, why wouldn’t we want to give this particular shooting a closer look, talk about it more, and have it featured on the news more prominently that it may have been otherwise?

A common refrain is something along the lines of “If the opposite situation happened, this wouldn’t be getting so much attention!” to which they mean if a black police officer shot a white citizen this wouldn’t be getting as much attention and I agree to an extent. The nature of the shooting, as detailed above, is still just a horrible and curious regardless of race as there is still a level of abuse of power, but only one, and thus, less attention would be garnered…but that situation isn’t really the opposite is it? You can’t cherry pick what is opposite and what wouldn’t be and the true opposite of this situation also means you have to flip the related power groups as well. The actual opposite would be a black officer shooting and white citizen in a location where the average white person is less well off. In that case, the true opposite, I think the outrage would be, and should be, exactly the same.

Our early agreement on powerful groups doesn’t have to stop here. As soon as the resulting protest started gathering more and more steam, that group gained in relative power and soon the folks in that group with agendas used that power to loot, assault and terrorize the people of Ferguson. Later on as police presence grew to contain the burgeoning riot, the power flipped back to the police and we now see some of them terrorizing people with excessive force. It never ends. Even as the area rebuilds, it will still be happening in St. Louis and all over the world. It will always be a hallmark of human nature, but that doesn’t mean we shouldn’t talk about it, pretend that all groups are equal in society and that no one ever exploits those differences in power. We should always be looking out for the chance that someone could be taking advantage of the situation. No, this isn’t a battle that can be won, but you can certainly lose, and the quickest way to do that is to look the other way. St. Louis has been looking the other way for a long time, ignoring the nagging pain, and now, after one quick moment the pain has exploded and paralyzed the area.

By ignoring the issues St. Louis lost, but the fight isn’t over. The opportunity is there to both learn from these horrible events and start dealing with the issues directly, or to simply clean up just enough so you can go back to ignoring it. I hope St. Louis makes the right choice.

Sentence Saver for Beats Music

image

Ever since I made my little Clojure wrapper for the Beats Music API, I was on the lookout for a companion project where I actually use the library the make an app. I know, a totally 100% novel idea.

I just deployed a little web app I’m calling the Sentence Saver for Beats Music, and it solves the problem of being able to enjoy the Beats Music “The Sentence” feature (basically their radio feature) while offline by giving you the ability to request a sentence and then having those tracks made in to a playlist. That playlist can then be optionally saved to our local device and then go ahead and board that plane…or enter that military missile silo…or go to your grandma’s farm…or other places that don’t have or allow internet access…also, probably Denny’s.

Update: I also threw in a little feature that I’m still amazed Beats doesn’t have in their app (Update x2: They do have that feature, but they stashed it under the playlist filter menu.)…the ability to delete playlists! Flip to the Playlists section of the app to see all of your playlists and delete any of them you want.

The app is a self-contained Clojure app with the API and HTML served from the same jar file. Not something I usually do, but I wanted to try for this project. The UI is done with Bootstrap, the UX with ReactJS, http-kit and compojure for the web server, and of course I’m using beats-clj for the API interface. It’s all pretty simple and it’s open sourced on GitHub. The app is also 100% mobile ready and functions wonderfully as a standalone web app on iOS (using the save to home screen feature).

Please shoot any bugs or requests to @thatmikeflynn.

Enjoy!

Beats Music Likes My Clojure Library

image

I’ll do a full post on the library some time soon. In the meantime, check it out: http://mikeflynn.github.io/beats-clj/

A Follow Up on the STLToday Paywall Story

image

Yesterday’s post about how to bypass the weak STLToday.com paywall has gained a fair bit of traction over the last 24 hours. Here’s the story on the Riverfront Times (the alt newspaper in St. Louis).

Before this gets further out of hand I wanted to address a few points that I didn’t hit in my original blog post and weren’t in the RFT article:

  1. To call this “hacking” is…well…it’s not. It’s just a user script that manipulates the web page you downloaded from STLToday.com. I never touched anything on the STLToday.com servers. It’s no different than other scripts that change the look and feel of Reddit or that tweak the interface of GMail.

  2. As I detailed in the previous post, their method of implementing this paywall, running code on the client machine to check and redirect, is a very very thin barrier in front of this content. It’s as if they sent you a book in the mail and stapled the last few pages together. They know this.

  3. It seems quite clear that this was a trial as not much of their content is behind the paywall and they implemented it with the easiest possible client-side solution. My sincere hope is that they take this result result at face value and see how many people are using it to assess what they can or should do going farther based on the data. I’ve already supplied a few solutions and I’d be more than willing to help them more if that’s something they are interested in.

STLToday's Paywall is Weak

image

I’m originally from St. Louis, and in fact spent my last few years in St. Louis working with and taking on the media in one form or another. I’ve since moved on and no longer concern myself with the day to day craziness of St. Louis’ bizarre media scene…but I do like to check up on the sports.

STLToday is the website of St. Louis’ prominent newspaper, The St. Louis Post Dispatch and it’s always been kind of a mess. Horrible designs, way too big pictures that take too long to load, crazy ads all over the place, etc…basically the standard crazy failing “old media” company stuff. Today they added: “Paywall” to that list. There’s countless articles about why paywalls don’t work and they are at best a way to delay death rather than anything close to a solution, but frankly I just wanted to read the excellent sports coverage supported by ads! Luckily it only took about 5 minutes to bypass the paywall.

When you load a STLToday.com article blocked by the paywall you’ll notice that the content is shown for a few seconds and then it will redirect you to the pay screen. Interesting. At first I thought this might have been something along the lines of a enticement plan so you can see what you’re going to miss if you don’t pay up…but knowing the history of this particular website it made more sense that this was some drop-in paywall script that is loaded after the article and redirects once it reads your cookies and the content and determines you haven’t paid. I took a quick look at the page source and found a meta tag named ”__sync_contentCategory” it was set to “premium” on the article I wanted to read, but set to “free” on the article explaining their new paywall. Luckily their site is still slow as hell with all the ads and stuff they are loading, so if I just manage to change that meta tag to “free” on every article I read before their redirect script (probably loading on DOM ready) fires, will that short circuit the whole system?

Yup.

Here’s the script (in the form of a user script that can be added to Chrome or Firefox): https://gist.github.com/mikeflynn/11379028

So what could STLToday do to make this a lot more secure?

  1. Well they could not use javascript for one and simply have the backend read the user's information and the content type, but I suspect that their CMS isn't setup to do this and it's probably something they licensed so they can't make any changes to it, which explains the drop-in solution.
  2. They could also make their site faster (a good idea anyway) but one could still figure out a way to inject my script before their's runs.
  3. They could not rely on a meta tag for content tagging and instead ping back to the server to request the content type (premium vs free). This could still be bypassed by spoofing the server's response to your browser, but it would be a lot harder to write a script like the one I did earlier. This is probably a good enough solution, but if they still can't figure out how to write a server-side response on their CMS it can't happen.
  4. They could just not care. I very much doubt that they will see a lot of "digital subscriptions" and those that would be interested probably aren't the type to know what a User Script is or follow me on Twitter.
mikeflynn @ GitHub thatmikeflynn @ Twitter