I had the pleasure of picking Andrei's brain for many hours over several days at a conference in Boston several years ago. Fantastic engineer and fantastic person. His talks never disappoint. Thank you, Andrei! I was a little surprised to hear that using a larger left bias for the upper bound portion of the improved equal range algorithm didn't have a benefit. Maybe I need to take a closer look at the implementation and think about the problem a little longer.
This is awesome. This is why I enjoy watching these talks and seeing people continuous question the standards of their own library. showing how these llms can improve your day to day to make the menial tasks easier is a great message to share.
1:08:25 I think that good judgement derives from good intuition, which in turn derives from good skill, which in turn comes from lots of experience. Obviously, a person may not necessarily get stuff from right to level, but that's a different topic. So, no, I wouldn't say that AI levels the playing field in terms of skill.
Having links to actual prompts used to generate code while iterating would be super helpful. Especially together with discussion of what were the bugs in generated code.
It's on my bookshelf. One of the few programming books I read cover to cover. Genuinely creative, but compilers back then.....ugh....the compile errors were painful
1:25:00 I put the code on slide 36 in GodBolt and with GCC and Clang on O3, there are no mul instructions using int* and std::less. I don’t really understand the assembly, but it contains zero multiplication and zero division instructions.
For equal_range, expanding upon the idea that you're likely to have a small number of equal items (in relative terms), wouldn't it be faster to do an exponential search for the upper bound, instead of a center left binary search? With the center left upper bound binary search, you still start by considering the entire remaining range, but bias towards shrinking it quickly. With an exponential search you start by considering the minimal range and exponentially grow it up to the entire remaining range if necessary. So the runtime of the second part of the algorithm will depend only on the length of the equal range, not on the total length of the list. For large lists in the expected case where the equal range is small by comparison this should provide a significant speed up. Even better, unlike in traditional exponential search, in this case you can 'drag the lower bound (on the upper bound) with you' as you exponentially grow the upper bound. EDIT: ah, I see this was asked in the questions in the end.
1:21:00 the -torae isn’t Latin. It looks like Latin to the uninformed, but it’s not proper. The vocative of nouns ending in _-ore_ is _-ore,_ i.e. the same.
Well, 3rd declension noun vocatives are identical to the nominative, yes. I'm assuming he went with "programmator" on the analogy of "doctor" (programmatore is Italian), and since he is addressing programmers, it's plural, making the proper form "programmatores" (-es being the 3rd decl. ending nom./voc. pl.). All that said, his name looks Romanian, so perhaps he was riffing off of how Romanian morphology evolved out of Latin. I don't know anything about it.
21:20 this formula doesn't seem correct, you are summing a bunch of integers but then you get a rational number as a value? Even trying n = 2 you get 23/10 which doesn't seem to match what we should get. I think the correct formula is 3 n lg n - 2 n + 2. BTW this shouldn't really take very long even by hand since you just need to know how to sum a geometric series?
Exactly. Because you can't trust GPT-generated code, you have to check it. You've transformed a code writing task (the easiest part of your job, unless you're doing something truly unusual, in which case GPT won't have any models to work off of) into a code reading task (much harder, and what most of your work already is).
Where the hell do you work that 4 lines of code per day is anything like a credible average. If I wrote 4 lines of code a day I would be rightly fired.
Unpopular opinion: not a great talk, sorry (not great doesn't mean it was terrible, though!). Why? It was not balanced (pun not really intended). Instead of choosing such an example and actually insisting so much on that specific problem, for quite a long time threw me off. If the problem requires so much attention to be understood, just to build the motivation of your speech, I am sorry, but this is not a balanced speech, not by the common rules of how most speeches are typically structured. Now, I would have been curious how ChatGPT would have structured the speech, once Andrei had the idea for what the motivation is. Like a meta-production in a certain sense.
I'm just over half-way in, but so far I have pretty much the opposite impression: it's an interesting talk about algorithms with some kinda unnecessary stuff about ChatGPT thrown in.
I saw this as a handpicked concrete example demonstrating which aspects of programming AI is currently geared toward and which aspects it has yet to fulfil. The bullet points at the end of the talk summarise these. The talk was as much about how the problem was solved as the solution. Understanding what tools an expert uses and how they use them can give valuable insights into how they work, and then you can consider how that differs from the way you work.
Still, I personally do not think that this is a balanced speech. Maybe he chose the wrong kind of problem. But the structure itself could have been optimized. In the end, is it a speech about the intricacies of a specific algorithm or about what ChatGPT can do for the more common mortal developer!? Why not give examples of more mundane, but not trivial tasks and show when an LLM can help and when it cannot. Sorry, but if for half an hour you expose a complex problem to have to introduce some techniques where ChatGPT can be helpful.. you lost me. Call me stupid, if you will, I stand by my feedback this time.
I had the pleasure of picking Andrei's brain for many hours over several days at a conference in Boston several years ago. Fantastic engineer and fantastic person. His talks never disappoint. Thank you, Andrei!
I was a little surprised to hear that using a larger left bias for the upper bound portion of the improved equal range algorithm didn't have a benefit. Maybe I need to take a closer look at the implementation and think about the problem a little longer.
Oh you know this is going to be good :-) Andrei brings the wake-up call!
Andrei for President! Best speaker ever :)
This is awesome. This is why I enjoy watching these talks and seeing people continuous question the standards of their own library. showing how these llms can improve your day to day to make the menial tasks easier is a great message to share.
21:20 very well explained, chat gpt and its brothers it not gonna rob us of our jobs, it helps us get better and faster and do more interesting stuff.
Great stuff Andrei! I wonder if we'll see these improvement in the STD
That is a great talk and awesome research!
It also would be very interesting a talk about using C++ for implementing ChatGPT-like AI... are they using Python for AI nowadays? Why not C++?
PyTorch backend is written in C++, I guess it's easier for data scientists to interface with it through Python though.
1:17:20 Creativity and Judgement also translate quite well between languages, but Skill not so much.
Ok, the REAL question is - did Andrei jam with that band?
Did! Will post the video shortly.
And here's me drumming a cover of Sonny Boy Williamson's "Keep Your Hands Out Of My Pocket"! ua-cam.com/video/BAr5ZB5WwVc/v-deo.html
1:08:25 I think that good judgement derives from good intuition, which in turn derives from good skill, which in turn comes from lots of experience.
Obviously, a person may not necessarily get stuff from right to level, but that's a different topic.
So, no, I wouldn't say that AI levels the playing field in terms of skill.
Having links to actual prompts used to generate code while iterating would be super helpful. Especially together with discussion of what were the bugs in generated code.
I got this guy's book Modern C++ design a decade back and came to know how little C++ I knew
It's on my bookshelf. One of the few programming books I read cover to cover. Genuinely creative, but compilers back then.....ugh....the compile errors were painful
Me too😅😅😅
1:25:00 I put the code on slide 36 in GodBolt and with GCC and Clang on O3, there are no mul instructions using int* and std::less. I don’t really understand the assembly, but it contains zero multiplication and zero division instructions.
sold!! I paid my tax now
For equal_range, expanding upon the idea that you're likely to have a small number of equal items (in relative terms), wouldn't it be faster to do an exponential search for the upper bound, instead of a center left binary search?
With the center left upper bound binary search, you still start by considering the entire remaining range, but bias towards shrinking it quickly. With an exponential search you start by considering the minimal range and exponentially grow it up to the entire remaining range if necessary. So the runtime of the second part of the algorithm will depend only on the length of the equal range, not on the total length of the list. For large lists in the expected case where the equal range is small by comparison this should provide a significant speed up.
Even better, unlike in traditional exponential search, in this case you can 'drag the lower bound (on the upper bound) with you' as you exponentially grow the upper bound.
EDIT: ah, I see this was asked in the questions in the end.
If AI does all my boiler plate coding, bring it on
1:21:00 the -torae isn’t Latin. It looks like Latin to the uninformed, but it’s not proper. The vocative of nouns ending in _-ore_ is _-ore,_ i.e. the same.
Well, 3rd declension noun vocatives are identical to the nominative, yes. I'm assuming he went with "programmator" on the analogy of "doctor" (programmatore is Italian), and since he is addressing programmers, it's plural, making the proper form "programmatores" (-es being the 3rd decl. ending nom./voc. pl.).
All that said, his name looks Romanian, so perhaps he was riffing off of how Romanian morphology evolved out of Latin. I don't know anything about it.
When will we have those algorithms in the namespace std? Did Andrey submit them for standardization? All the best should be part of the standard.
21:20 this formula doesn't seem correct, you are summing a bunch of integers but then you get a rational number as a value? Even trying n = 2 you get 23/10 which doesn't seem to match what we should get. I think the correct formula is 3 n lg n - 2 n + 2. BTW this shouldn't really take very long even by hand since you just need to know how to sum a geometric series?
Knew this was going to be good
So where's the drum? :)
Robots are after nothing. That's the ruling 1% that are after your job.
hilarious XD
On average a developer writes 4 lines of code per day. Inserting these faster is not really a thing...
Is this a real statistic?
Exactly. Because you can't trust GPT-generated code, you have to check it. You've transformed a code writing task (the easiest part of your job, unless you're doing something truly unusual, in which case GPT won't have any models to work off of) into a code reading task (much harder, and what most of your work already is).
Writes or contributes?
Really?
Where the hell do you work that 4 lines of code per day is anything like a credible average. If I wrote 4 lines of code a day I would be rightly fired.
Было бы круто видеть такие видео для ру сегмента😢
в каком смысле ру сегмента? с переводом?
no way, you need to learn international language which is English to watch a great things like that, but😊
No, thanks! the translated version would say stalin created C++ 😂
Unpopular opinion: not a great talk, sorry (not great doesn't mean it was terrible, though!). Why? It was not balanced (pun not really intended). Instead of choosing such an example and actually insisting so much on that specific problem, for quite a long time threw me off. If the problem requires so much attention to be understood, just to build the motivation of your speech, I am sorry, but this is not a balanced speech, not by the common rules of how most speeches are typically structured.
Now, I would have been curious how ChatGPT would have structured the speech, once Andrei had the idea for what the motivation is. Like a meta-production in a certain sense.
I'm just over half-way in, but so far I have pretty much the opposite impression: it's an interesting talk about algorithms with some kinda unnecessary stuff about ChatGPT thrown in.
I saw this as a handpicked concrete example demonstrating which aspects of programming AI is currently geared toward and which aspects it has yet to fulfil. The bullet points at the end of the talk summarise these. The talk was as much about how the problem was solved as the solution. Understanding what tools an expert uses and how they use them can give valuable insights into how they work, and then you can consider how that differs from the way you work.
Still, I personally do not think that this is a balanced speech. Maybe he chose the wrong kind of problem. But the structure itself could have been optimized. In the end, is it a speech about the intricacies of a specific algorithm or about what ChatGPT can do for the more common mortal developer!? Why not give examples of more mundane, but not trivial tasks and show when an LLM can help and when it cannot. Sorry, but if for half an hour you expose a complex problem to have to introduce some techniques where ChatGPT can be helpful.. you lost me. Call me stupid, if you will, I stand by my feedback this time.