[chris-allen-lane.com] Programming | Security | Making

Archive: 2011

Generating Weekly Reports from Git Commit Logs

As a programmer who works remotely from home, part of my job is to produce weekly reports detailing what I have accomplished each week. Having found that attempting to write such a list from memory on a Friday is futile, I developed a tool to generate these reports automatically from my git commit logs.

Read More

Processing MD5 Suppression Lists - a Tool for Affiliate Marketers

Affiliate marketers will from time to time have to process what's called an "MD5 suppression list". In brief, an MD5 suppression list is a list of email addresses which a marketer must remove from her mailing lists, in order to comply with the CAN SPAM Act of 2003, and respect the rights of individuals to opt-out of email marketing campaigns.

An MD5 suppression list is simply a file containing a long list of MD5 hashes of unsubscribers' email addresses, the hashing being a security measure designed to prevent unscrupulous marketers from using suppression lists themselves as sources for obtaining more email addresses to use in email marketing campaigns.

To use a suppression list, an email marketer must compare each hash in the suppression list against an MD5 hash of each contact in her mailing lists. A matched pair of MD5 hashes indicates that an email address has been found in the suppression list, and thus must be removed from the marketer's email lists. (The mechanic here, obviously, is similar to how user passwords are hashed before being stored in a database.)

Recently, at work, I had to process a 2 gigabyte suppression list (of about 62 million rows) from Groupon. To my surprise, I didn't find any readily available tools to do this, and thus, rolled my own.

Read More

Deploying Wordpress: Syncing Files in a Multi-Server Installation

Recently, some of my company's WordPress sites have become so popular that I chose to migrate them onto a multiple-webserver deployment system in order to keep up with the traffic. I encountered some interesting challenges while setting this up, so I figured I'd document them here.

Read More

Amazon EC2 Instance cannot Connect to Amazon RDS Database Server

While designing a new deployment system for my company with Amazon's AWS, I stumbled onto a problem that cost me some time - I could not get my EC2 instances to connect to our Amazon RDS database servers. I figured I'd document the solution here for the sake of those to follow.

I had created two webservers, and a MultiAZ instance of an RDS server with which they were to transact. I could connect to each webserver and the RDS server directly, but I could not get the webservers to connect to the RDS. The issue ultimately ended up being related to my security groups configuration.

Read More

Installing Ubuntu on a Samsung Series 9 Laptop

Earlier this week, my trusty Toshiba Satellite died after five years of faithful service. I decided to go with the new Samsung Series 9 Laptop as its successor, with the intention of configuring the system to dual-boot into Ubuntu and Windows 7. I encountered a few brutal gotchas during the installation process, so I figured I'd document them here. (To the best of my Googling, there's not a lot of information out there on the net as of today.)

What follows is what I believe to be the shortest path to a clean installation. It is not the path that I took. Therefore, if you find that anything does not work as described, please let me know.

Read More