Here’s a (docker) image for you

We’re getting closer to a long vacation with intermittent Internet, so I’m going through all my developer tools, making sure that everything’s ready. Now that I know how to get VSCode to persist its downloaded stuff between runs in a given container (make sure there’s a .vscode-server/extensions directory in the container user’s $HOME), I wanted to see if I could get SwiftLint working as well.

Continue reading “Here’s a (docker) image for you”

Oh, Xcode

Okay, so, Mastodon. Yay, there’s a web interface! Great, but…do you know anyone who wants to interact with, say, Twitter, via the web interface and not some app that makes it easier to deal with? Right.

Enter Mastonaut, except it got started before SwiftUI was really a thing for macOS, so it’s all AppKit and storyboards and NSManageMemoryBecauseThatsWhatRealProgrammingIsAbout.

And at some point yesterday I saw some yahoo claiming that because he’d never made a complex application with SwiftUI then it couldn’t be done.

And then there’s MastodonKit, which purports to be a library that wraps the Mastodon API, but which is missing stuff and which doesn’t seem to merge pull requests. But that’s okay because you can just fork it and do your own thing, never mind the overhead of tracking any API changes or bug fixes that other people might find.

And what’s really cool is how really well Xcode doesn’t deal with git submodules and Cocoapods and swift packages. Especially when someone changes one of those things and checks it in and then you pull that change.

Mysteriously and for no reason, I can no longer build this app. So…okay, roll my own. Because that’s what open source is all about, isn’t it? Being unable to reproduce someone else’s code so you just ignore it all?

I’m Dead, We Have So Many Forks

The post title is something one of our kids said, years ago, when our utensils drawer contained the combined tableware of two adult households. They were spoiled for choice.

Anyway, since suddenly people I actually want to stay in touch with have started showing up on Mastodon and following me, I have started paying attention to the client app I use to interact with it. The original creator released it as open source and walked away, but it’s been picked up by a few people. So, I started feeding code updates back to the community. But, and here’s the first thing, which copy of the source code is the one that I should be feeding changes to?

Continue reading “I’m Dead, We Have So Many Forks”

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.