This recipe is another recipe in my muffin collection that has been developed over time — in this case, with the help of chatgpt.com (AI chatbot) to provide my mom with some variety. Interestingly, this recipe started as a goat cheese omelette — which I occasionally make for Mom — but which came about as a result of Mom asking last year “Can you make it less eggy and with more flour?” I still have no idea if she was providing raw, unfiltered, and candid feedback regarding taste and texture, or if she was employing some dry humour to ask me to come up with another kind of muffin using goat cheese. 🙂 Either way, Mom was pleased with the result!
Conveniently, this recipe is also tailored to making six muffins at a time (instead of the customary dozen muffins) and in a countertop convection oven. This avoids turning the making and baking of these tasty muffins into a grand affair by not having to heat up a conventional oven, which might well create a strong temptation to give in to notions of “well, the big oven is heated up … what else should I bake while I’m at it?” (Of course, should you want to make more, or otherwise engage in such a grand affair, all you need to do is scale it up to 12, 18, 24 or more units!)
Note that a small handful of the photos were taken out of order, and that in sorting the photos there are also some minor jumps in my file numbering; all is presented as below for the sake of the narrative.
Making the goat cheese muffins:
All the ingredients were taken out:
Ingredients taken out
I believe that I performed the following slightly later, but now is a good time to turn on the countertop convection oven:
Countertop convection oven turned on
A mixing bowl was taken out:
Mixing bowl taken out
Flour and a measuring cup were taken out:
Flour and measuring cup taken out
Flour was measured out:
Flour measured out
The flour was transferred to the mixing bowl:
Flour transferred to mixing bowl
Flour transferred to mixing bowl
Flour transferred to mixing bowl
Flour transferred to mixing bowl
Baking powder and measuring spoons were taken out:
Baking powder and measuring spoons taken out
Baking powder was measured out:
Baking powder measured out
The baking powder was transferred to the mixing bowl with the flour:
Baking powder transferred to mixing bowl
Baking powder transferred to mixing bowl
Baking powder transferred to mixing bowl
Salt and a measuring spoon were taken out (oh my — yet another surface in the kitchen to clean!):
Salt and measuring spoon taken out
Salt was measured out:
Salt measured out
The salt was transferred to the mixing bowl with the flour and the baking powder:
Salt transferred to mixing bowl
Salt transferred to mixing bowl
Salt transferred to mixing bowl
Salt transferred to mixing bowl
Olive oil and a measuring spoon were taken out:
Olive oil and measuring spoon taken out
The olive oil was measured out:
Olive oil measured out
The olive oil was transferred to the bowl with the flour, the baking powder, and the salt:
Olive oil transferred to bowl
Olive oil transferred to bowl
Olive oil transferred to bowl
Olive oil transferred to bowl
Olive oil transferred to bowl
A bottle of honey, which was starting to crystallize and kept upside down to aid in being able to squeeze it out of the bottle, was taken out, along with a measuring spoon:
Honey and measuring spoon taken out
The honey was measured out:
Honey measured out
The honey was transferred to the mixing bowl with the flour, the baking powder, the salt, and the olive oil:
Honey transferred to bowl
Honey transferred to bowl
(By the time I’d finished measuring out the honey, I decided it best to re-liquify the honey in the microwave oven over several short 15 second heating bursts.)
Next, an egg was taken out:
Egg taken out
The egg was cracked on the side of the mixing bowl:
Egg cracked on edge of bowl
The egg was transferred to the mixing bowl with the flour, the baking powder, the salt, the olive oil, and the honey:
Egg transferred to bowl
Milk and a measuring cup were taken out:
Milk and measuring cup taken out
The milk carton was opened up:
Milk carton opened
Milk was measured out:
Milk measured out
The milk was transferred to the bowl with the flour, the baking powder, the salt, the olive oil, the honey, and the egg:
Milk transferred to bowl
Milk transferred to bowl
Milk transferred to bowl
Milk transferred to bowl
A fork was brought to the bowl in order to mix the ingredients:
Fork brought to bowl for mixing
The ingredients were thoroughly mixed:
Ingredients thoroughly mixed
The mixing bowl with the muffin batter was put aside for a moment.
A bowl was taken out; yes, I seem to have taken the photo at a funny angle.
Bowl taken out
A package of goat cheese and a very sharp knife were taken out, and cut in two in order to have two roughly 56g (2oz) pieces; the other piece was placed in a bag, returned to the fridge, and in fact was used the following morning for a second batch of goat cheese muffins:
Goat cheese and sharp knife taken out, and cheese divided in two
The goat cheese’s packaging was opened in order to allow for the use of the cheese:
Cheese package opened up
The goat cheese was transferred to the bowl:
Goat cheese transferred to bowl
The goat cheese was cut up into small chunks with a knife:
Goat cheese cut up into chunks
The bowl of goat cheese chunks was brought over to the bowl of muffin batter:
Chunks of goat cheese brought to bowl of muffin batter
… and the goat cheese chunks were transferred to the bowl with the muffin batter:
Goat cheese transferred to bowl of muffin batter
The goat cheese was folded into the batter:
Goat cheese folded into muffin batter
The goat cheese muffin batter was again put aside for a moment.
Muffin paper liners and a muffin baking tin were taken out:
Muffin liners and muffin baking tin taken out
Paper muffin liners were placed in the muffin tin wells:
Paper muffin liners placed in muffin tin wells
The bowl of goat cheese muffin batter was brought over to the muffin tin with the muffin liner papers:
Bowl of goat cheese muffin batter brought to the muffin tin with paper muffin liners
Goat cheese muffin batter was picked up with a spoon:
Goat cheese batter scooped up for transfer to muffin baking tin
Goat cheese muffin batter was transferred to one of the paper muffin liners:
Goat cheese muffin batter transferred to muffin liner
Goat cheese muffin batter transferred to muffin liner
The goat cheese muffin batter was divided roughly equally amongst the muffin paper lined wells:
Goat cheese muffin batter transferred to muffin liners
Once the muffin tin wells and paper liners were filled, the goat cheese muffin batter mixing bowl was empty:
Mixing bowl empty
The door to the now-preheated countertop convection oven was opened …
Countertop convection oven door opened
… and the filled muffin baking tin was placed in the countertop convection oven:
Filled baking tin placed in countertop convection oven
The countertop convection oven door was closed, and a timer was set for 17 minutes:
Timer set for 17 minutes
While I was waiting for the muffins to bake, I took out a cooling rack, and placed it on the counter:
Cooling rack taken out
While the muffins were baking, I could see them rising in the countertop convection oven — and a reflection of the cooling rack in the window!
Muffins rising while baking
When the timer ran out …
17 minute timer finished
… the goat cheese muffins were nicely baked!
Goat cheese muffins baked
The baked goat cheese muffins were taken out of the countertop convection oven, and placed on a cutting board on the counter:
Goat cheese muffins taken out of countertop convection oven
While they were still warm to hot, the fresh goat cheese muffins were taken out of the muffin baking tin and placed on the cooling rack:
Goat cheese muffins placed on cooling rack
After a bit of cooling, a fresh muffin was taken from the cooling rack, and the paper muffin liner was removed from the goat cheese muffin:
Paper muffin liner removed from goat cheese muffin
The goat cheese muffin was sliced in half, exposing the chunks of goat cheese inside:
Goat cheese muffin sliced in half, exposing chunks of goat cheese inside
The piece of goat cheese muffin was placed on a plate, and served to Mom:
Goat cheese muffin piece placed on plate for serving
A short while after Mom had eaten the still warm and fresh out of the oven goat cheese muffin piece, she told me that she had been dreaming of having another goat cheese muffin with her supper. High praise indeed!
As for the rest of the muffins — five whole goat cheese muffins and the unserved half goat cheese muffin, their paper liners were removed:
Paper muffin liners removed from goat cheese muffins
At this point, a whole goat cheese muffin was put aside for Mom’s supper; she later told me that she had indeed fully enjoyed the goat cheese muffin during her supper!
A freezer bag was taken out and identified:
Freezer bag taken out and identified
The bag was filled with the remaining four and a half goat cheese muffins:
Goat cheese muffins placed in freezer bag
And finally, the bag of goat cheese muffins was placed in the freezer, by happenstance alongside two other kinds of muffins — bran muffins, and strawberry jam muffins, both made earlier in the week:
Goat cheese muffins placed in the freezer alongside other muffins
And as for the rest of the goat cheese package? Mom got more freshly baked goat cheese muffins the following morning!
This recipe was developed and added to my collection of recipes as a result of chatting with an online AI chatbot discussing church culture, during which the chatbot listed at one point some typical desserts to be found at church potluck luncheons. It listed the item which is the subject of this post as “Matrimonial Squares”. My interest was piqued because I did not know what “Matrimonial Squares” were, as well as said name telling me nothing of what the dessert was. As such, I bemusedly asked whether it was a dessert to be typically served as part of a wedding feast, or if there was something somewhat more prurient to them along the lines of being considered an aphrodisiac! I got a response along the lines of their description — date squares! — and how the name was a florid and traditional name meaning how well all the parts “marry together to make an ideal dessert”, an absolutely church-safe name. 🙂
Incidentally, this recipe is vegetarian tending toward vegan if you use margarine (as I did) instead of butter.
This batch was the second batch made at the cottage during my holidays, and will likely be served at the lake association BBQ later this week.
Setting up:
First, I decided to take out all the ingredients:
Ingredients taken out
Although I actually did this a little later, now is a good time to preheat the oven:
Preheating oven
An 8″ x 8″ baking pan and a piece of paper towelling were taken out:
Paper towelling and baking pan taken out
The paper towel was taken over to the tub of margarine, and some margarine was scooped up with my hand and the paper towel:
Paper towel taken over to tub of margarine
The paper towel and margarine were taken over to the baking pan:
Paper towel and margarine taken over to the baking pan
… and the margarine was slathered onto the surfaces of the baking pan:
Margarine slathered over all surfaces in the baking pan
Margarine slathered over all surfaces in the baking pan
The baking pan was put aside.
Preparing the date filling:
Dates and a knife were taken out — in this case dates I had been keeping in the freezer, hence the fuzzy condensation on the bag:
Dates and a knife taken out
The dates were pitted:
Pitted dates
At this point, I took out a kitchen scale and a bowl, and set the reading to zero with the bowl on the scale …
Tare weight of bowl on scale
… so that I could weigh out the required amount of pitted dates, which I kept on pitting until I had enough pitted dates:
Weighed out pitted dates
At this point, I should have chopped the dates up a bit, but I forgot, and no matter.
The pitted dates were transferred to a pot:
Transferring the pitted dates to the pot
Pitted dates transferred to pot
Water was measured out:
Drawing water into measuring cup
Water measured out
The water was transferred to the pot with the pitted dates:
Transferring water to pot with pitted dates
Transferring water to pot with pitted dates
Transferring water to pot with pitted dates
Lemon juice was taken out:
Lemon juice taken out
The lemon juice was measured out:
Lemon juice measured out
The lemon juice was transferred to the pot with the pitted dates and water:
Lemon juice transferred to pot with pitted dates and water
A burner on the stove was turned on to medium heat:
Stove turned to medium heat
The pot of pitted dates, water, and lemon juice was placed on the burner:
Pot of pitted dates, water, and lemon juice
The pitted dates were largely left alone for the next several minutes, although I kept an eye on the pot and occasionally stirred it.
Making the oat crumble base and topping:
Flour was taken out:
Flour taken out
Flour was measured out:
Flour measured out
The flour was transferred to a mixing bowl:
Flour transferred to mixing bowl
Flour transferred to mixing bowl
Oats were taken out:
Oats taken out
Oats were measured out:
Oats measured out
The oats were transferred to the mixing bowl with the flour:
Oats transferred to mixing bowl with flour
Oats transferred to mixing bowl with flour
Oats transferred to mixing bowl with flour
Brown sugar was taken out:
Brown sugar taken out
Brown sugar was measured out:
Brown sugar measured out
The brown sugar was transferred to the mixing bowl with the flour and the oats:
Brown sugar transferred to mixing bowl
Baking soda was taken out and measured out:
Baking soda measured out
The baking soda was transferred to the mixing bowl with the flour, oats, and brown sugar:
Baking soda transferred to mixing bowl
Baking soda transferred to mixing bowl
Salt was taken out and measured out:
Salt measured out
The salt was transferred to the mixing bowl with the flour, oats, brown sugar, and baking salt:
Salt transferred to mixing bowl
Salt transferred to mixing bowl
Another bowl was placed on my kitchen scale, and the display set to zero:
Bowl placed on scale and tare weight set
Margarine was measured out:
Margarine measured out
The margarine was transferred to the mixing bowl with the flour, oats, brown sugar, baking soda, and salt:
Margarine transferred to mixing bowl
An electric mixer was brought to the mixing bowl:
Electric beater brought to mixing bowl
The ingredients were mixed thoroughly:
Ingredients thoroughly mixed
The ingredients in the bowl were roughly divided into two parts:
Ingredients in bowl divided into two parts
Mounting the date squares:
About half of the oat crumble mix was transferred to the baking pan:
Oat crumble transferred to baking pan
The oat crumble base was spread out over the whole surface of the baking pan:
Oat crumble spread over base of baking pan
The oat crumble base was flattened with an egg flipper:
Oat crumble base flattened
Oat crumble base flattened
At this point, after having only occasionally glanced at and stirring the dates in the pot on the stove, I took the pot off the stove, the mix having turned into a nice jammy consistency:
Cooked date filling with a jammy consistency
The cooked date filling was transferred to the pan with the oat crumble base:
Cooked date filling transferred to pan with oat crumble base
The date filling was spread roughly evenly over the base with a spoon:
Spreading the date filling with a spoon
Spreading the date filling with a spoon
The rest of the oat crumble was transferred on top of the date filling:
Second half of oat crumble transferred to baking pan
The oat crumble topping was spread roughly evenly over the date filling:
Oat crumble spread over date filling
I gently patted down the topping with my hand; note that I said “gently”:
Gently patting down the oat crumble topping
Patted down oat crumble topping
Baking the date squares:
The pan was placed in the preheated countertop oven, and a timer was set to about 35 minutes:
Baking pan placed in countertop oven and timer set to 35 minutes
When the baking was finished, the baking pan was taken out of the oven and placed on a cooling rack:
Baking pan placed on cooling rack
Once cooled (I did move the cooling along by placing the pan in the fridge for a while), the whole large date square was removed from the pan. Yes I tasted the bit of the base that was left behind: It was yummy!
Large date square removed from baking pan
I began cutting the large piece off-center, with a goal of cutting a 5 x 5 grid for a total of 25 pieces:
Cutting the date squares, starting from off-centre
Three more slices were made, in order to have five long bars:
Five long bars
The cutting board was rotated 90 degrees so as to continue with four more cuts, to have a total of 25 squares:
25 date squares!
… and since I implied that I still had a few leftover from last week, and that I outright suggested that this batch would be placed on a dessert table at this week’s lake association BBQ, I bagged up the freshly-baked date squares, and placed them in the freezer for later in the week:
Date squares bagged
And yes, of course they’re yummy — I got to taste a bunch of crumbs while I was cleaning up!
I started using the internet in 1994, using a dial-up account that offered access through a telnet unix terminal using the command-line.
One of the commands / pieces of software I discovered was talk, a basic one-on-one chat programme:
talk programme
Besides amusing myself by using it to chat with my brother when he was online at the same time as I, it actually had a useful application.
I was involved in Rovers at the time, a young adults organization, and I had put up a web page describing the Rover Crew to which I belonged on my website. I was contacted by a Rover in Adelaide, Australia by email in the spring of 1995; he’d found my website, and he was temporarily moving to Montreal in Canada where I live, to work. He was looking for a few building blocks for life outside of his new job in a new country. We negotiated, by email, for a live chat; as I recall, he had suggested IRC, but I was not familiar with IRC at the time, so I suggested talk, to which he reluctantly but nonetheless agreed. (A minor hiccup was that I had suggested a time for the chat as a function of GMT; I was online at what I thought was the appointed hour, but he only showed up an hour later. I was fortunately still online; I figure that I hadn’t properly taken Daylight Savings Time into account when I suggested the hour.)
I live in Montreal (A tag, upper right) in eastern Canada; my friend was living in Adelaide (B tag, lower left) in southern Australia
After our little chat, we continued exchanging emails leading up to his arrival in Montreal. He came to Montreal, joined my Rover Crew, stayed for about three and a half years, and I adopted his cat when he moved back to Australia.
What this post is really about:
Fast forward to early 2026, and I wanted to contribute a short presentation at my Linux club. I looked at some of the recent short presentations on regular everyday linux commands, and I was inspired to install talk on a couple of my machines, document the process, and put together a short presentation in which I would replicate the installation live while inviting others to install talk at the same time as I, and then initiate a chat with someone in the room.
This led me down a rabbit hole towards apparent failure (with a surprise ending).
(Note:Most of the screencaps for this post were created ex-post facto, be they principally on one computer, or on a second computer.)
I did a quick web search on talk, and I found a page at the Geeks for Geeks website(here’s my archive) — critically, dated in July, 2025. This site was a great source of inspiration: It contended that installing talk could be done, using my Linux distribution (Fedora), the article was relatively current, and the procedure seemed quite simple.
The first hint that the Geeks for Geeks procedure wasn’t going to work should have been that for Fedora (and RHEL), the article invoked the yum command. Despite the fact that Fedora has been using dnf since Fedora 22 in 2015, and RHEL 8 in 2019 (DNF(software) on Wikipedia — here’s my archive), this didn’t faze me since other than noticing it, I knew of yum and its historic use — in fact, I was around using yum during a substantial period of said historic use — and in my mind the two are interchangeable. (Indeed they are to a nominal degree, since at least for RHEL, according to the Geeks for Geeks website, yum is aliased to dnf (here’s my archive.) Oh, no matter that the same website, despite knowing that yum is obsolete, is still using it in its articles as a current command. 🙂 )
note: for the rest of the article, whenever an instruction needs to be done with root privileges, I did so directly as root, instead of using the sudo command.
Installing talk and talk-server:
I began following the instructions for installing talk:
dnf installtalk from the Fedora repositories
… and for installing talk-server:
dnf install talk-server from the Fedora repositories
This seemed good. I figured that if the software was in the Fedora repositories and that it installed, it should work.
talk package page in the Fedora repositories
Invoking the xinetd daemon:
I then followed the instructions to create two files called talk and ntalk in the /etc/xinetd.d directory. Another hint that this exercise wouldn’t work was that the /xinetd.d directory didn’t exist on my system, and that I had to create it; but, I forged on. I created the directory, and then the specified files:
/etc/xinetd.d/talk file created
/etc/xinetd.d/ntalk file created
The next instruction was to restart the xinetd.d server:
Failed effort to restart the xinetd.d service
Receiving an error message that the xinetd.d.service was not found finally made me a bit suspicious, and I checked if and when the xinetd.d service had been deprecated in Fedora. The last reference in Fedora I could find was the xinetd.d package for Fedora 33 (here’s my archive), while a post in Reddit suggested, without apparent reference, that xinetd.d was deprecated in Fedora 34 — in April, 2020, about five full years before the Geeks for Geeks article describing how to install the talk command was written!
Reddit comment stating (without reference) that xinetd.d was deprecated in Fedora 34
So at this point, there were two prior points in time at which I should have figured that the Geeks for Geeks procedure lacked a solid basis for reliability, in addition to this last definitive hint.
ChatGPT consulted:
Despite being suspicious of AI given the current hype surrounding it, and widespread stories of its (sometimes more than) occasional invented results (here’s my archive), I consulted ChatGPT.
Consulting ChatGPT on the subject
So the underlying project objective appeared to have some merit … but at this point, I began diving into a rabbit hole: The obvious rabbit hole of installing legacy software on a modern OS, and perhaps less obviously, a rabbit hole involving placing a lot of faith in AI. (As in, despite using Linux for almost 20 years, and having been exposed to UNIX for over 10 years before that, I don’t think I know enough about Linux to fully evaluate the advice and instructions ChatGPT gave, and whether its apparent confidence in giving advice at each step, let alone its ultimate determination, were based in any merit.)
To wit: After ChatGPT suggested that I confirm the presence of the binaries I said I’d installed, it suggested that I create some socket files, as well as some service units, to enable the new services, and finally check on their status.
Setting up sockets:
Creating socket files
Enabling the socket files
Checking status
Checking status
Services were enabled:
Reloading and enabling the sockets
Firewall changes:
Ports 517/udp and 518/udp were activated in my firewalls (error messages betray the fact that the screenshot is a recreation ex post facto 🙂 ):
Adding the ports to the firewall
I tried start up talk again at this point … and it didn’t work. Apparently, the “Unit talk socket has a bad unit file setting” and the “Unit ntalk.socket has a bad unit file setting”.
Correcting the sockets files for systemd:
The socket and service files were corrected:
Sockets units settings to be corrected
Service units file to be corrected
Daemons were reloaded, and enabled with:
# systemctl enable –now talk.socket ntalk.socket
However, a status check:
#systemctl status talk.socket ntalk.socket
revealed:
Errors after performing a systemd status check
ChatGPT diagnosed this as my having previously incorrectly created a talk.service file.
Correcting the talk.service and ntalk.service files
Daemons were reloaded, and the status checked; this time, with the above fix, the setup seemed to work properly.
Instructions restated, and installing on a second machine (my laptop):
At this point, with ChatGPT’s blessing and a restatement of the updated instructions …
Midway summarized instructions so that I could install talk on a second computer
… I repeated the process on a second laptop, connected to the same network.
Once the installation was complete on the second laptop, I typed in:
$talk malak@malak.local
at the command line from my laptop:
Trying to initiate the talk command from my laptop, toward my desktop
No route to host:
This failed with a “no route to host” error message from each machine. I reported back to ChatGPT:
ChatGPT went on to say how to get the local ip address for each computer on the network, because the firewalls on each machine were rejecting access to UDP addresses, recommending that I therefore use the individual computers’ IP address instead of the local computer names.
Using IP addresses instead of hostnames:
On each computer, at the command line (as a regular user) I used:
$ip addrshow
Determinging the IP address on my desktop, an exercise repeated on my laptop
… and to try running:
$talk user@192.168.X.Y on one machine, and:
$talk user@192.168.X.Z on the other machine,
such that I substitute in my username and the respective addresses from above.
This again failed.
Limiting to IPv4:
ChatGPT suggested that if that were to fail, that I should modify the following files:
/etc/systemd/system/talk.socket
/etc/systemd/system/ntalk.socket
to listen on either port 517 (talk — client) or 518 (ntalk — server), then reload and restart the services:
Checking if SELinux is in play:
ChatGPT also suggested that I run:
# ausearch -m AVC -ts recent
to check if SELinux was the issue. It wasn’t.
Checking to see if SELinux was blocking the connections
So I ran the talk command again. This time, I got a different error message with the talk client:
the other machine does not recognize us
So once again, I consulted ChatGPT.
Modifying the /etc/hosts files:
The /etc/hosts files on each computer were edited with the respective information for each computer:
/etc/hosts file on both systems modified to specify the local IP of each
I tried again, as per ChatGPT’s directions, to try from each computer, and my connection was refused, in the following case, my laptop:
Connection refused by my desktop
Note that I finally realized later that this might relegate the use of the talk command on these machines, on my home network — meaning, that it would likely not be a useful fix for general use, at least not without either a script that integrates all the above (and probably more), including a way to include other computers in a range of IP addresses, or a rewrite of the software. (No doubt a dubious effort, given the number of chat programmes that have been written, reworked, and so on, since talk was commonly in use, decades ago.)
Correcting to allow receiving messages:
ChatGPT suggested a fix in the mesg command:
Invoking the mesg command
As well, ChatGPT recommended to modify the /etc/profile file to include the mesg y command:
Adding “mesg y” to /etc/profile
I still couldn’t get talk to work. “Your party is refusing messages”.
Messages refused:
ChatGPT said to make sure that the terminal on both systems was writable with:
chmod g+w $(tty)
Changing permissions for the terminal
Trying two terminals on one machine:
At this point I think that I was losing track of ChatGPT’s suggestions and not properly implementing them all.
Nonetheless, in skipping a few steps, I thought I was following the suggestions when I chose one machine — in this case, my desktop — and opened up two terminals, and tried to initiate a chat on the same machine between both terminals:
Two terminals on the same machine, with one instance of talk already active (but having seen what comes up on the next screenshot)
Once set up, and ready to try, I had the command line command set up:
Connection refused between two terminals on the same machine
Messages were still being refused, even when coming from within the same computer.
Waving the white flag of surrender:
At this point, I decided that it was time to raise the white flag of surrender, on the basis that the talk command, despite being present in the repositories for Fedora 43 and nominally packaged for Fedora 43, is a legacy package no longer intended for current general use.
But wait! There’s more!
Rereading ChatGPT’s instructions later — during the construction of this post and then tested during one of the many re-reads and edits of this post — I realized that ChatGPT’s instructions included trying to use a “real” tty console as part of the test, not simply two Gnome graphical environment terminals.
Missed suggestion to use the console (tty)
Whaddya know: It worked there!
Looking around revealed four such terminals on my desktop, labelled tty3, tty4, tt5, and tt6, respectively accessed by Ctrl-Alt-F3, Ctrl-Alt-F4, Ctrl-Alt-F5, and Ctrl-Alt-F6. (Reminder to myself: To get out of the consoles, use Ctrl-Alt-F2.)
So first, I opened up a console at tty3 on my desktop, and I typed:
$talk malak
Which opened up the talk interface, and in which I typed a message:
Message typed on my desktop’s tty3 “hello / this is a test”
Then I opened up a console at tty4, and I was able to launch talk, finding the “hello” and “this is a test” messages from tty3 appearing in the lower section:
Message received on my desktop’s tty4 “hello / this is a test”
So this was an aha! moment.
Then, after entering a console on my laptop:
Logging into a console on my laptop
I initiated a talk session with my username on my laptop (assuming that I still needed to use IP addresses):
$talk malak@192.168.2.19
Starting a talk session on my laptop, calling a user on my desktop
… and on one of the console terminals on my desktop, I received the following message:
Message received on my desktop, originating from my laptop
This gave me new information: I could also use the computer names in addition to the IP addresses.
On the desktop, I therefore entered:
$talk malak@deltaflyer
… and I had the two machines, uhm, talk-ing to each other.
Message initiated on my laptop in the upper section: “hello this is a test from my laptop”, appearing in the lower section on my desktop
Final Thoughts:
First, to my eventual surprise, I learned that talk still works on Fedora — albeit only in “real” tty consoles. I haven’t checked how much of the above is required to make it work, but I have a few ideas about which are necessary, and which are not (for instance, use of computer names instead of requiring IP addresses is possible, although I’m not sure whether having modified the /etc/hosts file helped with that.)
Next, I may still have a presentation somewhere, perhaps characterized as a bit of an amusing cautionary tale regarding trying to install several decades-old, obsolete, legacy software on modern systems.
Perhaps, it might be an amusing tongue-in-cheek cautionary tale with a side of self-deprecation about trusting AI on subjects about which one doesn’t know enough; fortunately, it seems that ultimately, I was not led astray.
Perhaps, it could be presented as an amusing counterpoint to another presentation lauding the value of AI in a similar situation, being used by someone who knows more about the subject at hand (in this case, Linux) and how to better interpret the provided results — instead of simply trusting the AI blindly.
Or, perhaps, while I generally was not led astray and ChatGPT indeed did help me fulfill my goal … could the exercise act as an inspiration to learn about maintaining critical — and possibly migrating away from — legacy software on modern software and hardware? COBOL, anyone? And, perhaps in the process, learn how to ask the right questions of the likes of ChatGPT in order to get what I really wanted — not just what amounted to a proof of concept (which to be fair, that which I wanted amounted to a proof of concept, even if it took a while for me to realize it), but an actual, useful, running piece of software?
20260602 update: I made a presentation to my linux group in March, 2026, and the video is finally available on our YouTube channel, as well as on malak.ca. There is a blog post announcement about it here. I presented the over all concepts, using some of the screencaps from this post, and praised those who work with legacy software. ChatGPT was merely an incidental character in my story, along the lines of “I consulted ChatGPT, sometimes relied a bit too much on it but only so much because — I don’t think, anyway — I’m not a complete idiot”. Of course, no coordination was made with anyone showcasing either real-life legacy software maintenance, or ChatGPT.