Lots of quiet feeds in my RSS reader today.  Everyone must be hard at work.  I've had my head up the basecamp API all day.  Basecamp is a very flexible and easy to use project management/time tracking/collaboration tool, but there aren't any real reporting functions.  One thing we wanted to do was pull a report of completed items for the week to hopefully replace our manually submitted status reports.  Thanks to a very cool C# .NET wrapper for basecamp, I have been saved untold hours from reinventing the wheel.  However the thing throws more exceptions than Windows! (or insert other bad yet funnier analogy here)  Luckily, it comes with the source code, so you can debug.   One thing I'm grappling with is that all the dates are showing up as 1/1/0001.   The wrapper does come with a disclaimer stating that there are some try/catch blocks in there and that your mileage may vary.  So until someone releases a more robust wrapper, it looks like I'm on my own.  Luckily I just stumbled across: http://blog.stevex.net/index.php/parsing-dates-and-times-in-net/  which has a nice cheatsheet for datetime.parse.  Especially of interest is this:  DateTime dt = DateTime.ParseExact("19930214T131030", "yyyyMMddTHHmmss");   so, assuming the dates come back consistently in the same format each time, you can use ParseExact to tell it exactly how your date string is formatted. 

One lament on the basecamp forums, is that you need to retrieve all the projects and all the milestones and all the to-do lists, and cycle through them, just to get down to which items are completed.  If you have a lot of projects or very active projects, you could be transferring a lot of data, and it depends on how often you need that data.  To avoid retrieving the same data multiple times, I invoke system.web.httpruntime.cache to temporarily store the data, so then I can slice it and dice it as I see fit.  Maybe a later version of the API will provide easier ways to just pull out specific data by a specific person without having to cycle through everything.  In the meanwhile, I'm only running my report weekly, so I don't care too much how much data is being transferred or how long it takes.

So, if you're so inclined to dive into the basecamp API, consider yourself informed.  The boat does float, but its far from smooth sailing yet.