DVCS Fossil

I recently decided I wanted to stop using GitHub for my personal programming projects. I’m not entirely sure why I decided that; there are lots of unexamined biases involved in the decision, I’m sure, and I’m not certain that it’s actually a good idea, so we’ll see where this lands me.

At any rate, I was looking, once again at Fossil and decided to give it a try. Basically, the reason I even consider moving off git is that I like having an issue tracker, and git doesn’t bundle one of those. So, if I stick with git, then I have to manage two things: a repo server and an issue server. Fossil does both, so that’s kind of interesting.

I’ve got Fossil running as a server on my Home Assistant, so all the repos that it has get rolled into the HA nightly backups. So that’s pretty good. Like, if my computer caught fire and GitHub went down, um, I guess I’d have my own Time Machine backups to restore from, but that’s a thin thread to hang from.

Anyway, I’m still in that initial phase of using a new tool, where I am figuring out how it works before I even consider personalizing it to work the way I want it to. And here’s where I run into a major problem. The default Fossil configuration comes with one issue report: “List all the issues.” The web UI lets you sort by various fields, but the way you create a new report is…you write SQL. You know, once upon a time, twenty years ago, I wrote SQL as part of my daily job. I’m not afraid of SQL. And yet, one of the things I had when I did that was…a freakin’ schema. So now I get to dig around and find that so I can write a report to “List all the issues that are not closed”.

And this is probably only going to be like 5 minutes’ work, but still. It’s annoying. And the user experience of the product is, overall, what I’d call “user hostile” if not downright “user abusive”. Do I want to fix all that? I dunno. Maybe. We’ll see. Maybe making Fossil feel more comfortable for me will be the next project I sic my coding assistant onto.

OMG, Reid, Stop It

So, I got this email from my friend, Reid Hoffman. I’d stick some scare quotes in
there, but you know, he sends me stuff, he’s on my Christmas card list, and I really
do think he’s a decent human being. Even if he’s so amazingly busy that he doesn’t
actually have time for things that aren’t on his agenda. I love this guy, even though
he sometimes needs to pull his head out of…somewhere. You know. He’s in mi corazón.

Anyway:

Email pimping a Substack and a WaPo article. “AI For All Americans”

America needs to lead in AI, and that leadership needs to deliver greater prosperity and economic security for Americans. We should hold ourselves accountable for both. People should be able to see what this progress means for their families and communities, whether that’s better access to medical guidance, more affordable expertise, or new opportunities to learn and earn.

OMG, Reid, are you running for office? WTF is this with “…for Americans,” and, “…prosperity…”? How about, “…for HUMANS?”

Here’s what I think, and I know that Reid isn’t going to read this but maybe his AI agent is (seriously, dude was at my wedding but doesn’t answer my emails). So: go back to the basics. Solve actual problems that real humans have. Humans matter. Other people matter. I know you know this, and I know you are directing your strategic thinking around this, but seriously: the AI communication is clearly targeted at misanthropic techbros. Stop trying to solve the problems of psychopaths (e.g.: hate dealing with people? Let your AI agent do it for you!) and think about actual humans and their actual problems! For instance: how is AI (which is, let’s remember, just a really fancy and really expensive text autocomplete) going to help me deal with the fact that the woods keep encroaching on my house and winter is coming and there are mice in the crawlspace snd my church needs a new sewer line and there are groceries and I’m in the middle of fucking nowhere and… life, man. There’s a lot. Everyone wants something, and I’m drowning in paper. WTF can Claude or ChatGPT or Gemini or Siri do about the fact that my trash needs taking to the curb? Nothing. The glowing rectangle that’s displaying this stuff? It has nothing to do with the real material world. There are bridges, sure, but there is no post you can make to social media that will stop the war in Ukraine.

Xcode project framework: Tuist

I saw a couple of tools (mise, tuist) in use at NSScreencast and thought I’d try them out. They seem kinda useful, but it’s possible (likely) that I’m just not using them to their full potential, since they solve some problems that I sometimes have, and introduce new friction that I usually don’t have.

Continue reading “Xcode project framework: Tuist”

Infrastructure Project: Gate Opener Battery Case

