Snoopy, Geolocation, and I
Warning: geeky stuff below
I’ve been working recently on a project that involves geolocation. Naturally, the articles by Kashmir Hill and David Shamma caught my eye (h/t to Jessica Hullman for that last one). They’re somewhat depressing, but they also made me chuckle. They reminded me of one of my first consulting jobs as an undergrad.
Around ’95 or ’96 I was hired to do some consulting for Agency.com. This was right after they started and they were still this tiny little group renting space in the Time Warner building (maybe 20–30 people). I would go down from Cambridge during vacations, stay at my parent’s house in NJ, and commute into NY. Probably no one knew quite what to make of Internet advertising agency firms then, but Agency was collecting a massive set of impressive clients.
I got to work on a lot of cool small development projects for them and was even on the masthead for Urban Desires, the weird digital ‘zine they put out (you can probably dig up some old copies at the archives if you want to see what “the future of magazines on the web” looked like in the mid-‘90s). Anyway, It was exciting to be part of something that was such a “Big Deal.” It didn’t hurt that the people who worked there were super fun and paid me really well.
One of my first projects for them was to develop a solution for Met Life. Met Life had a problem. They had licensed the Peanuts characters (Snoopy, Charlie Brown, etc.) and wanted to use them for branding on their homepage (check out the snazzy design!). Unfortunately, they had a problem with their licensing agreement. They were only allowed to use the characters for marketing in certain parts of the world. Snoopy in Utah, ok. Snoopy in Paris, not ok. Not to be denied their brilliant use of of Snoopy on a scale (I also worked on that one), the bigwigs at Agency had a thought: let’s block anyone not from the US from seeing the homepage!
So I was put on this task. At the time there was no awesome database mapping IP addresses to location (apparently there still isn’t). I don’t know if it even occurred to anyone at the time that you would even want such a thing. Instead, I spent multiple weeks scouring various public databases and routing tables building a mapping between IP netblocks and location. I don’t even remember all the details, but I do remember that there wasn’t one place to find the info.
So after several weeks of scraping and data munging (Perl for the win!) I had a database. This left us with two problems: (1) what if we were wrong and needed to change something? and (2) how will a web server use this info. You’ll have to remember (or, I guess, just believe me) that web servers at the time weren’t really built to deal with things like this. If you modified the white/blacklists you’d often need to restart the server. They also hadn’t built in support for new modules at the time. Instead, I remember having to hack the source code for httpd (like the NCSA one) to let it look things up in an external DBM file. I also wrote a command-line program that let the Agency.com people update the database if they got complaints.
I don’t remember how long they had that particular server up. I do remember getting an annoyed phone call when I was back in Boston from Agency’s CEO after some executive from Met Life complained they couldn’t get at the site (and Agency couldn’t remember how to run my program).
Anyway, I found it funny to see that 20 years later we still haven’t figured this out. I don’t think I ruined the lives of anyone in Kansas, but it’s entirely possible that people in Lubbock, TX were denied their Snoopy for years.