Brett Cannon

What to look for in a new TV

Or, I've spent the past 2 years researching a new TV & this is what I learned

I'm kind of an A/V nerd. Now I'm not hardcore enough to have a vinyl collection or have an amp for my TV, but all my headphones cost over $100 and I have a Sonos Playbar so I don't have to put up with crappy TV speakers. What I'm trying to say is that I care about the A/V equipment I use, but not to the extent that money is no . . .

Read More

September 03, 2016

Introducing Which Film

For those times when you can't agree on what movie to watch

What I'm announcing

Today I'm happy to announce the public unveiling of Which Film! I'll discuss how the site came about and what drives it, but I thought I would first explain what it does: it's a website to help you choose what movie you and your family/friends should watch together. What you do is you go to the site, enter . . .

Read More

August 31, 2016

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


Cover image credit: