Services

I help product teams to develop low-maintenance Python software in the cloud. The intensity of my engagement depends on your needs. I offer:

Workshop: Bulletproof Python – Property-based testing with Hypothesis

Traditional, example-based tests feed hand-picked inputs into the systems under test and check the results against the expected outputs. It turns out that software engineers are not good at finding suitable example inputs to break their code, otherwise they would have written better code in the first place. In some cases, the expected output—the so called test oracle—is hard to determine or entirely unknown.

Property-based tests search for inputs that break your code. They can alleviate the oracle problem and reduce the amount of overall test code while at the same time covering more edge cases. In short, property-based tests allow you to write better tests with less code. This increases the robustness and the maintainability of your software.

After this workshop participants will be comfortable with property-based testing using the Hypothesis framework. They'll have an understanding of property-based testing and how it's different from example-based testing. Participants will have hand-on experience in requesting appropriate test data from Hypothesis and in writing tests for common and more advanced properties. They'll also learn different strategies to introduce property-based testing into existing projects and continuous integration systems.

This is a one-day workshop for three to ten trainees. The participants are expected to have basic familiarity with unit testing and a testing framework. Provided code examples use pytest. The fee for this training is 465 € per participant for an in-person workshop and 405 € per participant for a remote workshop.

What others say

Great intro to property-based testing, […]!

[…] the “property-based testing with Hypothesis” tutorial […] by @seifertm0, was GREAT!

Property testing rocks

Workshop: Asynchronous programming with Python asyncio

Modern software often uses a distributed design to achieve certain architecture goals. The distributed nature usually involves information to be sent over a network or written to a disk. When such Input/Output (I/O) operations are performed by synchronous code, they will typically wait until the data has been successfully transferred before the application can continue to execute. Unfortunately, the time waiting for the I/O operation to complete is wasted, because the CPU cannot do anything meaningful during that time.

Asynchronous code is able to do meaningful work when waiting for network or disk operations to finish. As a result, it is generally a good fit for workloads that are limited by the I/O operations. This can be the case for web services in distributed systems, which send and receive a lot of data over the network. However, asyncio may also be a good choice for monolithic applications, for example as an alternative to multi-threading or multi-processing.

After this workshop, participants will:

  • have hands-on experience with asynchronous language features, such as async/await, asynchronous generators
  • be able to apply asynchronous programming patterns using Python's asyncio library
  • understand the difference between concurrent and parallel execution and how to parallelize asyncio code
  • understand the implications of asynchronous code on application design

This is a one-day workshop for three to ten trainees. The participants are expected to have basic familiarity with Python programming and unit testing. Provided code examples use asyncio and pytest. The fee for this training is 465 € per participant for an in-person workshop and 405 € per participant for a remote workshop.

What others say

A workshop that clears up the mysticism around one of Python's widely used libraries for asynchronous programming.

I really enjoyed the workshop and the content was prepared clearly and well. I hope we can repeat it with the property based testing. Cheers!

The asyncio workshop explains how to use asyncio to produce concurrent code in theory and practical hands-on exercises - including testing using the pytest asyncio plugin.

Team enablement

I join your product team for three months and help them perform at their best. Reach out for a free consulting.

Book a free call