Brett Cannon

Network protocols, sans I/O

(Hopefully) the future of network protocols in Python

Back in February I started taking a serious look at asynchronous I/O thanks to async/await. One of the things that led to me to looking into this area was when I couldn't find an HTTP/1.1 library that worked with async/await. A little surprised by this, I went looking for an HTTP header parser so that I could do the asynchronous I/O . . .

Read More

August 07, 2016

(Attempting) practical password management

Or, geez is proper security a pain!

Why the hell do I care about security?

Bad people exist out there; it sucks, but there it is. That means you need to take precautionary measures to make sure that bad people can't get at your stuff. In terms of your online stuff, that means passwords. Lots of passwords. Lost of sufficiently complex passwords. Lots and lots of sufficiently . . .

Read More

Posted in: internetsecurity

April 10, 2016

Why pathlib.Path doesn't inherit from str in Python

Or, implicit compatibility is usually not a good thing

Over on python-ideas a discussion has broken out about somehow trying to make p'/some/path/to/a/file return an instance of pathlib.Path. This led to a splinter discussion as to why pathlib.Path doesn't inherit from str? I figured instead of burying my response to this question in the thread I'd blog about it to try and explain one . . .

Read More

March 29, 2016

How to pitch Python 3 to management

Or, the business case for moving to Python 3

[This blog post has been sitting as a draft for months, and I'm finally finishing while at home sick; sorry if that makes it a little less coherent compared to my other posts]

Over on our Python team at Microsoft blog, one of my teammates wrote a blog post showing that project releases on PyPI within a single month will begin to support . . .

Read More

March 08, 2016

How the heck does async/await work in Python 3.5?

Or, generators let you do neat stuff

Being a core developer of Python has made me want to understand how the language generally works. I realize there will always be obscure corners where I don't know every intricate detail, but to be able to help with issues and the general design of Python I feel like I should try and understand its core semantics and how things work under . . .

Read More

February 11, 2016

The history behind the decision to move Python to GitHub

Or, why it took over a year for me to make a decision

I asked on Twitter if people would be interested in having me write down the history behind my decision to choose GitHub for Python's future development process and people said "yes"(some literally), hence this blog post.


My heavy participation with python-dev started with me writing the Python-Dev Summaries, with the . . .

Read More

Posted in: python

January 13, 2016

My New Years programming resolutions

It's a new calendar year, which means it's time to think about what year-long plans I have for my contributions to the Python project. There's always the usual plans I have to approve some patches, fix some bugs, etc. But I seem to always have one or two projects that I really want to see happen that I simply can't solve in a . . .

Read More

Posted in: python

January 06, 2016


Cover image credit: