Remix.run Logo
lelanthran 4 hours ago

> It took me thirty minutes with Codex and GPT-Sol. The thing is fast, it does not ask me for anything, and it does the one job I wanted: it launches applications.

This is quite funny, actually. When I wanted something similar (just play MP3s, without playlists, special indexes, etc), it also took me 30 minutes.

In 2002.

I still use it daily - a wish application displays entries matching the filter using the locatedb to get a list of all MP3s to find them and mpg123 to play them. This is the application that I have used the longest in my life, unchanged and unmodified from day 1, and it still tickles me that it took 30m.

I'm pretty certain, had LLMs not existed, that I can make an application finder using locatedb (perhaps store a private index as well) and a GUI in about 30m using wish as the front-end.

(Just for reference, here's my no-frills MP3 player) ---------------------------------------------

    #!/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
QuercusMax 4 hours ago | parent [-]

I assume the 30 minutes didn't involve learning how to use wish.

There are tons of apps I could build in 30 minutes using a development environment I'm familiar and productive with already, but LLMs don't have that restriction.

lelanthran 2 hours ago | parent [-]

> I assume the 30 minutes didn't involve learning how to use wish.

>

> There are tons of apps I could build in 30 minutes using a development environment I'm familiar and productive with already, but LLMs don't have that restriction.

Here's the thing - if you never learned to use $FOO, it is closed off as an option to you forever, even with LLM help.

I'm going to be a lot better at designing personal-use software via an LLM than someone who doesn't have 30 years of experience writing software for money, because I learned things (like wish) which can be leveraged via LLMs to produce the output artefact faster and more reliably.

For personal-use software, if all you know is HTML, CSS and Javascript, then all you can produce is electron-based crap as the smallest unit of software. Someone like me, OTOH, can produce small and tight software because I programmed in Delphi (now Lazarus), Qt, Tcl/Tk, etc in the past, and they are still viable.

I recall seeing an electron-based vibed app recently on a ShowHN that, I thought at the time, could have be completed using a small bash script calling Zenity.

The problem is what happens when people like myself (and yourself, too) are no longer around?

All the software is going to converge towards being crap; if there is no one telling the LLM that a specific task can be completed using Lazarus with zero 3rd party deps, all tasks are going to get completed using Rust with a few thousand create deps talking to an electron-based app that has a few thousand JS deps (and maybe some CSS frameworks thrown in for good measure).