We put an electric gate opener on the gate on our driveway. There’s been a lot of tweaking and configuring, but it basically works. The solar panels, though, are insufficient to recharge the batteries after a day of contractors coming and going — this is one of the drawbacks of living in the redwood forest; there’s lots of shade at the perimeter of our property. The gate opener control box is located in a pretty inconvenient location (up a steep slope) and anyway, the batteries are in a box that is kept closed with screws, which means that changing the batteries involves a walk through the forest, up a hill, with a screwdriver and a pair of batteries, as well as running the very real risk of dropping one of the said screws into the forest mulch and needing to grovel around for it. Also, depending on how much indirect sunlight the solar panels got, the batteries may need to be changed today. Or not.

Continue reading “Infrastructure Project: Gate Opener Battery Case”

App Design Project: Inbox Assistant

The other day, Miguel de Icaza announced a pair of Swift packages to do email stuff. This, of course, makes me happy. I love email. Email is one of the greatest technologies in existence for the sometimes online computer: it gracefully handles periodic disconnections, so it’s my go-to for thinking about how to deal with Internet connectivity out in the woods.

Continue reading “App Design Project: Inbox Assistant”

Feature: Editing Preview

…or, WYGIWYG

Context: in the Olden Days, I used a word processing application to write papers for school. The computer I used didn’t have pixel-level display, so rather than rendering the document as it would appear on my printer, I just got to edit the text along with the embedded control codes to turn on and turn off formatting – notably, at that time, things like underlines (for titles) and superscripts (for footnotes). I would frequently need to print out my paper just to see if the lines were long enough or too long (no auto-wrapping then!) or to make sure I’d remembered to turn off the formatting, or that I’d used the correct escape sequence.

Today, most people prefer to use a document editor that shows them, on their computer’s screen, what the output would look like if they were to print the document right now on their relatively high resolution printer. It may surprise some folks to learn that this represents a far lighter mental load than the older model, where the person writing the document had to maintain a mental model of what the output was going to look like, while simultaneously reducing the likelihood of a mismatch between the mental model (the preview) and the output! The folks who are surprised by this often advocate writing their papers using Emacs and LaTeX.

Enter Inspector Well, Actually

Storing the “turn on/off bold” control sequences in the file but only displaying the results on the screen is great for people like me, who just want to style their text, but it annoys the folks who try to solve underlying problems. See, they would argue that I don’t really want to make something bold typeface, actually, I want to emphasize it. So there really ought to be a semantic tag that marks that content as emphasized and the way that gets rendered should be up to the output device, or the reader or whatever. So we get HTML and SGML and LaTeX, but that solves a problem that most of us who are me do not have. What I want is to embed styles and not semantics, and I want to see what the output is going to look like so I can be sure I’ve done the right things. HTML is just over the top complicated because of Historical Reasons and Trying To Do It All, so for a kind of abbreviated, presentation-only, easy-to-manipulate compromise we have Markdown.

Even with Markdown, though, there’s still embedded styling sequences. So it’s kind of handy to have a preview, like maybe an editor pane that shows the actual document you’re editing and then a preview pane that shows what that document as it exists right now would look like. And a lot of people who write editors agree: SubEthaEdit does this, as does MacDown. Heck, even Visual Studio Code does this. BBEdit supports a preview, although what it really does is generate an HTML file and hand it off to whatever web browser you want, so, less a preview and more of a “I’ll save you the paper and ‘print’ it to your browser.”

But, let’s say you’re developing Swift code on a Mac and you want to document the project in, oh, a README.md file. Unless you’re targeting a non-Apple platform (Swift on server, perhaps) the odds are that you’ll be using Xcode to do it. Does Xcode understand Markdown? Absolutely! It’ll do syntax highlighting and adjust typeface sizes so that headings are big and red and things are bold or whatever. But preview? Nah, that’s for suckers. I feel like Xcode is really Apple’s way of saying the quiet part out loud, sort of like MPW in the old days: “If you know, you know, and if you don’t, then suck on it.” 

Local or Cloud? I Dunno.

This is more of a whinge than anything constructive. For all three readers who follow this blog, feel free to skip this entry unless you’re dying to find out why I haven’t made any progress on my current coding project.

Continue reading “Local or Cloud? I Dunno.”