[HN Gopher] Using ChatGPT to make Bash palatable
___________________________________________________________________
Using ChatGPT to make Bash palatable
Author : naderkhalil
Score : 55 points
Date : 2022-12-21 20:22 UTC (2 hours ago)
(HTM) web link (brev.dev)
(TXT) w3m dump (brev.dev)
| 63 wrote:
| This is a relatively common use case for browsers that's usually
| solved by tab groups. I'm happy the author learned bash and
| leveraged new tools to solve the problem, but it's a little over
| engineered.
| civopsec wrote:
| > Bash is available everywhere
|
| When you have AI but you don't have permission to use a package
| manager.
| tottenval wrote:
| Github Copilot can do this too.
| naderkhalil wrote:
| Totally! I found ChatGPT to be more helpful in this use case
| since it outputted full code snippets instead of generating it
| line by line. The context was also extremely valuable in making
| iterations (like "make it work for mac")
| generalizations wrote:
| ChatGPT has been amazing for all kinds of programming-adjacent
| things, even in my line of work where I asked it for help
| modifying the config file for a selfhosted gitlab instance.
|
| > But [Bash] fucking sucks. Like, it's truly awful to write [...]
|
| As an aside, considering how basic the shell script actually was,
| I think this is a great example of being so intimidated by
| something that you don't actually try and use it - until you do,
| and discover it wasn't actually that bad. The hardest part was
| just discovering the incantations for interacting with Chrome -
| which was a fantastic demo of the power of ChatGPT.
| SpencerMLevitt wrote:
| that's a great point - totally agree on just gettin over the
| hump of intimidation to try it, and chatgpt makes that hump
| trivial
| pizzalife wrote:
| Also, the specific argument format that chrome expects has
| nothing to do with Bash.
| forrestthewoods wrote:
| > The hardest part was just discovering the incantations
|
| Right, that's why Bash sucks. A more extreme version of this is
| APL.
|
| Bash isn't APL bad. But it's pretty bad!
| yamtaddle wrote:
| Bash isn't that bad... except there are 20 ways to do anything
| and 18 of them are wrong, but only 1% of online examples will
| use either of the two correct approaches and simply reading
| docs won't always clue you in about how the technique or syntax
| it's describing is actually subtly wrong and you should ~never
| use it.
| jakogut wrote:
| I find integrating shellcheck into my text editor was one of
| the best things I've done for increasing my productivity when
| writing shell scripts.
| danielheath wrote:
| Yep - in the same way that you want govet, eslint, rubocop
| etc - but to a higher degree, because bash hides subtle
| bugs as soon as you use a variable without knowing the
| quoting rules.
| naderkhalil wrote:
| yeah absolutely. I think interacting with chrome and also
| parsing/iterating files were hard parts that ChatGPT breezed
| through.
| olalonde wrote:
| I don't understand how people can look at this and still claim
| that it's not doing any "actual reasoning".
| y04nn wrote:
| Chat GPT is simply amazing, it feels like Google with super
| powers. I think it can boost productivity by a considerable
| amount. It makes a perfect peer programmer, giving you sample
| code with first class comments explaining the generated code,
| sometimes with minor errors to make it compile. You can even
| ask it to explain some specific part of the code. It's also
| like having a secretary or an assistant available 24/7 with a
| never seen productivity. It probably feels like when first
| mechanical computers where built and people thinking "How can
| it compute the right answer so fast?".
| Smaug123 wrote:
| You've... really got the right answers from it? I've only
| ever asked it a couple of really basic (non-trick!
| straightforward!) questions about how to accomplish tasks by
| programming, but it bullshitted me some very plausible
| nonsense. Once bitten, twice shy. If it were capable of
| saying "I can't answer that question" reliably (which I've
| spent some time trying and failing to make it do, in
| general), it might actually be useful.
| y04nn wrote:
| It happened to me once, it generates a plausible answer
| when it doesn't know (tried to generate a Nix script with
| Erlang). But I have used it to generate examples code in
| Haskell, and it was quite good, probably because Haskell
| libraries have excellent online documentation. It's much
| faster than reading the doc of the library.
| CJefferson wrote:
| Here is an example of where I think it is doing "no reasoning".
|
| I ask it for the XOR swap trick and I get:
| int a = 5; int b = 10; a = a ^ b;
| b = a ^ b; a = a ^ b; // After the swap, a
| = 10 and b = 5
|
| I ask for the bitwise OR swap trick and I get:
| int x = 5; int y = 10; x = x | y;
| y = x | y; x = x | y; // After the swap, x
| = 10 and y = 5
|
| When asked for something which is invalid, but close to
| something it knows, it tends to produce stuff like this --
| pattern matching it's best guess.
| Jensson wrote:
| It has trained on countless programming tutorials out there,
| including bash tutorials for all kinds of things. Such
| tutorials often includes "create file -> ls to see file ->
| print content of file" etc, so GPT then takes those tutorials
| and creates grammatical rules how those words transform into
| each other. But if you start going outside of the realms of
| online tutorials it starts to falter quickly and then just
| prints nonsense.
| supermdguy wrote:
| To add to this, each token is generated by going through its
| network once. So there's no way computationally for it to do
| any reasoning or follow an algorithm. That said though it's
| impressive how much its able to accomplish without any
| procedural reasoning.
| jrochkind1 wrote:
| I realize I don't have a good idea of what I think "actual
| reasoning" means. But yeah, this is pretty impressive stuff, I
| agree. Before ChatGPT I didn't realize the tech was available
| to do things like this, and I'm still pretty bewildered by how
| it can be possible.
| lossolo wrote:
| I've been using it more and more at work, and it's already saved
| me hours by generating bash commands and simple scripts/servers
| that I would otherwise have to search for on Google and adjust to
| my specific use case from multiple sources. Thanks to this tool,
| I have more time to focus on difficult and business-related
| problems. If they start charging for it, I will definitely become
| a paying customer. This is an excellent tool that is making me
| more productive, and I was a big skeptic about how LLMs work
| internally. Remove hallucination problem, add annotations with
| links to sources and this is how Google will look like in a few
| years. IMO this is how future of knowledge search will look like
| on the internet.
| mozman wrote:
| I find bash to be pretty awesome, it's super easy for an old hat
| like me to use. It just works and it has been mostly unchanged,
| two core principles more projects should consider.
| SpencerMLevitt wrote:
| This is an awesome walkthrough and gets me thinking about all the
| other automation tasks I could get done with ChatGPT-driven bash
| scripts... can take this same approach to context switching for
| actual apps. For ex: "dev" branch can open up vscode, terminal
| windows, linear, server logs, etc, while "marketing" branch can
| open up slack, chrome (to email), twitter, notion, etc
| naderkhalil wrote:
| ChatGPT has opened my eyes to how powerful Bash can be.
| Interesting idea about branching full workflows and not just
| the browser.
| raverbashing wrote:
| So the author complains about bash, but uses zsh
|
| They also basically uses the chrome cmdline commands and blames
| bash for that being bad
|
| Your problem doesn't seem to actually be bash (but chatgpt really
| makes it super easy)
| cerved wrote:
| The problem you describe is how to interface with Google chrome
| on osx using shell script.
|
| I fail to see a single bashism.
| waynesonfire wrote:
| yeah, game changer. it's deprecated having to click on links for
| common use-cases and not only that, it's improved it by more than
| 10x. can't wait to see this technology evolve.
| naderkhalil wrote:
| 100%, also just looking up dev docs for frameworks. Something
| like "write a post API in Golang's Gin framework" instead of
| looking up what that syntax was again
| alecfong wrote:
| I find it interesting how much harder it is to grok bash/sh/zsh
| than other languages I've learned. Off the top of my head it may
| be tooling like the lack of linting, or maybe it's just
| experience as I avoid complexity like the plague when writing
| bash which sounds like a self fulfilling feedback loop.
|
| Gpt does seem to unblock this mental burden a bit which has me
| excited for its potential when it comes to education/teaching.
| geysersam wrote:
| Something about the quoting / unquoting can get really
| difficult to reason about. I'm rarely exactly sure how the
| language constructs work, even the for loop and the if
| statement. The syntax is complex compared to most other
| languages, and subtle differences can give totally different
| results. PICK = can you THE=tell the
| RIGHT=difference\ between WHAY="all of" TODO='these
| versions?'
| cerved wrote:
| yes
| guites wrote:
| This is a great example of how someone with little programming
| knowledge could leverage an AI into building simple scripts.
|
| Lately I've been encouraging my friends into trying just that.
|
| If the poster would want, for example, to save all current tabs
| when switching context (going from dev to marketing, for
| example), this would quickly turn into a more involved
| debugging/prompting question.
| naderkhalil wrote:
| That would be a great follow on. I posted the repo if you want
| to leave any feedback or help me continue building it out:
| https://github.com/brevdev/dev-browser
| jrochkind1 wrote:
| I'm pretty damn impressed with this one. The osa-script thing for
| Mac even, wow.
| john2x wrote:
| It's semi-replaced Google and StackOverflow for me. It's like
| having an interactive rubber duck
| https://en.wikipedia.org/wiki/Rubber_duck_debugging
| worldsayshi wrote:
| I try to use it like this sometimes but then I realise I now
| have two problems. I have to debug my own code and its code.
| someguy101010 wrote:
| it can usually debug itself if you give it an error message
| czzr wrote:
| Assuming the problem with the code causes an error message.
| That's actually the easier case - the hard case is
| incorrect logic but syntactically ok.
| naderkhalil wrote:
| It's surprisingly good at helping figure out what went
| wrong. Try asking it "something went wrong and I'm not
| sure what. What should we try next?"
| ikealampe200 wrote:
| Just today I used ChatGPT to help me speed up writing somewhat
| trivial C Code for a project in an embedded systems class.
|
| Prompt: "Generate a tiny PID controller with only a Proportional
| factor written in C. That takes a rotational input from -360 to
| 360 degrees. The setpoint in degrees. And returns a motor speed
| in the range of -255 to 255."
|
| => Produced a compiling correct result.
|
| Later I wanted to know how to communicate between my kernel
| module and user space program: Prompt: "How do I get a value via
| character device from my kernel module into my user space c
| programm?" gave a bunch of answers and digging deeper with
| Prompt: "Could you provide me with an example of the user space
| program" gave a compiling and correct answer again.
|
| I could have written all of that myself while spending a good
| amount researching on google. But this way I felt less frustrated
| and was definitively a lot quicker.
|
| Not the solution for everything but maybe for a C beginner where
| research can take a long time and often leads to more confusion
| than anything else. Now the question is if that confusion is
| critical in the learning process. And if so how critical and at
| what stages of the experience spectrum the most?
| jrvarela56 wrote:
| I just bought a Streamdeck (https://www.amazon.com/Elgato-Stream-
| Deck-Controller-customi...) for Cybermonday and attached bash
| scripts similar to those mentioned by the author to buttons next
| to my keyboard. It is delightful.
| user3939382 wrote:
| What action type do you use for your script? "Open"?
| jrvarela56 wrote:
| Yeah open works, you can also create a multiaction to mix-
| and-match with other actions or scripts in between.
| user3939382 wrote:
| I was just commenting to a friend how annoying it is that macOS
| aliases can't add flags to executables like you can easily do in
| Windows shortcuts since, what? Windows 95?
|
| If you want to launch Chrome with flags through your dock/UI you
| have to compile an AppleScript to an .app. It's crazy.
| cerved wrote:
| I don't use osx but surely you can create aliases just like in
| Linux and BSD?
___________________________________________________________________
(page generated 2022-12-21 23:00 UTC)