Surrounded by idiots – Book Review

Today’s book review is a guest article of Maximilian Brenner All just idiots!!! This thought has certainly crossed some people’s minds after a meeting or group work, but is everyone else really an idiot or am I the idiot in the room? The author Thomas Erikson thinks it is simply a matter of communication. In…

Running external commands from Python

Motivation Although Python has a ton of built-in features and the ecosystem is full of useful pip-installable packages sometimes you need to fire up some external tools os.system The simplest form of launching external tools is the os.system function import os os.system(“echo Hello from the other side!”)   subprocess module The subprocess module is Python’s…

Interview with maker Jens Dittmar

This article is an interview with Jens Dittmar long-term friend and colleague. He also got me into 3d printing Hi Jens! Thanks for taking the time for this interview. Can you tell us a bit about yourself? My name is Jens and I am a software engineer, gamer, tinkerer and nerd. And I know, I…

The gridfinity system is a game changer

The System The gridfinity system is a storage solution based on a 4cm x 4cm grid. It was developed by Zack Freedman because he was as frustrated with standard sorting boxes. Baseplates Standard Weighted Baseplates   Container The charm of this container is the inner slope which makes taking out parts easier. Pen Holder Holders…

What are Python properties?

In “What’s the difference between classmethod and staticmethod in Python?” we looked at static and class methods. The third big decorator is the @property decorator import pytest class Person: def __init__(self, name): self._name = name @property def name(self): print(‘Getting name’) return self._name @name.setter def name(self, value): print(f’Setting name to {value}’) self._name = value @name.deleter def…

How to let test cases run in a predefined order

Motivation pytest executes tests in a randomly order. Sometimes it can be useful to have a predefined order in which test cases can run. pytest has a neat plugin for this specific use case. Installation pip install pytest-order Usage import pytest @pytest.mark.order(1) def test_foo(): assert True @pytest.mark.order(2) def test_bar(): assert True @pytest.mark.order(3) def test_foobar(): assert…

RAII in C++ and Python for custom types

Resource Acquisition Is Initialization (RAII) is a programming idiom that describes how resource acquisition and deallocation should be tied to object lifetime. Wikipedia demonstrates how the C++ standard library implements this idiom using the types std::lock_guard<> and std::ofstream as examples. But is it really necessary to implement this idiom in every type you create? Can’t…