April 10 2011 Update: The bookmarklet now works with Complex’s JSON galleries as well. Some of the Complex slideshows previously didn’t work, now all should. If you don’t see that functionality working your browser may have cached the old version of the script. In testing I saw this caching behavior in Google Chrome.

I decided to do some good for the world today. It’s been bugging me that Complex.com runs so many articles that require n clicks to get through where n ranges from 10 to infinity.

Like this week’s listicle showing the 50 Biggest NY Mets Fails, this is a fine topic but not one that could possibly warrant 50 clicks.

So today I created a bookmarklet which fetches all the slides of the Complex slideshow you’re visiting and loads them up on that one page.

To use it, just drag the link at the end of this article to your Bookmarks bar and when you’re at Complex looking at a slideshow article, click the button for it and the magic happens. AJAX calls are made to the slideshow’s pages and the appropriate chunks of content are added in one by one.

This is brand new so if you see any functionality issues just let me know. From limited testing, this bookmarklet works for the majority of the new slideshows there but not all – some are coded differently. If it’s worth pursuing, I may release future versions to be more thorough.

Bookmarklet (drag to your bookmarks bar): A Life Less Complex

{ Comments on this entry are closed }

No Justice – Just fuss

by rafi on July 9, 2010

Video via Walasia

The Oscar Grant verdict comes in as guilty on the charge of involuntary manslaughter. BART police officer Mehserle killed 22 year old Grant while he was unarmed and subdued on a train platform, and would claim it was an accident – that he mistook his gun for his taser. Leaving the obvious question of why Grant needed to be tased while cuffed.

Mehserle was exonerated of 2nd degree murder and voluntary manslaughter charges but some took solace in the fact that there was a conviction at all – even if it seemed to be on a compromised charge. It’s almost certain that no such conviction would have occurred had the world not watched the death happen thanks to cell-phone video.

And so we have yet another young black male wrongfully killed by the police – dead with no one accountable. By the latest news, Mehserle seems to be having a hard time living with himself and understandably so. Still some fairness in the applying of the Law is long overdue. There is no sign of any real progress in the systemic violence, abuse and over-incarceration of young black and brown men.

On Twitter I saw Combat Jack talking about how bloggers need to be on about this. Dart Adams saying it is our responsibility to fill in for the negligence of the media. Sure but we’re more or less on the same page right. We are the choir. We can all complain to each other forever and not see any real change. What actions will improve things?

Related links:

Oscar Grant, a Victim of American Fear by Adam Serwer

The Wrong Verdict at ZunguZungu

I am Sean Bell – short doc by Stacey Muhammad

Combat Jack, Walasia, Davey D, Dart Adams, Jeff Chang, Swag Donors, Adam Serwer

SF Police – Stop Shooting
Hip-Hop doesn’t care about black people
A civilian gets a policeman’s funeral

Play us off KRS cat!

{ Comments on this entry are closed }

Have you ever learned that two friends of yours have hooked up? It can be cool or super awkward.

Tonight we will witness the coupling of two of our friends when funding platform Kickstarter showcases some of their successful projects (but not Stadium Status) at Rooftop Films.

The lineup looks great so you should come on through as well if you’re in NY. I’m most excited about this chess team one, Putty Hill and the Atlantic Yards story – Battle of Brooklyn. A few of these are feature length so I guess they will be showing excerpts.

Hope to see some of you there.

{ Comments on this entry are closed }

Stadium Status

by rafi on June 7, 2010

Stadium Status is our latest (and possibly greatest) video:

{ Comments on this entry are closed }

Busy week for me and my fellow Internets Celebrities, Dallas Penn and Casimir Nozkowski.

This morning’s New York Times has an article about us by city reporter David Gonzalez, “Three Men and a Video Camera, Out to Reveal Urban Truths.” We had a great time speaking with Gonzalez and Librado Romero, the photographer who accompanied him for the story.

It’s perfect timing because the article also plugs the screening we’re hosting tonight June 1 at the Central library in Brooklyn at Grand Army Plaza. The event runs from 7-9pm and includes some of our classic videos leading up to and including the world debut of Stadium Status.

Stadium Status, which Gonzalez of the Times describes correctly as our most ambitious effort to date will hit YouTube on Thursday. But we’re offering people who subscribe to our free Internets Celebrities email list the chance to see it a day in advance of that.

So if you’re in New York and can make it to Grand Army Plaza for 7pm, come check out the debut of Stadium Status. Nothing beats seeing these videos on a big screen with a crowd around you. Otherwise sign up for email updates and see the video before the it goes public on YouTube.

{ Comments on this entry are closed }

I’d be negligent in my duty to my readers if I didn’t mention that Global Grind seems to have stopped their policy of full content scraping and framing other people’s content.

This happened because of the ruckus blogger Patrick O’Keefe raised by calling them out on their abhorrent practices.

So if you installed my frame-blocking code last month you may want to remove it. Although honestly they’re still wack and you don’t need their measly traffic.

{ Comments on this entry are closed }

Wrestling with complicated topics

