Raw Syntax

The stuff programs are made of

RSpec Suite Runs Twice?

Permalink

I worked on a rails project recently that had a peculiar problem. When running the specs via rake spec or rspec the whole suite would appear to run twice. I began digging around in spec/spec_helper.rb to try to figure out how RSpec could be configured to run twice instead of once. I also went to google and stack overflow and didn't find much.

Eventually I saw that there was both a .rspec file with configuration options and a few of the same configuration options repeated in the spec_helper. Once I removed the duplication (in particular the format documentation option was specified in both places), the RSpec suite output only appeared once. I did a little more digging and found that the test suite was not running twice, but rather the output was getting printed twice.

The easiest way to avoid this kind of problem is to decide on a project level to keep RSpec options in spec/spec_helper.rb or .rspec, but not both.

On API Security

Permalink

I was asked recently about designing a secure API. There are 2 basic steps:

  1. Encrypt the connection (HTTPS)
  2. Encrypt the paylod (HMAC-SHA1 for example)

You could think up ways to go further but these are the basics that need to be covered.

K750: A Solid Wireless Keyboard

Permalink

I don't normally talk about computer equipment here, but I recently purchased the K750 wireless keyboard by Logitech. It's amazing because it is solar powered and therefore requires no batteries. Their manual says it can remain powered for 3 months in total darkness. I believe they tested this in my office. Also of note, I bought the mac version of the keyboard. However, it also works with my PC, though I had to fool with their software a bit for the function keys to work.

The K750 is also a good deal cheaper than the official Apple wireless keyboard.

Previously I had an older version of the Razer Deathstalker. It was nice, but there were wires everywhere. The K750 is nice and clean, and I haven't noticed any perceptible input lag / delay.