Reply to note from "Martin J. Osborne" <martin.j.osborne@xxxxxxxxx> Sat, 14 Jan 2023 21:34:44 -0500 > Have you tried asking it something like "What are the advantages > and disadvantages of using the word processor XyWrite rather than > Microsoft Word?"? I just did, and here is the response: - - - - - XyWrite and Microsoft Word are both word processing software, but they have different features and capabilities. Here are some of the main advantages and disadvantages of using XyWrite rather than Microsoft Word: Advantages: XyWrite is known for its advanced formatting capabilities, which allow users to create complex documents with a high degree of control over layout and formatting. XyWrite supports a wide range of file formats, including its own proprietary format, which can be useful for users who need to work with a variety of document types. XyWrite is command-based, which can be faster and more efficient for experienced users who are familiar with the program's commands and shortcuts. Disadvantages: XyWrite has a relatively small user base compared to Microsoft Word, which means that there may be fewer resources and support available for users who need help or have questions. XyWrite's command-based interface can be difficult for new users to learn and use, especially when compared to Microsoft Word's graphical user interface. XyWrite is not as widely used as Microsoft Word and it is not as well-integrated into business and government as Microsoft Office. XyWrite development stopped in the early 90s and it's not updated to support new operating systems or hardware, making it less compatible with modern systems. It's worth noting that XyWrite was primarily designed for journalists and technical writers, and its strengths lie in advanced formatting and handling of long documents with a lot of formatting options. Microsoft Word is more widely used and has a lot of features and tools that are not present in XyWrite, it's more widely supported and it's more user-friendly for general users. - - - - - -- Carl Distefano cld@xxxxxxxxxx -=-=-=-=-=-= 15-Jan-23 03:01:45 Message [4 of 6] =-=-=-=-=-=- Return-Path: <xywrite-bounce@xxxxxxxxxxxxx> Date: Sun, 15 Jan 2023 05:03:35 +0000 (UTC) From: "John Paines" <dmarc-noreply@xxxxxxxxxxxxx> ("vf200") To: "xywrite@xxxxxxxxxxxxx" <xywrite@xxxxxxxxxxxxx> Message-ID: <787912710.1586366.1673759015445@xxxxxxxxxxxxxx> In-Reply-To: <3EDCFF676A564B3586BF900B7898642F@xxxxxxxxxx> References: <B6F00D27BF434D44845AC270A696C356@xxxxxxxxxx> <3EDCFF676A564B3586BF900B7898642F@xxxxxxxxxx> Subject: Re: Weekend fun X-Mailer: WebService/1.1.21062 YMailNorrin Reply-To: xywrite@xxxxxxxxxxxxx ------=_Part_1586365_1405744768.1673759015443 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable I asked it what the advantages of Xywrite are over Microsoft Word, to be a= nswered in Shakespearean sonnet form.=C2=A0 It doesn't quite grasp the latt= er and doggerel is (as usual) its preference, but here we go: Xywrite, a word processor of old,=20 Had features that made it quite bold.=20 It's speed and efficiency,=20 Were quite a rarity,=20 And made it a favorite, I'm told. Its flexibility was grand,=20 With macros that one could command.=20 It could handle ASCII,=20 In a way that was spry,=20 And editing was quite at hand. For programmers, it was a treat,=20 With its syntax that couldn't be beat. It's command line interface,=20 Was quite a good place,=20 For coding that was quite discreet. But alas, it is now outdone,=20 By Microsoft Word, which is number one.=20 Though Xywrite was great,=20 Its fate was sealed by fate,=20 And now it sees little to none. On Saturday, January 14, 2023 at 09:27:25 PM EST, Carl Distefano <cld@a= cedsl.com> wrote: =20 =20 I asked ChatGPT to regenerate the response a couple more times. Here are t= he results: - - - - -=20 (1) Text-based word processors, also known as command-line or terminal-based wo= rd processors, are operated through a command-line interface rather than th= rough a graphical user interface (GUI). These types of word processors are = considered to be better than GUI-based word processors for a number of reas= ons, including: =C2=A0 =C2=A0 Speed: Text-based word processors can be faster than GUI-base= d ones because they can be automated and do not require the use of a mouse = or other input device to navigate through menus and options. =C2=A0 =C2=A0 Customizability: Text-based word processors often allow for m= ore customization and flexibility, as users can create their own scripts an= d macros to automate repetitive tasks. =C2=A0 =C2=A0 Accessibility: Text-based word processors can be used on a wi= de range of devices, including servers and older computers, which may not h= ave the resources to support a GUI-based word processor. =C2=A0 =C2=A0 Lightweight: Text-based word processors are often lightweight= , and don't require as much resources as GUI-based word processors. =C2=A0 =C2=A0 Accessibility for blind users: Text-based word processors are= more accessible for visually impaired users, as they can be used with a sc= reen reader. It's worth noting that text-based word processors are not as user-friendly = as GUI-based ones, and may not have as many features or capabilities, but t= hey're useful in certain scenarios like automation or remote access. - - - - -=20 - - - - -=20 (2) A text-based word processor is a type of word processor that is controlled = and operated through commands or scripts, rather than through a graphical u= ser interface (GUI). Text-based word processors are often considered to be = better than GUI-based word processors for a number of reasons, including: =C2=A0 =C2=A0 Speed: Text-based word processors can be faster than GUI-base= d ones because they can be automated and do not require the user to navigat= e through menus or other graphical elements. =C2=A0 =C2=A0 Customization: Text-based word processors can be more easily = customized and tailored to specific needs because they are controlled by co= mmands or scripts, which can be modified or created as needed. =C2=A0 =C2=A0 Accessibility: Text-based word processors are accessible for = people with visual impairments, as they don't rely on graphical elements to= be used. =C2=A0 =C2=A0 Terminal-based: Text-based word processors can be run from a = terminal, which can be useful for developers and power users who want to in= tegrate the word processor into their workflow. =C2=A0 =C2=A0 Remote access: Text-based word processors can be accessed rem= otely via SSH, allowing for greater flexibility in how and where the progra= m is used. It's worth noting that text-based word processors are mainly used for a spe= cific use case, where the user is familiar with the command line interface = and doesn't need the visual aids that GUI provides. For regular users, GUI-= based word processors are more user-friendly and easy to use. - - - - -=20 The reference to SSH, on the third try, is remarkable, at least to me. Also= , note the variation in the wording of the closing paragraph in each of the= three instances of output. I hope that NI (natural intelligence) ethicists are eating their Wheaties. --=20 Carl Distefano cld@xxxxxxxxxx =20 ------=_Part_1586365_1405744768.1673759015443 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable <html><head></head><body><div class=3D"ydpe0d0d02ayahoo-style-wrap" style= =3D"font-family:Helvetica Neue, Helvetica, Arial, sans-serif;font-size:13px= ;"><div></div> <div dir=3D"ltr" data-setdir=3D"false">I asked it what the advantag= es of Xywrite are over Microsoft Word, to be answered in Shakespearean sonn= et form. It doesn't quite grasp the latter and doggerel is (as usual)= its preference, but here we go:</div><div dir=3D"ltr" data-setdir=3D"false= "><br></div><div dir=3D"ltr" data-setdir=3D"false"><div><div class=3D"ydp7b= 98bc1flex ydp7b98bc1flex-grow ydp7b98bc1flex-col ydp7b98bc1gap-3"><div clas= s=3D"ydp7b98bc1flex ydp7b98bc1flex-col ydp7b98bc1items-start ydp7b98bc1gap-= 4 ydp7b98bc1whitespace-pre-wrap"><div class=3D"ydp7b98bc1markdown ydp7b98bc= 1prose ydp7b98bc1w-full ydp7b98bc1break-words ydp7b98bc1dark:prose-invert y= dp7b98bc1light"><div><br></div><div>Xywrite, a word processor of old, <br><= /div><div>Had features that made it quite bold. <br></div><div dir=3D"ltr" = data-setdir=3D"false">It's speed and efficiency, <br></div><div dir=3D"ltr"= data-setdir=3D"false">Were quite a rarity, <br></div><div>And made it a fa= vorite, I'm told.</div><div><br></div><div><br></div><div>Its flexibility w= as grand, <br></div><div>With macros that one could command. <br></div><div= >It could handle ASCII, <br></div><div>In a way that was spry, <br></div><d= iv>And editing was quite at hand.</div><div><br></div><div><br></div><div>F= or programmers, it was a treat, <br></div><div>With its syntax that couldn'= t be beat. <br>It's command line interface, <br></div><div>Was quite a good place, <br= ></div><div>For coding that was quite discreet.</div><div><br></div><div><b= r></div><div>But alas, it is now outdone, <br></div><div>By Microsoft Word,= which is number one. <br></div><div>Though Xywrite was great, <br></div><d= iv>Its fate was sealed by fate, <br></div><div>And now it sees little to no= ne.</div></div></div></div></div><div><br></div></div><div><br></div> =20 </div><div id=3D"ydp7a21367fyahoo_quoted_4537854163" class=3D"ydp7a= 21367fyahoo_quoted"> <div style=3D"font-family:'Helvetica Neue', Helvetica, Arial, s= ans-serif;font-size:13px;color:#26282a;"> =20 <div> On Saturday, January 14, 2023 at 09:27:25 PM EST, Carl = Distefano <cld@xxxxxxxxxx> wrote: </div> <div><br></div> <div><br></div> <div><div dir=3D"ltr">I asked ChatGPT to regenerate the res= ponse a couple more times. Here are the results:<br clear=3D"none"><br clea= r=3D"none">- - - - - <br clear=3D"none">(1)<br clear=3D"none"><br clear=3D"= none">Text-based word processors, also known as command-line or terminal-ba= sed word processors, are operated through a command-line interface rather t= han through a graphical user interface (GUI). These types of word processor= s are considered to be better than GUI-based word processors for a number o= f reasons, including:<br clear=3D"none"><br clear=3D"none"> Sp= eed: Text-based word processors can be faster than GUI-based ones because t= hey can be automated and do not require the use of a mouse or other input d= evice to navigate through menus and options.<br clear=3D"none"><br clear=3D= "none"> Customizability: Text-based word processors often allo= w for more customization and flexibility, as users can create their own scr= ipts and macros to automate repetitive tasks.<br clear=3D"none"><br clear= =3D"none"> Accessibility: Text-based word processors can be us= ed on a wide range of devices, including servers and older computers, which= may not have the resources to support a GUI-based word processor.<br clear= =3D"none"><br clear=3D"none"> Lightweight: Text-based word pro= cessors are often lightweight, and don't require as much resources as GUI-b= ased word processors.<br clear=3D"none"><br clear=3D"none"> Ac= cessibility for blind users: Text-based word processors are more accessible= for visually impaired users, as they can be used with a screen reader.<br = clear=3D"none"><br clear=3D"none">It's worth noting that text-based word pr= ocessors are not as user-friendly as GUI-based ones, and may not have as ma= ny features or capabilities, but they're useful in certain scenarios like a= utomation or remote access.<br clear=3D"none">- - - - - <br clear=3D"none">= <br clear=3D"none">- - - - - <br clear=3D"none">(2)<br clear=3D"none"><br c= lear=3D"none">A text-based word processor is a type of word processor that = is controlled and operated through commands or scripts, rather than through= a graphical user interface (GUI). Text-based word processors are often con= sidered to be better than GUI-based word processors for a number of reasons= , including:<br clear=3D"none"><br clear=3D"none"> Speed: Text= -based word processors can be faster than GUI-based ones because they can b= e automated and do not require the user to navigate through menus or other = graphical elements.<br clear=3D"none"><br clear=3D"none"> Cust= omization: Text-based word processors can be more easily customized and tai= lored to specific needs because they are controlled by commands or scripts,= which can be modified or created as needed.<br clear=3D"none"><br clear=3D= "none"> Accessibility: Text-based word processors are accessib= le for people with visual impairments, as they don't rely on graphical elem= ents to be used.<br clear=3D"none"><br clear=3D"none"> Termina= l-based: Text-based word processors can be run from a terminal, which can b= e useful for developers and power users who want to integrate the word proc= essor into their workflow.<br clear=3D"none"><br clear=3D"none"> &nbs= p; Remote access: Text-based word processors can be accessed remotely via S= SH, allowing for greater flexibility in how and where the program is used.<= br clear=3D"none"><br clear=3D"none">It's worth noting that text-based word= processors are mainly used for a specific use case, where the user is fami= liar with the command line interface and doesn't need the visual aids that = GUI provides. For regular users, GUI-based word processors are more user-fr= iendly and easy to use.<br clear=3D"none">- - - - - <br clear=3D"none"><br = clear=3D"none">The reference to SSH, on the third try, is remarkable, at le= ast to me. Also, note the variation in the wording of the closing paragraph= in each of the three instances of output.<br clear=3D"none"><br clear=3D"n= one">I hope that NI (natural intelligence) ethicists are eating their Wheat= ies.<div class=3D"ydp7a21367fyqt5413552050" id=3D"ydp7a21367fyqtfd80518"><b= r clear=3D"none"><br clear=3D"none">-- <br clear=3D"none">Carl Distefano<br= clear=3D"none"><a shape=3D"rect" href=3D"mailto:cld@xxxxxxxxxx" rel=3D"nof= ollow" target=3D"_blank">cld@xxxxxxxxxx</a><br clear=3D"none"><br clear=3D"= none"><br clear=3D"none"></div></div></div> </div> </div></body></html> ------=_Part_1586365_1405744768.1673759015443-- -=-=-=-=-=-= 15-Jan-23 03:01:45 Message [5 of 6] =-=-=-=-=-=- Return-Path: <rjh@xxxxxxxxxxxx> Date: Sun, 15 Jan 2023 00:16:33 -0500 From: "Robert Holmgren" <rjh@xxxxxxxxxxxx> To: Carl Distefano <CLD@xxxxxxxxxx> Subject: Dropbox replacement demo Message-ID: <20230115051633.DH25K%rjh@xxxxxxxxxxxx> User-Agent: s-nail v14.9.23 This is a multi-part message in MIME format. --=-=jXCn1JzwoOUrsa8PxzEGDXvB_xoW-bM4PdOm=-= Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-ID: <20230115051633.R5UMT%rjh@xxxxxxxxxxxx> Here's a Proof of Concept demo of the most important element in a Dropbox replacement: detection of file system (creation, deletion, rename, edit) changes in a directory and, optionally, it's subdirs. The rest of the architecture, however complex superficially -- the file-naming protocols and distribution in various subdirs, how files are moved around and renamed, etc etc -- is pretty much something one can do blindfolded. And that's probably best done on the Linux side, where the piles of files accumulate. Put this in Notepad++ and take a good look at the code. Line 47 sends any changed file to the Linode's /home/cld/backups directory. As it stands, I'm not dealing with anything except _changed_ files. They can be changed by ANY program -- cmd.exe, notepad, anything. ANY change to a file sends it to the Linode. Of course, at present every change overwrites the previous iteration on the Linode -- no effort to manage it intelligently because I have no idea what sort of architecture you want -- this is simply proof of concept. But it works. A few notes: First of all, it's in PowerShell for now. Probably compile it in C+ later, but Powershell is the right place to develop it. Right now it's running in foreground, and there's some output to the console, e.g. to prove that it's actually running and working (all output would be suppressed eventually). Eventually you would probably want to start the finished product in background when you boot up your machine, and just let it run nonstop, like Dropbox does. *** CHANGE Line 5 ! **** Suggest that you assign it to a directory you do NOT use, e.g. C:\Users\CLD\tmp, to isolate it for initial testing purposes. Start Powershell in the same directory as fsw.ps1 (which can be anywhere). At the "PS" prompt, just command "fsw.ps1". fsw=FileSystemWatch. Change some of the files in your assigned directory or introduce new files and change them, THEN check /home/cld/backups, which should reflect all your change activity. Next step, before anything else, is to design the architecture. File-naming protocols, levels of backups, duration of backups, distribution of backups/deletions in discreet directories, etc. etc. I assume that you have most of this already, at your fingertips, and just wish to reproduce the existing system. But this is also an opportunity to rethink/redesign the whole thing. R. Attachment: <fsw.ps1> ----------------------- Robert Holmgren <RJH@xxxxxxxxxx> ----------------------- --=-=jXCn1JzwoOUrsa8PxzEGDXvB_xoW-bM4PdOm=-= Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="fsw.ps1" Content-ID: <20230115051633.-FsAr%rjh@xxxxxxxxxxxx> ## Just a teaser: find a path via Environment, e.g. to the Desktop folder: #$Path = [Environment]::GetFolderPath('Desktop') # OR, more to the point, specify literal path to a monitored 'folder' (in single-quotes): #$Path = 'F:\Dropbox' or 'C:\Users\CLD\tmp' $Path = 'F:\WOL' # Monitor which files (all='*'): $FileFilter = '*' # Monitor subfolders? $IncludeSubfolders = $true # File or folder properties you want to monitor: $AttributeFilter = [IO.NotifyFilters]::FileName, [IO.NotifyFilters]::LastWrite #SSH $scp="C:\Program Files\OpenSSH\scp.exe" $ssh="C:\Program Files\OpenSSH\ssh.exe" try{ $watcher = New-Object -TypeName System.IO.FileSystemWatcher -Property @{ Path = $Path Filter = $FileFilter IncludeSubdirectories = $IncludeSubfolders NotifyFilter = $AttributeFilter } # Define the code that should execute when a change occurs: $action = { # Modify this type information as required: $details = $event.SourceEventArgs $Name = $details.Name $FullPath = $details.FullPath $OldFullPath = $details.OldFullPath $OldName = $details.OldName # Type of change: $ChangeType = $details.ChangeType # When the change occured: $Timestamp = $event.TimeGenerated # Save information to a global variable so you can examine it after this script exits, e.g. $global:all = $details # Afterword, e.g.: PS F:\Dropbox> $all # Actions to take based on the nature of the change event. Example: compose a message: ## GET RID OF THIS IN PRODUCTION! Waste of time & resources $text = "{0} was {1} at {2}" -f $FullPath, $ChangeType, $Timestamp Write-Host "" Write-Host $text -ForegroundColor DarkYellow # *OR* execute code based on change type: switch ($ChangeType){ 'Changed' { "CHANGE" # PROOF OF CONCEPT: Push all changed files to CLDland in /home/cld/backups &"C:\Program Files\OpenSSH\scp.exe" -F C:\ProgramData\ssh\ssh_config -P 29997 -i C:\Users\CLD\.ssh\id_ed25519_CLDland2 $FullPath root@66.175.209.98:/home/cld/backups #E.g.: Rename old file at CLDland, write new file to CLDland #Do everything with SSH! } 'Created' { "CREATED" # Write file to CLDland!!! Or something like that ... } 'Deleted' { "DELETED" # Move file to a special deleted directory at CLDland? Or rename it deleted?? Something like that ... # To demonstrate that ALL changes are picked up even if handling an event takes a lot of time, we artifically extend the time the handler needs whenever a file is deleted Write-Host "Deletion Handler Start" -ForegroundColor Gray Start-Sleep -Seconds 4 Write-Host "Deletion Handler End" -ForegroundColor Gray } 'Renamed' { # This executes only when a file was renamed $text = "File {0} was renamed to {1}" -f $OldName, $Name Write-Host $text -ForegroundColor Yellow } # UNhandled change types default here: default { Write-Host $_ -ForegroundColor Red -BackgroundColor White } } } # Subscribe your event handler to all event types that are important to you. Do this as a scriptblock so all returned event handlers can be easily stored in $handlers: $handlers = . { Register-ObjectEvent -InputObject $watcher -EventName Changed -Action $action Register-ObjectEvent -InputObject $watcher -EventName Created -Action $action Register-ObjectEvent -InputObject $watcher -EventName Deleted -Action $action Register-ObjectEvent -InputObject $watcher -EventName Renamed -Action $action } # Start monitoring: $watcher.EnableRaisingEvents = $true Write-Host "Watching for changes to $Path" # We need a way to pause PowerShell while being responsive to incoming events. Use an endless loop to keep PowerShell busy: do{ # Wait-Event waits for a second and stays responsive to events; Start-Sleep in contrast would NOT work and ignore incoming events Wait-Event -Timeout 1 # Write a dot once/second to indicate we are still monitoring: ## GET RID OF THIS IN PRODUCTION! Waste of resources Write-Host "." -NoNewline } while ($true) } finally{ # When user presses Ctrl-C, stop monitoring $watcher.EnableRaisingEvents = $false # Remove event handlers $handlers | ForEach-Object { Unregister-Event -SourceIdentifier $_.Name } # Event handlers are technically implemented as a special kind of background job, so remove those jobs: $handlers | Remove-Job # Properly dispose the FileSystemWatcher: $watcher.Dispose() Write-Host "Event Handler disabled, and Finito" } --=-=jXCn1JzwoOUrsa8PxzEGDXvB_xoW-bM4PdOm=-=-- ®LM4DI¯®RM75DI¯ -=-=-=-=-=-=-=-=-=-= 15-Jan-23 E-mail Reply -=-=-=-=-=-=-=-=-= [2023-01-15=Su=16:10] from CLD@xxxxxxxxxx m2 "Robert Holmgren" <rjh@xxxxxxxxxxxx> re Re: Dropbox replacement demo hd In-Reply-To: <20230115051633.DH25K%rjh@xxxxxxxxxxxx> hd References: <20230115051633.DH25K%rjh@xxxxxxxxxxxx> ++ X:\Mail\ver-restore.png ®LD.¯ Reply to note from "Robert Holmgren" <rjh@xxxxxxxxxxxx> Sun, 15 Jan 2023 00:16:33 -0500 > Here's a Proof of Concept demo It works VERY nicely! Files added to my local dir appear instantly in /backups on the Linode. This is a wonderful start. > Next step, before anything else, is to design the architecture. > File-naming protocols, levels of backups, duration of backups, > distribution of backups/deletions in discreet directories, etc. > etc. I assume that you have most of this already, at your > fingertips, and just wish to reproduce the existing system. But > this is also an opportunity to rethink/redesign the whole thing. I'll briefly describe what I do now. This is my AI homebrew version-history, not Dropbox. It's simplistic but serves me well, though I'm certainly open to rethinking it. When I back up a file, the backup copy is renamed so that the fully-qualified path location and last-modified date-time (to the millisecond) of the original file are baked into the filename. For example, the file I'm typing into at the moment is "X:\MAIL\20230115.POP". The most recent backup of that file, as I'm writing, is "X}MAIL!20230115.POP-20230115153059129". Note that this is just a filename, no path. All backups are stored in a single directory, in my case H:\VerSA; it has no subdirs. If I want to restore a backup, I issue a command that lists the available prior versions in a table (see attached). It will be immediately obvious that the table is easily constructed from the directory of time-stamped backups. In my current system, a backup is triggered by one event only: when a file is (re)written to disk. As of now, *automatic* backups only happen when I SAve a file in XyWrite, but I can and do put other files into the backup folder with a manual command. Deletion, renaming, and editing of the file are non-events. That's it in a nutshell. Well, there are other features: There's a setting that determines the frequency of backups. I set it at 2 minutes, so that any SAves that occur within 2 minutes of the last backup are *not* backed up. The H:\VerSA directory is self-maintaining. Backups are kept for 60 days (user-adjustable), after which they are moved to H:\VerSA2. The VerSA2 directory is allowed to grow to 15 GB (also user-adjustable), after which the oldest files therein are recycled or deleted. I've had this system in place for a year. My VerSA directory is about 3 GB and VerSA2 is 5.5 GB. The oldest file in VerSA2 is a copy of SETTINGS.DFL that I edited on 1/14/2022. Maybe my renaming convention is relevant for the Linode Dropbox substitute, maybe it's not. Renaming happens unobtrusively via an AI script that runs constantly in the background (using 0.01% of the CPU). In any event, fsw.ps1 is great foundation because it emulates the Dropbox model of hands-off operation. I need to think further how backups should be triggered -- probably some of the current non-events should become events -- and of course I welcome your thoughts. C.