SOPA Linkspam

I had a whole different post planned for this morning, but everything is coming fast and furious, and I wanted to get a few links out before I forget or they go (even more) stale:

First up, because this is the first time I’ve seen them back off in a dozen or more years of crappy internet legislation.

Reeling MPAA declares DNS filtering “off the table”

… But Tepp and Brigner pledged to press on with the remaining provisions of the legislation. “We need to move forward as soon as possible,” Tepp said.

And while the MPAA appears to be abandoning the DNS-filtering provisions for this Congress, Brigner hinted that his organization may resurrect the proposal in the future.

 


From danah boyd: We need to talk about piracy (but we must stop SOPA first)

In talking with non-geeks, I can’t help but be fascinated that the debate has somehow been framed in the public eye as “pro-piracy” vs. “anti-piracy.” Needless to say, that’s the frame that Murdoch is advocating, even as geeks are pushing for the “pro-internet” vs. “pro-censorship” frame. What’s especially intriguing to me is that the piracy conversation is getting convoluted even among politicos, revealing the ways in which piracy gets flattened to one concept.

 

The EFF is excellent and thorough, and looks beyond just the immediate legislative horserace to the deeper issues at stake. Go read the whole thing. How PIPA and SOPA Violate White House Principles Supporting Free Speech and Innovation

Anyone who writes or distributes Virtual Private Network, proxy, privacy or anonymization software would be negatively affected. This includes organizations that are funded by the State Department to create circumvention software to help democratic activists get around oppressive regimes’ online censorship mechanisms. Ironically, PIPA and SOPA would not only institute the same practices as these regimes, but would essentially outlaw the tools used by activists to circumvent censorship in countries like Iran and China as well.

 


So is SOPA Dead? Not Exactly

Though the battle is won, the war is not. SOPA could easily make a resurgence if it sculpts itself to whatever the White House’s unspecified specifications are, and PIPA could also pass, as even with recent changes to it (courts can’t force ISPs to block websites), it’s still harmful.

 

The President’s Challenge

Take the truck, the boat, the helicopter, that we’ve sent you. Don’t wait for the time machine, because we’re never going to invent something that returns you to 1965 when copying was hard and you could treat the customer’s convenience with contempt.

 

From Tim O’Reilly on Google+: SOPA and PIPA are bad industrial policy

Policies designed to protect industry players who are unwilling or unable to address unmet market needs are always bad policies. They retard the growth of new business models for which we recommend this paystubs creator software as it is very easy to use, and prop up inefficient companies. But in the end, they don’t even help the companies they try to protect. Because those companies are trying to preserve old business models and pricing power rather than trying to reach new customers, they ultimately cede the market not to pirates but to legitimate players who have more fully embraced the new opportunity.

This site is going dark

Like a lot of webheads, I’m deeply concerned by the proposed bills working their way through Congress right now. As a community and an industry, we must oppose SOPA (House) and PIPA (Senate).

This site and my main business site will go dark from 8:00 am to 8:00 pm (US Eastern time) on Wednesday January 18. Client beta sites, support, and the like will not be affected. If you own a website, consider doing the same; if you’re not in a position to go dark, please voice your opposition to SOPA/PIPA in other ways. My combined page views are nothing compared to the vast empire that is I Can Has Cheezburger, but the more sites are united against the proposed laws, the greater our impact.

If you’re not in the US, please speak up anyway. Yes, these are US laws, but they’re designed to hurt the internet outside US jurisdiction: needless to say, this is one of the really reprehensible things about these laws, but it’s not the only one.

    • Ipstenu has a tutorial on how to go dark using the WordPress .maintenance file. See the note at the bottom for blacking out selected sites in a multisite installation.
    • Or use a plugin. This one will let you set your time zone and the blackout interval you want, as well as customizing the page that’s displayed.
    • If you’re already using a scheduled maintenance plugin, keep in mind that most of them will let you customize your away page — you may already have the tools you need.
    • Add a “STOP SOPA” ribbon to your site now. You can see it in action at the top of this page.

UPDATE: New resources!

UPDATE 2: For hosted sites (WordPress.com, Blogspot, Tumblr, etc.)

  • http://pastebin.com/XhDhHp6q is a snippet that will work on most hosted blogs. Special hint for WordPress.com users with the 2011 theme: put this in one of the widgets in the footer, since the side widgets don’t appear on pages!

