Facebook Indifference: Remove the like functionality

Today I release Facebook Indifference. It is a Chrome browser extension that removes the “Like” functionality from our grand social network. Also available on Github.

On social networks, we’re typically offered a means of free speech, but lack freedom over interpersonal behavior. On Facebook, your virtual being consists of a mouth, a camera, a finger to poke people, a thumb to thumb-up others’ content. You are limited to performing these actions and manipulating your digital appendages in ways that the network allows you to.

I am interested in a network that doesn’t provide top-down choices about how we should interact with each other, especially in an arena as open as the web. Although an exodus from Facebook is an obvious option, I am more inclined to subvert from within, at least to begin with.

Liking is acutely psychological; it is approval, empathy, positive reinforcement. It is the most-performed action by users on Facebook. I’m sure that liking increases site traffic and activity, as that is to Facebook’s obvious interest. But what does it do to our interactions, and to us? I could offer my opinions here, but I’m more immediately concerned about taking control of them and our correlating personal psychological experience.

So here you go. This is an option to take modify your social network. It’s an easy way, as taking something away is a smaller technical challenge than adding, but isn’t destruction always easier than creation?

What 2013 sounds like


I have never heard
electronic with such a
sense of songwriting.


I won’t beg for you on acetate


hands up
hands tied




Cucko Cooper Conley Currier
called murmurer on okcupid



see how i’m faking my side of it
i’m a liar, i sing, i make music


lately i’ve been thinking if you want to get tough
then let’s play rough

Obituary for matte laptop screens

Matte (anti-glare) laptop screens have retired, and we’re now left with glossy, glare-inducing screens. Sloppy seconds if you ask me.

Being a web developer, I’m gazing at my computer screen for about 6-8 hours a day. The amount of glare my screen gives off affects me in a very real way. I can’t work (easily) if there is a light source behind me, or even the sun shining on a wall. Working outside all day is more or less out of the question.

And to top it off when I watch a movie, I get my own reflection in the dark areas of the screen. Cool “cinematic screen” dog.

The reasoning I’ve heard for taking anti-glare off the market is it costs more, and its  producing retina-level graphics on an anti-glare screen is near impossible. I’d be glad  paying more for anti-glare, but I guess this pro-anti-glare population is not a large enough minority to shift industry product offerings.

I finally approached this problem head-on and bought an anti-glare screen protector. Surprisingly pleased with the results.

Maintaining element aspect ratios in responsive design (The Percentage Padding Ploy)

Maintaining aspect ratios with some HTML elements is easier than others. Take the <img> element: setting width: 100% and height: auto will scale the image automatically based on its inherent aspect ratio.

However, what if you have a 2×1 aspect ratio map, which is enclosed in a <div>? You would need to set the height explicitly, as there’s no inherent aspect ratio.

You could set up a jQuery-based on window resize event listener to detect the new width of the specific element, multiply by the aspect ratio and set the height accordingly.  I’ve done this before, and it works. But feels janky.

I came across another method Craig Buckler calls the percentage padding ploy, which I really like and will use going forward.

Basically, you set the width to your desired value, the height of the element to 0, and the padding-top to the ratio of the height to the width. So, if your aspect ratio is 2:1, you set padding-top to 50%. Since padding is calculated on the width of an element, and setting height to 0 won’t cause the contents of the container to actually get padded, this works perfectly.

My Web Development Contract

I’m not so surprised that discussions of contracts don’t come up more often in the web development community. Who wants to wax on legalese? We’re interested in making beautiful fun things, not confounding phrases.

However, I just put up the boilerplate web development contract I use with clients on Github to spark more discussion and hopefully give a leg-up to anyone looking for a no-nonsense simple contract. Especially of interest to me is the question of rights in the world of software development – who owns code developed for a client? My friend Boone wrote about his contractual approach concerning this, which I’ve folded into my contract to cover this.

Software rights has to be dealt with differently for each client. Most clients are worried that their business model or website is going to be stolen from them, so dealing with that fear in a roundabout way is preferable to relinquishing rights to code you’ve written, which you would (legally) never be able to use again. I prefer to appease clients by adding a specific non-compete clause. This keeps all the code I develop in my control, while addressing the concerns of business-model theft for my client.

Make GIFs from video files

With ffmpeg and imagemagick installed, open up command line.

Use ffmpeg to extract images from the video file (replace [stuff] with actual values):

