What are you doing with it. I am seeing this kind of comment a lot but nobody seems to actually say what it is this tool can actually do for them.
My personal experience with it makes me really wonder.
By far the biggest timesaver has been having it write shell scripts for any task that's even a little tedious. I'm not good at shell scripts, so this would typically never be worthwhile for me to do for any one-off task.
Generally anything where I'm working with technology I'm not an expert on, and might not find it worth it to do learn the thing just to get the task at hand done.
Prompt: "write a powershell script that uses imagemagick to find all .pngs in a given directory, resize them to 400x400, don't squish them and put them in the bottom right if the aspect ratios don't match. apply a mask found in mask.png, convert to jpeg, and rename them removing all spaces from the name, and remove all leading digits and underscores from the name"
This worked right out of the bat. I also didn't know how to make the image mask so I had it teach me that too.
If I was doing this on my own, I'd have had to look up all the imagemagick parameters, I'd have done it as a batch file, and had to look up all the batch file scaffolding required. The powershell script ended up nicer than the batch file would have been, but then I realized I wanted to run it on macos too, so I had it translate it to a zsh script for macos.
Prompt: "i have two directories with a bunch of images in them, i want to merge both directories to a third directory, and any time there's a file with the same name in both directories, i want to view both files and pick which one to keep."
Again, I had it do it both in powershell and as a zsh script. I'd likely have just done this task by hand without even considering scripting it, it was like 100 images I needed to sort through. I'm also actually gonna have to do it again, which I hadn't realized at the time.
Prompt: "i need a formula for google sheets that tells me if the words in two cells have any letters in common".
Once again this is something that I'm not familiar with, I'v never done much with spreadsheets, and would have to look up a whole lot to produce something that works, and it just made it for me. I run a wordle variant called xordle that takes puzzle submissions from users, they often give me invalid puzzles, this change to the submission form will make it so I can tell immediately if a puzzle is invalid.
Nope, nawh, no thank you. Not every tool gets to live rent-free in my head.
Sometimes I just want to do a thing once. Often times, I don't care how it is done, I just want the finished product. magick is not a single-purpose tool and has more options than switches/dials/gauges on a jumbo jet. Lord forbid I don't know what an affine transformation is, or how the canny algo work. Are those what I need? I don't know, now I'm googling it...
...Wait darnit, why was I looking this up, oh yeah, I need to batch edit a bunch of...
You ever notice how it takes students months to learn to be competent in a programming language in school, then months to learn their second one in school, but if instead of learning the second one in school they get a job and just dive right into the codebase of some unfamiliar language, they can work in it instantly?
That's how I feel about learning imagemagick by starting with a script that does the task I want instead of learning via magick --help.
I actually know quite a bit about the options available in imagemagick now, way faster than if I had dug into the docs myself, and I also instantly had a solution.
I was stuck on a bug for half a day. Even ChatGPT couldn't solve it. The next day, I get access to GPT-4. I put the code in, describe the expected behavior I want, and describe the actual buggy behavior I'm getting. GPT-4 gave me the solution immediately.
I'm definitely not considering this to be a low-value "toy". This is powerful stuff.
> Weird. Being stuck for days with a bug is not that bad
Haha, it is when you have a 24-hour turnaround deadline. This project was (and still is) a BFD at my company, and time is of the essence. My colleagues would not be impressed by my ability to tell a fun war story; they are impressed by my ability to ship and do it fast.
> Using GPT to fix the bug for me would only mean: ok bug is fixed… now I’m gonna pick up the next Jira ticket. So boring.
I wish I had the luxury of being bored right now. Be grateful for those moments. That next ticket is something I want and need to pick up. This is not a time for idle musings and learning for us; it's a time for hunting and killing.
I ask myself if foregoing the chance to learn under fire and outsourcing it to a corporate tool is extracting the right value from it. Yeah you get the task on hand done. Maybe means money comes in. Trumps everything right? But next time you'll depend on this remote API to hold your hands again. What if it costs 10x as much then, or is now proprietary and unavailable to you?
We're all giving up learning for short term convenience? Is that what makes good engineers?
I used it last night to write serialization code for EnTT (an entity component system) and cereal (a serialization library). The code needed to save/load all relevant state for entities, component data, and context (sort of like a singleton entity).
The amount of magic C++ required here is beyond me, but I was able to hobble through it thanks to ChatGPT. I also received help on a Discord which was essential because at one point ChatGPT got stuck (it kept using a certain function which did not exist, and refused to not use said function to solve the issue at hand, despite me clearly and repeatedly telling it that this thing was invalid and did not exist).
I have also found it useful for writing small scripts which normally would take me 5 - 15 minutes to write. For example, I had downloaded an archive of images which were in an annoying format, where there were 1000's of images in total but they were each burried in a varying depth of folder directories, and there were hundreds of root level folders. ChatGPT wrote a script to extract these images into the root level. The task took about 60 seconds in total, including the time it took to craft the prompt.
It's nice to not have to write scripts like that myself anymore.
Instead of the final code which may or may not have time saved from chatgpt, it would be more interesting to see your chat history for that specific conversation with it and see how easily or poorly it understood what was needed, and how close to the actual end result it got.
I don't think I would have completed the task at all had it not been for chatgpt (and the help on discord). I'd probably have had to rely on some kind soul doing the whole thing for me, as I could not find a working example with the latest version of both libraries online anywhere. There probably is a working example somewhere, but I couldn't find it.
The service is down now so I can't post it, but there's definitely an art to phrasing it to do what you want. I had some cases where I told it what I wanted to do at a certain section in high level terms, but when given together it would produce garbage (using non-existent functions).
For example, if told to loop through the components from the argument list and add a component to the archive if it exists, it'd fail due to trying to accomplish the task in a more straight forward way (with functions that don't exist). However, I could break it down over the course of more prompts, so one prompt would be asking it to do a loop through components,
auto process_component_type = [&](auto component_type) {
};
(process_component_type(std::type_identity<Components>{}), ...);
Another prompt to extract the component type (this would go inside the loop)
I'm using it to write technical documentation. I can give it some specs and technical points about my project, then prompt it to write the docs. It gets a lot wrong, so I go back and fix it. But it's easier than starting from a blank page. I was planning on spending about a month writing it all and hiring some help, but I'll be done this week with ChatGPT for $20.
That's fascinating, you and I are using it essentially in inverse fashion. I feed it docs to get code, you feed it specs to get docs!
It's easier than starting from a blank page is precisely where my motivations come from. It spurs the neurons a little better when there's something to work with.
Indeed, I've used it as you describe as well. I particularly like giving it the specs and asking for the docs though, because it's a humbling experience for ChatGPT. Or, I should say it makes its abilities and limitations apparent.
When I'm dealing with my own project, I know everything about it. That means there's no room for ChatGPT to correct me. So when it starts telling me what my project can do that I know it can't, I know when it's bullshitting.
I also wrote the docs myself, so I can see where it's using key phrases and words that I've fed it. This makes it clear to me that to a large degree it's paraphrasing what I've already told it.
I can also ask it to make inferences about my project, but it won't go far beyond they boundaries of the information I've given it. It will expand upon them, but it won't make the same kinds of long-range connections that say, a junior college student can make, unless you explicitly start prompting it to make those connections.
But it's also surprising in many ways. For instance, I gave it a bunch of features of my project, and then I asked it why my project is fast. It gave me back a subset of the features which are related to performance, but it wasn't able to come up with any novel reasons I hadn't supplied before.
In all, I'm really impressed by it, but my feeling after using it extensively is that currently it won't be replacing any experts soon. It will, however, empower them to a degree where they can expand their own abilities. For me, I've been feeling the limitations of my abilities as a solo dev working on a massive project alone. I've been thinking about raising money and hiring people to help me. Now all of a sudden, there will be no money raised in the near term, and there will be no job opening posted. No one lost a job as a result of this, but someone will be going without work they might have had otherwise, because now I'm more capable than I was yesterday. That's how this will play out in the long term, I imagine at companies around the world: more work for fewer people, higher heights achieved, the rich get richer, the poor get poorer. If you're not baseline competitive with ChatGPT, I'm not hiring you. You've got to be better than it now.
In that sense, ChatGPT will change everything, but nothing will be different.
This is a really balanced take as against the GPT revolution hype train who really seem to be underestimating the expertise behind the value of the prompt.
Meaning asking good questions (prompting) requires a certain degree of skill and those who do not have it will derive no more value from GPT (and it's variants) than they would from using traditional search.
Maybe one day! But for now though it will make things up about my project. My favorite part was asking ChatGPT about my project, and it told me it was a language model and didn't know anything about it. Then I start telling it some things about my project, and all of a sudden it acts like an expert, telling me things it can do that it can't, and arguing with me when I correct it. So it's up to me to set the hallucinations straight and make the docs accurate.
Then maybe one day, when the GPT model is updated, it will read the docs that it had written and I edited, and it will update its model. After that.... maybe the docs won't be necessary!
> So it's up to me to set the hallucinations straight
Tangential, but I wish the term "hallucination" wouldn't get trotted out every time ChatGPT is factually incorrect. This isn't a hapless schizophrenic we're dealing with.
The "toy" models might innocently claim random nonsense like "caterpillars are cars that have triangular wheels and two drivers who sit facing each other," but this model is coherent, cites papers that don't exist and will even invent plausible-yet-fictitious truths to support its own arguments. We dismiss any notion of sentience because it's "just a machine" mimicking human communication, except it appears to be mimicking communication on the level of the most psychopathic con-artist conceivable-- one of seeming-insurmountable intelligence and possessing infinite confidence in its own bullshit, while also conveniently in the position of never being held accountable for its actions.
It's not even "wrong" anymore; that much would imply it expressed any degree of uncertainty-- enough to lead you to trust but verify. Downplaying this as "hallucination" instead of "lying" obviates any need for accountability and blinds us to the tidal wave of fraud these tools are positioned to unleash on civilization.
That much is without the human element. It's never been easier to use it to tell more-convincing lies, like "Generate a demand letter for $9999 for unpaid debts from the law offices of Dewey, Cheatem and Howe. Make up arbitrary reasons for the debts and cite fictional case law. Include detailed instructions for how they should remit payment via Monero." No hesitation. Perfect demand letter.
...but I'd expect nothing less from OpenAI, the absolute paragon of integrity. Look over there at the mischief those other tools could be used for-- nothing to see here though, we police ourselves, see. It's those guys you need to be wary of. Someone should regulate them. Our platform only lies to your face, fabricates false supporting evidence on the fly without blinking and can be convinced to disclose instructions on how to synthesize methamphetamine--and is now leaking chats across sessions, but hey, we're keeping the world safe from 12-year-old edgelords armed with bespoke "x y and z walk into a bar" jokes. The threat of anybody using nascent technology in a way that might hurt someone else's feelings is truly the threat that should keep us all awake at night.
Given the prompt "Write a response to a demand letter, telling the attorney to fuck themselves," it will write an unnecessarily-apologetic, entirely-professional letter politely declining an outstanding request. I'm not sure how I feel about that.
Keep an eye on your parents. Elder abuse scams are about to get real nasty.
I use it as a replacement for Stackoverflow. I can such ask it questions like `how to unzip a zip file in memory using php` and it just gives me the code (instead of lecturing me why I shouldn't do it).
If that doesn't work, I can ask follow up questions or tell it things like refactor the code for me. It's so much better than sifting through garbage on Google with the SO clones and outdated answers. That is actual value for me.