Recently I delivered a new version of an application. I tested it by cloning Production data into my development environment. Then I sent the new application out. Another developer peer reviewed the new app. The app would not work in his development schema. It also did not work for our internal testers.
I had committed to a quick release of this application. These testing problems prevented a release. So it was time for me to intervene. The application depends on the database being in a certain state. My own development database was correct. So was production. But the test database was out of sync.
I figured that production gets data when we release database changes to them. So I poured through the database releases from the last year. I found the release that populated the expected records. It apparently had not been run in the test database.
Since the customer needed my fix quickly, I reverse engineered the good database release. A tester acted as a DBA while I gave him directions to bring his database up to date. After that my application changes worked fine.
This turned out to be a database configuration management problem. We need the test database to mimic production. This is a process level problem that needs fixing now. Otherwise I will be back debugging the test environment soon.
A Little Bit of Crypto - I have been trying to figure out to "collision resistant" some of these standard hash functions are. It is a tough concept to get my head around. I figure...