Your leaking thatched hut during the restoration of a pre-Enlightenment state.

 

Hello, my name is Judas Gutenberg and this is my blaag (pronounced as you would the vomit noise "hyroop-bleuach").



links

decay & ruin
Biosphere II
Chernobyl
dead malls
Detroit
Irving housing

got that wrong
Paleofuture.com

appropriate tech
Arduino μcontrollers
Backwoods Home
Fractal antenna

fun social media stuff


Like asecular.com
(nobody does!)

Like my brownhouse:
   bad vibe code and a hangover
Sunday, May 3 2026

location: 940 feet west of Woodworth Lake, Fulton County, NY

When I got up this morning, it was as if someone had cranked up the gravitational constant. I had hopes at first that I didn't have a hangover, but it soon became clear I had an especially bad one, the kind the slowly unfolds like a flower. There was a strong emotional component to it, and at times I felt so sick that I had to stop what I was doing for a moment and collect myself. I've been known to throw up during such waves of discomfort, though that didn't happen this time.
Despite how I was feeling, I gave Neville his pills as always, fed the dogs, made myself a french press of coffee, and ate some buttered toast. It was a cool 55 degrees Fahrenheit in the cabin, so I made the first fire of the weekend, using some wood that had thoroughly dried in the indoor wood rack over the winter. When I went outside at some point, I found three eights of an inch of ice had formed in an outdoor dog water bowl overnight.
Eventually I tried to make the most of the day by finally tackling the ESP8266 project I wanted to work on this weekend: actually live-parsing data from the SolArk inverter using the data format it now transmits between the inverter and its ESP32-based WiFi dongle. But I was soon distracted by an issue I discovered: the firmware was no longer paying attention to a configuration string for an additional sensor. I soon discovered what the problem was: I'd made the mistake of asking ChatGPT about some problems I'd been encountering and then let it convince me to let it completely rewrite a couple functions so as to not use Strings (the fancy form of string that support concatenation and other nice features) but instead to use cstrs, the primitive C-system of storing strings as arrays of characters that terminate with ASCII character zero. The resulting code wasn't really readable to me, full of crap like this:

What even is snprintf? Just the idea of looking it up made my head hurt (worse). But the code had seemed to work, so, like an idiot, I'd deployed it without bothering to understand it. And now that I was looking for a specific behavior that the code used to support, I was not seeing it. Why? Because ChatGPT had simply left it out, breathlessly (literally!) assuring me that the new code was amazing. Instead of fixing the mess of sprintfs and other C++ arcania, I redid the code in the original style I'd written it in, using proper Strings in a manner that doesn't look too different from a language like Javascript. It ended up being much less code, much easier to read, and now supported my additional sensor configuration strings again, and, cherry-on-top, it used much less memory to do so. It was three or four wins simultaneously! Let that be a lesson to anyone deploying vibe-coded software without bothering to understand (or at least comprehensively test) it. Mind you, I'd done this with a good chunk of my mental capabilities handicapped or otherwise gummed-up by hangover.
With that little victory behind me, I dove into the task of trying to use an I2C slave to parse data coming from the SolArk inverter. I'd done most of the figuring out of how this should work over the winter, and even had parsing configurations figured out for all the main parameters I care about, having tested it with a simulated SolArk Inverter (that is, another ESP8266 running a specific sketch sending data out on its data lines). But when I hooked up the serial wires and then ran the commands to initiate parsing, nothing happened. At that point I realized that having the parsing happen on a slave was just too fucking difficult to debug. The slaves only have one serial port, so they have to be monitored over I2C while they do what they do. But none of the commands I'd painstakingly written to do that monitoring were working either. Clearly the parsing was going to have to happen on an ESP8266 I could at least monitor over the internet (since they also only have one serial port). While I thought about how best to do that, I decided to take Charlotte for her morning walk.
The outdoors were cold enough to demand a hat and a jacket, though occasionally the sun came out and conditions didn't seem so bleak. My hangover had me feeling spacey for much the walk, and at times I even felt rushes of vertigo. I took Charlotte across the outflow creek and then walked sort of along the back boundary with Joel's parcel, which is a complete mess after a logging operation over a year ago that removed most of (but not all) the trees, and left scattered limbs everywhere. I continued to small tributary of Virginia Creek coming in from the east, and there in a jumble of rocks I found a perfect porcupine den with a thick midden of perhaps hundreds of years of accumulated porcupine droppings. I then followed the tributary downhill, and I noted, as I had before, that it joined Virginia Creek at a near-coincident junction with two other tributaries, including East Bifurcation Creek, in a wide cobble-strewn delta among the hemlocks.

