Today in odd tasks: someone brought in some coffee they bought from me a couple months ago and wanted me to mail it for them. It's not any cheaper for them to have me do it instead of just taking it to the post office (and it's more expensive than if they had just placed the order through the web site and had me mail it while the coffee was still fresh) but sure, I'm dropping other stuff at the post office anyway so I can do that if that's what they really want.
The way you'd use this is scan over until you see significant divergence. If that's happening at a low enough temperature closer to the right side of the graph, you're probably fine, if it's happening at higher temperatures closer to the left side you'll probably taste the difference.
The idea here is that what's happening at the end of the roast is generally more important than what's happening at the start. It's conceptually similar to the profile translation analysis that I've advocated for over the past couple decades, but doesn't require picking out significant temperature ranges in advance (plus there's no reason you can't do both if you want to go for the deeper analysis).
Had a thought while roasting coffee today and I don't know if there's anything to this, but I'm just going to throw it out there, but as a tool for comparing data from multiple batches after they're finished, what about doing an x axis that's end time minus time. That would align everything at the end of the batches instead of at the start.
Checked using my biggest chai concentrate customer to get a sense of what their rate would end up as and it's not too bad. It looks like the USPS rate came down, FedEx is a little more but not the crazy high rate USPS used to be. UPS is about 50% higher still for this particular thing, but I'm also going to have to sort out making sure I have a good supply of appropriate boxes for this.
The loss of Regional Rate is going to have the biggest impact on chai concentrate customers as the most economical way to ship that has been two half gallons or four quarts in a regional rate B box (regional rate C was a better deal for larger orders but that got axed a long time ago). The use our own box rate for this is usually more than twice as expensive (chai concentrate is heavy) so I'm going to do some research to see if I can find a better deal for my chai customers.
4. Find the problem in my own code. It's been a while since I touched this, but at the same time I only needed to look in 2 fairly small source files and while some might be horrified that I chose C++ for this, it was an easy read. Good job, past me.
5. Found where I was doing a thing that could throw an exception and replaced the calls to that with a new function that wraps that in a try and does something reasonable on a caught exception.
6. Test that it's working again.
The process here was:
1. Replicate the issue. I had enough information in the bug report to do that no problem. This was definitely a real problem.
2. Check the logs. The issue was there in the logs complete with a not working link to API documentation for the upstream provider.
3. Find the real URL for the documentation that I needed to confirm that indeed what has been working just fine for years is indeed still documented as should be working. No changes there.
The logs show that it was just the one customer affected by this issue and as thanks for giving me the information needed to improve my code they're getting some free coffee.
Needed to go and fix a problem with the web shop today. The company we use to deal with calculating shipping rates temporarily broke one of the rates we query in a way that the code I wrote was not sufficiently robust to deal with so I added another function to handle the operation that was failing more robustly and in the meantime the third party also fixed whatever it was that they messed up.
Author of Typica software for coffee roasters.