Sunday, July 23, 2023

CollabGPT

This week I’ve been concentrating on setting up my file synchronization and versioning system.  For this, I’ve mainly been consulting with ChatGPT.  I originally wanted to hire an actual person to help me design and set this up, but I couldn’t find anyone who was both willing to work on my home system—what with me not being a business—and who seemed trustworthy (no shortage of shady characters, of course, but working on your network necessarily involves giving out your password, which is probably a Bad Thing to do in the case of randos on the Internet).  So I eventually decided to just ask ChatGPT and do whatever it said.

Well, perhaps not whatever it said, but, if you’re willing to put in a bit of effort to chastise it when it says something stupid and challenge it when it says something unlikely, you can actually get quite a lot out of it.  And it’s useful both in the design phase as well as the implementation phase.  Just about the only downside is that you have to start every chat fresh from ground zero (though there’s a new experimental feature which helps with that, a little).  And you can’t get around that by just staying in the same chat forever, because ChatGPT has a limited number of “tokens” (roughly equivalent to words) that it can remember before it starts forgetting the earliest parts of the conversation.

Still, you can get quite a lot accomplished even so.  Thanks to ChatGPT, I now have a system whereby I use Syncthing to handle synchronization across computers, and also provide versioning so that I can go back to the previous version of any file.  Now I’m working on getting that backed up to the cloud.

One of the fun things about ChatGPT’s limited memory is that sometimes you have to explain to it what it already figured out.  Today I started a new chat on this topic, as the old one was getting pretty full.  I told it:

I’ve designed a file synchronization and versioning system that works like this:
* There are seven shares, each of which is a filesystem with gigabytes of files.
* Haven and Avalir each have copies of six of the seven shares (there is one share that is not needed on each of those machines).
* Files are bidirectionally synchronized between Haven and Avalir using Syncthing.  No file versioning is used for these two servers.
* Zadash has a copy of all seven shares, with full file versioning (by which I mean keeping a copy of all versions forever).
* Editing of the files is done on Haven or Avalir only.  Since Syncthing only stores versions for remote edits, not local edits, if I edited files on Zadash, it would keep the previous version.  I do mount the shares from Haven to Zadash JIC I need to edit on Zadash, but the Syncthing copy is for archival purposes only.

To which ChatGPT responded:

You’ve outlined quite an advanced file synchronization system, ...

And I’m like, bitch, this was all your idea!

Anyways, that’s how my week went.  Next week, a longer topic, hopefully.