OS X El Capitan License: in Plain English

I decided to upgrade my Mac to El Capitan, but my computer said, on one condition: I must “carefully” read and agree with something. It even provided a tiny cozy display window for viewing it: And so I did what anyone else would: I cleared my afternoon schedule and got right down to business; reading, carefully, the entire document. It…More

git commit –amend: Have Your Cake and Eat it Too

For a lot of us, version control does two things which are contradictory: it keeps checkpoints as we work so we can easily roll back, and wraps up our work into a tidy package for others to use. git commit –amend is one tool that solves this. It will “open up” the previous commit, adding staged…More

A Benefit of Rails: Surrogate Keys

Today I helped a client wrestle with a database task which concluded: . . . We’ll have to watch out inventing new “fake” customers because one day there may be a real customer with our made up ID 😦 This is a problem in lots of apps, but not in Rails. Rails enforces the “best…More

Self-validating Ruby objects with ActiveModel Validations

I’m importing lots of CSV restaurant inspection data with Ruby, and I need to make sure the cleaned up data matches the spec. For example, a violation must have a business_id and date. It can optionally have a code and description. My goal was to be able to write a class like this: …and it would…More

The problem with packaging in Python

Excellent article. We got to this situation because of the changing nature of writing software, and how we deploy. Our standards have risen, and packaging (and tooling in general) takes on ever greater importance. But we don’t have to theorize and invent paradigms from scratch. A few other languages have solved this. Ruby is the…More