Paul Straw

I like making things and helping people.

Read this first


If there is anything inaccurate or inequitable about the following post, please email me or send me a tweet to discuss it.

When I was about 11 years old, I started getting into politics. Anyone who has met me in the last 12 years would be blown away to hear that I was initially very conservative. I’m talking “Sean Hannity and Ann Coulter book owner” conservative. However, as I got a bit older, many conversations with great, patient folks led me to rethink nearly all of my early political opinions.

It’s amazing how far a bit of loving explanation can go, even with the most backwards people.

Folks who know me now know just how central social justice concepts are to all of my work. A recurring theme of my podcast is how programmers can help make development more friendly to new learners. I helped draft codes of conduct for the Spec, imgix, and slashrocket communities. I publicly spoke...

Continue reading →

Bathroom Bill

Who the fuck is Bathroom Bill and how do we make him go away

— @abolishentropy

As a ten-year-old, I had everything figured out. I knew more about any given topic than anyone else, including professionals who had been performing their job for years. Just like every other ten-year-old, I also knew a lot more about life than my parents.

“Well if I don’t get my way, I’ll just stand here in my doorway until you agree with me!” I yelled at my mother. “I’ll stand here all night, if I have to!”

She, of course, walked into another room, while I stood there.

And stood.

…and stood.

It was pretty boring, but I was making a point, right? Really holding the moral high ground in an argument I no longer recall. Sticking to my guns. Look at what an upstanding person I was! Such backbone, wow.

… if schools don’t knuckle down to force girls showering with boys and force 8-year-old girls to have to...

Continue reading →

Mouth Noises

I am blessed enough to be a member of the Spec podcast network. We just hit a collective total of 5,000,000 downloads, and it made me reflect a bit on what I’m trying to accomplish with Does Not Compute, and my work as a whole.

I started breaking computers with code about 17 years ago, in 1999. My toolchain for those first few sites was extremely basic: Notepad.exe and lots of trial and error. I was just a nerdy kid playing with nerdy virtual toys, but something about programming really stuck with me. It was the first time I ever felt truly empowered to create anything I could dream up, without any limitations. I never thought I would be smart enough to be a “real” programmer, but making websites seemed like something anyone could do. Little did I know those first few goofy sites would eventually blossom into my career over the next decade.

I still carry that feeling of empowerment...

Continue reading →

You Must Be This Sad to Enter

By now, you’ve almost certainly read the open letter written by Talia Jane to the CEO of Yelp. If you’re reading this, there’s actually a good chance I’ve talked to you about it directly. It seems to keep coming up, and I wanted to write down my thoughts on some of the arguments I’ve seen raised against Talia.

If you can’t afford it, don’t live here

To be blunt, she doesn’t. Talia lives somewhere where it cost her nearly $6.00 one-way to get to her job. That’s something like $250 a month in transit fees, in addition to her ~$1200 monthly rent. For those of you unfamiliar with the Bay Area, $1200 a month is quite cheap, even with roommates.

There will always be people here who earn less than others, but affordable housing for all incomes needs to be a priority for this city. Even if you don’t care whether people who earn a low wage can afford to live here (presumably because you’re a...

Continue reading →

Bowers & Wilkins P5 Series 2 Review

These are really comfortable headphones, and that’s coming from someone who usually can’t stand on-ears. They’re quite visually appealing as well, and seem like the perfect size for walking around (I bought them for commuting and work). Isolation is decent, but still lets enough ambient sound in to keep you aware of the environment (another point in the “walking around cans” column).

The inline mic/remote is nice and clicky, but the volume buttons can be a bit awkward to press, since it’s a cylinder instead of the EarPod-style elliptic cylinder/roundrect. I find my fingers looking for the multi-button indent first, then going up or down from there instead of just grabbing the top or bottom right away.

I haven’t heard any microphonics; probably at least in part because of the replaceable cable. It’s a slightly non-standard 3.5mm -> 2.5mm cable, but still better than something soldered...

Continue reading →

nvALT and the Outboard Brain

I have to remember a lot of stuff. If you work with computers, you probably do too. Cory Doctorow popularized the concept of the “Outboard Brain” a long time ago, and it’s still a valid concept. While Cory’s approach was based around blogging, mine has used a simple program called nvALT for the last several years.

nvALT is a beautifully simple application that lets you write plain text notes about anything. Its main trick is letting you create or search for notes without having to manually manage creating or saving files; everything happens directly from the search bar at the top. If I need to take down contact information, I can just type “James Hobbs”, hit enter, and immediately start typing phone numbers, company names, or any other relevant information.

Since all files are saved as plain text, they can easily be synced via your service of choice, and edited on any platform (right...

Continue reading →

Rails User-Editable Configuration

When building out a Rails site with a large admin interface, you’ll eventually need to add some system settings that don’t relate specifically to any model. This is an Interesting Problem™, because ActiveRecord ties everything in the database to a model. I’ve recently started using the pattern of a GlobalConfig model to get around this.

First, create a GlobalConfig model with the standard generator:

rails g model global_config singleton_guard:integer

Then, do a bit of class customization:

class GlobalConfig < ActiveRecord::Base
  validates :singleton_guard, presence: true, uniqueness: true, numericality: {equal_to: 1}
  before_validation :set_singleton_guard

  def set_singleton_guard
    self.singleton_guard = 1

Once you’ve got this base, you need a nice way to actually access the config model from your controllers and views. I added this bit to my...

Continue reading →


I’m happy to announce that my first Mac App Store app has been approved and released to the public! It’s a simple menu bar app that shows you the current status and viewer count of a Twitch stream. I created it over the course of a couple days using RubyMotion, and far too much time tweaking the icon.

If you’re a Mac user streaming with Twitch, you should check it out: ViewMaster for Twitch.

View →

Look at the Photo, Not the Frame

I work with an extremely talented design team, all of whom are unhappy with iOS 7’s new design direction. While I agree there are some rough edges, overall I think the changes will ultimately be for the best, as designers and developers (including Apple’s own) learn to work with the new concepts and design language.

Good “pixel design” is, of course, very important; it has been one of the main ways to provide the “user delight” that designers strive for ever since the first GUI. Very few companies outside of tired examples like Google and Craigslist can even attract users without good design to help sell the product. But computers are now powerful enough to provide that same sense of delight in other ways, one of which is the use of motion, which provides visual interest and context without drawing attention away from the content. iOS 7 utilizes motion in almost every interaction; the...

Continue reading →