a compile has huge consequences on morale
Friday, June 28 2019
For this morning, Gretchen had scheduled an appointment at the dentist in West Hurley to deal with the crown that fell off one of my molars several weeks ago. The crown had shattered in my mouth and so was no longer usable. I'd assumed the crown had been on a tooth that had received a root canal, so hadn't thought fixing it was an urgent issue. Sure, the tooth was tender to chew with and was sensitive to both heat and cold, but I figured this was because the crown had helped insulate nerves not affected by the root canal I was sure the tooth had received.
I arrived at the dental office a little before 9:00am, and was whisked directly into one of the rooms where procedures are done. The dentist had his assisant take an xray, and it was soon clear that the tooth in question had never received a root canal. Had I known that, I probably would've been less psychologically resistant to the pain signals the tooth had been trying to send. The dentist gave me a shot of local anæsthetic and, after that kicked in, quickly ground away parts of the remaining tooth that had to go to make a firm attachment for a crown, filling the air with the smell of ground-up collagen. As he was doing this, his assistant asked if that was a canker sore near the tooth. I'd thought of it more as a spot of sore throat (I'd mentioned it earlier in the week) but who knows? So I said "yeah." I didn't want anyone thinking it was a ruptured abscess. Canker sores are one of the icky things one prefers not to have a flare-up of when one goes to the dentist, and it's partly so you don't get interrogated about them.
After that, the dentist did a careful 3D scan of that part of my mouth so he could have a tooth cast (or perhaps printed). As he worked, the scanner gave constant feedback in the form of musical notes. When he scanned the wrong part, it sang a different melody. This part of the procedure felt a little like an episode of Black Mirror.
Because the the fallen crown had actually been installed by this same office, the new crown would be free. All I had to pay for was the xray and a few other things, which came to $200. That was great, because I do not have dental insurance. I'm a firm believer in not paying for insurance for procedures one can afford out-of-pocket. This is because, statistically speaking, it's unlikely you will get more from insurance than you pay into it. This is why, for example, only broke people should get pet health insurance.
I'd arranged to work from home today, but I ended up treating the day as more of a mental health day than an actual work day. I was active on Slack as I tried to untangle the project management mess alluded to yesterday, but I didn't end up doing any actual coding, at least none that was work-related.
One major achievement today was the completion of a number of important milestones on my speakerbot project. It's that solar-and-battery-powered Raspberry-Pi-Zero device that I will put far off in the forest, where it will wait for me to give it commands. The only interesting ones will concern a bullhorn, its only real output. The idea is to be able to power up that bullhorn remotely and then play audio files through it.
Since the bullhorn is a power-hungry device, it needs to be off most of the time, only turned on briefly when audio files are being played. To get that part working, I needed to interface a relay to the RaspberryPi. I thought this might be complicated, because (at least with the Arduino-based solar controller I'd built in the basement), I'd had to use an ULN2003 seven-channel relay driver to get the Arduino's 5v logic levels up to those needed to operate a relay. With a Raspberry Pi, the logic levels are even lower. But it turns out that there are now commodity relay modules with all the logic level translation and isolation built-in. All I had to do was attach power and a GPIO pin from the Raspberry Pi to such a module, and I could easily control its state from within a Python program (so yes, I actually did some very minor "coding" today).
Another problem was actually producing audio from a Raspberry Pi Zero. These tiny devices do not have any analog interfaces, and on larger, more expensive Raspberry Pis, the audio signal is simulated using pulse-wave modulation on a digital pin. When put through a suitable filter, all the high and low frequency artifacts of using this method are eliminated, and a reasonable sound is produced. It might not be good enough for hi-fi enthusiasts, but it is plenty good enough for remotely tormenting gun nuts. To get this working on a Raspberry Pi Zero, I had to build the filter. Actually, I only had to build half the circuit, since my system would be monaural. I also had to remap the audio GPIO pins and install software to play MP3s (since I didn't want to be waiting around to transfer massive .wav files). Somewhat surprisingly, given my experience, the filter and GPIO remapping worked on the first attempt. (I was using an MP3 of "Tyrant" by Judas Priest as a test file.) Coordinating the relay with the music file was a little complicated, but I'm sure I'll be able to make that work, even if it requires me to use Python's sleep command. Or search StackOverflow for something less stupid.
At some point I started drinking kratom tea and then eventually graduated to white wine. This combination made me sleepy, and I ended up taking at least two naps today. For some reason, drinking wasn't as fun as I'd expected it to be. It left me with a persistent headache and feeling bloated.
For linking purposes this article's URL is:feedback
previous | next