I'm part owner and roaster at a little coffee company in Wisconsin. Author of Typica, a popular free program used to capture and work with coffee roasting production records that's used at roasting companies all over the world. Volunteer on the Roasters Guild education committee. Available for paid coffee consulting, training, open source software development. Living with a cat who broke into my house and decided to stay. Likes: cute, travel, food. Dislikes: blinking lights.
If it weren't for the accuracy issue, I wouldn't have bothered.
The difference is that the old code was using something considerably more heavyweight to start with that has a lot of capabilities that aren't needed for this feature. My excuse is that this was already there and needed for other things and hundreds of microseconds is still plenty fast enough for this, whereas the new code does a lot less and it was a few hundred SLoC that I had to write, though I did encapsulate that such that it's almost exactly the same code at the call site.
For the most common use case it's running in almost exactly 1/10th the time.
Finished integrating the new evaluator for mathable fields in Typica 2 and did some performance testing. Despite the utter garbage quality of my code with considerable room for performance optimizations when I'm in a better head space for that, it's producing results that are always correct in 10s of microseconds where the old code was producing results that were only almost always correct in hundreds of microseconds.
Any performance difference is not all that important here because it's for low volume interactive use and either would give apparently instant results even on machines that would have been considered low end a couple decades ago, so it's really just personal curiosity.
Finished up some code that I've only been able to get a bit of time here and there to chip away at which would have gotten done a lot faster with a larger contiguous block of time to write it in. Kind of want to benchmark it against the code that it's replacing because on the one hand what I just wrote is not even remotely optimized, but on the other hand it does way less than the code it's replacing.
Today's weird request was from someone who brought in their random probably stale coffee from who knows where and wanted to know if I could brew it for them in ways that we're not set up to do in any reasonable amount of time. Pro tip: Coffee shops are set up to use their own coffees, they have a menu of offerings, and if they're aware of the relevant food safety regulations they need to abide if they want to operate legally they can't use random ingredients of unknown origin. Don't be that guy.
Getting a little more time to continue work on an improved mathable field for Typica today. Not enough time to actually finish the work, but at least it's become obvious what the rest of the code needs to be and I just need to type it and put together a bunch of test cases to make sure it does what I think it does.
Continuing to work on blend updates with new ingredients. The first blend matched just swapping the new ingredient into the old recipe, but the 2nd one needed the proportions adjusted from a 50/50 to a 60/40. The rest of the blends on my list are more complicated and may need more substantial recipe changes.
Author of Typica software for coffee roasters.
The social network of the future: No ads, no corporate surveillance, ethical design, and decentralization! Own your data with Mastodon!