The dish soap section in the grocery store was somewhat baffling. They had bottles marked with a line encouraging you to refill next to bigger "refill size" bottles, but calculating the per unit volume price, the refill bottle was significantly more expensive. If the calculation went the other way, I also didn't see any reason I wouldn't be able to just use the soap directly out of the bigger bottle instead of trying to pour it from one bottle into another.
Lots of cars with collectors plates on the road during my after work errand running. They looked cool, but it looked and sounded like most of them had no clue how to properly drive the things. I feel a little sorry for the other drivers who were closer to them on the road and hope none of them got into a road rage.
Oh no, it's worse. This was a chocolate company. Come on, Valentines Day is right there.
Did a small coffee order (a little over $3000) for things that are expected to get to a nearby warehouse tomorrow. I'll need a bigger order later, but most of what I'm looking at isn't getting into the country until March or maybe late February. I'll have to reallocate some of the coffee I already have to different products in the meantime.
Related, if you're making the wrong assumption that email is instantaneous and a short expiration time is acceptable, give people an easy way to have a fresh code re-sent when the first code that goes out expires before it's received instead of being all, "well, I guess we don't really want your $800 order".
Decided to look into a reproducible crash before going to bed. I'm not sure if any other company actually has the use case that triggers it (it requires being configured for multiple machines with one using rare no longer in production hardware), but once I had a debugger attached and reproduced the issue it was a trivial fix.
Dealing with hardware interface footguns. I tried to be clever using a non-blocking alternative to one of the calls while forgetting that some initialization steps only take effect if performed after everything the blocking version does takes effect. Getting this wrong does not provide any clue that the hardware will ignore your instructions. It'll just produce garbage data that looks plausible until it blows up when you try to use it for real. Not a hard fix, just hard to remember.
On the plus side, one of the new features that really wasn't working for me has what I think might be a fairly straightforward design change to fix it. The current implementation is confusing and disorienting so if my idea on how to fix that doesn't pan out I'll scrap the feature rather than inflict it on others.
Author of Typica software for coffee roasters.