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

A Project Site Reboot

I’ve decided it’s time to reboot my personal page and you’re looking at the result of that. Over the last year I’ve done a ton of personal projects (I’ve also done some great work with my team professionally, here’s the blog for that: I figured it was time to have a site that listed the projects I’m most proud of and give me a place to blog occasionally about various technical issues.

Check out my list of projects on the Projects page and reach out if you have a cool project to work on or just want to chat.

On St. Louis, Ferguson and Michael Brown


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


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.


Beats Music Likes My Clojure Library


I’ll do a full post on the library some time soon. In the meantime, check it out:

A Follow Up on the STLToday Paywall Story


Yesterday’s post about how to bypass the weak 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 I never touched anything on the 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.

mikeflynn @ GitHub thatmikeflynn @ Twitter