Recent Posts

Ban Bad Bots by IP

3 minute read

In the Internet age we live in, it’s not uncommon for web servers to be hit with Unintentional, not so Distributed, Denial of Service (DoS) Attacks. The atta...

Laziness: SCP Alias

less than 1 minute read

I often find myself needing to download files to my local box via SCP. Which means entering the hostname, the path, and the filename in to my terminal window...

Laziness: Remote SSH Usernames

less than 1 minute read

I’m lazy and I’m always looking for ways to avoid any unneeded typing. Here’s a little OpenSSH configuration tip that can save you up to 16 characters (if yo...

Cross-Domain AJAX Request in Development

1 minute read

Sometimes an AJAX request on a page you’re developing needs to hit a server on a different domain. Web browsers’ Same-Origin Policy means (among other things...

Luminate Online Server API Gem

less than 1 minute read

As part of the work Indra did for Stand Up To Cancer’s telethon, I need to make use of Convio/blackbaud’s Luminate Online Server APIs. Luminate Online is a w...

It’s in the Logs, Stupid

less than 1 minute read

Yesterday, I was involved in a fire drill around the launch of a new Rails site on a very tight time frame. The site worked fine in development/staging, but ...

Dynamic Keys for Strongbox

1 minute read

Previously, Strongbox, my gem for using Public Key Encryption with ActiveRecord, allowed only one key pair for encrypting all of the records for a given Acti...