Anthony Shaw


About me

I'm an English expat living in Avoca Beach, Australia. I'm a proud father of 3 girls and strive to be an active, engaged and responsible member of both my local community and the broader open-source tech community.

I work for Microsoft, focused on Python and Open-Sources technologies. I'm also studying a PhD in Computer Science at Macquarie University.

I Tweet often, blog sometimes and speak often. All of my research and tinkering is Open-Source, I'm an active member of some large open-source projects as well as maintaining my own.

Projects I'm working on at the moment

Research

I'm an Adjunct Fellow and PhD Candidate at Macquarie University in Sydney Australia. Here is a list of my recent publications.

Towards evaluating Python as a suitable data science programming language for modern computing architecture, (Masters Thesis) 11 October 2023

The two most popular Computer Programming languages for Data Science are Python, and R. Both are dynamically typed, interpreted languages. Python first appeared in 1991, and R in 1993. Thirty years later, computing architecture has moved toward parallel computation to compensate for decreased annual performance improvement for CPUs. The performance improvement rates for the period 1986-2003 were 52% per year then declining to 22% from 2003-2015. Modern CPU architecture features multiple cores that can parallelize execution even further with technologies such as Hyper-Threading. Despite this trend, Python and R are tied to their 1990s architectural design and are written with a single-threaded Global Interpreter Lock (Python) or a single-threaded interpreter (R). Furthermore, advancing massively parallel AI and Machine Learning algorithms requires support for implementations in code to leverage hardware with over 100 cores using GPU programming APIs. This research will explore the limitations of dynamically typed, interpreted languages on Data Science engineering. This research will demonstrate what factors are limiting the scalability of Python and what alternatives are being developed. This research will propose where investments in the industry should be placed to ensure long-term support for data mining, processing, and engineering applications.

Books

Podcasts

Show Episode Title Date
Talk Python to Me 373 Reinventing Python's Azure CLI July 12th, 2022
Hanselminutes 834 Pyjion, a JIT compiler for Python using .NET Core with Anthony Shaw March 31st, 2022
Talk Python to Me 340 Time to JIT your Python with Pyjion? November 3rd, 2021
Python Bytes 256 And the best open source project prize goes to... October 29th, 2021
Pybites Podcast 11 Tackling big challenges and overcoming decision fatigue August 25th, 2021
SoloCoder Podcast 58 "A Talented Python Fellow" September 22nd, 2020
RealPython Podcast 11 Advice on Getting Started With Testing in Python May 29th, 2020
Talk Python to Me 265 Why is Python slow? May 19th, 2020
Test and Code 101 Application Security February 25th, 2020
Talk Python to Me 240 CPython Source Code deep dive November 10th, 2019
Talk Python to Me 214 Dive into CPython 3.8 and beyond May 8th 2019
Podcast.__init__ 195 Counteracting Code Complexity With Wily January 21st, 2019
Talk Python to Me 180 What's new in Python 3.7 and beyond October 1st, 2018
TechKnow - Jobs of the future September 4th, 2018
Test and Code 46 How do you write tests for things that aren’t that easy to write tests for? September 2nd, 2018
TechKnow - Should you learn to code? July 21, 2018
Talk Python to Me 168 10 Python security holes and how to plug them June 28, 2018
Test and Code 41 Testing problems facing DevOps teams April 18, 2018
Talk Python to Me 155 Practical steps for moving to Python 3 February 13, 2018
Talk Python to Me 132 Contributing to Open Source July 27, 2017
Podcast.__init__ 55 Apache Libcloud May 1st, 2016
Developer on Fire 167 (Autobiographical interview) September 22nd, 2016
FLOSS Weekly 373 Apache Libcloud February 2nd, 2016

Conference Talks

Parallel code with Python 3.12 sub interpreters

Python 3.12 comes with an exciting new feature -- sub-interpreters. Sub-interpreters are a new programming model for Python that enable parallel execution of your code, without needing separate processes. In this talk, you will learn about sub-interpreters, how and where to use them.


Beat the rush! Designing effective load tests for your web application

“The website is slow”. These four words can strike fear and dread in the heart of any developer. Load Testing is a tool for preparing your website for high demand, but designing a good load test is a fine-art. In this talk, we'll explore how design effective load tests for web apps in Python


What's new in Python 3.11 and Beyond

