"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.
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.
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.
@@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.
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
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
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"
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.
"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.
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.
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.
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.
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.
i just seriously wrote a dictionary comprehension inside of a list comprehension inside of a generator comprehension that was 196 characters long. I just had to rewatch for 3:48. I love this video
This cuts deep. I work on machine learning for computer vision. My degree is in software engineering. I spent quite a long to creating a multiprocessing pipelining framework in python to work around the GIL.. and its now 5 years later, we moved from caffe, to tensorflow, to keras, back to tensorflow.. but tensorflow tensor rt. I really like the hackiness of writing python.. but the language is slow as shit. At my company the primary language we use is java, so its either write dubious python code for machine learning and uncover undeclared variables in production (cause, lets be honest, I stopped running nose tests years ago when I no longer had a dev machine with a gpu.. and was too lazy to work around it) or writing thousands of lines of java boiler plate to do boring shit. I'm pretty sure my purpose built model serving code is faster than Seldon or similar frameworks.. but I'm too scared to test this theory since I put so much effort into it. I am capable of writing C/C++ and even custom cuda kernels.. but far too lazy
lua is in between python and C/C++ but it is not supported by the comunity as hard as python, so here we are with python or with C/C++ no middle way like lua 😢
"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.
'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 :/
"Python is jack-of-all-trades, good at them. Except production code. Except in the way we use it."
Golden.
"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.
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.
"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
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#.
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. 😆
"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
"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
💀
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
"Critique for not using vectors. Happend to me several times in a row" 🤣🤣🤣🤣🤣🤣. Just brilliant. Keep it up
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.
Yours is my favourite YT channel of all time. Every video is genius. Thank you so much for making these.
I feel like this guy really is a python user these lines are too real😅
"PyQt is a good option for building GUIs, ... if you don't have other options!" - Nailed it! 😅
"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
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!
0:49 he turned into Ali G for a moment there "if you is with it | you is not with it" 😆
Booyakasha!
“Which tell me where is python”
Dear god, I lost count of how many times I typed an iteration of this within windows terminal
"... if the timestamp in the SQLAlchemy is in the right format." felt this in my soul
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
"Thats like learning to ride a bike, and then going to learn how to ride an airbus"
- Senior developer 2022
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.
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.
Keep these interview videos coming, they make my day ..... Thank you 😅👍
Freaking gold this is my favorite channel ever!!!
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 was brilliant, specially the "production" joke, that's was hilarious. Looking forward for a C#/C++ junior dev.
“Sometimes we do competitions on who can write the longest comprehension” - Stackoverflow, probably
Defo
"when you wanna do... machine learning" yeah that sums it up
that's the bait for the second part for sure :)
Honestly, this guy is a freaking genius. I love these videos! Keep up the good work my man!!
These vids are addicting
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!
"which pip" I feel personally attacked!
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
The "which python3" reminds me of the xkcd python environment thing
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
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."
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
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
As an astronomer, I felt that CERN comment in my heart.
What's your field?
@@mastershooter64 astronomy
We need a c# junior up in here. Thank you for these!
never stop these videos man!
This is the most accurate portrayal of daily life as a software engineer I've ever seen.
“If every variable is passed by reference, you might just use globals everywhere”
That look of realization destroyed me haha
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 am dev for more than 4 decades. This série is as funny as it is insightful!
Wheels! F***ing Wheel! 🤣
This channel is like Krazam but uploading more often
Great comedy and extremely relatable
Filthy frank finally getting a job and learning programming is what i wanted to see
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
Good stuff as always. That python 2 and 3 gap, yep its there for sure.
I was literally dying for a python video from you!
Keep it up
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 zooming is excessive -STAHHHP
Enable subtitles, even auto generated one. I'm from Brazil, and I love your channel
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
"no we're not gonna talk about the GIL. it's an unwritten rule"
these are getting better and better
This is the coolest programming video I've ever seen!
"which pip" , "which python" 🤣
Holy shit, the 'reads like English' part was incredible.
I've seen many programming skits, but I spit my coffee out three times over the subtle funny as fuck references 🤣🤣🤣
"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.
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.
The last part using which hit home. I've spent to much time searching for the correct python executable
Miss your videos! Please upload!
#1 most best progamming video I have seen all year
Every one of these interviews are masterpieces.
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.
Dude, you crack me up! I hope your channel becomes big!
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.
As someone who just recently use python fulltime for work, I agree 😂
Well, you got me! Had to subscribe after this 😆
This man is so brave for being honest in this interview
"it's not what python can do for you, is what you can do for python"
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.
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
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
i just seriously wrote a dictionary comprehension inside of a list comprehension inside of a generator comprehension that was 196 characters long. I just had to rewatch for 3:48. I love this video
can't wait for the interview with flutter dev
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.
“just write it in C then wrap it in python, i wanna C you struggle” 😂😂😂
"When dependencies don't work, that's when the fun begins."
"I usually tell my students, to pivot their idea then."
Gold.
"if you is with it or you is not with it"😂😂😂😂 Golden
I guess the next video is "Interview with a Senior Machine Learning Engineer in 2022"
„If the timestamp in sqlalchemy is in the right format“...oh I can so relate to that one
Ugghhhh the moment of searching for the current versions in terminal made me itchy sweat
As a non-technical tester, these videos sound like every sprint review for the last 10 years.
“If you is with it or you is not with it.” 😂😂😂
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.
This cuts deep. I work on machine learning for computer vision. My degree is in software engineering. I spent quite a long to creating a multiprocessing pipelining framework in python to work around the GIL.. and its now 5 years later, we moved from caffe, to tensorflow, to keras, back to tensorflow.. but tensorflow tensor rt. I really like the hackiness of writing python.. but the language is slow as shit. At my company the primary language we use is java, so its either write dubious python code for machine learning and uncover undeclared variables in production (cause, lets be honest, I stopped running nose tests years ago when I no longer had a dev machine with a gpu.. and was too lazy to work around it) or writing thousands of lines of java boiler plate to do boring shit. I'm pretty sure my purpose built model serving code is faster than Seldon or similar frameworks.. but I'm too scared to test this theory since I put so much effort into it. I am capable of writing C/C++ and even custom cuda kernels.. but far too lazy
lua is in between python and C/C++ but it is not supported by the comunity as hard as python, so here we are with python or with C/C++ no middle way like lua 😢
"if every variable is passed by reference you might just use globals everywhere" has moment of clarity