@OuaishBolosse I think it is because of the time he had to cover all that in the presentation, I couldn't be happier I stumbled with this video, you can just rewatch this until it is clear enough.
I remember OOP seeming intimidating until someone explained it in one simple phrase: OOP is giving data behavior. Instead passing data through functions, we can simply ask the data to tell us something about itself or do something to itself.
Finally, find this video! Two years ago, I landed a python job literally just after watching this. James Powell's talk inspired me to become an IT professional, I can never thank you more than enough!
I don't even know anything about python, I code javascript. Still watched the entire thing cuz it sounded like I would gain brain cells by watching. 10/10
In the same boat mate. Been a Node developer for five years and just started learning Python. Thought of watching the video for two minutes just for fun and got hooked till the end within no time.
gotta love the fact that the dude is a an MS conference delivering a talk on python using a linux distro, uses google chrome and Duck Duck go and not a single MS service or product in sight... Makes you wonder why MS even bother having their own damn search engine or browser at this point.
tbh even MS employees aren't required (or culturally pushed towards) searching with bing or using edge or windows. Most devs don't care about platform these days. Some use a mac at work. Most devs that care are probably free to use linux - it IS the academic choice OS. And all these CS grads they hire come from 4 years of being used to linux
This is a definite PLUS! The information and instructions from this talk should be implemented in every tutorial/lecture given about Python. The concepts of the language have never been as clear as he explains.Great!
4:40 shows why James Powell is such a great speaker: nearly all speakers who do this kinds of surveys before the talk do not change the talk depending of the outcome of the attendees answers. James Powell does. He quickly decided (and is able) to adjust the topics a bit in order to give the audience the maximal value he can provide.
This guy really made me want to give up atom and use vim. I bet he picks up girls at bars with his sexy vim skills. Edit: it's just a joke guys. Don't be butthurt.
The speed at which he was typing and using shortcuts seamlessly was just mindblowing. It took me probably half the talk just to not be mesmerized by it.
It wasn't any fancy shortcuts: just the basic day to day vim ones. If you use vim as a main editor for a while, you'll be using them without thinking (even by accident outside of vim).
Sicarius Noctis Oh, I know. Just the learning curve though. It’s so high compared to something like Sublime. Don’t get me wrong, using Sublime as my main editor has shown me it can be just as powerful, if not more, because of the UI. I just have yet to memorize all of the useful key bindings
This is one of the highest quality talks I've ever seen. The presenter is clearly an expert, which stands for "the person who has made most mistakes than everybody else". Fantastic programming, presenting and vim skills. ;)
*What I don't understand is how people in these comments are so focused on how "rude" he is or how his voice sounds. He has knowledge to give and concepts to teach. Learn what you can and leave his expression out of it. I guess it is my fault for being curious about the comments in the first place.*
I'm sure you've moved on to a different username, but I'll explain it for you. A great teacher allows his or her students to absorb information without the information being drowned out by things like language barrier, tone, gestures. It's very difficult to listen to the guy because his demeanor is so poor. He comes off as a jerk which, unsurprisingly, resulted in little participation from the audience. I'm willing to bet a number of folks in that crowd talked about what a jackwagon he was,once the presentation was over.
This is incredible not because it dumps a bunch of technical lingo and just leaves but because it makes you think about how you can use these higher levels concepts in designing and enhancing good software. Awesome work!
In order to follow along you have to have a basic understanding of OOP. Otherwise you might just save this vid to watch it later when you already know some basic OOP. Good presentation tho. Thanks
That is a digraph. You can view the available ones with :digraphs along with the keys to enter after pressing in insert mode. Alternatively, you can make an abbreviation like `:abbr xsq x[ + hex value for unicode character]`, and even put that in your vimrc so that you can just type "xsq " and get "x²".
I really liked this content because it doesn't just explain how these advanced techniques work (metaclasses, decorators, generators).. it actually helps you think through scenarios about where they should be used and why.
I learned so much from this guy!! He is very informative. Most teacher teach you how to write code, but this guy teach you the most important question when learning codes ... 'Why'. You can know how to write codes, but if you dont know why you are writing them,then you are not learning.
3 phases of Insult! 1. @ 11:52 opens Google chrome to look for something, but "Incognito mode". 2. @ 12:05 And search bar opens DuckDuckGo engine. 3. @12:07 Yet uses the word "Google" as a MERE dictionary word meaning "Search for something in the internet"! How I feel sorry for Google!
Exploring __call__ with the Polynomial class. There is a canonical function associated with a polynomial object: the polynomial function. If p2 = Polynomial(3,4,3) then p2(5) should return 3(5^2) + 4(5^1) + 3(5^0). A quibble. I love the talk so far!
You caught a master making a silly mistake. Your comment contributes nothing to his expert explanation of this complicated subject and even your assertion that the polynomial's "len" is "actually" degree 2 demonstrates a high-school level understanding of the magnitude of a polynomial.
Yes at 14:40 there is a mistake. The degree of a polynomial has nothing to do with coefficients. It’s the highest power of a polynomial. This is not used in his functions so they aren’t represented.p1 and p2 are both degree 2 because that’s what he chose to represent. He could have also added a power with each coefficient. Like ax^d+bx^e+c, a,b & c are coefficients and d & e are exponent powers. There are so many different things that could be done.
nothing wrong with that, no one knows everything from birth, if you don't get what's going on, just step back and come back later, eat some basic python tutorials and you will remember this video at some point
Don't worry, keep learning and reading code. Get back to this video in a month or so ; then, you will better understand the benefits of this combinaison of pythonisms. ;-)
I love the way this is presented; focusing on the overarching concepts rather than getting bogged down in minutiae is so much more useful for talks like this. We can lookup the specifics on our own time
That whole __add__ thing at the beginning is what I've been looking for for the past two months and never found until this video which I didn't even mean to watch. Now I can add custom matrices with just a plus xD
Don't get mistaken / taken aback by his aggressive stance. It's a very important piece of information for python developers that he covers very meticulously and methodically. A very high rated content. Give it some time and follow along.
You can just try it out in the REPL. TL:DR Metaclasses and decorators sort of run at "compile" time allowing Python to do static analysis sort of like a type system, but using the entire language. *args, and **kwargs allow you to have functions with arbitrary number of arguments. Generators are like custom for loops (which is a co-routine a function that returns mulitple times instead once), which you write with yield and context managers/decorator are just a special version of generators which build a wrapper around functions with stuff that happens before and stuff that happens after wards. You can merge decorators and context managers with @contextmanager.
I watched this 3 years ago, I understood nothing but stayed until the end of the video making some questions in a notepad. After 3 years I have answered them all and came back to this video to notice I have overcome my dumbness
I mean, if all you need to be more then just 'effective' is basics + a 2 hour talk, that's amazing. Most often this sort of learning material simply doesn't exist.
TBH 2 hours aint shit compared to at least 10 hours you must put into something like Dark Souls! shit as much as i know i have spent at least 2000 hours on that damn game!
It returns the number of polynomial degrees, not the number of the highest degree. So in this case there are 3 degrees, the 0th, 1st and 2nd degree. Edit: Remember, it,s the len function he is demonstrating. It makes sense that it would return the number of different degrees, not the order of the highest degree.
The degree of polynomial is the highest power of the polynomial. This will only work, if you assume that the user will behave nicely and for polynomial of degree 27 (x^27 + 1) he will write the full vector: [1, 0, 0, ..., 1].
Excellent talk. This guy knows his stuff. And the way he linked the different aspects together was really neat. Will have to look out for other talks he has done.
Actually the degree of the polynomial at 14:44 it’s two (2), three (3) is the number of terms. Since the speaker likes to call things by their “intended” name: A quadratic trinomial.
I watched this video my first month when I was learning how to program. After 6 months I got stuck using the same basic things. I'll come back in 6 more months to see if I use this stuff now that I know WHEN to use it.
@@dronephone9934 just rewatched the entire thing and I understand everything besides Meta Classes. I think I might finally ready to apply for jobs in python. I wish he would a section have had async await syntax, don't quite understand how it's not a generator. I've been doing nothing but projects so it's nice to see that I've learnt stuff lol
@@StevenSmith68828 Metaclasses are similar to class decorators. They control the creation of a class, but they are run at "compile time" (before everything else).
I still consider myself a Python newbie especially after seeing speakers like David Murray, Raymond Hettinger, Yuri Selivanov and James Powell and though I first started learning C before I got into Python, Python is the first language that I actually "learned," so I feel like I have a big head when I see videos like this where they talk about metaclasses and decorators but to _me_, it makes perfect sense because I already get the concept of "everything is an object."
Thankyou for a truly great and very well presented talk. For the naysayers that question his python skills, just look at the following line created on the fly around 1:02:30. Could you have written this that quickly and have gotten it to run, correctly, the first time?: print(‘running {.__name__}’.format(f)) for those that criticize the length of the talk, look at the number of folks who are still confused. He is covering a number of relatively complex subjects, and that’s going to take time. I like his choice to talk about the principles involved in dunder methods, deferring us to the docs for more specifics. I’d rather use the docs any day, than try to remember the specific arguments. There are few talks where people really try to explain *why* you might want to do this or that via this mechanism. I think his examples of decorators, contexts, generators etc. are only possible after explaining the generality of dunder methods. Showing how metaclasses provide alternative hooks makes them seem much less mysterious. And yes, “dunder” should be the preferred term. “Special or magic” should be reserved for their usage, not the methods themselves. “magic” is ambiguous because of the magic commands used with IPython. dunder is unambiguous. And he is showing the principles here. the exact value that len should return for a polynomial is debatable, but not really significant to the talk. Yes, evaluation of the polynomial might be appropriate for __call__, but again, the detail isn’t as important as the principle being shown. The way he shows how you can validate the implementation of library vs client code from the other’s perspective, is very instructive. Yes there are subtleties around what you want to do when a module is loaded, and if you’re going to “load” client code to get the assertion failure displayed at build time rather than run time, but knowing that it can be done is very useful. I think a lot of the run-time implementation details of Python are very good to know if you want to be an “Expert”. Knowing when it is appropriate to use that knowledge is equally important. I don’t think think he ever says”this is what you *should* do.” He’s showing that these pretty powerful techniques are not that complicated. Of course, if you’re a Python newbie, *args and **kwargs aren’t going to mean anything to you. But it’s easy to look them up then return to the talk
His Vim skills are nothing to be amazed with. I've been using Vim for 6 months and am far better in it albeit he is a faster typist than I am. His knowledge of Python truly exceptional in my opinion.
This talk is remarkable! Great point about conceptual understanding, and excellent flow throughout the presentation, with clever hooks. I really enjoyed it!
Made an error at 10:40: zip truncates the result to the length of the shortest input iterable; thus, __add__ won't work for Polynomials of differing lengths, as coefficients would be discarded from the longest of the two polynomials.
you would have to use zip_longest from itertools this takes a default argument for when a sequence runs out which has a default value of None, but if you set this to 0 then the example would work on polynomials of all sizes
Makes sense; thanks! I feel like relying on itertools to do this pretty basic op is overkill, but I'm *not* an experienced programmer. Is it generally considered acceptable to have itertools do the heavy lifting for you rather than implementing the logic yourself? It might be a stupid question, but I'm genuinely curious.
Ye, it'll probably take you 5 minutes to implement logic like this, but 2 minutes to figure out if there's a library for it, dl it, use it. And as a bonus you will now remember such a library exists for the future. Try not to reinvent the wheel, I guess.
Sebastian Frelle Koch libraries like itertools are really optimised, and you don't need to import the entire library, just the one function that you're using. after the import which should take a couple of milliseconds, the function should run just as fast if not faster than your own implementation
At 14:40, there is a mistake. The polynomials are not 3rd degree polynomials. They're second degree, and `def __len(self)__` should return `len(self.coeffs) - 1 `. What you have is incorrect.
The generator comprehension is being unpacked into arguments. Notice in the constructor of Polynomial (line 9) how the signature accepts *coeffs, this means the construct accepts unlimited arguments with will be expressed as a list. See: docs.python.org/3/glossary.html#term-argument
wm - looks like xfce (may be lxdm), tmux in terminal, vim conf and linux distro - unknown... I recommend i3 instead of xfce though, goes well with tmux + vim...
I couldn't really understand much of this a few months ago, though now this is starting to look crystal clear, just need more experience playing with the cool concepts he's given :D Top Notch Lecture! Such a top notch talk though, I feel like this has made so much click! He is so correct the syntax doesn't matter comparatively to the concepts. Even though this was focused around python, this is extremely useful for javascript as well!
Skycoca Well people have different learning styles. To me this is honestly one of the best lectures I have seen on this channel. But I understand he can be kinda of an ass and if you want someone nice as a teacher this isn’t the guy.
This was really good. I had to listen to the video a number of times and follow his code to completely understand what he was saying but I've definitely learned a lot. This is not for beginners. So the downvotes are maybe from beginners who are looking for a shortcut to be an expert in Python.
The first time I heard the language "protocol oriented" being used was in reference to Swift. I'm not a greybeard but I've been using Python for almost a decade, and was previously aware of dunder methods but never once heard anyone call it a protocol oriented practice. Is this just to kinda kick Swift in the ass a little or have I just had selective reading skills for the last 9 years, lol
To all the fragile snowflakes that don't like his hair, his face, his shirt, his personality ... If you're focusing on anything but the code you're focusing on the wrong thing. What? Engineers can be crass? say it ain't so! gasp! He's not in public relations, he's an engineer giving a presentation to engineers. It's called context.
@@theultimatereductionist7592 Python is a good language for CS who are pursuing ML so stop hating Python ; It is a general purpose language and solves all the necessary tasks quite fluently .
Critiquing a speaker's effectiveness doesn't make you a snowflake, in fact it's one of the most important aspects of any instructional video, so it MUST be scrutinized. This guy is OK but not great. His delivery is uneven, certainly fast enough (likely too fast for some) and yet he sometimes spends too much time setting up the premise. General organization of subject matter fair but not great. All in all not a compelling speaker/instructor. If he was my teacher I'd drop the course or switch to a different section with a different teacher. I have seen videos on the same subject matter that seem to cover twice the material in half the time, all while speaking in a more even, measured and engaging voice. This guy sounds like he's in in a huge rush for all two hours and frankly is exhausting to listen to. Oh, and I have over 20 years experience public speaking and teaching tech subjects both to layman and to fellow engineers, so I'm speaking from position of knowledge here. I also did radio for over 10 years, so I ain't no snowflake, heat miser! ;)
@@oggassaggaoggaffa you're triggered by his presentation style because you're a snowflake. decades on the radio, and 20 years of public speaking won't change that fact.
metaclasses: 18:50
metaclasses(explained): 40:40
decorator: 45:20
generator: 1:04:30
context manager: 1:22:37
summary: 1:40:00
thanks
His logical progression of how decorators came about is nice.
You forgot ruclips.net/video/7lmCu8wz8ro/видео.html
Saitama you know Python too?
Faisal
does anyone know the plugin he is using for vim
Was shocked when the camera panned out to reveal only a handful of people in the room. The quality of this presentation deserves a larger audience!
Is 450,000 enough of an audience?
Fast approaching a million, lol
@@tbtitans21 almost 1 million views now! :D
1 million views. Are you not entertained?
Indeed
The first man to wear a suit to a python conference.
because i am so seriously an expert wuuuuuu :) don't under estimate me situation..
James has a dedication to certain style. Good dude.
The guy is a Wall Street quant
cmon :) hes a good fella
You didn't notice the big Microsoft logo on the podium? Microsoft is all up for python, R and Machine Learning these days
the guy is the perfect teacher
methodical, precise, clear and direct to the point
i feel like i learn a 3 months worth in classes, in just 1 video
I wouldn't put a check mark in the concise column, but I agree on all other points.
Over the last year, I have rewatched this video 5 times to capture the full depth of information.
@@chaugen1 Yeh, I was just thinking I have to re-watch this at least once :P
@OuaishBolosse I think it is because of the time he had to cover all that in the presentation, I couldn't be happier I stumbled with this video, you can just rewatch this until it is clear enough.
@OuaishBolosse it’s a presentation lol he has to go fast to fit everything in the time frame
This guy is an exceptionally good orator. What a treat to listen to!
This is one of the best python movies I've ever watched!
Snakes in Panes!
Even monty python.
😂👍🏽
"You're***** right" - Heisenberg
😂😂😂
I remember OOP seeming intimidating until someone explained it in one simple phrase: OOP is giving data behavior. Instead passing data through functions, we can simply ask the data to tell us something about itself or do something to itself.
James Powell teaches how I love to be taught. Bottom up, first principles. It strips away all the magic. Awesome, awesome talk!
Finally, find this video! Two years ago, I landed a python job literally just after watching this. James Powell's talk inspired me to become an IT professional, I can never thank you more than enough!
I don't even know anything about python, I code javascript. Still watched the entire thing cuz it sounded like I would gain brain cells by watching. 10/10
i love js but python is immensely more fun to learn/develop in. get into it and thank me later.
@Peter Mortensen what type of linker you are?
@Peter Mortensen just use "os.path.join" ffs
In the same boat mate. Been a Node developer for five years and just started learning Python. Thought of watching the video for two minutes just for fun and got hooked till the end within no time.
gotta love the fact that the dude is a an MS conference delivering a talk on python using a linux distro, uses google chrome and Duck Duck go and not a single MS service or product in sight...
Makes you wonder why MS even bother having their own damn search engine or browser at this point.
Just because it's not a success doesn't mean it wasn't worth trying.
the fact that he uses chrome is that sort of a setup is weird in and of itself. It's probably the only thing that isn't fully open source.
He using Chromium, which is fully open-source version of Chrome.
tbh even MS employees aren't required (or culturally pushed towards) searching with bing or using edge or windows. Most devs don't care about platform these days. Some use a mac at work. Most devs that care are probably free to use linux - it IS the academic choice OS. And all these CS grads they hire come from 4 years of being used to linux
Coz Windows was designed for users, not for developers
This is a definite PLUS! The information and instructions from this talk should be implemented in every tutorial/lecture given about Python. The concepts of the language have never been as clear as he explains.Great!
4:40 shows why James Powell is such a great speaker: nearly all speakers who do this kinds of surveys before the talk do not change the talk depending of the outcome of the attendees answers.
James Powell does. He quickly decided (and is able) to adjust the topics a bit in order to give the audience the maximal value he can provide.
it really amazes me when people like him can be eloquent in speaking at the same time very articulate in explaining his code and coding it live.
i'm a noob in python and many things in this video are above what i know,but i can't stop watching anyway.
It's 2019, now these things are maybe obvious to you?
Yes
U still noob?
What an awesome teacher. Everything I've seen from him is gold.
This guy really made me want to give up atom and use vim. I bet he picks up girls at bars with his sexy vim skills.
Edit: it's just a joke guys. Don't be butthurt.
Hey girl you want to come over and "esc + i" ?
His vim skills are not that good actually, why would you do :vsplit manually? ctrl+w+v...
@David Flanagan Which talk?
@David Flanagan hi
@@bluetape66 search "james powell generators" you'll find it
I love watching a vim master at work. Simply beautiful.
The speed at which he was typing and using shortcuts seamlessly was just mindblowing. It took me probably half the talk just to not be mesmerized by it.
It wasn't any fancy shortcuts: just the basic day to day vim ones. If you use vim as a main editor for a while, you'll be using them without thinking (even by accident outside of vim).
Sicarius Noctis Oh, I know. Just the learning curve though. It’s so high compared to something like Sublime. Don’t get me wrong, using Sublime as my main editor has shown me it can be just as powerful, if not more, because of the UI. I just have yet to memorize all of the useful key bindings
Nelson Earle I'm faster. Much faster.
Well that's really good and cool. I'm glad you could add to the conversation.
This is one of the highest quality talks I've ever seen. The presenter is clearly an expert, which stands for "the person who has made most mistakes than everybody else". Fantastic programming, presenting and vim skills. ;)
Raymond Heitegger also has very good talks.
What a fantastic presentation! It motivates me to get out of my forever intermediate python skills.
4 years later and I have to say that this guy is really good! Thanks for this!
Great presentation packed with high quality information. It certainly expanded my understanding of Python.
Shame the audience wasn't more engaged.
This talk is gold, simply for highlighting how to write code that protects itself from potential errors found in imported code/modules.
*What I don't understand is how people in these comments are so focused on how "rude" he is or how his voice sounds. He has knowledge to give and concepts to teach. Learn what you can and leave his expression out of it. I guess it is my fault for being curious about the comments in the first place.*
I'm sure you've moved on to a different username, but I'll explain it for you. A great teacher allows his or her students to absorb information without the information being drowned out by things like language barrier, tone, gestures. It's very difficult to listen to the guy because his demeanor is so poor. He comes off as a jerk which, unsurprisingly, resulted in little participation from the audience. I'm willing to bet a number of folks in that crowd talked about what a jackwagon he was,once the presentation was over.
This is incredible not because it dumps a bunch of technical lingo and just leaves but because it makes you think about how you can use these higher levels concepts in designing and enhancing good software. Awesome work!
They are degree _two_ polynomials.
Yeah he didnt use len(poly.args)-1
Glad someone else noticed :)
OMG was looking for that comment ty
You people are geniuses
Also, his add-method does not work correctly. It truncates the longer polynomial if they are of different sizes.
I very rarely comment on youtube ,
but this guy is a freaking ninja.
one of the best talks on youtube.
the best on python in my opinion
In order to follow along you have to have a basic understanding of OOP. Otherwise you might just save this vid to watch it later when you already know some basic OOP.
Good presentation tho. Thanks
When I have watched the video 5 years ago - I learned a lot. Watched the video again today - learned a lot. James, thank you!
God damn this guy knows his stuff.
Honestly, I'm even more impressed by his ninja editor skills than his coding skills.
@Name type *S1 ... S9* for superscript letters.
Also you can type *s1 ... s9* for subscript digits.
That is a digraph. You can view the available ones with :digraphs along with the keys to enter after pressing in insert mode. Alternatively, you can make an abbreviation like `:abbr xsq x[ + hex value for unicode character]`, and even put that in your vimrc so that you can just type "xsq " and get "x²".
lmao
He uses vim like ringing a bell and got the high school stuff in swap memory... A black belt!
I really liked this content because it doesn't just explain how these advanced techniques work (metaclasses, decorators, generators).. it actually helps you think through scenarios about where they should be used and why.
Uses a vi based editor for live presentation at a conference while wearing a suite. That's one aplha male RIGHT THERE!
Sure Sajib Acharya, you would like to think you are an "aplha male" buddy. :P #LordDust
Superb talk. I watched the whole thing in one sitting and it felt like it all took 20 minutes.
This is my favorite python speech on youtube. Very well done
I know next to nothing about Python but I cannot wait to watch this again when I am further along in my studies. Very engaging speaker.
This was an amazing speech with very valuable content. Thank you for sharing it.
I learned so much from this guy!! He is very informative. Most teacher teach you how to write code, but this guy teach you the most important question when learning codes ... 'Why'. You can know how to write codes, but if you dont know why you are writing them,then you are not learning.
Who else calls 'ls' after going into a new created directory?
(1:22:36)
I guess everybody, that's why file browsers were created.
I rather prefer: $ echo "function cd { builtin cd "$@"; ls -thor; }" >> .bashrc
MphoMphego clever!
Thank you sir
For more tips and tricks, checkout my blog: blog.mphomphego.co.za
Carl I call pwd just to double check
3 phases of Insult!
1. @ 11:52 opens Google chrome to look for something, but "Incognito mode".
2. @ 12:05 And search bar opens DuckDuckGo engine.
3. @12:07 Yet uses the word "Google" as a MERE dictionary word meaning "Search for something in the internet"!
How I feel sorry for Google!
I'm still wondering if his python skills beats his VIM skills or vice versa !! But thumbs up for the excellent vid.
Exploring __call__ with the Polynomial class.
There is a canonical function associated with a polynomial object: the polynomial function.
If p2 = Polynomial(3,4,3)
then p2(5) should return 3(5^2) + 4(5^1) + 3(5^0).
A quibble. I love the talk so far!
He said "len is 3 -> degree 3 polynomial" _ Actually since he is dealing with squares, it is called a degree 2 polynomial.
he is a coder I guess, not a math guy, mistake spotted too
You caught a master making a silly mistake. Your comment contributes nothing to his expert explanation of this complicated subject and even your assertion that the polynomial's "len" is "actually" degree 2 demonstrates a high-school level understanding of the magnitude of a polynomial.
I stopped the video to see if anyone noticed, I have already started to question all I knew about polynomial.
Yes at 14:40 there is a mistake. The degree of a polynomial has nothing to do with coefficients. It’s the highest power of a polynomial. This is not used in his functions so they aren’t represented.p1 and p2 are both degree 2 because that’s what he chose to represent. He could have also added a power with each coefficient. Like ax^d+bx^e+c, a,b & c are coefficients and d & e are exponent powers. There are so many different things that could be done.
Am I the only one who has absolutely no clue what's going on?
nothing wrong with that, no one knows everything from birth, if you don't get what's going on, just step back and come back later, eat some basic python tutorials and you will remember this video at some point
Don't worry, keep learning and reading code. Get back to this video in a month or so ; then, you will better understand the benefits of this combinaison of pythonisms. ;-)
James: "asks a question." Microsoft employees: "........" I don't think your alone!
I also have no clue whats going on. But everything he says sounds cool... and believable.
I just started learning about python basics and I have no idea what he is talking about. Maybe I need to come back here after I learn more basics👀
The order of polynomial is len(self.coeffs)-1. For example, 2x^2+x+1 has 3 coefficients (2,1,1) and its order is 2 (x^2).
5:50 that moment when you type ass instead of class in front of an audience.
hhhhhhhhahahahhahaha you're an evil.
the reason was that vim was not in insert mode when he type c
@@betsegawlemmaamersho1638 I thought same
😂😂😂😂😂😂
No he did it on purpose
I love the way this is presented; focusing on the overarching concepts rather than getting bogged down in minutiae is so much more useful for talks like this. We can lookup the specifics on our own time
That whole __add__ thing at the beginning is what I've been looking for for the past two months and never found until this video which I didn't even mean to watch. Now I can add custom matrices with just a plus xD
The real question is, why are you using custom matrices instead of numpy? ;-)
The way how he talks without any eeehm, uuum - crisp and clear talking. And the way how fast he uses vim. Thats a real pro!
Don't get mistaken / taken aback by his aggressive stance. It's a very important piece of information for python developers that he covers very meticulously and methodically. A very high rated content. Give it some time and follow along.
Started thinking I'd hate this seminar, ended loving it all. Thnx for the upload
I've watched all of this, I can confidently say that I understood nothing.
All I know is that I'm willing to work to reach this level.
One year later, how are you doing?
Not even the first part?
You can just try it out in the REPL. TL:DR Metaclasses and decorators sort of run at "compile" time allowing Python to do static analysis sort of like a type system, but using the entire language. *args, and **kwargs allow you to have functions with arbitrary number of arguments. Generators are like custom for loops (which is a co-routine a function that returns mulitple times instead once), which you write with yield and context managers/decorator are just a special version of generators which build a wrapper around functions with stuff that happens before and stuff that happens after wards. You can merge decorators and context managers with @contextmanager.
2 years passed. How are you doing?
I watched this 3 years ago, I understood nothing but stayed until the end of the video making some questions in a notepad. After 3 years I have answered them all and came back to this video to notice I have overcome my dumbness
This fed me a lot more information and got me much more interested into python than any other material Ive found in the web to date.
Title:what does it take to become expert at python?
Thanos:Everything
fax
I enjoy Powell's talks a lot, I always learn a ton from his teaching and it actually sticks.
"I can tell you that what it takes to be effective at python is pretty straight forward...".
Proceeds into a 2 hour talk.
I mean, if all you need to be more then just 'effective' is basics + a 2 hour talk, that's amazing. Most often this sort of learning material simply doesn't exist.
Haha yea, I put this video on my watch later. Gonna came back when I'm expert at python, brb several years.
TBH 2 hours aint shit compared to at least 10 hours you must put into something like Dark Souls! shit as much as i know i have spent at least 2000 hours on that damn game!
hahaha
I wish I could Laugh Out Loud
Great to see a tech presentation by someone with presentation skills! i.e. clear, confident voice, organised etc
those are second not third degree polynomials? the degree is the highest power to which a term is raised
Right.
It returns the number of polynomial degrees, not the number of the highest degree. So in this case there are 3 degrees, the 0th, 1st and 2nd degree.
Edit: Remember, it,s the len function he is demonstrating. It makes sense that it would return the number of different degrees, not the order of the highest degree.
Should be `return len(self.coefs) - 1`
The degree of polynomial is the highest power of the polynomial. This will only work, if you assume that the user will behave nicely and for polynomial of degree 27 (x^27 + 1) he will write the full vector: [1, 0, 0, ..., 1].
Oh yeah you're right. The way he wrote it though, you would have to give it zeros for all the missing terms.
He is an amazing speaker. So smooth and just confident
OK, I am confused... Where is the 15 minute intro on *HOW WE'LL BE USING VISUAL STUDIO?*
The generator API example was exceptionally helpful. It was the perfect way to explain the coroutine pattern.
5:51 I smirked. Clearly, I'll never grow up.
I revisit this great talk regularly to refresh my Python knowledge!
Oh shit! I know this guy, he's at NYC Python Meetup
As a beginner , this presentation motivates me to learn these features and core ideas, to step up my game and move to the next level
Are you sure that you understood it as a beginner ?
The moment he wrote x superscript 2 in vim I knew I'm in for some goodies.
Excellent talk. This guy knows his stuff. And the way he linked the different aspects together was really neat. Will have to look out for other talks he has done.
"No context where you need decorators deeper than this"
Wait till Christopher Nolan learns about this
haha!
@deeper(must)(go)(DEEPER)(DEEEPERRR)(DEEEEEPEERRRRRRRRR)
🔥
I was thinking the same while watching it.
I have no idea what is going on in this video but would love to know what your comment means. Please explain!!!
Actually the degree of the polynomial at 14:44 it’s two (2), three (3) is the number of terms. Since the speaker likes to call things by their “intended” name: A quadratic trinomial.
I watched this video my first month when I was learning how to program. After 6 months I got stuck using the same basic things. I'll come back in 6 more months to see if I use this stuff now that I know WHEN to use it.
Its been 6 months!
@@dronephone9934 just rewatched the entire thing and I understand everything besides Meta Classes. I think I might finally ready to apply for jobs in python. I wish he would a section have had async await syntax, don't quite understand how it's not a generator. I've been doing nothing but projects so it's nice to see that I've learnt stuff lol
@@StevenSmith68828 Metaclasses are similar to class decorators. They control the creation of a class, but they are run at "compile time" (before everything else).
I'm nowhere near ready for this yet but this guy is a treat to listen. Great presentation.
I love that the first thing he wrote was "ass" instead of "class" :P
I still consider myself a Python newbie especially after seeing speakers like David Murray, Raymond Hettinger, Yuri Selivanov and James Powell and though I first started learning C before I got into Python, Python is the first language that I actually "learned," so I feel like I have a big head when I see videos like this where they talk about metaclasses and decorators but to _me_, it makes perfect sense because I already get the concept of "everything is an object."
lol :)
This is a great talk! Thanks for uploading.
Thankyou for a truly great and very well presented talk.
For the naysayers that question his python skills, just look at the following line created on the fly around 1:02:30. Could you have written this that quickly and have gotten it to run, correctly, the first time?:
print(‘running {.__name__}’.format(f))
for those that criticize the length of the talk, look at the number of folks who are still confused.
He is covering a number of relatively complex subjects, and that’s going to take time.
I like his choice to talk about the principles involved in dunder methods, deferring us to the docs for more specifics. I’d rather use the docs any day, than try to remember the specific arguments.
There are few talks where people really try to explain *why* you might want to do this or that via this mechanism. I think his examples of decorators, contexts, generators etc. are only possible after explaining the generality of dunder methods.
Showing how metaclasses provide alternative hooks makes them seem much less mysterious.
And yes, “dunder” should be the preferred term. “Special or magic” should be reserved for their usage, not the methods themselves. “magic” is ambiguous because of the magic commands used with IPython. dunder is unambiguous.
And he is showing the principles here. the exact value that len should return for a polynomial is debatable, but not really significant to the talk. Yes, evaluation of the polynomial might be appropriate for __call__, but again, the detail isn’t as important as the principle being shown.
The way he shows how you can validate the implementation of library vs client code from the other’s perspective, is very instructive. Yes there are subtleties around what you want to do when a module is loaded, and if you’re going to “load” client code to get the assertion failure displayed at build time rather than run time, but knowing that it can be done is very useful. I think a lot of the run-time implementation details of Python are very good to know if you want to be an “Expert”. Knowing when it is appropriate to use that knowledge is equally important. I don’t think think he ever says”this is what you *should* do.” He’s showing that these pretty powerful techniques are not that complicated.
Of course, if you’re a Python newbie, *args and **kwargs aren’t going to mean anything to you.
But it’s easy to look them up then return to the talk
not sure if I am more amazed with his python or vim skills
His Vim skills are nothing to be amazed with. I've been using Vim for 6 months and am far better in it albeit he is a faster typist than I am. His knowledge of Python truly exceptional in my opinion.
His vim power is average young padawan...
This talk is remarkable! Great point about conceptual understanding, and excellent flow throughout the presentation, with clever hooks. I really enjoyed it!
Made an error at 10:40: zip truncates the result to the length of the shortest input iterable; thus, __add__ won't work for Polynomials of differing lengths, as coefficients would be discarded from the longest of the two polynomials.
you would have to use zip_longest from itertools
this takes a default argument for when a sequence runs out which has a default value of None, but if you set this to 0
then the example would work on polynomials of all sizes
Makes sense; thanks! I feel like relying on itertools to do this pretty basic op is overkill, but I'm *not* an experienced programmer. Is it generally considered acceptable to have itertools do the heavy lifting for you rather than implementing the logic yourself? It might be a stupid question, but I'm genuinely curious.
Ye, it'll probably take you 5 minutes to implement logic like this, but 2 minutes to figure out if there's a library for it, dl it, use it. And as a bonus you will now remember such a library exists for the future. Try not to reinvent the wheel, I guess.
No need to download itertools -- it's part of the Python standard libs. So there's even less reason to roll your own :-)
Sebastian Frelle Koch libraries like itertools are really optimised, and you don't need to import the entire library, just the one function that you're using. after the import which should take a couple of milliseconds, the function should run just as fast if not faster than your own implementation
This was the best to-the-point description of decorators I've ever seen.
At 14:40, there is a mistake. The polynomials are not 3rd degree polynomials. They're second degree, and `def __len(self)__` should return `len(self.coeffs) - 1 `. What you have is incorrect.
30 minutes into this so far and already learning so much. Excellent!
At 18:00, why in __add__ function is there an * in the return ? Thank you (Ploynomial(* ... )
The generator comprehension is being unpacked into arguments. Notice in the constructor of Polynomial (line 9) how the signature accepts *coeffs, this means the construct accepts unlimited arguments with will be expressed as a list. See: docs.python.org/3/glossary.html#term-argument
What is the name of his IDE?
I just started coding a month ago... this is so out my league what am I doing here
First day researching python to prepare for college courses, brain drain started happening about halfway through.
hello are you a god at it now?
@@tiran315 yes
to be an expert at python, simply start a project that you work on everday for more than a year. That worked for me.
Can anyone identify the setup he's using - distro, window manager and vim customizations?
wm - looks like xfce (may be lxdm), tmux in terminal, vim conf and linux distro - unknown... I recommend i3 instead of xfce though, goes well with tmux + vim...
must be DWM with TMUX
This guy speaks with such confidence and elegance. What an inspiration.
How to be an expert at anything
1. Say that you are
2. Confuse everybody
3. Make money
man you are a genius
how come you think it's everybody when it's just you most likely ?
Not every human being is at your level of impotance Cedric Coulombe.
Big fact
Ahh, I see you're a man of culture as well.
@14:43 The polynomials are not degree 3, but degree 2 with 3 terms.
I was just about to type that
This guy is nuts! In a good way.
I couldn't really understand much of this a few months ago, though now this is starting to look crystal clear, just need more experience playing with the cool concepts he's given :D Top Notch Lecture!
Such a top notch talk though, I feel like this has made so much click! He is so correct the syntax doesn't matter comparatively to the concepts. Even though this was focused around python, this is extremely useful for javascript as well!
19:21 "When, in reality, this is really just a talk about Python Metaclasses"
It's VERY rare that I can't follow a tech video on at least 1.5x speed. Kudos on that! :D
Holy sh*t he is good at teaching
Shit! It's shit. FFS!
No he isn't. He is good at what he does, but very bad at teaching.
This dude has no idea what empathy even means. Disgusting sociopath.
wut
Skycoca Well people have different learning styles. To me this is honestly one of the best lectures I have seen on this channel. But I understand he can be kinda of an ass and if you want someone nice as a teacher this isn’t the guy.
@@skycocaster I agree completely. He's great at showing off his vi/m skills and his Python knowledge, but he has no ability to relate to others.
This was really good. I had to listen to the video a number of times and follow his code to completely understand what he was saying but I've definitely learned a lot. This is not for beginners. So the downvotes are maybe from beginners who are looking for a shortcut to be an expert in Python.
The first time I heard the language "protocol oriented" being used was in reference to Swift. I'm not a greybeard but I've been using Python for almost a decade, and was previously aware of dunder methods but never once heard anyone call it a protocol oriented practice. Is this just to kinda kick Swift in the ass a little or have I just had selective reading skills for the last 9 years, lol
If you look closely at Swift, you can clearly see that Apple had a good look at Python.
This guy is crazy good in vim, just too good. His explanation of Python concepts are awesome.
To all the fragile snowflakes that don't like his hair, his face, his shirt, his personality ... If you're focusing on anything but the code you're focusing on the wrong thing. What? Engineers can be crass? say it ain't so! gasp! He's not in public relations, he's an engineer giving a presentation to engineers. It's called context.
No: I am focussed on him using Python. That's why I hate him. (jk!)
@@theultimatereductionist7592 Python is a good language for CS who are pursuing ML so stop hating Python ; It is a general purpose language and solves all the necessary tasks quite fluently .
Wells said
Critiquing a speaker's effectiveness doesn't make you a snowflake, in fact it's one of the most important aspects of any instructional video, so it MUST be scrutinized. This guy is OK but not great. His delivery is uneven, certainly fast enough (likely too fast for some) and yet he sometimes spends too much time setting up the premise. General organization of subject matter fair but not great. All in all not a compelling speaker/instructor. If he was my teacher I'd drop the course or switch to a different section with a different teacher. I have seen videos on the same subject matter that seem to cover twice the material in half the time, all while speaking in a more even, measured and engaging voice. This guy sounds like he's in in a huge rush for all two hours and frankly is exhausting to listen to. Oh, and I have over 20 years experience public speaking and teaching tech subjects both to layman and to fellow engineers, so I'm speaking from position of knowledge here. I also did radio for over 10 years, so I ain't no snowflake, heat miser! ;)
@@oggassaggaoggaffa you're triggered by his presentation style because you're a snowflake. decades on the radio, and 20 years of public speaking won't change that fact.
One of the best Python talks I have ever seen!