
Practical Python Programming - signa11
https://github.com/dabeaz-course/practical-python
======
artistsvoid
Thanks to the author for sharing it in this open manner, I look forward to
working with it.

I am sure it has been mentioned before on HN, but seems like a good place to
share [https://github.com/tuvtran/project-based-
learning#python](https://github.com/tuvtran/project-based-learning#python)

Not so much about practicality, but I've been getting into puzzles and mazes
lately [https://www.jamisbuck.org/mazes/](https://www.jamisbuck.org/mazes/)
(not yet bought his book, but will)

Happy coding to all :)

~~~
chynkm
_Project based learning_ is an exhaustive list. I particularly liked the links
mentioned under Python OpenCV. Thanks!

------
anitil
Ah dabeaz! He's got a good youtube channel as well
([https://www.youtube.com/channel/UCbNpPBMvCHr-
TeJkkezog7Q](https://www.youtube.com/channel/UCbNpPBMvCHr-TeJkkezog7Q)).

My favorite is the one called "A Talk Near the Future of Python (a.k.a., Dave
live-codes a WebAssembly Interpreter)" which was talked about on here a while
back

~~~
vortex_ape
I was there when he delivered that keynote at PyCon India in October 2019. It
was all going casually, but when he tied everything together at the end, it
all 'clicked', and everyone in the audience went nuts!

Highly recommend that talk.

------
ed25519FUUU
Nice course. Looks like good, practical material for people who want to dive
in.

Side note, this example made me pause and be grateful that I'm no longer
professionally writing in python as much as I used to be:

    
    
        @shares.setter
        def shares(self, value):
            if not isinstance(value, int):
                raise TypeError('Expected int')
            self._shares = value
    

I programmed python for about 6 years. Now I've switched to Java and Go and
really don't miss having to type-check things manually. Static-typed languages
have too many benefits right off the bat. You can (mostly) avoid all of these
types of checks.

I still use python if I'm doing prototyping, exploring APIs or ideas, etc. But
I try not to roll it into production unless it's an inconsequential program.

~~~
jakear
I’m in the midst of a python project right now - I’m fairly familiar with
python but I haven’t used in a while, preferring TS. I’m currently majorly
kicking myself for not starting out with mypy. Unfortunately even with mypy,
soundness guarantees are nowhere near as powerful as TS, and the typing
ecosystem is lacking (no definitely-typed equivalent i know of), so working
with libraries is pretty much just guesswork. I really have no clue why people
love this language so much.

~~~
pansa2
In my experience, the people who love Python are those who are happy with
dynamic typing - usually because they only use the language for small
projects.

When starting a large project, it would be better to skip Python altogether
and use a proper statically-typed language.

Type hints only make sense when you’re working on an existing large Python
project - just as Guido was doing at Dropbox when he added them to the
language. This is because type annotations are the worst-of-both-worlds - they
require the verbosity of static typing and provide few of its benefits.

 _> This is not a course for software engineers on how to write or maintain a
one-million line Python application. I don't write programs like that, nor do
most companies who use Python, and neither should you._

~~~
at_a_remove
I guess I should ask what you consider a small project. I have some five-digit
LOC projects written entirely in Python. I have never noticed this typing
issue everyone is very concerned about and am often baffled by the emphasis
placed upon it. What am I missing?

I am willing to entertain the idea that I have been very lucky or that I have
some programming mannerism which has caused me to skate by this kind of thing,
but I just don't get it.

~~~
jakear
It’s certainly possible to write untyped code and have it function, but you’re
sacrificing development velocity by requiring both you and future maintainers
to manually do all the things that a type checker can do automatically.

~~~
at_a_remove
Perhaps I have not run into this because I tend to avoid situations where
"velocity" is something within two degrees of me uses as an adjective
describing a project.

~~~
jakear
Replace it with whatever language you use to describe the rate at which things
get done and re-read.

------
zvr
David announced this release of his material exactly a month ago:
[https://twitter.com/dabeaz/status/1266339737624813569](https://twitter.com/dabeaz/status/1266339737624813569)

------
8589934591
Pretty cool course. I wonder what the difference between this and the online O
Reilly course that he offers.

1\. The Python Programming Language. - An in-depth look at Python programming
for those who want to advance their Python programming skills.
[https://learning.oreilly.com/videos/python-programming-
langu...](https://learning.oreilly.com/videos/python-programming-
language/9780134217314)

2\. Practical Python Programming. Over 13 years in development and taught to
more than 400 in-person groups, you'll learn the fundamentals of Python
programming. Now released under a Creative Commons licenses.

------
lmeyerov
Doing a quick skim, feels like this needs auditing. Eg, native exception
handling logging is via print, vs logger.error(exc_info=True). Having a
referenceable professional-grade guide would be awesome! ("This achieves
Google standards or calls out explicit differences. Please review over a few
days as part of onboarding.")

------
pdxpatzer
thank you Dabeaz !

------
gorpovitch
Really nice! Does anyone have similar resources for javascript?

~~~
pieterr
[https://javascript.info/](https://javascript.info/)

