I had a detailed conversion with chatGPT about how to gracefully handle terminating conditions of a rust program. It summarized cogently to register at_exit()’s for each thread, panic handlers, and register signal handlers. It advised and explain in detail on my query about the thread handling for each of these variants, gave really helpful advice on collecting join handles in a closure on the main thread and waiting for the child threads to exit their at_exit handlers since at_exit can’t guarantee when handlers will execute. It went into detail about cases the process won’t have the ability to clean up. I was able to ask it a lot of clarifying questions and it provided useful responses with clear coherent explanations that were salient and considered the full context of the discussion. I’m certain when I go to actually implement it it’ll have gotten so details wrong. But it provided about as clear explanation of process termination mechanics (for Unix) as I’ve seen articulated, and did so in a way that was directed by my questions not in a 300 page reference manual or random semi relevant questions in stackoverflow answered by partially right contributors.
When I got out of school I went to work for Oracle and decided to read the database manuals, even though I wasn't working on database stuff. When I left I read other database manuals and was able to help people code database stuff, not because I was a real database expert, but because I had read the manuals and they hadn't.
I think something similar is going on here? For some subjects and some questions, ChatGPT acts like a co-worker who has read all the manuals, and that's enough.
Yes - from the examples I've seen, it appears that we're heading towards the Star Trek bridge computer. Even back in the days when TNG aired I don't think anyone really considered the computer "intelligent", just extremely capable and with a magical ability to fill in the blanks while also having a perfect memory for facts. Even without true intelligence (whatever that really is), there is no denying that having your own bridge computer would be great.
Of course, we're going to find some way to fuck it up with advertising, but that's because we live in the Terran Empire timeline.
I've posted this before, but using it as a coding partner reminds me of this scene (https://www.youtube.com/watch?v=vaUuE582vq8) from TNG (Geordi solves a problem on the holodeck).
I was actually literally thinking about that as I worked on my solo project. This is like a coworker I can ask questions of and bounce ideas off of. It actually gives some insightful ideas. I was working on a file rotation scheme and it suggested naming the files uuid_<time in ms>_<resolution number> with the intent that resolution conflicts won’t need to be walked very often if ever optimizing the common case of file.0, file.1, etc. This isn’t like earth shattering or something I wouldn’t have thought of on my own, but it was something I would have a convo about and someone would suggest it and I would pause and consider and find value in it. This is beyond a reference material discussion, this is bouncing architectural ideas off of someone who knows their shit but occasionally hallucinates. That’s generally what I look for in coworkers and employees anyways.
Note: I’m aware UUIDs can contain the time but the intent was the UUID was invariant in the process and it would move to another file once it got to a certain size.
For solo dev this is such a game changer. I found it difficult to work on solo projects in the past because there is no one to talk to who understands what I am doing. Now whenever I feel "stuck" I just write my thoughts to ChatGPT and it often helps me get ideas to unstack. Also, in the past I often procrastinated when I needed to code something that is obvious and hence boring. No longer the case, somehow it just feels more natural and fun explaining it to ChatGPT in words.
I actually also feel a lot less “lonely” in that I’m not alone in my confusion and frustration. I’m not taking chatgpt out to lunch or inviting it over for my daughters birthday but it does fill a void Siri and Alexa don’t on my solo work.
I asked ChatGPT to create some 6502 assembly to multiply two numbers. It generated an iterative approach (add A to itself B times for A*B) but didn't include the actual addition.
I told it that "hey, you forgot to do the addition in that code" and it promptly corrected itself.
Personally, I don't consider that terrible given what I was asking it.
The most mind blowing thing to me is how it’s responsive to feedback like this. It’s like pair programming with a junior. It might be faster for me to just type it myself, but it’s doing what I tell it and filling in a fair amount of blanks itself.
You are not asking for something impossible, its just not there yet. The speed of progress in the field is something few can extrapolate well over next 5 years.
Yeah it feels like it performs really well if you know what needs to be done and how. Spare no detail from the description of how exactly it should do it and it'll usually get most of it right and save some of the time spent messing around with initial setup and boilerplate.
I have the same experience with it, it's very useful, especially when you are unsure about what to even look for. I have a few theories
I suspect it's just a bias we have, most people aren't doing or creating anything, they aren't solving problems or learning new things constantly like engineers do, so chatgpt feels useless to them.
Or perhaps the problems we want to talk or learn about are just easier for an ai to answer than the things they want out of it,
or we are just better at asking the right questions to extract the value out of it, similar to how you learn to use Google correctly to find something.
I don't know I'm really confused about how some people think it's so worthless.
I think this is true for both ChatGPT and AI art. People use them the same way they would Google, get an output that’s mediocre, and write the entire thing off. There was a similar reaction when people were being shown the web decades ago.
But when you start playing with these things, finding out where they’re useful, and how to make use of them, they can do very impressive things.
> I don't know I'm really confused about how some people think it's so worthless.
Maybe because either they believe that ChatGPT is worthless, or they have to deal with the fact that their knowledge is becoming worthless (or, at least, worth less).
I can tell you why I dislike ChatGPT, it's because it's not trustworthy. Somebody that is not well versed in the subject cannot distinguish the hallucinations of the machine, and for somebody that is well versed, they are better served by a rubber duck that doesn't lead them astray
Except there’s an entire thread of people saying it’s useful. No one is trusting it implicitly, but I work with a bunch of folks that are pretty good at what they do but aren’t infallible and I do have to verify a lot of what they do and say. I don’t dislike them for it, they’re human. Why when it’s a machine that’s largely accurate but sometimes hallucinates it’s a perceived failure, while these folks I work with keep getting promoted and praised for their sometimes untrustworthy work?
Because we (or perhaps I) apply different standards to different situations - a bad car driver that causes accidents are accepted as facts of life, whereas a computer driven car is expected to be far safer and have no fatalities.
Personally I find it useless to see a machine as a colleague when it is not better in any way then a colleague, in the same way I don't see a hammer as a very punchy workmate. If I want to have a conversation about something I'll go talk to a human, when I interrogate a database I expect it to be better then a random human.
From either side there is a lot of belief with just minor real experience to fully judge. For me it saves tons of coding time. Together with copilot i am twice as productive. At least.
as someone no longer in industry, I'm curious how this has affected the economics? if you're twice as effective, are jobs being cut? are you working fewer hours? are you accomplishing twice as much?
> I suspect it's just a bias we have, most people aren't doing or creating anything, they aren't solving problems or learning new things constantly like engineers do, so chatgpt feels useless to them.
> Or perhaps the problems we want to talk or learn about are just easier for an ai to answer than the things they want out of it
I think the ABOVE two lines captures the real CORE of why they are two big groups of ChatGPT : supporters and haters
For technical people who are in coding, we may spend 20 minutes with many suggestions to get the final correct code. We test the code and Check-in into github and we EARNED a part of LIVING for that day (as employee).
Now take non-technical person, he is writing an article. He may spend one hour giving various suggestions to complete the article. At the end the article is OK, but not the best. He can not send it to some magazine or news paper, because it is not THE BEST. So in order have an article to have it accepted, he needs to have his ORIGINAL thinking. So in that sense ChatGPT is not SO helpful for him, for that one hour spent he feel ChatGPT is a Conman.
The point I am trying to make: for ChatGPT to be useful for a Technical person with a piece of code, ChatGPT does not have to be ORIGINAL thinker and produce the BEST, it can be average and It has existing template( previous code which workd), all it need to figure out is how to get to that existing solution.
I gave my ABOVE answer text to ChatGPT and asked to refine my idea, this is what it produced.
-------
There are two distinct groups of opinions regarding the usefulness of ChatGPT: supporters and detractors. These differing perspectives stem from the varying needs and expectations of individuals in different professions.
For technical individuals, such as coders, the process of finding the correct solution to a problem can take a considerable amount of time. ChatGPT can be extremely helpful in streamlining this process by suggesting code snippets that have worked in the past, reducing the time spent on trial and error. In this sense, ChatGPT does not have to be an original thinker or produce the absolute best solution, as long as it helps the coder to reach a workable solution efficiently.
However, for non-technical individuals, such as writers, the focus is often on originality and creativity. ChatGPT may not be as helpful in this context because it is limited to suggesting based on pre-existing templates and previous examples. A writer who spends an hour relying on ChatGPT's suggestions may not end up with the best possible article, which could result in a feeling of dissatisfaction. In this scenario, the writer may feel that ChatGPT is not truly helping them to reach their full potential, leading them to view it as a hindrance rather than a help.
In conclusion, the usefulness of ChatGPT is dependent on the individual's specific needs and expectations. For those in technical fields, it can be a valuable tool, while for those in more creative professions, its limitations may outweigh its benefits.
It dosent goes against what you said but chatGPT is also usefull in nontechical domains
I asked it if it could help with my anxiety regarding to my first therapy session it gave me an actionable 6 steps plan to help me reduce my anxiety by actively preparing for that dreaded first session. Not only I am less stressed about that session but I am also a lot more prepared and likely to benefit from it.
If it was available purely offline I would probably replace the therapy with chatGPT entirely, but I dont trust the great AI in the cloud, it whit something I would not share in a forum so no robot psychotherapist for me, not yet at least ...
Probably more dependent on the quality required than the domain. GPT code to check into simple CRUD app X? Sure. GPT code to augment the Linux kernel? Maybe not.
I tried it this whole week. I was initially amazed and thinking "maybe it really will replace my job." Then I switched to "it's a useful helper" and "I can use it to study things". Maybe after the gained confidence, I gave it some more difficult tasks - write code that will give a user read-only permissions - it obviously failed to note that the public schema is special, so that the user could still DROP tables. Asked it where the total count of users in Auth0 is - it lied. Asked it to solve a basic algo problem, it got it wrong. Told it to write incremental back off and remove a try-catch, it couldn't remove the try-catch. Etc, etc. Kind of over it already.
Does copilot do anything differently other than being available as an IDE extension?
I find copilot better because I don't have to disrupt my flow to "ask" it anything. I start writing code, it suggests something, I hit tab if I like it, move on to the next line.
Also, it can read all of my other code (in the project?) so it seems more context aware.
Copilot seems pretty magical to me so far. It seems to be aware of not only the AST but also the types, so if you design your types well it can often get things correct.
I really need to try copilot, if it's truly aware of the overall context, it would be way more helpful than chatGPT, which seems truly good for isolated pure functions (clear input, clear output, DRY). At the end of the day, a good coder can write the function faster than they can describe it. Of course, ChatGPT does throw cool new syntax your way once in a while. For example, I didn't know .Chunk existed in .NET to cleanly break up ids and such into batches to process.
Copilot also describes the function for you. It can code-complete a block of comments which describes the next many lines of code, and then also code-complete the lines of code for you.
It makes mistakes tho. For example, if you have two fields in a struct that could have been used and their names are very similar and they have the same type, then Copilot could use the wrong one. This is effectively a typo, except in code that was autogenerated, and it often takes a LONG TIME to debug a typo like this....
Ideally, you would be in a language with a more expressive type system (like Ocaml) so that those two fields have different types and such a typo cannot be valid.
Yeah, in my experimenting with ChatGPT, it seems quite good at condensing factual information where there's not much chance that people will making things up online.
The thing is that this doesn't extend to situations where, say, a common summary of a topic isn't true when one looks at things in more detail.
For example, Earnest Hemingway is know for "short, concise sentences" and ChatGPT will give this description when asked about his style. But Hemingway in fact used complicate compound sentences fairly frequently - sentences by that a Strunk and White style definition should be broken up. ChatGPT will not admit this even when prompted (though I think most actual critics say this), and it will recommend the long sample sentence I give it be broken up.
Yeah, yesterday I just told it to write a Dockerfile for me, with exactly what I wanted. instead of changing anything by hand, I told it what to fix, without telling it how to. Took 20-30 follow-up messages, telling it to add things, remove things, fix things, make things compatible with the versions of software it was running etc. It worked. Running the container now, works great.
> Took 20-30 follow-up messages, telling it to add things, remove things, fix things, make things compatible with the versions of software it was running etc.
So in other words you basically spent just as much time and effort as if you did it yourself?
I understand your point, and you are right. Had I been familiar with the image I was working with, and the version differences in configuration etc. It probably would have taken me the same amount of time. I look at this from a more zoomed out perspective, this is just the beginning. The point is its capable and will improve.
Will it improve though? I’m not a GPT hater or denier, but how do you even predict that it hasn’t already hit the wall? They can increase parameter count x100 again, but correctness is not some knob they can just dial up to 10. What if a learning dataset simply has not enough info for a correct answer to have a greater weight than all the “con” noise? What if an answer requires a sort of reasoning inaccessible to LLMs?
Stories itt can as well be boiled down to “I fed it with corrections for some time and it didn’t f..k up this last time and finally included everything into the answer”. What makes you think it would not do just that better or quicker?
Edit: Another probably highly related question is, can it answer “I don’t know this / not sure about these parts”? Never seen that in chat logs.
> What if a learning dataset simply has not enough info for a correct answer to have a greater weight than all the “con” noise?
Indeed. I wonder what happens as available training data shifts from purely human-generated (now) to largely AI-generated (soon).
Is this an information analogue to the “gray goo” doomsday that an uncontrolled self-replicating nano device could cause?
>can it answer “I don’t know this”
Such a fabulous question. This statement likely appears infrequently in the training data.
>can it answer “I don’t know this”
Afaik this is one of the more newer ways of training ML models, I've been looking into using it myself for a few things.
A lot of models were trained to provide some quantifiable output 100% of the time, even if that output was wrong. Ie image recognition models "82.45% certain that is a dog", whereas it makes _all_ the difference for it to be able to say "82.42% certain that is a dog and 95.69% certain I don't know what that is" to indicate that the image has many features of a dog, but not enough for it to be more certain that it is a dog than isn't. It's the negative test problem I guess; us devs often forget to do it too.
In a way I wonder if that's how some of the systems in our brains work as well; ie we evolved certain structures to perform certain tasks, but when those structures fail to determine an action, the "I don't know" from that system can kick back into another. Thing like the fear response: brain tries to identify dark shadow & can't, kicks back to evolutionary defence mechanisms of be scared/cautious feel fear as it's saved the skins of our forebears.
Isn't that what the thumbs up/down are for? Some kind of annotating that can be used to improve future iterations of training ? They've got millions of people feeding potentially billions of queries, probably tons of feedback - would this not result in an improvement over time?
Assuming that the existing corpus was already coherent with what experts find true (afaik, they used all available books and common knowledge resources), why would any amount of additional corrective statements make a difference for a retrained model? It’s not that our written knowledge was wrong all the time and we tolerated it until mid 2022.
I don’t really understand how it works, how its iterations are different or what the roadmap is. But what I managed to learn (better say feel) about LLMs isn’t very consistent with such linear predictions.
Well, maybe it will use downvotes as anti-prompts? Existing sources must have had votes too, but it was probably only a subset. Maybe the current iteration didn’t rank by vote at all, so the next one will really shine? Guess we’ll see soon.
So far this has been my experience developing with it, lightning fast but inaccurate results, then just as much time getting it to work as I would've spent writing it myself.
Lmao, the difference being, of course, one tab open vs 20 different tabs for various aspects of Dockerfile docs, SO's providing more detail that the docs lack, etc.
Yeah we can all write this stuff by hand but it's incredibly exciting; when it first came out I was asking it to write snippets of JS for stuff, additions, removals, asking it to write unit tests and then update them when the overall code changed and it maintained several different "threads" of conversation all related to a singular exercise just fine. Sure it's not perfect, but it's kind of cool having a super junior dev who happens to have instant access to most documentation around at the time in its head.
The arc of software development is to make people depend on vaguer specifications to tell systems what they want, and rely on recognition of what they see being what they want with fast feedback loops, versus slowly recalling the syntax of how to state it.
It could be the same time spent, but not the same amount of cognitive effort.
Incredible useful data to feed back into the system for futher learning. Chatgpt is miles ahead on this part conpared to competitors who yet have to release.
Imagine the amount of data chatgpt is receiving now. Google should be very very worried.
> I think a lot of people haven't picked up on the fact that in both cases chatGPT actually understands what you are telling it.
This is something that I haven't seen mentioned yet.
The stunning aspect of ChatGPT is that it seems to understand* the nuances of what I'm asking. Yes, sometimes it spews bullshit, but the bullshit is still trying to address my questions, no matter how odd.
* I suspect that "understand" may not be the correct word here, depending on your definition. But at the very least, it can parse the nuances of my questions.
The subtlety of its communication is fairly astonishing. "Digital assistants" from the world's biggest tech companies can respond to a few basic template questions and commands and tend to fall back on "here's a link to Wikipedia, chief".
In the same day and age, ChatGPT can respond to a statement like "actually it's a cat" with "yes, my apologies for the error, [repeats a lot of stuff with corrections]". In the process it's recognizing that your response is a correction, what "it" refers to, some of the implications of what that change means, and that you are expecting it to issue a response that amends its previous statements. It's several generations ahead of the state of the art.
> I suspect that "understand" may not be the correct word here,
There's no other word for what's going on. The inputs and resulting outputs show something indistinguishable from understanding.
If we choose to define "understanding" as some deeper internal process well that's a deadend because we don't even know the meaning of the term "understanding" from the context of the human brain.
So more or less from the inputs and the outputs there's only one word that describes what's going on. It "understands" you.
I suspect the sensation of understanding is a biological response to a level of confidence in the evaluation of some neural process. To that extent it’s perception is illusory, and often occurs in the absence of what anyone who knows the subject would term a true understanding.
After many years of experience, I still sometimes stumble on how to phrase a regex pattern to get exactly what I want if it is a bit unconventional. Before I'd have to look up lists of common regex's (sed commands, etc). But I've lately been feeding in sample input lines, telling it what I want to do, and it has been really good about answering correctly (and explaining each part of the regex).
Sometimes I have to clarify "But this will also output x, on line 3, but I really want it to output y". And it gives a correction based on my clarification.
Same would be true for searching for the results or trying to find a human who is familiar. In a space where less true information is available, the results would be quite poor for literally everything.
There are already ways of dynamically populating the context of the model with information retrieves as text embeddings from a vector store, based on the initial prompt. This way you can feed the model current and correct information which it will weave into its output
Same for me. I fed it a few requirements and test objectives and its comments were pretty reasonable. With a little specialized training it will probably do better than most systems engineers or testers I know.
Okay so it generated a response which was “reasonable”
How do you know it was correct? Because you checked it’s entire output manually and determined it probably wasn’t too wrong?
So what happens if you now trust it to write firmware for some difficult old timey hardware that nobody understands anymore. It seems correct. But then it actually was just making it up and the coolant system of the power plant breaks and kills 20,000 people.
By trying to run it usually. It is sometimes wrong, and I amend things. But I’ve had more occasions where I thought I was right and it was wrong and after a long debugging I realized I had failed to grok some edge in the language and it was indeed correct and I learned something new.
But I would suggest not using a LLM to make nuclear reactor control system code, just like Java.
I recently had it translate some Lingo code (a dead language used in Macromedia Shockwave) to JavaScript and it did an impressive job considering the lack of documentation available. Sure, the code was simple, and Lingo is very English-like, but it helped me learn a few things about the syntax and produced JS that in theory would work if consumed by some other script that would call its methods appropriately. If people think ChatGPT is a con, I just don't see it. Any con will be from how pop-tech misrepresents it.
I really like ChatGPT & I similarly enjoy GitHub Copilot. The combination of these two technologies has eliminated a large chunk of the time I previously spent referencing documentation, repo issues, man pages, & stack overflow.
If you treat ChatGPT as the expert, you’re going to be disappointed. But when YOU are the expert & can verify what ChatGPT outputs, then it makes a fantastic automated reference.
Last time I articulated your sentiment, the reply was something along the lines of "Well, if you actually needed to ask it about terminating conditions of rust programs, you are certainly the last person who should be judging the validity of its answer" LOL
but isn't it getting its information from all those "partially right contributors"? if so, won't it be only partially right (i.e. sometimes/often wrong) itself?
Theorizing: If the network acquires a pattern of understanding that characterizes the correct response (in other word, if the network "groks" a topic), it will express its knowledge internally as "a correct model (small, efficient)" and "various mistakes that people often make (big, uncompressed)". In this case, the correct pattern should get by far the most reinforcement (because it's a smaller target), and should usually be selected to generate the answer unless the network has a particular reason to expect itself to be playing somebody who's mistaken.
This is also how humans learn, although we can do this process purely internally.
Yesterday I asked ChatGPT, how do I use DataMapping pattern instead of ActiveRecord with Django framework. It recommended me a `Django-OOOR` package. When I asked what that package is, it said, that it is an integration package for OORM, Open Object Relational Mapping component of OpenERP.
Both package and component are made up bullshit, I kid you not. Did you try to actually code and test those graceful termination parts?
I’ve had the same experience with Python code. I found this article poorly written and alarmist - he really doesn’t prove his main point beyond hand waving, and phrases about MS about to “hand over” their search engine to the AI sounds like someone who really doesn’t know much about GPT. Guess I’m disappointed because when I clicked the title I was expecting a cogent criticism I could learn from.
It is a text generator, trained on a huge corpus including the public web. Given the prevalence of this kind of threads on the corpus, it seems likely it should be able to piece together an intelligible text on it.
Maybe a more fitting question to ask when evaluating the technology as a tool for programmers is if it is better than searching Stack Overflow alone?
I hear ya. I want to be able to just ask how to configure something on my Linux system instead of stumbling through man pages, stack exchange, and random websites hoping I am used the right verbiage to describe what I want to do. Or to have it write some boilerplate code for me while I focus on my domain specific implementation and testing.
Yup, told it I was trying to build a search interface on top of a huge Postgres database and wanted ways to speed it up. Told me to check out Elasticsearch, which is promising.
If this is a con, then consider me a mark.