Skip to content


Are you an ideal team player?

The Five Dysfunctions of a Team by Patrick Lencioni is a classic in teamwork literature. Recently I've been reading the author's follow-up book The Ideal Team Player. I've only started reading the fable, but I couldn't help taking a peek at the end of the book where I found an interesting self-evaluation test for anyone interested in improving their team work skills. I thought it's quite cool so I'll share it here!

Getting started with Apache Beam for distributed data processing

MapReduce was revolutionary when it was first published in 2004. It provided a programming model for batch processing datasets with terabytes of data. MapReduce was built on three seemingly simple phases: map, sort, and reduce. It used the general-purpose HDFS (Hadoop Distributed File System) file system for I/O and was therefore capable of processing almost any kind of data.

Functional programming tips to power up your Python code

Hi! In this post, I'd like to present my favorite functional programming techniques (FP) for Python. I'm a big fan of FP as I've found that by following FP principles I can write code that is more readable and easier to debug. Python is not a functional programming language (and it never will be), but I think there are still many things we can learn from languages such as Haskell that are beneficial also in Python.

My three favorite non-programming books for developers

Back when starting my first software development job I thought my success at work would be directly determined by my programming skills. Of course, that's not the case. One can be the most productive and clever programmer in the world, but that alone isn't sufficient for a satisfactory career in software development. You'll need to get along with people, know which problems not to fix, deal with pressure, etc.

Introduction to property-based testing

Property-based testing is a testing paradigm supporting regular example-based unit tests. In the Pragmatic Programmer book, the authors recommend to use property-based testing for verifying assumptions about their code. It forces you to think about the actual preconditions, postconditions and invariants of your code instead of implicitly coming up with such rules through hard-coded examples.

Covariance and contravariance in generic types

Static typing is awesome. It helps to detect bugs, acts as in-code documentation and makes development more enjoyable. Recently I've started to use Python's typing module to add static typing to all of my Python projects. Python's typing system may not be as as powerful as one might hope, but I think once you go typed, you don't go back.