Dev Challenges
Using ChatGPT to make Bash palatable
AI as a great framework for bash
As a founder, I find myself context-switching a lot-- jumping between sales, marketing, and development tasks constantly. What I want to be able to do is easily jump between contexts in my browser: when I type âmarketingâ in my terminal, my browser should close all current tabs and then reopen only my âmarketingâ tabs. Same for âsales,â âdev,â and so on.
My initial idea was to hack this together with a CLI framework like Cobra in Golang which is well documented and affords maintainable projects, until a coworker mentioned I should just do this in bash. I thought this was an awful suggestion.
It was only when ChatGPT came along that I realised using bash for this project might actually be worth a shot. Bash is a powerful and versatile language. Itâs ubiquitous, being available on any Unix shellâ no frameworks, environment issue, installations, etc. But it fucking sucks. Like, itâs truly awful to write, but ChatGPT is incredible when it comes to writing code with evasive syntax.
First, I asked ChatGPT to âMake a bash script that opens google chrome to https://twitter.com and https://mixpanel.com".
And it fails: zsh: command not found: google-chrome
Hmm, I wonder if thatâs just for Linux. I just fed the errors back to ChatGPT. âMake it work for mac"
Great!! It works and opens the tabs. When I use git branch to move between states of the code base, it removes any code from the previous branch. I need this to exit the current browser window before opening the tabs. Hey ChatGPT, âmake sure to close the existing window first.â
Excellent! Now I have to think about the branch names. For starters, what if it was just a simple text file to track the branch state? So dev.txt would have my dev tabs, and marketing.txt would have my marketing tabs.
Now I need to feed the script a branch name, so ./script marketing
to open my marketing tabs. I need this script to accept an argument.
Hahaha! It works!
Rather than building complicated software using complicated frameworks aimed at making the life of a developer easier, I used basic bash scripts to finish my project in ~15 lines of code, which you can checkout here. And using Bash for a project isnât a death sentence when equipped with AI to provide the ergonomics, rather than the complex frameworks.
AI works best at enabling professionals, not replacing them
The motion of coding with ChatGPT is the same as coding without it.
You generate some code, wrestle it to pass the compiler or fit some use case, and repeat. I was still programming and hacking away even if I didnât spending time coding. I got the same frustrations when things didnât work and the same joy when it finally did.
AI is not here to replace us. Not that it canât, it just works much better enabling professionals to be directors of their work.
AI needs to be funny when wrong and scary when right. Without a professional at the helm, the lack of understanding of what was generated makes AI extremely limiting. But with a professional leveraging it, generative AI being wrong is no different than a self-induced compiler errorâ itâs an invitation to debug.
Leveraging AI for the more pedantic parts of the job seems to be the killer use case, and leaning on it for developer ergonomics seems to take away a bunch of unnecessary complexity.