Back at the cabin, I'd figured out how to do the serial parsing on an ESP8266. I would migrate all the parsing code from the I2C slave project but I would store the parsing configuration details in the LittleFS file system. This would allow me to easily update the configuration at any time across the internet without all the fussy headache of storing the configuration somehow in the existing configuration system (which is great, but it has its limits). So I spent the next hour or so migrating the code and then working through the bugs. At some point I drank a Hazy Little Thing to take the edge off my hangover. It felt great at first; for about twenty minutes the hangover was gone. But then it gradually came back in the form of headaches and malaise.
Once the code was written, I tried using it to parse the serial data from the SolArk inverter. But I kept having problems even getting my system to see the data. At first it seemed to be clobbered by the USB-to-serial chip on the NodeMCU board I was using, so I used the Serial.swap() function to move the serial pins elsewhere, and at that point I was able to confirm that the data was getting through. But still the parsing wasn't working, and it was clear it was going to take better debugging than I could then provide to figure out what the issue was. But by then I'd figured out how to completely roll SolArk Copilot functionality into my greater ESP8266 Remote codebase. Not only that, but I could support other serial-based protocols as needed with the generic code. With that in mind, I did a roll-out of the new code to all but one of the ESP8266s in and around the cabin. Along the way I ran into a few glitches, one in fact with code specifically designed to deal with data glitches.
But then I discovered there was no power to the ESP8266 I have in an outdoor housing out near the propane tank to monitor outdoor weather and, some day, measure propane levels. There was also no power to the little lamp plugged into a new floor outlet at the north end of the couch in the great room, suggesting there was a problem with that circuit. But tests revealed other things on that circuit were working. Eventually I figure out what the problem was: there's a big panel of four switches in the first floor hallway, and apparently one of those controls a two-way switch for something (I don't know what), and I'd mistakenly hooked up the floor outlet and the propane-tank receptacle to the wires controlled by that switch, which I had somehow accidentally flipped. After a little rewiring, the floor outlet and outdoor receptacle were attached to power without any intervening switches.

With all that out of the way, I was done with what I felt I could accomplish at the cabin. So cleaned up the place, gathered my trash and food I needed to take home, and began my drive back to Hurley. Charlotte and Neville were eager to get in the car when I told them it was time.
I began the drive with another road beer to again take the edge off my hangover, but that was the only one I drank on the drive. I left the cabin with a full battery (230 miles of range) and arrived home with 130 miles of range left. (It had been comfortable to drive without climate control, though I did run the defrost at some point on Route 32 to deal with fog forming on the windows.

Back home in Hurley, Gretchen seemed to have become even more of an activist than she'd been when I'd left her. She told me all about the fate of the beagles from that animal testing facility in Wisconsin. For an undisclosed sum, they been turned over to rescuers, so that was sort of a good news story. But meanwhile an appeals court in the south had placed an injunction on sending abortion pills through the mail, which had Gretchen saying "we live in hell!" (Supporting women's rights to abortion is her other main activism interest.) I'm feeling a little disconnected from all this, what with my focus on artistic and technological projects. So I'm hoping either I can feel more supportive of her efforts or she loses some of her zeal about them.
Gretchen had busted into another bag of injera while I was in the Adirondacks, so I heated up some in the microwave with some leftover black bean chili and added some saurkraut to the mix. I'd had to force myself to eat earlier today, but I ate my makeshift Ethiopian meal with enthusiasm.


A small tributary of East Bifurcation Creek going down a series of steps in the bedrock. Click to enlarge.


That perfect porcupine den along a tributary of Virginia Creek. Look at that massive pile of droppings! Click to enlarge.


For linking purposes this article's URL is:
http://asecular.com/blog.php?260503

feedback
previous | next