Itamar Turner-Trauring Avatar

Itamar Turner-Trauring

Helping Python software teams ship features faster.

 Itamar Turner-Trauring pythonspeed.com

CI for performance: Reliable benchmarking in noisy environments

Benchmarking is often not done in CI because it’s so hard to get consistent results; there’s a lot of noise in cloud VMs, so you ideally want dedicated hardware. But, it turns out you can use a tool called Cachegrind to get consistent benchmarks results across different computers, allowing you to run benchmarks in GitHub Actions, GitLab CI, etc. and still get consistent results.

 Itamar Turner-Trauring pythonspeed.com

Options for packaging your Python code: Wheels, Conda, Docker, and more

There are a whole range of ways to package your Python software: Wheels, Pex, RPM/DEB, Conda, executables, Docker images, and more. Which ones should you use? In this overview you’ll learn why they all exist, the pros/cons of each method, and how it deals with things like code distribution and support for multiple applications.

 Itamar Turner-Trauring codewithoutrules.com

Your dev environment matters less than you think

I knew I was going to nod my head in approval before I even landed on Itamar’s website:

Imagine you’re training to become a chef. You will need to learn how to use a knife correctly, to chop and dice safely and quickly.

And yes, you need a sharp knife. But when you’re starting out, it doesn’t matter which knife you use: just pick something sharp and good enough, and move on. After all, the knife is just a tool.

The people eating the food you cook don’t care about which knife you used: they care how the food tastes and looks.

After six months in the kitchen, you’ll start understanding how you personally use a knife, what cuisines you want to pursue, what techniques you want to vary. And then you’ll have the knowledge to pick a specific knife or knives exactly suited to your needs.

But remember: the people eating your food still won’t care which knife you used.

I’ll just leave this right here.

 Itamar Turner-Trauring codewithoutrules.com

On learning new technologies: why breadth beats depth

There’s always new technologies coming out, and learning them in-depth would take an impossible amount of time. But you can most of the benefit, and more efficiently, by focusing on learning just enough about a broad range of tools to know when they’re useful.

You know I’ve been preaching breadth-first over depth-first for years now. In this post, Itamar breaks down why that’s a smart strategy for learning new technologies and lays out a few ways you can gain breadth of knowledge.

Unfortunately, he omitted one of the best ways of gaining (and maintaining) breadth: listen to podcasts!

 Itamar Turner-Trauring pythonspeed.com

10× faster database tests with Docker

Testing code that talks to the database can be slow. Fakes are fast but unrealistic. What to do? With a little help from Docker, you can write tests that run fast, use the real database, are easy to write and run.

I tried Itamar’s technique on changelog.com’s test suite and the 679 tests complete in ~17 seconds. The same tests run directly against Postgres complete in ~12 seconds.

A net loss for me, but that may have something to do with how Docker for Mac works? I’d love to hear other people’s experiences.

 Itamar Turner-Trauring codewithoutrules.com

Enthusiasts vs. Pragmatists

Do you love programming for its own sake, or do you just program for the outcomes it enables? Depending on which describes you best you will face different problems in your career as a software developer.

Enthusiasts code out of love. If you’re an enthusiast you’d write software just for fun, but one day you discovered your hobby could also be your career, and now you get paid to do what you love.

Pragmatists may enjoy coding, but they do it for the outcomes. If you’re a pragmatist, you write software because it’s a good career, or for what it enables you to do and build.

Which is your camp and why?

Player art
  0:00 / 0:00