logoalt Hacker News

lelanthranyesterday at 5:55 PM1 replyview on HN

> 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

Replies

QuercusMaxyesterday at 6:18 PM

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.

show 1 reply