The most popular unpopular opinions
on programming by Brandon Weiss

Rename Git’s Default Branch

And update your tools to detect what the default branch is in each repository.

Double Output with Mocha and Assert

A dive into testing with Node, garbage error messages, and what you can do about them.

.dev Domains Not Resolving

It took me an entire year to figure out what was wrong.

Knot Right

You’ve probably been tying your shoelaces wrong.

Migrating to a New Mac for Programmers

I finally figured out the fastest way to migrate to a new Mac.

Explicit Privates

The best syntax for declaring methods private in Ruby.

Always Use Double-quoted Strings in Ruby

A rebuttal of all the arguments for using single-quoted string.

Complex Static Sites on Heroku

Hosting static sites on Heroku is a lot easier than it might seem.

Transactional Fixtures in Rails

The name is confusing so for years I didn’t realize Rails had database cleaning.


Generate new Rails applications without having to install Rails globally.

Hold Please

ActiveRecord callbacks will eventually bite you in the ass.

Testing ActiveRecord Transactions the Right Way

The correct method semantics will make the intent of the test clearer.

Shared Examples with Minitest

All the fun without any of the RSpec.

Always Now, Never Later

There will never be a better time than right now.

Water Your Controllers, They Are Too DRY

“Don’t Repeat Yourself” is a very misunderstood and misused rule.

Strip Leading Whitespace from Heredocs in Ruby

You don’t need to outdent all your heredocs.

Testing the Protocol, Subdomain, and Host of a Rack App with Rack::Test

I had no idea this was possible until now.

Tales from the BCrypt

Don’t let BCrypt slow down your tests.

Use Bundler.setup Instead of Bundler.require

It took me a while to come around on this one.

Upgrading from PostgreSQL 9.1.x to 9.2.x with Homebrew

I could never remember this magic incantation.

GitHub Is Your Resume Now

People really did not like the premise of this one.

The Fountain of Youth

Alter your own perception of time.

Suppressing Notice Messages with PostgreSQL on Rails

It took me a long time to figure this out.

Adjusting Your Privates in Public

My proposal was rejected without, I think, proper consideration.

Case-insensitive Keys with Devise

Devise simplifies this for you now.

Adding a New Strategy to OmniAuth

RIP Rdio.

Dirty Associations with ActiveRecord

Easily update a record’s timestamp when its association changes.

Interview Questions

They’re usually quite bad.

Bundler.setup vs. Bundler.require

I don’t think this is a good idea anymore.