An experiment has been done which included a human guided robot doing a surgery. It was successful. However, I wonder in how many ways an AI would mess up any surgery and I pity the victim.
Not sure, how many operations are passed off to lower grade doctors during training ? Or are monday morning, friday afternoons⊠when the medical expert is not at his or her best.
When you look now at production lines of cars, motorcycles, computers its all automated using pick and place.
I had key hole surgery about 5 years back and the doctor never touched me it was all done remote with robotic type arms.
These production lines are usually setup to build thousands of the exact same thing, this is why theyâre able to automate it. It requires no form of intelligence whatsoever to perform. The only intelligence needed is when something unexpected happen and in setting it up, both of which are human tasks. AI is known to hallucinate. Until that problem is eliminated, it is of little use.
Thatâs a very bad idea, me too!
I had key hole surgery about 5 years back and the doctor never touched me it was all done remote with robotic type arms.
The difference being that a human being was guiding the robotic devices. I wouldnât want an AI agent doing the guidance on any surgery I underwent.
Not sure, how many operations are passed off to lower grade doctors during training ?
Again, an experience surgeonâs taking responsibility, and is overseeing the student/trainee during the surgery.
AI is known to hallucinate. Until that problem is eliminated, it is of little use.
I agree. Ai may be useful for repetitive tasks, as indicated above, but it should never be relied upon for mission-critical/creative/decision-making tasks.
Ai may be useful for repetitive tasks
If the task is 100% repetitive and completely understood, you dont need AI, you can simply program it.
AI, as I understand it, is supposed to be useful for less well defined tasks .
AI, as I understand it, is supposed to be useful for less well defined tasks .
Agreed, but the mission critical, etc. remains in the domain of a human overseer, who observes/approves what the AI decides. Anything else may be risky, if you ask me.
AIs arenât as perfect as HAL 9000 was portrayed in 2001: a space odyssey, and even that turned out to be a total psychopath.
One of the things I have noticed is that the user interface provided by eg) ChatGPT severely limits what I can ask it to do.
Lets say I had 2000 lines of C code and it has a bug. If I want to ask it why setting a particular combination of starting values leads to a wrong answer, I have to enter the code. There is no way I could do that with ChatGPTâŠ
there is a tiny window you type into, and just one linefeed flings it into answer mode.
Am I missing something?
I dont want to ask its opinion, I want it to do some real work and debug some code for me.
Hi Neville
If this helps.
This is what I see.
Seems like use the options below the box.
clicking code gives this
Edit: Seems like ask for debug help first, let it answer then paste code into the small box.
I took the courage, and asked the AI to convert a script, so that it would work on Pipewire.
I forked this some time ago, so not really my script, but I added a number of modifications.
It requires Pulseaudio, and currently does not work with Pipewire.
I already made it partially working with PW, but it still lacks a lot, Iâm a little bit struggling⊠so out of couriosity wanted to see what that AI could do?
This is what it created from that I have in my Github:
#!/bin/bash
script_dir=$(dirname $(readlink -f $0))
if [[ -z $1 ]]; then
musicdir="."
else
musicdir=$1
fi
# Get the client index of Spotify using pactl for PipeWire (should work fine)
spotify=$(pactl list sink-inputs | while read line; do
[[ -n $(echo $line | grep "index:") ]] && index=$line
[[ -n $(echo $line | grep Spotify) ]] && echo $index && exit
done | cut -d: -f2)
if [[ -z $spotify ]]; then
echo "Spotify is not running"
exit
fi
# Determine if spotify.monitor is already set up in PipeWire
if [[ -z $(pactl list short sinks | grep spotify.monitor) ]]; then
# Record spotify AND listen to it:
pactl load-module module-combine-sink sink_name=spotify slaves=Butyok
# slaves=sinkname, where it really sounds. Adapt it to your system.
fi
# Move Spotify sound output back to default at exit
pasink=$(pactl stat | grep Sink | cut -d: -f2)
trap 'pactl move-sink-input $spotify $pasink' EXIT
# Move Spotify to its own sink so recorded output will not get corrupted
pactl move-sink-input $spotify spotify
$script_dir/notify.sh | while read line
do
if [[ $line == "__SWITCH__" ]]; then
killall oggenc 2>/dev/null
killall parec 2>/dev/null
if [[ -n $title ]]; then
vorbiscomment -a tmp.ogg -t "ARTIST=$artist" -t "ALBUM=$album"\
-t "TITLE=$title" -t "tracknumber=$tracknumber"
# Sanitize filenames
saveto="$musicdir/${artist//\/ /}/${album//\/ /}"
# Include track number in filename
echo "Saved song $title by $artist to $saveto/$tracknumber - ${title//\/ /}.ogg"
if [[ ! -a $saveto ]]; then
mkdir -p "$saveto"
fi
# Include track number in filename
mv tmp.ogg "$saveto/$tracknumber - ${title//\/ /}.ogg"
if [[ -s cover.jpg ]] && [[ ! -a "$saveto/cover.jpg" ]]; then
mv cover.jpg "$saveto/cover.jpg"
fi
artist=""
album=""
title=""
tracknumber=""
fi
echo "RECORDING"
parec -d spotify.monitor | oggenc -b 256 -o tmp.ogg --raw - 2>/dev/null\
&disown
trap 'pactl move-sink-input $spotify $pasink && killall oggenc && killall parec' EXIT
else
variant=$(echo "$line"|cut -d= -f1)
string=$(echo "$line"|cut -d= -f2)
if [[ $variant == "artist" ]]; then
artist="$string"
echo "Artist = $string"
elif [[ $variant == "title" ]]; then
title="$string"
echo "Title = $string"
elif [[ $variant == "album" ]]; then
album="$string"
echo "Album = $string"
elif [[ $variant == "trackNumber" ]]; then
# Get the track number from the notification
tracknumber="$string"
echo "Track number = $tracknumber"
fi
fi
done
Screenshot of our dialog:
Needless to say it doesnât work at all ![]()
So when Iâll have the inspiration, Iâll continue to convert it using only NI.
![]()
Seems like use the options below the box.
Thank you.
Seems I totally missed that. Old age seems to reduce my ability to take things in.
Lets see what its like at debugging⊠it theoretically should be able to find any code bug, provided I give it full information .
Iâll continue to convert it using only NI.
Try using meld to compare it to your script.
You may be able to spot its mistake if it is not too different.
You may be able to spot its mistake if it is not too different.
The mistake is that it replaces
pacmd list-sink-inputs
with
pactl list sink-inputs
as the latter provides a similar functionality which also works with Pipewire, but has a completely different output, which the script has to parse.
Example outputs from both PA and PW systems to parse
PW:
Sink Input #1158
Driver: PipeWire
Owner Module: n/a
Client: 1157
Sink: 700
Sample Specification: float32le 2ch 44100Hz
Channel Map: front-left,front-right
Format: pcm, format.sample_format = "\"float32le\"" format.rate = "44100" format.channels = "2" format.channel_map = "\"front-left,front-right\""
Corked: no
Mute: no
Volume: front-left: 581 / 1% / -123,14 dB, front-right: 581 / 1% / -123,14 dB
balance 0,00
Buffer Latency: 0 usec
Sink Latency: 0 usec
Resample method: PipeWire
Properties:
client.api = "pipewire-pulse"
pulse.server.type = "unix"
application.name = "spotify"
application.process.id = "27389"
application.process.user = "laco"
application.process.host = "DellG3"
application.process.binary = "spotify"
application.language = "hu_HU.UTF-8"
window.x11.display = ":1"
application.process.machine_id = "94739ab9c6c446f2bf361f5351421995"
media.role = "music"
media.name = "Spotify"
node.rate = "1/44100"
node.latency = "8192/44100"
stream.is-live = "true"
node.name = "spotify"
node.want-driver = "true"
node.autoconnect = "true"
media.class = "Stream/Output/Audio"
port.group = "stream.0"
adapt.follower.spa-node = ""
object.register = "false"
factory.id = "7"
clock.quantum-limit = "8192"
node.loop.name = "data-loop.0"
library.name = "audioconvert/libspa-audioconvert"
client.id = "125"
object.id = "104"
object.serial = "1158"
pulse.attr.maxlength = "4194304"
pulse.attr.tlength = "640064"
pulse.attr.prebuf = "0"
pulse.attr.minreq = "7056"
node.driver-id = "91"
module-stream-restore.id = "sink-input-by-media-role:music"
PA:
1 sink input(s) available.
index: 9
driver: <protocol-native.c>
flags: START_CORKED
state: RUNNING
sink: 0 <alsa_output.pci-0000_00_1f.3.analog-stereo>
volume: front-left: 44394 / 68% / -10.15 dB, front-right: 44394 / 68% / -10.15 dB
balance 0.00
muted: no
current latency: 1023.38 ms
requested latency: 980.00 ms
sample spec: float32le 2ch 44100Hz
channel map: front-left,front-right
SztereĂł
resample method: copy
module: 11
client: 118 <spotify>
properties:
media.role = "music"
media.name = "Spotify"
application.name = "spotify"
native-protocol.peer = "UNIX socket client"
native-protocol.version = "35"
application.process.id = "42360"
application.process.user = "moncsi"
application.process.host = "moncsi-laptopja"
application.process.binary = "spotify"
application.language = "hu_HU.UTF-8"
window.x11.display = ":0"
application.process.machine_id = "8aee7cb39dc24c17922ea866a7f090e6"
application.process.session_id = "2"
module-stream-restore.id = "sink-input-by-media-role:music"
So a totally different parsing is needed for a PW system.
If you look at the PA output, just parse for âindex:â, and any line containing âspotifyâ after that: the result is the value after âindex:â, hence the cut -d: -f2.
Itâs simple.
But for PW, we need to parse for node.name, which has to be âspotifyâ, then what we need really is the object.serial from the same (!!!) node.
This one seems to work reliably (just the relevant snippet from the script):
# Get the client index of Spotify
spotify=$(pactl list sink-inputs | while read line; do
if [[ -n $(echo $line | grep "node.name") ]]; then
name=$(echo $line | awk -F'"' '{print $2}')
if [ "$name" != "spotify" ]; then
name=""
fi
fi
if [ -n "$name" ]; then
if [[ -n $(echo $line | grep "object.serial") ]]; then
index=$(echo $line | awk -F'"' '{print $2}')
echo $index
exit
fi
fi
done)
How does that compare to the GPTâs conversion? (Relevant snippet):
# Get the client index of Spotify using pactl for PipeWire (should work fine)
spotify=$(pactl list sink-inputs | while read line; do
[[ -n $(echo $line | grep "index:") ]] && index=$line
[[ -n $(echo $line | grep Spotify) ]] && echo $index && exit
done | cut -d: -f2)
âShould work fineâ, yes should, but doesnât ![]()
I still tinker with that script, unti it works fine in every aspect I need (still thereâs some fiddling to do).