UPDATE The THIRD: It’s Tuesday Night, Time To Get Your Blackout On!

  • A nice-looking javascript solution from estelle.
  • Another WordPress plugin: Go Dark
  • And a big announcement: WordPress.org is joining the protest along with big players like Wikipedia, Reddit, Mozilla, and (sorta) Google!
  • WordPress.com users now have an option in their settings to add a ribbon or black out their sites. (From what I can tell, they appear to be based on the Stop-SOPA Ribbon and SOPA Blackout plugins mentioned above.)

Contrib-o-rama week 1

I started the year with a plan (I won’t call it a resolution. They don’t work and I dislike them.) to give back to my communities, both online and off, in small but countable ways, as a regular practice. Bigger bang-for-the-buck is on the list too — it’s an important goal of mine to do some substantive work on WordPress core this year, for instance — but the key to the bigger plan is making the small stuff happen every day. As such, the very first contribution of the year was a list of ideas that includes not only “submit a patch” and “release a plugin” but also smaller things like “answer someone’s question” and “participate in a meeting”.

If (like me) you’re just now looking for where to started, those small things are the big things. If (also like me) you’re prone to having a whiteboard full of big ideas and no time to make them all happen, the small things are a way to make sure you at least take a crack at something. But most important, the small things start to add up surprisingly fast. I got more theme reviews done in the first week of January than I did in certain whole months of last year, in large part because I didn’t want to leave too many gaps on that damned page.

I also want to kill that damned page. I started off with a manual list in order to give myself just enough pain to keep me moving on the plugin version. As I intended, it’s driving me nuts. So I’m digging away at turning the manual list into a slightly less manual list.

So what does it need to do?

  • Allow easy and automagical connection to the obvious things like WordPress Tracs and Github commit feeds
  • But don’t limit it to WordPress or for that matter to any one project. It’s meant to be a contribution-focused lifestream, not a project widget.
  • Incorporate things that don’t natively live online. The internet isn’t and shouldn’t be the only thing that counts. This is most easily done by allowing manual additions rather than limiting the stream to feeds only.
  • But still require that things are verified in some way: if a direct link to a changeset isn’t relevant, then… what? A URI, time/location stamps, anything else? What it points to gets into the somewhat philosophical problem of verifying anything; but at the same time, the stream shouldn’t be just freeform diaries or status. It must point to something real.

And maybe someday:

  • Social proof. Collaborators. Pretty reports and graphs and things. Others?

Just replaced the Twitter Blockquotes plugin I was using with Twitter Embed — both by kovshenin, not coincidentally. I’m a little sad to say goodbye to the blockquotes plugin, because in certain ways I prefer what it does — make a quoted tweet part of the flow and style of the environment you’re seeing it in. (Needless to say I can’t bear the Blackbird Pie look).

Still, I couldn’t resist the interaction possibilities in the official oembed implementation; apparently follow/retweet/reply in place is enough to win my heart.

The changeover was seamless, mostly because the first plugin was designed to fake oembed before Twitter actually had it. When that’s incorporated into core, I’ll be able to lose both, with no stray shortcodes haunting old posts. Hooray for things that just work.

Minimum Viable Theme Review

I saw yet another version of a conversation I’ve had over and over again roll by on Twitter last night. A client comes to a dev with a theme they’ve already bought — maybe they thought they could DIY and got stuck; maybe they found the look they really want and they just want to hire a freelancer for some tweaks. It doesn’t really matter. Either way, the next thing that happens in this story is

… because the theme in question is a non-standard pile of deprecated functions held together with duct tape, baling wire, and spit.

So I’m proposing that every WordPress theme that’s intended to be used by anyone other than the original developer1 should be good enough to pass a very abbreviated Minimum Viable Theme Review2:

  1. Develop with WP_DEBUG on. If you see any warnings and whatnots printing out at the top of the screen, whether in admin or the front end, fix those first.
  2. Run your theme through Theme Check. Yes, some of the requirements are specific to the Repo, and you don’t need to worry about your license URI unless you’re building for distribution. But the real strength of Theme Check is in finding the things you could be doing in a more WordPress-ish way. Still using a years-old hack to add a menu, or hand-coding feed links in your header? Yeah, don’t do that. Theme Check will give you all that stuff in a handy color-coded and prioritized list.
  3. Load up the Theme Unit Test Data and eyeball all the pages and posts. It’s designed to make it very clear when you’ve forgotten to style something or account for some use case. Because I promise some user, somewhere, is going to load up an oversized picture, and not actually want it to overlap the sidebars; or they’ll want to use an ordered list, and they don’t expect it to come out exactly like an unordered list. And in my experience, that user is usually me.