by rafi on April 30, 2010

So, Bol shared this post from The Smoking Section on the death of print and how you know, they had it coming.

We all got it coming, Schofield Kid.

I had my issues with the post’s very bullish take on the future of writing online. So I grumbled a little something in the comments but didn’t say much. Then I grumbled a little something on Twitter but still didn’t say much.

That seemed to be the end of that. Them not saying much and me mad, but not saying much back. Fortunately, LC Weber who wrote the Smoking Section post just hit me up on Facebook looking for me to expound on the topic and I did – so now there’s an actual dialog. And this seemed worth sharing so here it is. Cuz hey, I like self-congratulating as much as the next blog.

I appreciate you playing devil’s advocate… but please indulge me further. What makes TSS the king of thoughtlessness? This isn’t me being smarmy, this is me asking honestly. I pride myself, as most writers do, on putting thought into what I write. I’m not just bloviating to have my words read.

Just curious,


Really, considering my Twitter comment and the fact that I don’t know LC at all, her approach was far more respectful than I deserved.

So I pondered for a minute and here was my reply:

I’m just saying I’ve seen a lot of sloppy editorializing over there over the years. Going back years to posts like “Bloggers are the DJ 2.0″. Bold, declarative statements that get thrown up without really considering the possible holes in the logic of what’s being stated and then get applauded by an undiscriminating audience.

The piece upset me as someone who does keep a close eye on what’s going on in the web publishing world, particularly all the vocal, discontent music writers out there. To say that respect for readers and writers is what makes the internet win over print seems maddeningly irresponsible to me. To make it seem like the problem is simply about love instead of about economics! To bring up a Paste magazine article that you read that sucked without even informing us which article or why you’re talking about it or providing a link… That paragraph at least would have been rightly edited out of any print magazine.

Music web sites, like music magazines are out to serve their advertisers – so they chase page views with excessive posting, search engine bait topics, link bait controversy or listicles, breaking up articles for no reason. None of these things are about making a better experience for the reader. And yet they still for the most part struggle more and more as advertising continues to fail and so more and more sites fall by the wayside or axe good writers for the cheapest help they can get – sometimes free. More and more bloggers blog for no pay or minimal pay. I mean to ignore all that and state that it comes down to print drools, internet roolz. It is kind of ridiculous in 2010. We all know that print’s economics aren’t sustainable… One thing you could have done is looked at which magazines are still surviving and what they’re doing differently. Like a look at Wax Poetics or the newly launched Respect mag.

To me, writing seriously means questioning your own assumptions and actually wrestling with complicated topics when you are covering them. Ending a piece like this by just giving a bunch of props to the site you write for without even earning them through the piece… It’s just totally hollow.

{ Comments on this entry are closed }

I just wanted it out there that the free wordpress setup offer I announced in February is going to be offered indefinitely so I’ll be taking all the “limited time only” bits out of that offer page this weekend.

I had announced it as limited time only originally because I wasn’t sure if I’d be overwhelmed with requests or if the experience would be worth it. As it turned out, the demand was strong but not overwhelming. I’ve set up almost twenty blogs for people since then and it has also led to a nice amount of ongoing freelance work. In fact it’s the most profitable business move I’ve ever made in my five years running this site, by far. It may even be the first real business move I’ve made running this site. I’ll talk more about that next week.

Also, it feels great helping to get other people going on their own blogs.

{ Comments on this entry are closed }

I just noticed that the Global Grind frame protection I posted in the previous post didn’t render properly in my RSS feed this morning.

So if you used the code from RSS instead of from the blog post… You should use this instead:


