Conflict

I am gonna surprise precisely no-one by saying, I do not like conflict. I’m conflict-avoidant. I don’t like having to confront someone and tell them they’re wrong, or that I don’t like what they’re doing, or anything even close to that. That means, of course, that when I’ve finally got the determination to enter conflict, I do so with disproportionate force. Because I’ve got to overcome all my internal reservations, at the point I manage to tell someone that I don’t like what’s going on, it can seem…over the top.

So yeah, today. The specified fireplace for the ADU will look amazing, but will provide no heat. So, is fire pretty enough that we’re willing to spend over 20 grand just to look at it, without any other benefits? Not in my book. So, I take a trip over to the fireplace showroom after calling and getting routed to voicemails for both the business and for the specific salesdude on the proposal. Rando employee tells me that no, that model of fireplace is really just for looks — it doesn’t heat anything, appreciably. He shows me some other models that will, actually, heat a room.

And now, the conflict. I send an email to the architect & builder saying that no, they’re gonna have to suck it up and get a different fireplace. Builder says, “Sure, just let me know what the framing requirements are going to be when you figure out what you’re actually going to buy.” That’s real. That’s a guy who has no investment in the choice beyond being sure he can do the job.

The architect? He comes back at me with reasons why I should just take the stupid useless climate destroyer. You know what? The more we go along, the less happy I am about this choice. Why do I need to argue about my desire to have a fireplace that actually provides heat? Why is this even a discussion?

How Do You Talk to the World?

There’s nothing like a natural disaster to get a person thinking about resilience. In 2020, lightning struck and started a fire in some dry brush in a canyon near Davenport, and the fire spread and took out nearly a thousand houses. While the fire was spreading, PG&E, which owns and operates the power distribution network in the mountains, even though generation is provided by someone else, kept cutting the electricity off. Probably to keep the wires from dropping and starting more fires, but who knows? Anyway, the lack of electricity meant that water pressure pumps, wells, and thus in-home sprinkler systems were just so much metallic debris to be cleared along with the ashes of houses. As we rebuild, connecting to the electric grid that works unless you need it to is not part of our plan.

And then, there’s Internet and phone service. Cellular coverage in the mountains is spotty, and not really extant at our property. Getting decent speed up there is a challenge, as well. Currently, the only real option is Comcast, and that comes bundled with a few problems. It costs a lot, it’s only as reliable as the PG&E grid, it’s got pathetic upload bandwidth, and the shitty wiring means that service gets degraded whenever someone in the neighborhood turns on their A/C (that was the one downside to living near a grow house).

But that’s really the only game around. I mean, sure, we could go with Dish, but that’s got even worse upstream. And we’re too far from anything for DSL, even if the thought of a Zoom call over DSL didn’t give me headaches. And then, Ars Technica ran a story about a local-ish company the helps build out community owned fiber networks. This would in no-way be cheaper than Comcast, but it would absolutely have better customer service (I mean, it would be really very challenging to have worse) and the speeds would be amazing. I reached out to Next Level Networks to find out if there were already a group in/near Bonny Doon that I could hook up with. They said no, but if I could drum up enough support among my neighbors then they’d be happy to work with us.

I am not a good organizer. If I were, I’d still be on the board of my pipe band. However, I mentioned this to my wife and she said that a community co-op ISP would be fantastic and she’s all in favor. So maybe in Q2 of ’23 I’ll go start having conversations with neighbors. I think everyone will be happy to have multiple options available, because there’s nothing like an emergency to demonstrate just how much monopolies suck.

Language Feelings Matter

I just finished a first pass at implementing a new feature in an application I wrote in Flutter. I’ve been working hard at it, not letting myself get distracted with any of my fun programming projects. So, to celebrate handing it off for evaluation and feedback, I just took this morning to do a massive refactoring of my family gift exchange application.

This was a refactoring to bring it up to date with The Composable Architecture’s ReducerProtocol release, which meant that I ultimately got to delete a bunch of files and simplify a bunch of code. And let me just say, the time it took to do that massive refactor was significantly shorter than the time to perform a similar refactor/code update in the Flutter application.

Gosh, I really enjoy working in Swift!

Social?

It’s been quite a while (ten months? a year?) since I deleted my Facebook and Twitter accounts. I do not regret it. Since then, I’ve had far less anxiety force-fed me. I still read news articles, and sometimes feel dismay, but it’s not an unending stream of doom coming at me.

But in the past few days, I’ve received email notifications that a couple people I actually care about have started following my Mastodon account. Which got me feeling a little conflicted.

Continue reading “Social?”

Thug History

