Cartesian product in Python

A cartesian product is basically all combinations of given values, so for example I could have the following values:

a b c
1 1 1
  2 2

I would then expect the cartesian product to be something like a1b1c1, a1b1c2, a1b1c3, a1b2c1 and so on…

Many, many times have had to solve this problem over and over in Python… it’s time to jot down some notes.


Switching between Docker and VirtualBox on Windows 10

As outlined here, Docker for Windows requires Hyper-V. This needs to be disabled before you can run VirtualBox.

# Run from elevated prompt (admin privileges)
bcdedit /set hypervisorlaunchtype off

And to start using Docker for Windows again, re-enable Hyper-V:

# Run from elevated prompt (admin privileges)
bcdedit /set hypervisorlaunchtype auto

A reboot is required in both cases.

Note: if you only see 32-bit options when creating a VM in VirtualBox, it could be because you havent disabled Hyper-V. More info here on this issue.

Official PySide2 wheels!

The Qt Company has released official and pip-installable PySide2 wheel snapshots!

Simo posted the details today on the PySide mailing list, but in a nutshell:

pip install --index-url= pyside2 --trusted-host

Update 2018-04-05: official docs are now also online at

Standalone PySide2 wheels

The Qt Company has yet to release official, standalone and pip-installable PySide2 wheels. However, since they made it possible to build standalone wheels successfully, I’m now building such unofficial, standalone wheels here using free CI services (thanks Travis and AppVeyor!):

Update 2018-03-09: The Qt Company now offers official and standalone wheels, read more here!


Dates and databases with Python

It’s a bit tricky to deal with dates, timezones and daylight savings when you need to store dates in e.g. a database for later reading.

To me, it’s a bit perplexing that all tools required to deal with this doesn’t come with the Python standard library (meaning; batteries are not included). Instead we need to use three different modules: datetime, pytz and tzlocal where the two latter ones are not part of the standard library and must be installed separately via e.g. pip.

Here follows some personal notes on how to store and read back dates with reliability and control of the timezones and daylight savings.