if(strpos($_SERVER['HTTP_REFERER'],'http://globalgrind.com') !== false) {

echo "<p>Because of Global Grind's <a href='http://www.patrickokeefe.com/2010/04/26/global-grind-copies-content-submits-it-to-google-news/' target='_parent'>evil policy of content scraping</a>, I am blocking all traffic from Global Grind. Please support those who create instead of those who steal.<br /><br />You can still <a href='http://www.ohword.com" . $_SERVER['REQUEST_URI'] . "' target='_parent'>read this post on my site.</a></p>";




Sorry about that.

{ Comments on this entry are closed }

I have been comfortably ignoring Russell Simmons’ lame urban aggregator Global Grind for years but it’s just been brought to all of our attention that they’ve gone and crossed the line from parasitic to Evil.

No longer happy to merely index, excerpt and link to your content, Global Grind is now duplicating it – putting your entire page in an iframe on a globalgrind.com url under their toolbar. So when you write a post at your site, the whole damn thing will become material for Global Grind traffic and you’ll actually have to compete with your own work at their url for Google search engine ranking.

Blogger Patrick O’Keefe has a very in-depth article describing the Global Grind violations and deserves credit for calling foul on this issue. O’Keefe also astutely draws a parallel to the recently shut down and very maligned DiggBar which was Digg’s attempt to frame user content. But Digg wasn’t as flagrant as Global Grind is being; one huge difference is Digg defined canonical url’s in their page’s metadata to let search engines know that the original source was the one to be considered the real url.

O’Keefe asks why hip-hop bloggers put up with this when tech bloggers were quick to speak out against Digg, suggesting it may be just a lack of savvy to blame. I’d like to posit an alternate theory that Digg matters a great deal to tech bloggers, and meant even more when they first launched the DiggBar last year. Digg can generate a great deal of traffic for the bloggers whose content it aggregates. Global Grind on the other hand is not really a factor for anyone. So I think the reason you didn’t hear any outrage about this previously could be as simple as web-savvy hip-hop bloggers (and there are many) weren’t aware that this was going on.

We could go on about how framing other people’s content was decried evil by everyone back in the late 90s when it first became a trend. Or how the very fact that Global Grind is doing this most likely speaks to their own state of desperation to get some sort of numbers up.

But instead, let’s talk about how you can stop Global Grind from stuffing your website under their villainous cape.

The fix is crazy simple and I more or less lifted it from John Gruber’s post on how to block the DiggBar. If Global Grind is going to be so unoriginal as to steal Digg’s questionable moves then we should just match them tit for tat with an unoriginal fix.

Click to see what this code looks like in action.

UPDATE Programmer Tiffany Brown rightfully pointed out in the comments that the code is better off using strpos instead of regular expression matching for performance reasons. Her suggestion has been tested here and updated in the posts. Thanks Tiffany.

The Code - Generic version

if(strpos($_SERVER['HTTP_REFERER'],'http://globalgrind.com') !== false) {
echo "<p>A message for Global Grind visitors goes here.</p>";


When a web page is linked to, the page that did the linking is considered the referrer. When Global Grind puts your site in an iframe, your web server considers globalgrind.com to be the referrer. So this code uses a regular expression pattern match to check if GlobalGrind.com is the referring site and if it is, it will output a different message and then because of the “exit” line will show nothing else on your page but that message.

Gruber’s regular expression looked different because he wanted to allow for regular inbound links from Digg to still work normally. So even while blocking the Digg toolbar he could still have a an article giving him that juicy Digg traffic.

We don’t have to worry about that with Global Grind because they don’t actually pass any kind of significant traffic. And more importantly, they don’t currently link out to any blogger’s site – a painfully lame attempt to build Google juice instead of being part of  the reader-blogger ecosystem they feed from.

The Code – Sassier version (feel free to use)


if(strpos($_SERVER['HTTP_REFERER'],'http://globalgrind.com') !== false) {

echo "<p>Because of Global Grind's <a href='http://www.patrickokeefe.com/2010/04/26/global-grind-copies-content-submits-it-to-google-news/' target='_parent'>evil policy of content scraping</a>, I am blocking all traffic from Global Grind. Please support those who create instead of those who steal.<br /><br />You can still <a href='http://www.ohword.com" . $_SERVER['REQUEST_URI'] . "' target='_parent'>read this post on my site.</a></p>";




Sassier Version Explanation

This is probably the one you want to grab. It includes some words letting the reader know that Global Grind is stealing content with a link to Patrick O’Keefe’s explanatory post.

Then it includes a link for the reader to view the post they wanted to see on your site instead of inside the Global Grind frame. Important: You will need to change the base of the url in the html from www.ohword.com to whatever your site is. But leave the http:// or the link will break.

Both links use target=_parent to break out of the frame.

How to Implement

Copy either chunk of PHP code and drop it in near the top of your page template. If you’re running a basic WordPress theme you may want to go to the theme editor under appearance in the left sidebar. Choose to edit the header.php file and paste this code right before the <body> tag. That would give you your paragraph on a plain white background.

Gruber also mentions in his post that there is javascript code out there for busting pages out of frames but that his preference is to fix the problem with PHP. An important positive about using PHP in this case that wasn’t a concern with the DiggBar (because of canonical urls) is keeping Global Grind’s content scrape out of Google. Google’s spider isn’t going to be running any javascript code but PHP code runs before the spider sees your page. So if you use this PHP code, your words will stop showing up in Google under a Global Grind url.

A smarter way to insert custom code into WordPress

Adding this fix was different for me than what I just described above. I use the Thesis theme for WordPress which has a strong ideological stance against modifying theme files, with good reason. Because Thesis is constantly improving, you don’t want to put changes in your core theme files which you’ll have to worry about maintaining later when you upgrade to a future version of Thesis.

Instead, Thesis uses separate files to allow you to add custom styling and custom programming. The programming is handled using something called hooks which are basically commands that you can add and remove at various points throughout your template. There’s a plugin for Thesis called OpenHook which makes these hooks extremely easy to work with. So instead of editing any of my actual theme files, I simply went into OpenHook and added the PHP code to the Thesis template just before the logo and nav were to appear.

You can see from this screenshot how OpenHook made adding this code totally idiot-proof. I didn’t have to worry at all about whether it would show up in the spot I wanted it in and didn’t have to worry about stepping on other code. That’s time-saving, worry-saving stuff that has made Thesis well worth the money for me.

{ Comments on this entry are closed }