I Can Has Roomba
I retired my desktop computer over the weekend, leaving a wide open expanse of laminated fiberboard. Every time I look that direction now, it feels like I just moved in.
My two desktop computers will be stowed for a while, and eventually I'll pull the hard drives and recycle what I can. I might someday have a desktop workstation with a pair of large monitors, but only if I'm working from home frequently. For the foreseeable future, a laptop and my iPhone are where it's at.
I love it when I'm right. I ranted earlier today that the code changes I'd made shouldn't have anything to do with uploading images. I was right. They shouldn't. The bug was triggered precisely because they were connected when they shouldn't be. Some really old code in a JSP was trying to do something completely unnecessary, which caused the problem.
I deleted the unnecessary code, and all is well.
I'm still going to start building automated testing, though.
I should have known. I changed a lot of things to get performance where it is. (And I'm not done yet.) I thought I'd tested everything, but I forgot one important item: posting photos. Rats.
What's more, I don't know why I can't upload photos. I haven't touched the photo uploading system in ages. I didn't test it because it "shouldn't" be affected at all. But clearly it is.
I've done without automated testing until now because DMG really was pretty simple. But it's reached a level of complexity that leaves me between a rock and a hard place: I don't have time to test properly, but I can't accept breaking stuff.
Automated testing is the way around that dilemma. It will tell me in ten seconds what's broken, which means I can refactor zeal and abandon knowing that there are guardrails that will tell me when I've bulndered.
And I can add it as I have time. This week, I'll add automatic testing for the blog entry creation and editing system. Next week, I'll get around to the comment submission system. And in a few months, I'll have a testing mechanism that saves me huge ammounts of time and ensures that bugs rarely make it to production.
But tonight, it's first things first: create an automated test that catches the bug in photo uploads, then fix that bug.
It's time to plant the seeds of test-driven development.
All these years later, I finally know what Tim was talking about...