3.11 is the latest release of CPython. Scheduled for October 2022, Python 3.11 comes with new language features like exception groups and asyncio task groups. The biggest change in 3.11 compared with 3.10 and below is speed. 3.11 is the fastest version of CPython yet. In this talk, we will showcase benchmarks on Python 3.11’s speed gains and where to expect improvement in your code.


What's new in Python 3.11

Anthony sheds the light on all the new features and powers of Python 3.11, inspects major changes, exceptions, and error handling nuances, and shares invaluable pro tips on the ultimate performance improvement.


Write faster Python! Common performance anti-patterns

This talk will show small, specific examples of Python code that can be refactored to be faster without compromising on readability. At the start of the talk, I'll explain how to set up a profiler to measure application performance and how to track improvements and regressions.


Visual Studio Code for Python Developers

In this talk you will learn how VS Code can be configured, extended, and optimized for a more effective and productive Python development environment. Once finishing this talk, you will be more productive using VS Code.


Deploying your Django Application for Scale with Microsoft Azure

In this workshop, we will talk through scalable Django architecture and how Azure services like load balancing, sharded databases, and functions can be used to scale a Django application from a few to lots of users.


Restarting Pyjion, a general purpose JIT for Python- is it worth it?

In this talk you'll see an update to the Pyjion project, a JIT compiler for CPython byte-code. This project was started 5 years ago but stopped after making no gains in performance. Recent changes to CPython have made optimisations more viable, so now it has been restarted and is showing big performance gains vs. standard CPython with 100% compatibility. Many attempts have been made to build a general purpose JIT for Python and few have succeeded. Is it worth it and what are the gains to be made? This talk will cover the design ideas of a JIT for CPython, optimisations, and future potential.


Why is Python slow?

When Python completes a comparable application 2–10x slower than another language, why is it slow, and can’t we make it faster? In this talk, we’re going to explore different theories to understand what makes Python slow, what tasks it’s fast at executing, and how you can make it faster. Then, finally, we’ll explore what is coming in future versions of Python that might speed it up once and for all..


Standing out in a world of 20 million developers.

In this talk, be inspired to take action to accelerate your career in software development. Anthony Shaw would discuss how to be unique, why you need to stand out from the crowd, and what it takes to be a globally recognized name in software.


Wily Python: Writing simpler and more maintainable Python

Everyone starts with the best intentions with their Python projects, "this time it's going to be clean, simple and maintainable". But code evolves over time, requirements change and codebases can get messy and complicated quickly. In this talk, you will learn how to use wily to measure and graph how complicated your Python code is and a series of practical techniques to simplify it. wily will show you which parts of your projects are becoming or have become hard to maintain and need a refactor. Once you know where the skeletons are, you will learn practical techniques for refactoring "complex" code and some resources to use to take your refactoring to the next level.


How to write a container daemon in Python

When the authors of Docker first started, they wrote the Docker daemon in Python. This was later switching for Go, but why? This talk will cover mocker, a container runtime Anthony wrote to understand Docker by rewriting its basic functions in 100% Python. Anthony will walk through how to write a Docker daemon in Python whilst applying it to real problems. Whilst the tool might not be production ready, it demonstrates some patterns, libraries and ideas for working with Docker containers from Python.


Blog Posts

Embedding Python into your .NET project with CSnakes


Using the Aspire Dashboard for Python OpenTelemetry tracing, metrics and logs


Working with Chinese, Japanese, and Korean text in Generative AI pipelines


Python 3.13 gets a JIT

Reviewing the JIT in Python 3.13


Fine Tuning Python WSGI and ASGI applications for Flask, Django, and FastAPI


Running Python Parallel Applications with Sub Interpreters


Python match statement


PyPy in Production


async test patterns for Pytest


Running Python on .NET 5


Writing Python Extensions in Assembly


XSS Exploitation in Django Applications


Azure Pipelines autocomplete in PyCharm, IntelliJ, WebStorm, CLion, and Rider


Learning Python from Scratch


Django on Azure - Beyond "Hello World"


My favourite Python stories of 2019

Covering some of the top stories I enjoyed reading in 2019


Your Guide to the CPython Source Code


Has the Python GIL been slain?


Refactoring Python Applications for Simplicity


A letter to the Python community in Africa


Azure Pipelines with Python - by example


5 Coding projects to do with kids

5 fun and simple coding projects to do with your kids.


Getting Started With Testing in Python


Why is Python so slow?


10 common security gotchas in Python and how to avoid them


Tips for getting a raise


Modifying the Python language in 6 minutes

Courses