> "I wish I'd made more throw away apps I never use" ... said no one on their death bed, ever.
Yeah, it does make me wonder though - have these AI boosters never written their own tools before? I've written, for my own personal use, literally thousands of tiny little bash scripts, vim scripts, emacs scripts, Python programs, C programs, etc. I still daily use a music player (wish wrapper around mpg123) that I did in 2001[1]!
And yet, I'd be the first to admit that, for each 1000 things I wrote, probably 1 got permanent use for a significant length of time; the value, over time, to me was the lessons learned.
Now people are going through that cycle faster (i.e. instead of doing 5000 persona-use programs over 30 years, they're doing it in a single year), but the end result is still going to be the same - no one is ever gonna use it, including themselves!
It comes with an additional downside - you don't actually learn anything by having the AI generate your programs for you.
--------------------------------
[1] In case anyone is interested why I wanted a wrapper - it uses the locatedb so that I don't have to search for my mp3s:
#!/usr/bin/wish
# Copyright Lelanthran K. Manickum 2002, provided under BSD license
#
set version "1.0"
proc playSong {songname} {
set rc [catch { exec killall -9 mpg123 }]
if {$songname=="\[Stop Playback]"} {
.midFrame.lblPlaying configure -text "Stopped"
return 0;
}
set rc [catch { exec mpg123 --loop -1 "$songname" & }]
if {$rc==0} {
.midFrame.lblPlaying configure -text "Playing: $songname"
}
}
proc locateSongs {pattern} {
.lstResults delete 0 999999999
set tmpvar [split [exec locate -i "*$pattern*.mp3"] "\n"]
.lstResults insert 0 "\[Stop Playback]"
foreach title $tmpvar {
.lstResults insert 1 $title
}
}
frame .topFrame
frame .midFrame
entry .topFrame.entSearchString -text "Search String"
button .topFrame.btnSearch -text "Search" -command {locateSongs [.topFrame.entSearchString get]}
listbox .lstResults -yscrollcommand {.sby set} -xscrollcommand {.sbx set}
scrollbar .sby -orien vert -command {.lstResults yview}
scrollbar .sbx -orien horiz -command {.lstResults xview}
label .midFrame.lblPlaying -text "Stopped"
locateSongs ""
focus .topFrame.entSearchString
bind .topFrame.entSearchString <Return> ".topFrame.btnSearch invoke"
bind .lstResults <Double-B1-ButtonRelease> {playSong [.lstResults get active]}
bind .lstResults <Return> {playSong [.lstResults get active]}
grid .topFrame -row 0 -column 0 -sticky nsew
grid .topFrame.entSearchString -column 0 -row 0 -sticky nsew
grid .topFrame.btnSearch -column 1 -row 0 -sticky nsew
grid .midFrame -column 0 -row 1 -sticky nsew
grid .midFrame.lblPlaying -column 0 -row 0 -sticky nsew
grid .lstResults -column 0 -row 2 -sticky nsew
grid .sby -column 1 -row 2 -sticky nsew
grid .sbx -column 0 -row 3 -sticky nsew
grid rowconfigure .topFrame 0 -weight 1
grid columnconfigure .topFrame 0 -weight 1
grid rowconfigure . 2 -weight 2
grid columnconfigure . 0 -weight 2
wm protocol . WM_DELETE_WINDOW {
set rc [catch { exec killall -9 mpg123 } ]
destroy .
}
wm title . "Simple Music Player - v$version"
wm geometry . 700x500