ffmpeg -ss [time to start recording from(hh:mm:ss format)] -i [inputfile] -t [time to record in seconds] -r [framerate to use - integer ] -sameq image-%5d.jpg

Use imagemagick to convert the sequence of images to a gif:

convert -delay [time between frames in hundredths of a second] -resize[percentage to resize to]% *.jpg output.gif

bears playing after hours


Cutting down GIF size will depend on your Imagemagick options, but here’s an example with suggestions:

convert -delay 12 -resize “[percentage-number-here]%” -dither none -deconstruct -layers optimize -colors 50 *.jpg output.gif

Mac Tune-up Guide

A compilation of housekeeping tasks to get your mac running faster.

Verify & Repair Disk/Disk Permissions

Open up Disk Utility (hidden in Applications > Utilities). First run “Verify Disk,” which will check a multitude of low-level directory and file issues. Then fix all disk permissions.

Run maintenance scripts and clear font cache

To run the maintenance scripts, open up Terminal and enter:

sudo periodic daily weekly monthly

You’ll have to enter your user account password. Also, clear your font cache by entering:

atsutil databases -remove

Restart your web browser and clear its cache

Whatever browser you have will have a file cache; empty it out, and check that the caching settings look slim enough for the future.

Check login items

Open up System Preferences > Accounts > Login items, and review any applications launching at start that may be affecting performance.

Clear unused language packs

With Monolingual, you can easily remove all unnecessary files related to language packs you probably never use.


33 ⅓: In the Aeroplane Over the Sea

33 ⅓ is a series of books; in each a journalist takes on writing about the creation an album. I read one on Neutral Milk Hotel’s Aeroplane recently, by Kim Cooper.

The first time I heard anything from the record was at an open mic night in high school, where a ginger-singer-songwriter belted out the title track. I thought it was alright, but I didn’t even get to the rest of the album until college, I was probably too busy listening to Quadrophenia. Even then, it never “clicked” too hard for me.

That being said, I’ve given it some legitimate listens while reading the companion book, and enjoyed myself. The musicians and scene surrounding NMH created a nurturing music culture I appreciated reading about.

They would start bands, write songs, record “albums,” dub them onto cassettes, draw cover art and then circulate these little objects within their own small world. They didn’t seek outside approval by sending copies to record labels, and the few copies that did sneak out into the greater world were probably baffling.

A side-effect of globalization is a notion of everything needing to be shared and connected; food you make is an Instagram opportunity,  the application you record music with has a Facebook share button built into it. Its refreshing to imagine and participate in situations where there is no expectation of success past the here-and-now; art for art’s sake.

Which also explains why Jeff Mangum left the band after their first tour in support of the album, in part because he didn’t know how to deal with the attention of overzealous fans’ idolatry.

It is a bit peculiar. I’ve met my fair share of people who love this album, and I’ve always thought it a bit surprising. Kids who would put on Holland 1945 at a house party and start some kind of faux mosh pit. Hey I probably danced with them, I can’t hate. Well, there’s the overtly religious and historical sentiments which other songwriters barely touch, while Jeff Mangum whisks from World War II through the afterlife with ease.

There’s also that turn-of-the-century aesthetic: brass-heavy, accordion-laden tracks with whimsical lyrical content belted out with the fervor you’d imagine a vaudeville musician would bring. Not to mention the cover art. It was a compelling suggestion that this aesthetic was an influence for bands like the Decemberists and the Arcade Fire.

It’s probably what Pinkerton was for me, for these people that fell for this record. Maybe I didn’t have the personality type to fall for it. But I like it.

Launched: Fred Moheban Gallery

In December, a friend of mine introduced me to Brian Moghadam, a great New York-based professional photographer. One of Brian’s clients, Fred Moheban Gallery, needed a redesign on their site to allow users (mostly interior designers) to easily navigate an inventory of nearly one thousand carpets.

These carpets are amazing. Some go back to the 16th century, and styles I have never seen anywhere else. So, naturally, the site’s elegance needed to reflect the quality of the product.

We moved the site into WordPress from a custom content management system, and created a custom Genesis child theme as well as a functionality plugin for the site. A few custom post types and taxonomies are at play here, along with a lot of custom sorting options to narrow down carpets by the specific needs of an interior designer (e.g. sizes, styles, time period). Brian did all of the mock-ups, but I had plenty of interesting development puzzles to solve along the way.

Glad to see this site launched!