"sometimes we have a competition to write the longest list comprehension...and sometimes it's in production...and sometimes we don't call it a competition but work" literally perfect.
Multithreading considered idiotic One challenge in multitasking operating systems is separating processes in such a way that interprocess communication and synchronisation is still possible. Every multitasking operating system has solved that. Basically there are two models: The batch model used by CTSS, (Open)VMS, and Windows; and the _new_ (from 1957) fork-join model used by _everyone else._ With multithreading, you have to re-invent operating system primitives for clean data separation and synchronisation all over again, with the potential to make all the possible mistakes everyone else made decades ago all over again and _no_ support from the OS itself. There are POSIX threads, so there is _some_ support from the OS, but in Linux at least, threads have _more overhead_ that processes. Of course, because you not only have to keep track of the memory and the stack, but also of the threads and their stacks, plus synchronise between environment changes. The IPC is on the user, so there is still plenty opportunity to fuck it up. That's why python uses a global interpreter lock. It kills all performance benefits you might get from parallelisation, but it makes multithreading possible for those who don't understand coroutines or futures. Alternatively, you can use subprocesses. These are just ordinary processes spawned through the fork system call. Almost no memory initialisation, the new process only needs to check if it is the parent or the child, and run the appropriate code path in the same script. The only complication is that data passed between processes must be pickled. This is true for all operating systems for which python is available except Windows. Windows uses the batch memory model, based in the assumption that each process is a batch of punch cards containing a self-contained Fortran listing. Accordingly, memory is initialised for each new process, then data is copied from registers in the physical RAM to other registers in the same physical RAM. This makes starting a new process rather expensive compared to the fork-join model. Which is why multithreading exists. Which is why the GIL exists. Which is why you're still better off not using multithreading, but of course a lot of frameworks are written using multithreading based on the misconception that it is more lightweight than starting a new process. To be fair, Windows itself does use multithreading effectively. The svchosts.exe contains several system daemons (called "services" in Windows (and in systemd even through services are something different in Lunix already)) that are required at startup. Putting them all in one file makes startup faster, and the multithreading in this one process is effective because the daemons do not share any data with each other, do not communicate with each other, and do not synchronise with each other in any way. Writing something like that in python would be, if not impossible, completely pointless.
@@davidwuhrer6704 "It kills all performance benefits you might get from parallelisation, but it makes multithreading possible for those who don't understand coroutines or futures." That's exactly the reason for which python has no purpose, if wouldn't be for the AI wave and the academic agenda of making people dumber at each generation.
@@neonmidnight6264 I've always found MPI embarrassingly easy and keep wondering why others find it confusing. I also don't understand how people keep writing race conditions. A computer scientist named Lee wrote a paper about multithreading in which he references the "folk definition of insanity": Doing the same thing over and over and expecting different results. He observed that to write multithreaded code, you have to be insane by that definition. The simple fact is that the process scheduler of any operating system already does all of the multiplexing that you'd need for multithreading. And it does it faster and more efficiently. Posix threads have significantly more overhead than processes do. One caveat that often bites Python programmers is that using treads you can reassign a variable from another thread (which more likely than not introduces a race condition), while with processes you can't. You can only use the return value. (The output in shell script; Python pickles it.) I can do multithreading. In Java it is practically unavoidable, due to the Java VM and its memory model. That's not even the main reason why one should not use Java if at all possible. Writing parallel code is easy (unless you employ what Dijkstra calls "operational reasoning" (EWD1012)I guess.) Using threads for it is not fundamentally different from child processes, or MPI, or tensors, it is just unnecessary runtime overhead.
my workstation had a problem: there was conda but command python directed to python from visual studio, pip directed to Microsoft store's python and pip3 directed to my normal python installation. Why? How? idk. After that I removed all pythons and never used anything but conda ever again. But now conda's getting slow AF so I'm considering moving to mamba...
@@andrey2001v what I do to solve this problem on windows: remove all pythons, pips, etc. from your PATH. then create a new folder somewhere and add that folder to your PATH. Then create symlinks to the various binaries you care about in that folder and u can name them whatever you want to avoid confusion.
@@sevdev9844 He was talking about dependencies (all the libraries your software depends on). Dependencies conflicts usually happen when several of your Python packages have the same dependency but with different incompatible versions. It's hell to resolve this kind of problem. And when you will ask your teacher / senior engineer for advice, he will tell you : "Hmmm ... Let me see ... you should try to pivot your idea ...". Meaning : find another way to code that without those packages = a lot of code to rewrite because he has no idea how to resolve this kind of problem and he can't be bothered to really look into it
That amazing feeling when you are 98% done with your program, but the package that you need is not supported by the version you are using, and the packages you are already using do not work in any other versions, and the only good answer on Stack Overlfow points to a third version where none of it works.
3:00 "pi qt is a good option for build GUIs, if you don't have any option" 3:37 "just write it in C and wrap it in python, I wanna see you struggle" BEST
PyQt? More like crash on exit. I've had to write an app to kill itself because it had no safe way of closing. I like to think it's in a better place now, like production.
I love how Python's use case at the end is machine learning where all the programming is really just configuration of another library probably written in C++ lol
@Cottidae that's actually it's strength it's readability and ease of use is why people prefer it. granted it's not as fast but that's it offload it's weaknesses to other languages strength.
@@CottidaeSEA The argument i have heard is, "Why don't i write this in a more efficient language like C++? because if i did i would still be coding and not talking to you."
@@BudgiePanic I dunno I'm not directing my studies towards that field, I'm just a lover of games. But I think there are plenty of games even AA and AAA that are built in Unity which uses C#.
Brings me back to one of my proudest moments. A single line of comprehension that went past our line length standards. God, it was so awful I loved it :)
It can always be more awful. My worst offender was a three-line set comprehension where the elements where dicts. The overloading of the curly braces is likely to trip up somebody, pure evil.
@@heyosss1050 Global variables (particularly ones that can be modified, as opposed to constants) are considered very bad practice, as it makes code much harder to follow. For example, without globals, you can see at a glance what any given function might do, because it only operates on the arguments you pass to it. On the other hand, if a function can mess around with globals, then it has so-called "side effects" that are really hard to see. Someone could call that function and not realize that it's messing with global data. Any two functions which are completely unrelated in the tree of function calls can directly affect each other through modifying and reading globals. In certain cases and certain environments, globals are unavoidable. But 7 times out of 10, when a new global gets created, it was probably a bad idea. The joke here is that in Python (disclaimer: I don't use Python), most things are passed by reference and could be modified by any function, and deep chains of variables passed by reference is almost as hard to follow as globals.
@@jean4j_ Different languages have different ways of dealing with this. Again, I can't actually speak to Python since I don't use it. Most object-oriented langauges of course offer "public", "private", and sometimes other access modifiers. In Java, you can create "unmodifiable" versions of collections to return in a class's public interface. Both Java and C# have "interface" types, which allows you to limit the ways you can interact with an object. And C# takes this further with built-in "read-only" interfaces over collections, so you could return an array as an "IReadOnlyList" to prevent anybody from modifying it. C++ has a very interesting approach. Along with access modifiers and something like "interface types", you can mark variables and functions as "const". This is a compiler-enforced promise that the object won't be modified. For example, if you mark an object's member function "const" then the function cannot modify any of its fields (in other words, the "this" variable is const). And if you have a const reference to an instance of that class, then you can only call its "const" functions.
I wrote a hacky little tool with flask for an acquaintance's company and it saved their ass at the time. It was meant to be used for about a week and was a complete hack and the interface was inspired by vim of things(poor users). That's been over 5 years now and it's still used regularly. Somehow that thought terrifies me. I learned that nothing lasts longer than a makeshift solution. Just so we're clear, flask is great, but I certainly wasn't at the time.
Hey man, did made a small app with flask and dash/plotly which is mega fragile and hacky. For some reason still going strong after 2 years and lots of users.
Any reasons to pick up Flask over express/fastify except you know Python and don't know JS? If you are writing API that sends JSONs, i think the most comfortable is to write in JS.
I only really had to get to grips with Python about two months ago, wasn't a fan before, but I'm starting to see the (Py)charm now. It's great coming back to this video every few weeks and getting more of the jokes! Love your work!
May be "overstepping", but the videos you have made, including this one, are already better than the entirety of the Silicon Valley show. You have no idea how much I love what you do (PHP dev, JavaScript Dev, and C++ Dev made me sub) and can't wait to see where this channel goes from here.
Honestly... even though I've been an avid Python user for 4 years now, this made me laugh so hard and remember the pain at the same time! Really good video, the thing about so many different venv tools, lmao I couldn't agree more I just stick with using `pip` now, preinstalled and eh, easy enough to use.
In college for one class taught by a temp instructor from facebook, the final assignment was to write some function using memoization. I implemented it using a single line of a monstrous lambda amalgamation long enough to wrap around to like 10 lines using a Y combinator
These are all hilarious. Definitely subscribed, I'm looking forward to part 2! I'd love to see more of the programming tools ones too, like you did with vim! Maybe you could do the git cli, or aws or something!
All of your videos are pure gold! I hope you'll soon find a Ruby/Rails Dev to interview as I can't wait to post that on my Bootcamp's Slack. - A DHH fanboy
1:39 Oh my god, this had me rolling. "Don't ask what Python can do for you, ask what you can do for Python." That is the most on-the-nose tweak of Python culture I've ever heard.
Your videos are amazing. When his series run out, could you consider making how those characters do different things, could be like writing an array or just the way they use stack overflow? I think it is a good idea; like "meanwhile in" but instead of countries use senior developers. Hope ya like the idea. Thanks for reading.
@@berylliosis5250 "what you need here is an Arc", "marcos", "; {}", "the future", "performance with safety". "cargo build, cargo run", "oh no, you dont need to return a result here, just do a .unwrap()", "this will replace C and C++ and Go and every other language"
"I never took the time to learn how package management in python works." Literally me, I refuse to take the upfront effort and learn it. Google everytime.
Oh man when he started doing "which python" , "which python3", etc (4:30) I was laughing so hard. I don't use Python these days but it brought back all the fun times. I probably spent half a day just researching venv vs virtualenv as well since it made *so* much sense for the two to exist with such similar names/uses /s.
Still loving these! Friendly critique though: it feels like your latest videos are going heavier on "zoom the frame in and out while they're talking". It's a great gag, but doing it every single cut is distracting and making me a little nauseous.
Yep,... in Python I spend the of the time figuring out the available functions, names, and what is where located ... by browsing docs on each run-time crash. In statically typed languages it's prevented by compiler and very easy thing with auto-completion. This actually stands in the way of coding, because I have to waste time on technicalities.
When I was first learning Tensorflow/Keras, trying to get the dependencies and versioning in pip was a nightmare. Now I just pivot my idea to not require essential things.
in terms of tools a developer has access to, python is like a fist-sized rock that you found on the ground and you don't wanna go get your hammer or whatever. is it the best tool for the job? no. absolutely not. but a lot of the time, it's Good Enough.
LOL. Bryan Cantrill has tons of energetic videos where he talks rapidly and is a big proponent of C and Rust. You could do a video kinda (nicely) parodying his speech style for C or Rust, that would be great :D
"sometimes we have a competition to write the longest list comprehension...and sometimes it's in production...and sometimes we don't call it a competition but work" literally perfect.
Ah yes, I relate so much
im laughing my ass of for the first time in months
@@unflexian Happy for you 😀. Laughing is fun.
@@JustinLCooper you know what else is fun? List comprehension
I fucking broke out laughing when he said that
"It's a jungle... to be fair the natural habitat of a python" LMAO
This cracked me up 😂
☠
"It's a django"*
@@kkmanos4201lololol you guys gotta stop😂
its a django
"When dependencies don't work, that's when the fun begins"
Now this is pipracing!
burst out laughing with that one
You just have the best sex of your life with bloody TENSORFLOW DEPENDENCIES ON cursed M1 CPU. Damn! Sometimes I doubt my life choices.
@Peter Clay Can I get a pit of an ellaboration? xD
"I usually tell my students to pivot their idea, then," hahaha!
I've had my first experience of that kind recently. Gave me the same fuzzy feelings like apt dependency hell.
"multi-threading is for everyone but not everyone is meant for multi-threading" is a truly profound statement.
Multithreading considered idiotic
One challenge in multitasking operating systems is separating processes in such a way that interprocess communication and synchronisation is still possible. Every multitasking operating system has solved that. Basically there are two models: The batch model used by CTSS, (Open)VMS, and Windows; and the _new_ (from 1957) fork-join model used by _everyone else._
With multithreading, you have to re-invent operating system primitives for clean data separation and synchronisation all over again, with the potential to make all the possible mistakes everyone else made decades ago all over again and _no_ support from the OS itself. There are POSIX threads, so there is _some_ support from the OS, but in Linux at least, threads have _more overhead_ that processes. Of course, because you not only have to keep track of the memory and the stack, but also of the threads and their stacks, plus synchronise between environment changes. The IPC is on the user, so there is still plenty opportunity to fuck it up.
That's why python uses a global interpreter lock. It kills all performance benefits you might get from parallelisation, but it makes multithreading possible for those who don't understand coroutines or futures.
Alternatively, you can use subprocesses. These are just ordinary processes spawned through the fork system call. Almost no memory initialisation, the new process only needs to check if it is the parent or the child, and run the appropriate code path in the same script. The only complication is that data passed between processes must be pickled.
This is true for all operating systems for which python is available except Windows. Windows uses the batch memory model, based in the assumption that each process is a batch of punch cards containing a self-contained Fortran listing. Accordingly, memory is initialised for each new process, then data is copied from registers in the physical RAM to other registers in the same physical RAM. This makes starting a new process rather expensive compared to the fork-join model. Which is why multithreading exists. Which is why the GIL exists. Which is why you're still better off not using multithreading, but of course a lot of frameworks are written using multithreading based on the misconception that it is more lightweight than starting a new process.
To be fair, Windows itself does use multithreading effectively. The svchosts.exe contains several system daemons (called "services" in Windows (and in systemd even through services are something different in Lunix already)) that are required at startup. Putting them all in one file makes startup faster, and the multithreading in this one process is effective because the daemons do not share any data with each other, do not communicate with each other, and do not synchronise with each other in any way. Writing something like that in python would be, if not impossible, completely pointless.
@@davidwuhrer6704 "It kills all performance benefits you might get from parallelisation, but it makes multithreading possible for those who don't understand coroutines or futures."
That's exactly the reason for which python has no purpose, if wouldn't be for the AI wave and the academic agenda of making people dumber at each generation.
Yes
@@davidwuhrer6704 You're not meant for multi-threading
@@neonmidnight6264 I've always found MPI embarrassingly easy and keep wondering why others find it confusing. I also don't understand how people keep writing race conditions.
A computer scientist named Lee wrote a paper about multithreading in which he references the "folk definition of insanity": Doing the same thing over and over and expecting different results. He observed that to write multithreaded code, you have to be insane by that definition.
The simple fact is that the process scheduler of any operating system already does all of the multiplexing that you'd need for multithreading. And it does it faster and more efficiently. Posix threads have significantly more overhead than processes do.
One caveat that often bites Python programmers is that using treads you can reassign a variable from another thread (which more likely than not introduces a race condition), while with processes you can't. You can only use the return value. (The output in shell script; Python pickles it.)
I can do multithreading. In Java it is practically unavoidable, due to the Java VM and its memory model. That's not even the main reason why one should not use Java if at all possible.
Writing parallel code is easy (unless you employ what Dijkstra calls "operational reasoning" (EWD1012)I guess.) Using threads for it is not fundamentally different from child processes, or MPI, or tensors, it is just unnecessary runtime overhead.
"Python is jack-of-all-trades, good at them. Except production code. Except in the way we use it."
Golden.
'which python... which python3' hit hard
which py
my workstation had a problem: there was conda but command python directed to python from visual studio, pip directed to Microsoft store's python and pip3 directed to my normal python installation. Why? How? idk.
After that I removed all pythons and never used anything but conda ever again.
But now conda's getting slow AF so I'm considering moving to mamba...
this xD
@@andrey2001v what I do to solve this problem on windows: remove all pythons, pips, etc. from your PATH. then create a new folder somewhere and add that folder to your PATH. Then create symlinks to the various binaries you care about in that folder and u can name them whatever you want to avoid confusion.
I've only recently started to learn python and used it for less than a week when I started running into this problem :/
"I usually tell my students ... to pivot their idea"
That resonated with me ...
That part I didn't completely understand, as a non natively English speaker. It's about realizing their idea but changing it, so it works with Python?
@@sevdev9844 I think it means abandoning their idea for something that actually works - that's how I took it
@@sevdev9844 He was talking about dependencies (all the libraries your software depends on). Dependencies conflicts usually happen when several of your Python packages have the same dependency but with different incompatible versions. It's hell to resolve this kind of problem. And when you will ask your teacher / senior engineer for advice, he will tell you : "Hmmm ... Let me see ... you should try to pivot your idea ...". Meaning : find another way to code that without those packages = a lot of code to rewrite because he has no idea how to resolve this kind of problem and he can't be bothered to really look into it
@@zaedvfdsd3903 I felt it was more about people trying to make startups and stuff and building MVP in python
@@zaedvfdsd3903 I was thinking this meant "give up on your dreams", so the original comment of "this resonated with me" worried me a bit
This guy's gotta be the greatest coder of all time or something. It's like he has intimate knowledge of how every single language works.
His knowledge on vim was poor
Not just how they work but also all nuance and practical problems with each language.
@Danilo No, it's a way of life. !wq
@@Phroggster god you made my day...😁
@@sonOfLiberty100 I guess you are offended.
That amazing feeling when you are 98% done with your program, but the package that you need is not supported by the version you are using, and the packages you are already using do not work in any other versions, and the only good answer on Stack Overlfow points to a third version where none of it works.
thats python for ya
thats when the fun bgins
amazing, time to package!
thats when you fork it and try/fail to port it to what ever version u need
@@DatIIV maybe this is because I'm a c++ coder at heart but.. Why not just write it yourself if the package doesn't work?
3:00 "pi qt is a good option for build GUIs, if you don't have any option"
3:37 "just write it in C and wrap it in python, I wanna see you struggle"
BEST
PyQt*. It's great, nothing else comes close.
PyQt? More like crash on exit. I've had to write an app to kill itself because it had no safe way of closing.
I like to think it's in a better place now, like production.
@@Henfredemars That's something in your code. I've had no such issues and dealing with plenty of persistence.
@@incremental_failure It's great but more greater is Electron or don't write useless desktop apps in 2023
@@incremental_failure I may be crazy but I like tkinter I find it's easy to use just like vim
I love how Python's use case at the end is machine learning where all the programming is really just configuration of another library probably written in C++ lol
That's just Python in a nutshell. Give instructions to something written in a far more efficient language.
Everything that can be written in Javascript will be written in Javascript. Wrapped in a Python API.
@Cottidae that's actually it's strength it's readability and ease of use is why people prefer it.
granted it's not as fast but that's it offload it's weaknesses to other languages strength.
@@CottidaeSEA The argument i have heard is, "Why don't i write this in a more efficient language like C++? because if i did i would still be coding and not talking to you."
@@lewiswood1693 When their code has finished executing, mine has as well.
No, but really, writing code fast has more to do with what you're used to.
We need a ”Junior C++ developer” video lmao
There is no such thing in the job market, you enter the C++ realm you automatically age several years and become a senior 🧓🏼
Thats contradictary
@@Golipillas There probably is. In the Game Industry.
@@yurisoares2596 Maybe for junior game engine engineers, otherwise aren't they usually using scripting languages that the engine parses?
@@BudgiePanic I dunno I'm not directing my studies towards that field, I'm just a lover of games. But I think there are plenty of games even AA and AAA that are built in Unity which uses C#.
"You'll have to get rid of the training wheels. wheels.... pip wheels." 😂😂 that got me
That was the best one for me
The part just before it about "learning to write a bit and then shifting...to an air bus" did it for me xD
Brings me back to one of my proudest moments. A single line of comprehension that went past our line length standards. God, it was so awful I loved it :)
man if your comphrensions don't span across 5 lines at least you're doing it wrong
It can always be more awful. My worst offender was a three-line set comprehension where the elements where dicts. The overloading of the curly braces is likely to trip up somebody, pure evil.
"Such a messy language... I love it".
Senior Javascript Developer.
@@stenakestrid This is how you ensure keeping your job / clients
Come back to me when you get it longer than your method line length standard.
These are so great buddy! Keep it up, they're viral among all my programming peers. 😆
"if every variable is passed by reference you might just use globals everywhere" that related way too well with me
[[Legacy codebase intensifies]]
What exactly is the joke? I've learned about a semester's worth of C and that's literally what I do. Ples explain.
@@heyosss1050 Global variables (particularly ones that can be modified, as opposed to constants) are considered very bad practice, as it makes code much harder to follow. For example, without globals, you can see at a glance what any given function might do, because it only operates on the arguments you pass to it. On the other hand, if a function can mess around with globals, then it has so-called "side effects" that are really hard to see. Someone could call that function and not realize that it's messing with global data. Any two functions which are completely unrelated in the tree of function calls can directly affect each other through modifying and reading globals.
In certain cases and certain environments, globals are unavoidable. But 7 times out of 10, when a new global gets created, it was probably a bad idea.
The joke here is that in Python (disclaimer: I don't use Python), most things are passed by reference and could be modified by any function, and deep chains of variables passed by reference is almost as hard to follow as globals.
@@bammam5988 to be fair it's the same in Java and most of other languages I feel. Objects are references. Aren't they?
@@jean4j_ Different languages have different ways of dealing with this. Again, I can't actually speak to Python since I don't use it.
Most object-oriented langauges of course offer "public", "private", and sometimes other access modifiers.
In Java, you can create "unmodifiable" versions of collections to return in a class's public interface. Both Java and C# have "interface" types, which allows you to limit the ways you can interact with an object. And C# takes this further with built-in "read-only" interfaces over collections, so you could return an array as an "IReadOnlyList" to prevent anybody from modifying it.
C++ has a very interesting approach. Along with access modifiers and something like "interface types", you can mark variables and functions as "const". This is a compiler-enforced promise that the object won't be modified. For example, if you mark an object's member function "const" then the function cannot modify any of its fields (in other words, the "this" variable is const). And if you have a const reference to an instance of that class, then you can only call its "const" functions.
"Sometimes we do competitions who can write the longest comprehension and sometimes we doing it in out production code"
".. And often we don't call it competition" This was great !
@@francescotaioli2837 "... we call it work" LMAO
💀
I wrote a hacky little tool with flask for an acquaintance's company and it saved their ass at the time. It was meant to be used for about a week and was a complete hack and the interface was inspired by vim of things(poor users). That's been over 5 years now and it's still used regularly. Somehow that thought terrifies me. I learned that nothing lasts longer than a makeshift solution.
Just so we're clear, flask is great, but I certainly wasn't at the time.
Hey man, did made a small app with flask and dash/plotly which is mega fragile and hacky. For some reason still going strong after 2 years and lots of users.
@@frank8627-v8k What was the name of the company? JustWerx㋏
"nothing lasts longer than a makeshift solution" is a quote I will use for the rest of my life.
thanks for the quote
Any reasons to pick up Flask over express/fastify except you know Python and don't know JS? If you are writing API that sends JSONs, i think the most comfortable is to write in JS.
We were all waiting for machine learning to be dropped at some point. Teased us till the end!
I was waiting the entire video to hear him say something about machine learning. Perfect placement...right at the end
And the tensorflow easteregg around 4:30
"Learning python and then learning another language is like learning to ride a bike and then switching to an.... Airbus"
yeah when i switch do dart language i was like wtf is String and int
"PyQt is a good option for building GUIs, ... if you don't have other options!" - Nailed it! 😅
I feel like this guy really is a python user these lines are too real😅
"Critique for not using vectors. Happend to me several times in a row" 🤣🤣🤣🤣🤣🤣. Just brilliant. Keep it up
0:49 he turned into Ali G for a moment there "if you is with it | you is not with it" 😆
Booyakasha!
Yours is my favourite YT channel of all time. Every video is genius. Thank you so much for making these.
"Thats like learning to ride a bike, and then going to learn how to ride an airbus"
- Senior developer 2022
"... if the timestamp in the SQLAlchemy is in the right format." felt this in my soul
I only really had to get to grips with Python about two months ago, wasn't a fan before, but I'm starting to see the (Py)charm now. It's great coming back to this video every few weeks and getting more of the jokes! Love your work!
This guy has immense knowledge about every language out there. I suspect he's using machine learning.
Naw he wrote a python script
@@southpole76Through his EMACs of course
“Sometimes we do competitions on who can write the longest comprehension” - Stackoverflow, probably
Defo
i'm not proud to admit the "where's python" run really hit home with me.
python-is-python3 is one of those simple Linux packages that should not exist, but does and solves whole classes of bugs while creating new ones.
This was brilliant, specially the "production" joke, that's was hilarious. Looking forward for a C#/C++ junior dev.
As someone who programms in both Python and Javascript, I like to quote from Full Metal Jacket:
"I am in a world of shit.
But I am alive."
May be "overstepping", but the videos you have made, including this one, are already better than the entirety of the Silicon Valley show. You have no idea how much I love what you do (PHP dev, JavaScript Dev, and C++ Dev made me sub) and can't wait to see where this channel goes from here.
Chill. They are funny, but not Silicon Valley kind of funny.
silicon valey is for people who want to code these videos are for people whose souls have been taken away from coding too much
Honestly... even though I've been an avid Python user for 4 years now, this made me laugh so hard and remember the pain at the same time!
Really good video, the thing about so many different venv tools, lmao I couldn't agree more
I just stick with using `pip` now, preinstalled and eh, easy enough to use.
All that (Ana)Conda/Homebrew business is for Windows and Mac platforms, where package management is not quite as advanced as Linux.
"when you wanna do... machine learning" yeah that sums it up
that's the bait for the second part for sure :)
I get so excited when I see a new one of these posted, these are genuinely hilarious and I *know* I'm about to laugh my ass off 🤣
This is the most accurate portrayal of daily life as a software engineer I've ever seen.
“Which tell me where is python”
Dear god, I lost count of how many times I typed an iteration of this within windows terminal
As an astronomer, I felt that CERN comment in my heart.
What's your field?
@@mastershooter64 astronomy
“If every variable is passed by reference, you might just use globals everywhere”
That look of realization destroyed me haha
3:00 PyQt is a good option for building GUIs; if you don't have any other option 😂
well pyGTK also exists
And pysimplegui and so so many more
gtk>>>> all my homies hate plasma
WxPython is my go to
Mine is tkinter
These vids are addicting
Keep these interview videos coming, they make my day ..... Thank you 😅👍
Honestly, this guy is a freaking genius. I love these videos! Keep up the good work my man!!
"no we're not gonna talk about the GIL. it's an unwritten rule"
In college for one class taught by a temp instructor from facebook, the final assignment was to write some function using memoization. I implemented it using a single line of a monstrous lambda amalgamation long enough to wrap around to like 10 lines using a Y combinator
These are all hilarious. Definitely subscribed, I'm looking forward to part 2! I'd love to see more of the programming tools ones too, like you did with vim! Maybe you could do the git cli, or aws or something!
Git would be gold!
All of your videos are pure gold! I hope you'll soon find a Ruby/Rails Dev to interview as I can't wait to post that on my Bootcamp's Slack. - A DHH fanboy
1:39 Oh my god, this had me rolling. "Don't ask what Python can do for you, ask what you can do for Python." That is the most on-the-nose tweak of Python culture I've ever heard.
The "which python3" reminds me of the xkcd python environment thing
We need a c# junior up in here. Thank you for these!
This channel is like Krazam but uploading more often
Great comedy and extremely relatable
Freaking gold this is my favorite channel ever!!!
I wanna see a Lua programmer in this show! Keep it up!
HAHHA yes pls
and maybe also rust :P
+1 Lua hobbyist here. He can start by saying why it has never mooned
"which pip" , "which python" 🤣
"which pip" I feel personally attacked!
Good stuff as always. That python 2 and 3 gap, yep its there for sure.
Holy shit, the 'reads like English' part was incredible.
I was literally dying for a python video from you!
Keep it up
Your videos are amazing. When his series run out, could you consider making how those characters do different things, could be like writing an array or just the way they use stack overflow? I think it is a good idea; like "meanwhile in" but instead of countries use senior developers. Hope ya like the idea. Thanks for reading.
I'd love to see you make one of these videos for Rust!
"Lifetimes". "Memory safety." "Memory safety." "70% of bugs at Microsoft". "Safe code, unsafe code, with memory safety". "No inheritance". "No null".
@@berylliosis5250 "what you need here is an Arc", "marcos", "; {}", "the future", "performance with safety". "cargo build, cargo run", "oh no, you dont need to return a result here, just do a .unwrap()", "this will replace C and C++ and Go and every other language"
I had a Rust joke but I’m rewriting it in Rust
never stop these videos man!
Enable subtitles, even auto generated one. I'm from Brazil, and I love your channel
"When dependencies don't work, that's when the fun begins."
"I usually tell my students, to pivot their idea then."
Gold.
The zooming is excessive -STAHHHP
Filthy frank finally getting a job and learning programming is what i wanted to see
these are getting better and better
As someone who just recently use python fulltime for work, I agree 😂
"I never took the time to learn how package management in python works." Literally me, I refuse to take the upfront effort and learn it. Google everytime.
This man is so brave for being honest in this interview
Oh man when he started doing "which python" , "which python3", etc (4:30) I was laughing so hard. I don't use Python these days but it brought back all the fun times. I probably spent half a day just researching venv vs virtualenv as well since it made *so* much sense for the two to exist with such similar names/uses /s.
You might as well just use globals everywhere.... Stares at camera. LOL
if python, might as well
What exactly is the joke? I've learned about a semester's worth of C and that's literally what I do. Ples explain.
@@heyosss1050 I think because staring at the camera = finding out something
@@sbypasser819 Oh like this is some revelation to him? lol nice
"it's not what python can do for you, is what you can do for python"
I've seen many programming skits, but I spit my coffee out three times over the subtle funny as fuck references 🤣🤣🤣
This is the coolest programming video I've ever seen!
I am dev for more than 4 decades. This série is as funny as it is insightful!
Wheels! F***ing Wheel! 🤣
Still loving these! Friendly critique though: it feels like your latest videos are going heavier on "zoom the frame in and out while they're talking". It's a great gag, but doing it every single cut is distracting and making me a little nauseous.
Well, you got me! Had to subscribe after this 😆
I guess the next video is "Interview with a Senior Machine Learning Engineer in 2022"
Miss your videos! Please upload!
“Don’t ask what Python can do for you, ask what you can do for Python 🐍”
can't wait for the interview with flutter dev
You have no idea how it works before you read the docs this sums it up real nice
Yep,... in Python I spend the of the time figuring out the available functions, names, and what is where located ... by browsing docs on each run-time crash. In statically typed languages it's prevented by compiler and very easy thing with auto-completion. This actually stands in the way of coding, because I have to waste time on technicalities.
When I was first learning Tensorflow/Keras, trying to get the dependencies and versioning in pip was a nightmare.
Now I just pivot my idea to not require essential things.
in terms of tools a developer has access to, python is like a fist-sized rock that you found on the ground and you don't wanna go get your hammer or whatever. is it the best tool for the job? no. absolutely not. but a lot of the time, it's Good Enough.
And after you put plenty of efforts in, you realise that it's not good enough, but it's too late now
#1 most best progamming video I have seen all year
"if every variable is passed by reference you might just use globals everywhere" has moment of clarity
"To figure out how packaging works in Python they send me to UPS" Hillarious
Great act! :)) Very funny :))
Congratulations!
"Machine....
Learning"
**Deafening Applause**
“just write it in C then wrap it in python, i wanna C you struggle” 😂😂😂
Dude, you crack me up! I hope your channel becomes big!
Pip wheels hit me right in the feels. I dont even know what it is or does, but every time I have to do something in python pip wheels is there
I'm learning R, and I can't start without your video of an R programmer. You'll have to pull out your most mundane character yet.
As a non-technical tester, these videos sound like every sprint review for the last 10 years.
LOL. Bryan Cantrill has tons of energetic videos where he talks rapidly and is a big proponent of C and Rust. You could do a video kinda (nicely) parodying his speech style for C or Rust, that would be great :D
The thing with the fusion reactor got me so badly. Almost killed me, laugh-caughed so hard I thought it's over. Luckily the exception could be caught.
Waiting for an interview with functional/haskell dev
"Haskell is useless."
"if you is with it or you is not with it"😂😂😂😂 Golden