Well, this was written way back when it seemed like a good idea, and it’s finally polished enough to actually release. Yay, something I actually finished!
On the off chance you might have some recycling that needs to be taken out (and you should..), this random little tool will let you set up a weekly reminder (an SMS message, actually) to actually get it out to the curb. It’s been working for me (and a few others) for several months now, so I’m fairly sure it’s stable.
So, if you’re (partially) responsible for getting your recycling out, go head over and sign up right now at Recycling Reminder. You’ll need a standard cellphone of some sort. It’s completely free, though clicking the ads now and then gets me a few pennies, if you’d like.
Please email me or leave a comment (or something) if you happen to find it useful, have a problem, or anything else. Thanks!
Andy

(picture: The line at Staples shortly before it opened on Black Friday, it extended further than you can see here)
“Regression” is a term for a specific type of programming bug: A bug that is introduced into something that had previously worked. It’s also apparently a pretty popular type of bug, because even large, well-maintained projects have them: the OLPC software has a long list of regressions (and they’re shipping anyway - most of them aren’t big problems), and Firefox just released version 2.0.0.11 to fix a (cosmetic) regression in 2.0.0.10 (a security patch release which you should already have if you use Firefox).
Most of the time, regressions should be caught by unit testing, but for some reason weren’t. (This is one reason I don’t like unit tests much at the moment: if you know about a problem enough to test for it, you should be able to avoid it in your code.) But to me, regressions are pretty much a major reason for code segmentation: write one function that does one thing, and combine them to do other things. It should be reasonably easy to determine what inputs and outputs each function gives, and if it isn’t, that’s what JavaDoc, JSDoc, and others are for.
Overall, I really have to think that most regressions could be avoided by having enough simple functions doing well-defined things. However, that isn’t always possible or feasible, which leads to problems. Because the regressions that could easily be tested for usually are, that makes new regressions even harder to nail down, which is one of the reasons they’re so hard to fix. My only bit of advice if you’re trying to fix them is to nail down which changeset caused the problem, and investigate every part of that for how it affects other things.
Andy Schmitz