PyDev of the Week: Amber Brown

This week we welcome Amber Brown (@hawkieowl) as our PyDev of the Week. Amber is one of the core developers of the Twisted package. She has a fun little twisted blog that you might enjoy checking out. You can also see what Amber’s been up to by checking out her Github profile. She has also been interviewed by DjangoGirls. Let’s take a few moments to get to know her better!

Can you tell us a little about yourself (hobbies, education, etc):

I’m an Australian, born in Perth, but ultimately hailing from several small country towns along the west. I’m self-educated in software development and IT, and worked for half a decade in local government as IT, and the past three years in software development full-time. My hobbies are board/card games (Go and MTG, mostly!), video games (Factorio, XCOM 2), and the occasional photography. Programming isn’t so much a hobby for me as a life; it’s questionably healthy for me, I’m sure, but it is what it is! The most surprising aspect of me is generally my age, being 22. My middle name is Hawkie (from HawkOwl, my handle), and like most trans women, I enjoy salt and puns.

Why did you start using Python?

When I was changing gears into software development full-time, I was trying out Node.js, which back in 2012 or whenever was a hot new thing. My friends, as wise as they are, threw Python and Twisted at me instead. A few months later, I took up the release management duty, and now, three years later, I’m one of the core developers and at least partly responsible for a lot of progress that Twisted has made in the past few years.

What other programming languages do you know and which is your favorite?

My first programming language was VB6, and my second was VB.NET. I also know a fair amount of the HTML/CSS/JS stack, and a handful of C. But Python is my favourite, by far..

What projects are you working on now?

Twisted, of course! I’m currently working on pushing the Python 3 port onwards, as well as a few new features (being a primary reviewer of Cory Benfield’s HTTP/2 work). My general plan for this year can be found on my blog! (https://atleastfornow.net/blog/twisted-in-2017/)

Additionally to that, there’s https://github.com/hawkowl/incremental, a library for versioning your Python, and https://github.com/hawkowl/towncrier, a little utility that makes “news files” from fragments, cobbled together on release. I’m also working on Crossbar.io and Autobahn as part of my work at Tavendo/Crossbar.io.

I’m also working on a few talks for PyCon US, PyCon TW, EuroPython, and PyCon AU — generally they end up as smaller projects themselves, as writing the talk usually helps me solve a few of the problems I’m talking about!

Which Python libraries are your favorite (core or 3rd party)?

The obvious choice would be Twisted, since it’s something I hold quite dear to my heart! I also deeply respect (although have technical disagreements with) the Django, Requests, and Tornado libraries. Cory Benfield’s hyper-h2 is also a favourite of mine — an example on how you write a network protocol library, without tying it to a particular framework or synchronous/asynchronous usage.

Where do you see Python going as a programming language?

I believe that asyncio has sort of led a crazy time of adding random things to the standard library — I don’t believe a lot of it should go in there, and I think it’ll be a few years until the realisation that batteries included does not hold up in the day of a working PyPI. That being said, I think the Python 3 “viability” point has been hit, and it’ll be only more popular in the years to come.

What is your take on the current market for Python programmers?

“Must be willing to relocate to San Francisco” was an unfortunate gate for a lot of positions when I was looking for work in 2014/15 — Australia certainly doesn’t have much of a market, which is unfortunate.

Is there anything else you’d like to say?

Software is hard, but people are too! If there’s one thing I’ve realised over the past few years of working on Twisted is that it’s not enough to just talk about code, and performance, and perfection — the user outcomes, and the user learning curve, are incredibly important. This is demonstrated best by Django; it’s hardly the fastest, or the best library, but it’s getting better, and it’s getting better because it has users, and it cares about those users. And that’s something we need to learn to do more.