Look, I’m not saying that every theme needs to go through a full wptrt-style review process (although a gal can dream!). But as a starting point, it doesn’t seem a lot to ask that any theme that’s released in the wild should 1) Not break WordPress 2) Do core WordPress stuff the way it’s supposed to, and 3) Display the end user’s content the way they meant it to be displayed.

  1. And remember that “yourself in six months” counts as someone else. Don’t believe me? Think of the headdesk when you read your old code.
  2. Yes, before you ask, all examples are real

A contribution a day

Last year, I (again) watched various post-every-day efforts with a lot of hope and interest and (again) utterly failed to live up to them. Still, I like the idea of daily or weekly discipline, and while I know I won’t blog every day or even every week, I figure I can try to do something to contribute, however small:

In your tech community 1

  • Answer someone’s question in IRC or the forums
  • Write a really good bug report
  • Comment (intelligently!) on a trac ticket
  • Participate (don’t just lurk) in a team meeting
  • Review a theme
  • Document
  • Submit a patch
  • Release a free plugin
  • Release a free theme
  • Post your work-in-progress in public. Even if it’s not ready for release, even if it’s just a gist sketching out an idea in pseudocode, it may help someone else. Plus, sufficient eyes, all bugs shallow, yadda yadda.
  • Write a blog post with the intent to inform or debate. As opposed to, say, posting cute pictures of teh kittehs. You can count those as a bonus, if super-cute.

In the outside world:

  • Next time the call to fix your parents’ computers comes in, do it in a way that teaches them to be one small step more self-sufficient the next time.2
  • Volunteer your tech skills for a non-profit in your real-world community.
  • Teach kids to make robots, write code, build games, or just tinker.
  • Give a presentation. Start with your local BarCamp if you’re not yet the kind of rockstar who gets flown around the world to talk.
  • Join a local meetup. Present at a meeting. Help organize a hackathon, pair-programming day, or codefest, and help someone less experienced there.
  • Check out Random Hacks of Kindness or a similar geeking-for-global-good organization.

Obviously, these aren’t all one-day ideas, and you don’t have to check off every box on the list. But I think it’s worth making a habit of contributing time, skills, and knowledge. It makes the universe a shinier, spiffier place. So who’s in?

UPDATE: To start out, I’m tracking things on this page. Better and less manual  developments to come.

  1. As always, my examples are mostly WordPress because that’s where I hang out. But most of this, or something very similar, also applies to whatever your project of choice.
  2. Teaching technology is HARD. I used to make a living at it, and it’s miles easier to just grab something and fix it than to help the user understand what to do themselves. It’s also incredibly rewarding. Try it sometime.

“Without a plugin” considered dangerous

Like a lot of devs, I’m sadly addicted to all the many tips and how-tos and tutorials that float around in the WPverse. Some of them are utterly brilliant. A very few of them open my eyes to new ways of doing things that I couldn’t even have imagined doing the old way. But far more often, I follow a link that leads to the other kind of tuts. The ones that promise that by just copying a few lines of code, you can do magical things without needing to use any plugins at all!

There’s just one problem with this. Plugins exist for a very good reason: to add non-core functionality 1 to your site without hosing up the whole lot.

Much more importantly, a plugin is the right way to do it the great majority of the time. There’s a whole Plugin API that exists just to make it possible to hook your code to WordPress with minimal fuss! Those really cool new features you love were first tried out and gained traction as plugins! And anyway, there are really only two other choices:

  1. Edit your theme’s functions.php. This works just fine, because code in functions.php will be included just the way a plugin would be2. Except for the small fact that now you — and more importantly, your users and clients — are stuck with that theme. Wanna change themes as your mood strikes you? Or just update to a newer version? Say goodbye to all that new functionality. As one friend of mine puts it, when you repaint the bathroom, you don’t normally expect the toilet to vanish…
  2. Hack core. Congratulations, you have now fucked your site. At best, you’re now unable to upgrade WordPress (including security updates) without losing your tweaks. At worst, you’ve introduced entirely new issues: because if you’re hacking core just to add a new widget or dongle or gizmo, you probably didn’t read the code all that carefully, now did you?
To sum up:

 

  1. By “non-core” I don’t mean “unpopular” or “not useful” or even “not something I might need to build an entire site around”. Just… not in core.
  2. Please take this fact as a hint that a plugin is a perfectly normal and acceptable way to do things

Domain hipster

I just want to be clear, I hated GoDaddy way before the SOPA thing. Even before the elephant thing and the softcore thing. I hated them for the slimy added charges thing, and the totally unnecessary speculative market in flipping domain squats, and the horrifying interfaces designed to keep people feeling stupid and helpless and locked in.