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.
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.
dream visions, assorted potentially unwanted in your feed
Last night's dream was kind of all over the place. It centered around a combination wine tasting (where far too much of each wine was served)/sex toy factory tour attended mainly by middle aged women. Part way through there was an incident with a purse snatcher who quickly ended up melting into a puddle and it ended at police with magic wands using excessive force. There were also butlers present.
Spent some time looking at the thing that wasn't working earlier today and I think I found the one simple line of code I forgot to put in. I'll pop into the shop briefly just to do a quick test on real hardware tomorrow. If it works, I can start using the new version on the production machine maybe starting Sunday.
Someone today asked me how long it took to write some software that I'd written and it's kind of a hard question to answer. I slammed out something useful within a day, but I'm still working on it a couple decades later, but that time period has some pretty long stretches where I wasn't regularly working on it and it's not like I tracked hours on any of this.
Author of Typica software for coffee roasters.