I’ve been listening to a lot of history books, courses, and podcasts and here’s what I have learned about the Roman state, both republic and empire: it was run purely on the basis of raw power. That’s a nice family you have there — yeah, I’ll take it. Whatever I can do is what is legal and whatever I can prevent you from doing is illegal. And if I can get a mob together then I am in charge.

Any notion of human rights or morality or ethics is just a decorative rhetorical flourish that gets used to disguise the underlying and not terribly secret basis of the social order. If you are comfortable with the mafia, then you’d be right at home in the Roman state.

Effort “humps”

You know what makes me hate processing the mail and paying bills? Calling a billing phone number only to get a robot voice tree that starts out telling me the business hours … when I am calling during those business hours. Then, making me jump through a bunch of hoops to pay a goddamn bill. Used to be, I could pay this bill online without having an account. That’s good, because a lot of this stuff is in my wife’s name. You know, because men die sooner than women, and the patriarchy means that if it’s my name on everything, then she will wind up a widow with no credit score. So, she’s got good credit. But HIPAA and privacy and identity protection mean that they’re making it harder for me to pretend to be my wife. Which is fine, I guess, but what the hell? Why do they care whether she pays the bill or I pay the bill? They’re getting paid!

So, yeah. Burn down all the computers and let me just drop a sack of dollar coins on the desk.

Rebuild progress

Since I deleted my social media accounts (and I’m not sorry), it may be that the one or two humans who look at this blog may not know that I’m updating a different blog with status updates on our rebuild process. If you are at all interested, or would ever consider asking me the question, in person, “How’s the house coming along?” then you really ought to be checking out the household blog.

Offline VS Code – maybe?

I just went on a week-long vacation wherein I was programming, among other things, in locations with dodgy or nonexistent network connections. My offline Swift modifications worked great; so, local mirroring of packages is a total win!

But here’s a thing: a dinner conversation got me working in Flutter again. And, a few days before we left for this vacation, I got a note from JetBrains saying that they’re gonna adjust their subscription rates for, among other things, IntelliJ IDEA. Now, it’s been a few years since I did any Java development and I was starting to think maybe I would let my JetBrains subscription lapse. So I tried out Visual Studio Code with its Flutter plugins and rediscovered that Flutter really, REALLY, doesn’t like to be offline. So, okay, fair enough, I’m only even considering Flutter as a language for developing an app to be deployed to browsers, so the live operating environment requires a real Internet connection. Still, it’s kind of obnoxious.

Ooooh, and then, on the transcontinental flight home, I found that VS Code doesn’t like to attach to a Docker instance if there’s not an active connection to the Internet. Because, sure, I’ve got VS Code locally, and the instance is local, and in fact the container instance has had VS Code connected before, but I just restarted VS Code, and yet VS Code still wants to go off and download a debugger into the container. Just in case, you know, there’s been an update. And if it can’t, well, fuck you.

Which means that while I’m on this world cruise where the ship is in the middle of some ocean somewhere, God forbid I should need to reboot my computer.

Insidious Arrogance

There’s this problem that comes when one deals with a complicated system or process for a long time — one internalizes all the details and complexity, and starts to factor all the weird inner workings of the system into communication about the system. In human terms, this is where professional jargon comes from. There’s stuff to be said about that, but that’s not what I’m thinking about right this second.

What’s got me going off today is this swell warning from the documentation of a framework I’m using:

Warning
Combine’s Publishers.Concatenate operator, which this function uses, can leak when its suffix is a Publishers.MergeMany operator, which is used throughout the Composable Architecture in functions like combine(_:).

Here are some questions that come to mind:

  • Leak what? Memory? Threads?
  • Are all the functions in Composable Architecture which use this dangerous Publishers.MergeMany operator marked, so that I’ll know not to use them with this code?
  • The guys who develop The Composable Architecture are undoubtedly smart and skilled. But do they really think that it’s a great idea to be fully aware of all the implementation details behind every API call you make?

This last one is the part that gets me. This kind of deep knowledge is good, possible, and even necessary when you’re writing small, tightly scoped bits of code that you want to optimize like crazy. However, once you start writing code that spans multiple platforms and does lots of different things (such as, a desktop app, a phone app, a server app, the backing database, as well as load balancer and mail gateway) then there are just too many things to keep track of. Knowing all the implementation details of every API your code calls would mean taking weeks to write a single function, forgetting other stuff (like your wife’s name) to make mental room, or both.

And then, saying to consumers of your code, “I had to know all this stuff, so you should, too,” is just the capstone of arrogance.

Which is why that warning in the documentation really just means, to me, “Don’t actually call this function.”