From September 4 to 6, the Q-CTRL Back-end Engineering team attended the PyCon AU 2020 conference. PyCon AU is an annual Python conference that consists of many presentations about various topics related to the Python programming language. For the first time, due to COVID restrictions, the conference was held online using the venueless online event hosting platform. Below, each member of the Back-end Engineering team describes their experience of the conference and gives some insight into what they found to be their most valuable takeaways from the event.
I've attended PyCon a few times before and always found it a very interesting and useful experience. Each time I've attended, I've gone back to work and used something I've learned at the conference in our implementation. My favourite talk was Taking Django's ORM Async by Andrew Godwin. We're always looking at performance improvements at Q-CTRL and have recently been getting more involved in asynchronous implementations, so it was very useful to listen to a presentation which will directly affect our applications.
Some other presentations worth mentioning:
Deceptive Security using Python by Gajendra Deshpande It was interesting hearing about a different aspect of security which we could possibly use with some of our solutions.
Oh no! I think my project is outgrowing my Jupyter notebook. How do I survive? by Lydia Peabody - as we use Jupyter notebooks extensively here at Q-CTRL, it was useful to hear about some potential issues and pitfalls.
dask-image: distributed image processing for large data by Genevieve Buckley - sometimes at PyCon, the presentation may not relate directly to your work but you might be able to repurpose some of it instead. This presentation mentioned some large performance improvements around CPU versus GPU processing which we could benefit from.
The conference talks were quite diverse and demonstrated how widely adopted, across many industries and contexts, the Python language is nowadays. My favorite talk was Stop Writing Tests! by Zac Hatfield-Dodds, which showcases the benefits of property-based testing. One of the quotes in that talk particularly resonated with me was:
No person would write a test that would never occur to them.
This highlights the limitations of current conventional testing where the developers only write tests for scenarios they can think of. At Q-CTRL, testing is an integral part of the development workflow and we always look forward to enhancing our test suites in order to cover most of the anticipated scenarios. Thus, I'm looking forward to trying out some of the ideas discussed in that talk.
Piping Rain in Python - Adventures in a minute latency Radar Pipeline by Tishampati Dhar - showed a great deal of ingenuity and passion in overcoming many hurdles to setup hardware and software projects in an underdeveloped country.
Cracking open the COVIDSafe by Yaakov Smith - this talk was highlighting the clash between technology and politics. As technologists, we always try to find the best solutions for the problems at hand. However, when dealing with government organisations, it looks like there are many other factors and constraints that might affect the final result.
Attending PyCon AU 2020 was an enjoyable experience this year, even though it was only online. Unfortunately, watching people talking from their bedrooms cannot yet replace a visit to the Adelaide Central Market or a glass of wine on the hills in the afternoon. Hopefully there will be a chance to do that next year!
Amongst many good talks, I could list a dozen highly inspiring ones. However, I was most interested by the talk On a shoe-string and a t2.small: scaling on a [zero] budget by Tom Eastman for a few reasons. Firstly, he has built a tool that can help bring back sanity from the current violent communication trend in the Twitter community. Secondly, the tools used are pretty similar to our current stack (Django and Celery). Finally, the main subject of the talk, where he explored multiple strategies for performance and scalability without increasing resources. The ways he moved things around to enable the system to evolve and support more users provided me with good insights. The presentation also made me feel confident with the tools and processes we currently use to build our products at Q-CTRL.
The talk Stop Writing Tests! by Zac Hatfield-Dodds demonstrates a great strategy in automating the testing process. The "property-based" testing method mentioned in the talk is inspiring and practical in many scenarios as the manual testing process can be tedious for a software engineer. In general, testing requires the developer to choose some predefined input, use it to run the target function or module, check its behaviour and then repeat as needed. However, this manual testing process can miss some cases - for example, when there is an unexpected input - which could easily happen in production.
The Hypothesis Python library helps a developer to write more powerful tests without predefining the input and expected result and focus on the function’s behaviour. The
@given decorator generates a large and diverse set of matching data to be used as input for the test which helps to reduce the amount of work required when defining test fixtures. This approach can also catch more bugs than the more traditional manual approach.
A very useful presentation for our work at Q-CTRL, was Your Escape Plan From Numpy + Cython by Cheng-Lin Yang, which was about the speeding up of Numpy performance using libraries such as CuPy, Numba and Pythran. The talk proved, once again, that when dealing with large datasets, performance of compiled code trumps interpreted code. Whilst the talk focused largely on performance gains, the speaker also delved into the drawbacks of each of the libraries as well as providing insight into how to go about choosing a library that will fit your needs - which is crucial information that is usually missing from talks like this. As we forever chase performance improvements here at Q-CTRL, it will be interesting to try out some of these libraries on our products in the future and observe the performance gains.
Practicality Beats Purity: The Zen of Python’s Escape Hatch? by Christopher Neugebauer was another eye-opening talk that shed light on the subjectivity of what "good" Python code is and the traps of "foolish consistency." The main takeaway of the talk that "practicality beats purity" was an inspiring answer to the continuous internal debate Python programmers face when trying to decide if a piece of code is "Pythonic."
Taking Django's ORM Async by Andrew Godwin was also very useful. The timing of the talk lined up nicely as we have plans to start converting parts of our own back-end to support asynchronous requests as part of various GraphQL features we're currently implementing.
This year's PyCon was the first PyCon I've ever attended and it was an extremely insightful experience overall with a lot of useful takeaways, interesting libraries to explore and some strong discussion on better Python programming practices. Overall I definitely enjoyed my time at this year's PyCon and, while it may have been my first, it definitely won't be my last!